Jacocoでコードカバレッジを測ってみた。
- Jacocoプラグインでのレポート
- Jacocoが出力してくれるhtmlでのレポート
- Jacocoレポート形式をCoberturaの形式に変換して出力
経緯とか
今の現場ではEmmaを使用してコードカバレッジを測っていたようですが、EmmaはJava7対応していないらしくしばらくカバレッジが測定できていませんでした。
そのままじゃマズイよね。って事で解消するために調べた結果、今はJacocoが定番っぽいので試してみました。
ちょっと前まではカバレッジ測定のツールCoberturaとかEmmaが定番だったようですが、共にJava7に対応していないようです。
が、全て終わってからCoberturaを調べたら数年ぶりに更新されて対応されている??
Eclipseでの実行
Mavenの設定方法
- pom.xmlを編集
<build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <argLine>${jacocoArgs} -Xmx256m -XX:MaxPermSize=256m</argLine> </configuration> </plugin> </plugins> </pluginManagement> <!-- 中略 --> <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.7.1.201405082137</version> <executions> <execution> <id>prepare-agent</id> <phase>test-compile</phase> <goals> <goal>prepare-agent</goal> </goals> <configuration> <propertyName>jacocoArgs</propertyName> <includes> <include>*</include> </includes> </configuration> </execution> <execution> <id>report</id> <phase>prepare-package</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin> <!-- 中略 --> </plugins> </build> <!-- 中略 --> <reporting> <plugins> <!-- 中略 --> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> </plugin> </plugins> </reporting>
- 実行
- コマンド
mvn clean jacoco:prepare-agent test jacoco:report
- 結果
- ↓に出力されます。
target/site/jacoco/index.html
-
- ↓にバイナリ形式でも出力されているようです。
target/jacoco.exec
Jenkinsでの実行
-
- 成果物の保存で↓を指定しておくといい感じ。
**/site/jacoco/**
- HTMLで出力された結果もいい感じに見れるのでオススメ。(というかこちらの方が見やすい?)
- 出力PATH
target/site/jacoco/index.html
- Jacocoが出力してくれるhtmlでのレポート
Jacoco形式のレポートからCobertura形式に変換
これらは社内で試した内容なのですが、Jacoco形式は見難いという話が出たのでCobertura形式に変換してみました。
- Jacocoのレポートが出力される
- ↓を使用してCobertura形式に変換。
https://github.com/rix0rrr/cover2cover
- Coberturaプラグインで変換した結果をまとめて集計。
- Jacocoレポート形式をCoberturaの形式に変換して出力
Emmaからの乗換える場合
Jacocoの設定をしてEmmaの設定を除去すればそれでOK
- pom.xml内を「emma」で検索して、それらの要素を除去
- 「project/build/plugins/plugin」
- 「project/reporting/plugins/plugin」
- EMMA: a free Java code coverage tool