import json from subprocess import check_output all_entries = [] def save_entry(entry: dict, prefix=""): name = entry["name"] = prefix + entry["name"] spaces = entry.pop("spaces") all_entries.append(entry) for space in spaces: save_entry(space, f"{name}::") def main(): lines = check_output( ["rust-code-analysis-cli", "-m", "-p", "src", "-O", "json"], text=True ).splitlines() for line in lines: entry = json.loads(line) assert entry["kind"] == "unit" assert entry["start_line"] == 1 assert entry["end_line"] >= entry["start_line"] save_entry(entry) all_entries.sort( key=lambda entry: ( entry["metrics"]["halstead"]["bugs"] or 0, entry["metrics"]["halstead"]["volume"], ), reverse=True, ) for entry in all_entries: # print(*entry["metrics"]) print(entry["name"], entry["metrics"]["halstead"]) main()