JenkinsとJacocoでカバレッジを取る

【前提条件】

[環境]

OS/ミドルウェア

Jenkins

Jenkinsプラグイン

  • Jenkins JaCoCo plugin 1.0.12
  • Jenkins Subversion Plug-in 1.50
  • Maven Integration plugin 1.522

【参考サイト】
Jacoco+NetBeansでカバレッジを取ってJenkinsで記録 - きしだのはてな
Java7以降におけるMavenでのカバレッジレポート - 現場のためのソフトウェア開発プロセス - たかのり日記

【概要】

Java7で作成したソースをJenkins上でカバレッジを取ります。

以前、練習用に作ったプロジェクトの
設定を変えてJenkinsにのせてます。

https://github.com/gloryof/shelf

Maven

[propertiesの設定]

まずはMavenのpropertiesの設定。
JDKのバージョンとエンコードUTF-8にしてます。

<project>
...
    <properties>
        <jdk.version>1.7</jdk.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <site.encoding>UTF-8</site.encoding>
        <jacoco.include.package>jp.glory.*</jacoco.include.package>
    </properties>
...
</project>
[pluginの設定]

pluginの設定です。
コンパイラの設定だったり、Jacocoの設定をしています。
今回はJava7で作ったソースなのでmaven-compiler-pluginの
Javaのバージョンは1.7を指定しています。

<project>
...
    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>${jdk.version}</source>
                        <target>${jdk.version}</target>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.15</version>
                <configuration>
                    <argLine>${jacocoArgs}</argLine>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.6.3.201306030806</version>
                <executions>
                    <execution>
                        <id>prepare-agent</id>
                        <phase>test-compile</phase>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                        <configuration>
                            <propertyName>jacocoArgs</propertyName>
                            <includes>
                                <include>${jacoco.include.package}</include>
                            </includes>
                        </configuration>
                    </execution>
                    <execution>
                        <id>report</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
...
</project>

【Jenkins自体の設定】

[JDKの設定]

JDKCentOSJDKをインストールして、
JenkinsのJDKに設定しています。

[Mavenの設定]

Mavenは自動インストールです。


[プラグインの設定]

プラグインは前提条件の環境に書いたとおりのものを
インストールします。

【ビルドの設定】

[ビルド]

Mavenの呼び出しを行います。
使用するMavenには先ほど設定したMaven
ゴールには「clean install」を指定します。


[ビルド後の処理]

Jacocoのカバレッジを取得します。
ビルド後の処理の追加の中に[JaCoCoカバレッジレポートを記録]というのがあるので、
それを選択して追加します。

今回はデフォルトの設定のままです。


【ビルドの実行】

ビルドを実行して、成功するとトップ画面の右側にある
LineCoverageのところが緑になります。

プロジェクトを選択すると画面右側に
コードカバレッジの推移が表示されます。
緑が実行された行、赤が実行されていない行です。
(0%と99.9%を交互に推移しているところから設定に苦戦したところが伺えます)

カバレッジの詳細を見たいビルド番号を選択した状態の
左側のメニューのカバレッジレポートから
詳細なカバレッジが見れます。