forked from eatvio/eatvio_app
56 lines
1.6 KiB
Python
56 lines
1.6 KiB
Python
#!/usr/bin/env python3
|
|
import re
|
|
|
|
def analyze_coverage():
|
|
files = {}
|
|
current_file = None
|
|
|
|
with open('coverage/lcov.info', 'r', encoding='utf-8') as f:
|
|
lines = f.readlines()
|
|
|
|
i = 0
|
|
while i < len(lines):
|
|
line = lines[i].strip()
|
|
if line.startswith('SF:'):
|
|
current_file = line[3:]
|
|
files[current_file] = {'total': 0, 'covered': 0}
|
|
i += 1
|
|
elif line.startswith('LF:') and current_file:
|
|
files[current_file]['total'] = int(line[3:])
|
|
i += 1
|
|
elif line.startswith('LH:') and current_file:
|
|
files[current_file]['covered'] = int(line[3:])
|
|
i += 1
|
|
else:
|
|
i += 1
|
|
|
|
# Filter out generated files
|
|
filtered = []
|
|
for f, d in files.items():
|
|
if not f.endswith('.g.dart') and not 'generated' in f.lower() and not f.endswith('l10n.dart'):
|
|
filtered.append((f, d))
|
|
|
|
# Find files with less than 50% coverage
|
|
low_coverage = []
|
|
for f, d in filtered:
|
|
if d['total'] > 0:
|
|
pct = d['covered']/d['total']*100
|
|
if pct < 50:
|
|
low_coverage.append((f, d))
|
|
|
|
# Sort by coverage percentage (lowest first)
|
|
sorted_files = sorted(
|
|
low_coverage,
|
|
key=lambda x: (x[1]['covered']/x[1]['total']*100 if x[1]['total'] > 0 else 0)
|
|
)
|
|
|
|
print('Files with less than 50% coverage:')
|
|
print('=' * 80)
|
|
for f, d in sorted_files[:50]:
|
|
pct = d['covered']/d['total']*100
|
|
print(f'{pct:6.1f}% ({d["covered"]:4d}/{d["total"]:4d}) - {f}')
|
|
|
|
if __name__ == '__main__':
|
|
analyze_coverage()
|
|
|