我试图使用gcovr从gcno / gcda生成xml来为Jenkins提供cobertura插件。应用程序构建在构建计算机上,并传递给在单元测试从站上运行的下游作业。源文件和生成的gcno文件也以其原始文件夹结构复制到单元测试机器中。由于应用程序的构建路径和安装路径不同,我使用GCOV_PREFIX_STRIP和GCOV_PREFIX使生成的gcda文件最终位于与相应gcno文件相同的位置。我可以确认gcda文件是在正确的位置生成的。
Jenkins构建主工作区位于:
/var/lib/jenkins/workspace/Coverage/
该应用程序内置于:
/var/lib/jenkins/workspace/Coverage/BUILD/app/
Jenkins单元测试从属工作区位于:
/var/lib/jenkins/workspace/Coverage-Unittest/
源代码,gcno和gcda文件位于(gcno / gcda位于名为' o'相对于相应cpp的子目录中):
/var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/
通过设置:
实现GCOV_PREFIX_STRIP=7
GCOV_PREFIX=/var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/
从Jenkins单元测试slave执行shell(当前目录是工作空间)我执行:
python2 gcovr -v --gcov-executable=/opt/gcc-5.3.0/bin/gcov -x -r BUILD/app/.
然而,结果是:
Gathered coveraged data for 0 files
<?xml version="1.0" ?>
<!DOCTYPE coverage
SYSTEM 'http://cobertura.sourceforge.net/xml/coverage-03.dtd'>
<coverage branch-rate="0.0" line-rate="0.0" timestamp="1478904126" version="gcovr 3.3">
<sources>
<source>BUILD/app/.</source>
</sources>
<packages/>
</coverage>
这很奇怪,因为它似乎找到了gcda文件。一些详细的输出:
Scanning directory BUILD/app/. for gcda/gcno files...
Found 1891 files (and will process 1391)
...
Processing file: /var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model/o/MyClass.gcda
Running gcov: '/opt/gcc-5.3.0/bin/gcov /var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model/o/MyClass.gcda --branch-counts --branch-probabilities --preserve-paths --object-directory /var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model/o' in '/var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app'
Running gcov: '/opt/gcc-5.3.0/bin/gcov /var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model/o/MyClass.gcda --branch-counts --branch-probabilities --preserve-paths --object-directory /var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model/o' in '/var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model/o'
Running gcov: '/opt/gcc-5.3.0/bin/gcov /var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model/o/MyClass.gcda --branch-counts --branch-probabilities --preserve-paths --object-directory /var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model/o' in '/var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model'
Running gcov: '/opt/gcc-5.3.0/bin/gcov /var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model/o/MyClass.gcda --branch-counts --branch-probabilities --preserve-paths --object-directory /var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model/o' in '/var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib'
Running gcov: '/opt/gcc-5.3.0/bin/gcov /var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model/o/MyClass.gcda --branch-counts --branch-probabilities --preserve-paths --object-directory /var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model/o' in '/var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw'
Running gcov: '/opt/gcc-5.3.0/bin/gcov /var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model/o/MyClass.gcda --branch-counts --branch-probabilities --preserve-paths --object-directory /var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model/o' in '/var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages'
Running gcov: '/opt/gcc-5.3.0/bin/gcov /var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model/o/MyClass.gcda --branch-counts --branch-probabilities --preserve-paths --object-directory /var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model/o' in '/var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app'
Running gcov: '/opt/gcc-5.3.0/bin/gcov /var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model/o/MyClass.gcda --branch-counts --branch-probabilities --preserve-paths --object-directory /var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model/o' in '/var/lib/jenkins/workspace/Coverage-Unittest/BUILD'
Running gcov: '/opt/gcc-5.3.0/bin/gcov /var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model/o/MyClass.gcda --branch-counts --branch-probabilities --preserve-paths --object-directory /var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model/o' in '/var/lib/jenkins/workspace/Coverage-Unittest'
Running gcov: '/opt/gcc-5.3.0/bin/gcov /var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model/o/MyClass.gcda --branch-counts --branch-probabilities --preserve-paths --object-directory /var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model/o' in '/var/lib/jenkins/workspace'
Running gcov: '/opt/gcc-5.3.0/bin/gcov /var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model/o/MyClass.gcda --branch-counts --branch-probabilities --preserve-paths --object-directory /var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model/o' in '/var/lib/jenkins'
Running gcov: '/opt/gcc-5.3.0/bin/gcov /var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model/o/MyClass.gcda --branch-counts --branch-probabilities --preserve-paths --object-directory /var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model/o' in '/var/lib'
...
注意多次列出相同的gcda文件,所有gcda文件都是这种情况。目录/ var / lib / jenkins / workspace / Coverage-Unittest / BUILD / app / packages / appw / lib / model / o /包含MyClass.gcda和MyClass.gcno以及目录/ var / lib / jenkins / workspace / Coverage -Unittest / BUILD / app / packages / appw / lib / model /包含MyClass.cpp。
使用带有-coverage标志的gcc 5.3.0编译应用程序。
我希望输出xml包含覆盖率信息,如何修复它?