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 は、対応する cpp に関連する 'o' というサブディレクトリにあります)。
/var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/
これは次のように設定することで達成されました:
GCOV_PREFIX_STRIP=7
GCOV_PREFIX=/var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/
Jenkins ユニット テスト スレーブから実行シェル (現在のディレクトリはワークスペース) を実行します。
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 にカバレッジ情報を含めたいのですが、どうすれば修正できますか?