forked from Syndica/sig
-
Notifications
You must be signed in to change notification settings - Fork 0
/
parse_kcov.py
36 lines (28 loc) · 977 Bytes
/
parse_kcov.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import json
# read path from cli
import sys
if len(sys.argv) != 2:
print("Usage: python parse_kcov.py <path_to_coverage.json>")
sys.exit(1)
coverage_path = sys.argv[1]
with open(coverage_path, "r") as f:
coverage = json.load(f)
max_path_length = max(len(file_info["file"]) for file_info in coverage["files"])
# order by coverage percentage
coverage["files"].sort(key=lambda x: float(x["percent_covered"]), reverse=False)
output = ""
for file_info in coverage["files"]:
path = file_info["file"]
path = path.split("sig/")[2]
file_coverage = float(file_info["percent_covered"])
# Determine the color based on the coverage percentage
if file_coverage < 50:
color = "\033[91m" # Red
elif file_coverage < 75:
color = "\033[93m" # Yellow
else:
color = "\033[92m" # Green
# Reset color
reset = "\033[0m"
output += f"{color}{path:<{max_path_length}} --- {file_coverage:>10}%{reset}\n"
print(output)