Hatena::ブログ(Diary)

旧山pの楽しいお勉強生活 このページをアンテナに追加 RSSフィード

2014-07-27

Jacocoでコードカバレッジを測ってみた。

f:id:yamap_55:20140727141505j:image

  • Jacocoが出力してくれるhtmlでのレポート

f:id:yamap_55:20140727141506j:image

  • Jacocoレポート形式をCoberturaの形式に変換して出力

f:id:yamap_55:20140727141507j:image

経緯とか

今の現場ではEmmaを使用してコードカバレッジを測っていたようですが、EmmaはJava7対応していないらしくしばらくカバレッジが測定できていませんでした。
そのままじゃマズイよね。って事で解消するために調べた結果、今はJacocoが定番っぽいので試してみました。

ちょっと前まではカバレッジ測定のツールCoberturaとかEmmaが定番だったようですが、共にJava7に対応していないようです。
が、全て終わってからCoberturaを調べたら数年ぶりに更新されて対応されている??

Jacocoとは

Eclipseプラグインである「EclEmma」の開発チームが開発が2005年で止まっている「Emma」の代わりに開発したカバレッジ測定ツール

Eclipseでの実行

Eclipseでもプラグインを入れることでカバレッジの測定が可能。

Mavenの設定方法

  • pom.xmlを編集
    • JUnit実行する「maven-surefire-plugin」の引数に「${jacocoArgs}」を設定
    • 「project/build/plugins/plugin」に「org.jacoco」、「jacoco-maven-plugin」を追加
    • 「project/reporting/plugins/plugin」に「org.jacoco」、「jacoco-maven-plugin」を追加
    • 参考
<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での実行

f:id:yamap_55:20140727141505j:image

    • 成果物の保存で↓を指定しておくといい感じ。
**/site/jacoco/**
  • HTMLで出力された結果もいい感じに見れるのでオススメ。(というかこちらの方が見やすい?)
target/site/jacoco/index.html
  • Jacocoが出力してくれるhtmlでのレポート

f:id:yamap_55:20140727141506j:image

Jacoco形式のレポートからCobertura形式に変換

これらは社内で試した内容なのですが、Jacoco形式は見難いという話が出たのでCobertura形式に変換してみました。

  • Jacocoのレポートが出力される
  • ↓を使用してCobertura形式に変換。
https://github.com/rix0rrr/cover2cover
  • Coberturaプラグインで変換した結果をまとめて集計。
  • Jacocoレポート形式をCoberturaの形式に変換して出力

f:id:yamap_55:20140727141507j:image

Emmaからの乗換える場合

Jacocoの設定をしてEmmaの設定を除去すればそれでOK

参考URL

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/yamap_55/20140727/1406438741
リンク元