首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用lcov合并两个或更多运行的分支覆盖

使用lcov合并两个或更多运行的分支覆盖
EN

Stack Overflow用户
提问于 2021-07-10 03:02:06
回答 1查看 29关注 0票数 0

如何合并两个或更多运行的分支覆盖率?是否存在任何工具或lcov命令?

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

代码语言:javascript
复制
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是否已经有解决方案,或者我必须开发自己的解决方案?

EN

回答 1

Stack Overflow用户

发布于 2021-07-14 00:36:04

开发了python脚本,它合并了一个文件列表(这里的行覆盖率并不准确)

代码语言:javascript
复制
    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 == '1\n'):
                    branch_number += 1
                    result.append(line)
                else:
                    flag = 0
                    for j in covs[1:]:
                        if j[i].split(',')[-1] == '1\n':
                            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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68321640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档