5

コード カバレッジを追跡するために、Cobertura を使用して Jenkins をセットアップしたいと考えています。残念ながら、有効な xml を生成できません。

私は使用しています:

  • gcovr 2.5 プレリリース (r2774)
  • Xcode 4.6.1 ビルド バージョン 4H512

私のプロジェクトはコード カバレッジ ファイルを正しく生成していますが、gcovr で作成されたレポートは役に立ちません。

レポートを生成するために使用するコマンドは次のとおりです。

gcovr -r /Users/Shared/Jenkins/Home/jobs/CodeCoverage/workspace 
--object-directory /Users/Shared/Jenkins/Home/Library/Developer/Xcode/DerivedData/myProject-aooceqwwovrizceerghqvhflcfty//Build/Intermediates/myProject.build/Development/myProject.build/Objects-normal/x86_64 
--exclude '.*Developer.*' 
--exclude '.*Tests.*' 
--xml

これにより、次の出力が作成されます。

<?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="1364322914" version="gcovr 2.5-prerelease (r2774)">
<sources>
    <source>
        /Users/Shared/Jenkins/Home/jobs/CodeCoverage/workspace/Project/myProject/
    </source>
</sources>
<packages/>
</coverage>

追加情報:

--object-directory と -r を削除して、派生データ ディレクトリからコマンドを実行すると、有効なレポートが生成されます。このレポートは cobertura から読み取ることができますが、ソース ファイルに関する詳細情報を表示することはできません。

4

3 に答える 3

3

When working with XCode, I've found that using $WORKSPACE/build as the build directory helps with this problem. This keeps the Derived Data directory out of it, and also neatly keeps my object files in the build directory. It also prevents two builds from interfering with each other.

If using the Xcode build tool, set SYMROOT to $WORKSPACE/build in the Tool's build configuration. If you're building from the command line, set it manually on the command line or in the environment.

Then a gcovr script such as:

/your/path/to/gcovr -r . --object-directory build/YourApp.build/Coverage-iphonesimulator/YourApp.build/Objects-normal/i386 --xml > build/coverage.xml

(your path may vary slightly depending on what you call your build style, etc.)

And finally in the Cobertura config, point at build/coverage.xml, and you should get annotated source when you use the tool within Jenkins.

Should do the trick. I've been really happy with that configuration on our small farm of Mac Minis.

于 2013-03-26T22:03:05.163 に答える
2

gcovrは、.gcda および .gcno ファイルが存在するフォルダーから実行する必要があります。ルート パスは、ソース ファイル (.c または .cpp) が存在するフォルダーです。

これにより、コマンドは次のようになります。

rr-mac:gcdaFolder$ gcovr -r /path_to_C_sourceFiles/ .

以下の出力htmlファイルの場合、コマンドは機能します

rr-mac:gcdaFolder$ gcovr --html -o Filename_rp.html -r /path_to_C_sourceFiles/ .

注: 末尾のドット (.) は必須です

于 2016-08-12T12:48:15.107 に答える