我也在为此苦苦挣扎,现在找到了正确的解决方案。这是一个示例和工作方式:
运行 gcov 时,使用 option -o coverage.xml
,然后打开文件。找到要排除的文件名并复制文件名。
在浏览器中打开以下链接并将整个文件名复制到显示:TEST STRING 的部分
https://regex101.com/
现在,它说:正则表达式,创建一个正则表达式,使整个文件名BLUE。确保此表达式不适用于需要在覆盖率报告中显示的其他文件。
这里有一些基本规则: 通常,对于“某些字符”,您可以使用".*"
与 *.cpp 类型的文件无关的内容,您希望在其中查看 cpp 文件!所以如果你想排除任何类似的东西"<some characters>include<more characters>"
,那么你可以使用".*include.*"
. 这也将排除一些文件名,如 include.cpp
因为.
在正则表达式中有含义,\.
所以如果要排除"<something>.h"
文件,请使用".*\.h"
对我有用的示例:(排除包含文件和测试框架和 linux 包含目录并排除 jenkins 文件)
我还想排除任何包含 test 字样的 cpp 文件,我可以用它做什么".*test[_-[A-Z|a-z]*\.cpp"
现实生活中的例子:
gcovr --xml -e ".*unit_test\.cpp" -e ".*\.h" -e ".*usr/include/.*" -e ".*jenkins.*" -e ".*test[_-|A-Z|a-z]*\.cpp" -o coverage.xml
玩得开心!