radn-dev/metrics/metrics.py
2023-06-18 10:39:57 +00:00

27 lines
857 B
Python

import json
from subprocess import check_output
def filter_schema(obj, schema):
if schema is True:
return obj
return {key: filter_schema(obj[key], value) for key, value in schema.items()}
entry_schema = {"name": True, "metrics": {"halstead": {"bugs": True, "difficulty": True}}}
commits = check_output(['git', 'log', '--pretty=%H'], text=True).splitlines()
entries = []
for (i, commit) in enumerate(commits):
print('running', commit)
check_output(['git', 'checkout', commit], text=True)
lines = check_output(
["rust-code-analysis-cli", "-m", "-p", "src", "-O", "json"], text=True
).splitlines()
print(len(lines))
for line in lines:
entry = json.loads(line)
entries.append((i, filter_schema(entry, entry_schema)))
with open('/code/metrics.json', 'w') as file:
json.dump(entries, file)