如何使用 gcovr 获得方法级别的覆盖率?
How to get method level coverage with gcovr?
我一直在使用 gcovr 为我的整个项目生成覆盖率数据。
我可以像这样生成摘要报告:
------------------------------------------------------------------------------
GCC Code Coverage Report
Directory: ...../src/
------------------------------------------------------------------------------
File Lines Exec Cover Missing
------------------------------------------------------------------------------
src/A/A1/xyz.cpp 1609 2 0% 97,99,101....
src/A/A2/abcg.cpp 271 4 1% .......
src/B/B1/mnop.cpp 74 2 2% 34,42,56-.....
src/B/B2/wrds.cpp 1533 6 0% 76,83,85-.....
src/C/C1/abcdefg.cpp 1079 8 0% 143,150,152.....
包括总数和其他所有内容,但此数据处于源级别。所以我尝试生成 xml 文件,这些文件具有 xml 格式的相同类型的数据。当我最终生成更密集的 xml 文件时,其行级覆盖如下所示:
<class branch-rate="0.285714285714" complexity="0.0" filename="src/absc/mno/xyz/ahgs.cpp" line-rate="0.231481481481" name="os_clib_hxx">
<methods/>
<lines>
<line branch="false" hits="0" number="200"/>
<line branch="false" hits="0" number="202"/>
<line branch="false" hits="3" number="208"/>
<line branch="false" hits="3" number="210"/>
<line branch="false" hits="63" number="213"/>
<line branch="true" condition-coverage="50% (1/2)" hits="63" number="215">
<conditions>
<condition coverage="50%" number="0" type="jump"/>
</conditions>
</line>
<line branch="false" hits="0" number="218"/>
.........
..........
我仍然找不到任何方法级别的东西。
我知道 gcov 可以一次为一个文件生成方法级别的覆盖率,但在我的情况下这是不可能的,因为我正在处理数千个文件,如果我尝试通过任何方式为每个文件生成数据方法会有问题。
遗憾的是,gcovr 目前无法报告每个函数的覆盖率。
XML 报告包含一个空的 <methods/>
部分,因为 Cobertura XML 格式的 DTD 架构需要此部分,但它不包含有用的数据。同样,其他 XML 字段如 complexity
仅包含虚拟数据。
我一直在使用 gcovr 为我的整个项目生成覆盖率数据。
我可以像这样生成摘要报告:
------------------------------------------------------------------------------
GCC Code Coverage Report
Directory: ...../src/
------------------------------------------------------------------------------
File Lines Exec Cover Missing
------------------------------------------------------------------------------
src/A/A1/xyz.cpp 1609 2 0% 97,99,101....
src/A/A2/abcg.cpp 271 4 1% .......
src/B/B1/mnop.cpp 74 2 2% 34,42,56-.....
src/B/B2/wrds.cpp 1533 6 0% 76,83,85-.....
src/C/C1/abcdefg.cpp 1079 8 0% 143,150,152.....
包括总数和其他所有内容,但此数据处于源级别。所以我尝试生成 xml 文件,这些文件具有 xml 格式的相同类型的数据。当我最终生成更密集的 xml 文件时,其行级覆盖如下所示:
<class branch-rate="0.285714285714" complexity="0.0" filename="src/absc/mno/xyz/ahgs.cpp" line-rate="0.231481481481" name="os_clib_hxx">
<methods/>
<lines>
<line branch="false" hits="0" number="200"/>
<line branch="false" hits="0" number="202"/>
<line branch="false" hits="3" number="208"/>
<line branch="false" hits="3" number="210"/>
<line branch="false" hits="63" number="213"/>
<line branch="true" condition-coverage="50% (1/2)" hits="63" number="215">
<conditions>
<condition coverage="50%" number="0" type="jump"/>
</conditions>
</line>
<line branch="false" hits="0" number="218"/>
.........
..........
我仍然找不到任何方法级别的东西。 我知道 gcov 可以一次为一个文件生成方法级别的覆盖率,但在我的情况下这是不可能的,因为我正在处理数千个文件,如果我尝试通过任何方式为每个文件生成数据方法会有问题。
遗憾的是,gcovr 目前无法报告每个函数的覆盖率。
XML 报告包含一个空的 <methods/>
部分,因为 Cobertura XML 格式的 DTD 架构需要此部分,但它不包含有用的数据。同样,其他 XML 字段如 complexity
仅包含虚拟数据。