1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2025-06-06 16:18:45 +00:00
trezor-firmware/core/tools/coverage-annotate.py
2025-05-15 19:52:33 +03:00

36 lines
993 B
Python
Executable File

#!/usr/bin/env python3
import json
import sys
from collections import defaultdict
# Aggregate hits from all coverage JSON files
data = defaultdict(lambda: defaultdict(int))
for file_path in sys.argv[1:]:
with open(file_path) as f:
for src, values in json.load(f).items():
per_file = data[src]
for line, count in values:
per_file[line] += count
# Print results using Markdown (for syntax highlighting)
for src, values in sorted(data.items()):
count = sum(values.values())
with open(src) as f:
src_lines = [line.rstrip() for line in f]
if not count or not src_lines:
continue
max_len = max(map(len, src_lines))
print(f"### {src}")
print("```python")
for i, line in enumerate(src_lines):
line = line.rstrip()
count = values.get(i + 1)
count = str(count) if count else ""
pad = " " * (max_len - len(line))
print(f"{line}{pad} # {count}")
print("```")