34 lines
		
	
	
		
			737 B
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			737 B
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
#!/usr/bin/env python3
 | 
						|
'''
 | 
						|
Merge .stats files generated by llvm tools
 | 
						|
 | 
						|
merge-stats.py takes as argument a list of stats files to merge
 | 
						|
and output the result on stdout
 | 
						|
 | 
						|
Usage:
 | 
						|
  merge-stats.py $(find ./builddir/ -name "*.stats") > total.stats
 | 
						|
'''
 | 
						|
 | 
						|
import json
 | 
						|
import sys
 | 
						|
 | 
						|
result = {}
 | 
						|
 | 
						|
for arg in range(1, len(sys.argv)):
 | 
						|
  with open(sys.argv[arg], "r", encoding='utf-8',
 | 
						|
            errors='ignore') as f:
 | 
						|
    text = f.read()
 | 
						|
    try:
 | 
						|
      data = json.loads(text)
 | 
						|
    except:
 | 
						|
      print('ignored %s: failed to parse' % sys.argv[arg], file= sys.stderr)
 | 
						|
      continue
 | 
						|
    for key in data:
 | 
						|
      if key in result:
 | 
						|
        result[key] += data[key]
 | 
						|
      else:
 | 
						|
        result[key] = data[key]
 | 
						|
 | 
						|
out = json.dumps(result, indent=2)
 | 
						|
print(out)
 |