将两次或两次以上运行的分支覆盖范围与lcov合并



如何合并两次或两次以上运行的分支覆盖?是否存在任何工具或lcov命令?

假设我有两次测试运行,希望看到的分支覆盖率摘要

gcc -O0 --coverage main.c -o test-coverage
test-coverage param1
lcov --capture --rc lcov_branch_coverage=1 --directory . --config-file ./lcovrc --output coverage1.info
test-coverage param2
lcov --capture --rc lcov_branch_coverage=1 --directory . --config-file ./lcovrc --output coverage2.info

似乎需要解析和合并文件coverage1.info和coverage2.info是否已经存在任何解决方案,或者我必须开发自己的解决方案?

开发了python脚本,该脚本合并了文件列表(此处的行覆盖率不准确(

def merge(files):
if (len(files) == 0):
return 0
covs = [open(f, "r").readlines() for f in files]
result = []
branch_number = 0
for i, line in enumerate(covs[0]):
if ('end_of_record' in line):
result.append(line)
else:
tmp = line.split(':')
tag = tmp[0]
data = tmp[1]
if (tag == 'BRDA'):
c = data.split(',')[-1]
if (c == '1n'):
branch_number += 1
result.append(line)
else:
flag = 0
for j in covs[1:]:
if j[i].split(',')[-1] == '1n':
branch_number += 1
result.append(j[i])
flag = 1
break
if flag == 0:
result.append(line)
elif (tag == 'BRH'):
result.append(tag + ":" + str(branch_number)+'n')
else:
result.append(line)
return result

最新更新