This is my life.

There are many like it, but this one is mine.

SonarQubeでテストカバレッジを表示する

うちのチーム自動テストを導入しようとしてます。
とはいえ、ゼロから始めるには指標がないとしんどいですよね。

JJUG CCCで知見を得たSonarQubeを試すことにしました。

SonarQubeの起動

Docker使ってぱぱっと試します。

docker run -d --name postgres-sonar -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar postgres
docker run -d --name sonarqube --link postgres-sonar:postgres -p 9000:9000 -p 9092:9092 -e SONARQUBE_JDBC_USERNAME=sonar -e SONARQUBE_JDBC_PASSWORD=sonar -e SONARQUBE_JDBC_URL=jdbc:postgresql://postgres/sonar  sonarqube

PostgresqlもDockerで起動させて、--linkオプションでつなげています。

ブラウザからhttp://<起動させたホスト>:9000で開くことができます。
f:id:duck8823:20160526223352p:plain

JaCoCoの導入

これでプロジェクト上でmavenから起動させればコードの静的解析をしてくれますが、これだけだとカバレッジを表示してくれませんでした。
カバレッジを表示するには、JaCoCoなどであらかじめ計算しておく必要があります。

JaCoCoの導入も簡単。
プロジェクトのpom.xmlに以下を追記します。

<build>
  <plugins>
    ...
    <plugin>
      <groupId>org.jacoco</groupId>
      <artifactId>jacoco-maven-plugin</artifactId>
      <version>0.7.6.201602180812</version>
    </plugin>
  </plugins>
</build>

mavenで実行

あとはmavenコマンドを実行するだけです。

mvn clean jacoco:prepare-agent test jacoco:report sonar:sonar -Dsonar.host.url=http://<起動させたホスト>:9000 

今回は、個人的に作ってGitHubに上げてるプロジェクトを解析してみました。
コマンドが終了したら再度http://<起動させたホスト>:9000を開きましょう。

f:id:duck8823:20160526224737p:plain

プロジェクト一覧(今回は一つだけ)が表示され、可視化した図が表示されます。
詳しく見るにはプロジェクトをクリックします。
  f:id:duck8823:20160526224905p:plain

解析結果が表示されます。赤色のとこは直した方がよくて、緑はオーケーです。多分。
Dashboardsをみるともうちょっと詳しく数字を出してくれます。

f:id:duck8823:20160526225103p:plain

カバレッジ58.4%でした。網羅できてないですね。
面白いのがTechnical Debt、技術的負債。一日分の負債を抱えてます。

詳しく見ていくと、なんとレビューしてくれてます。
f:id:duck8823:20160526225337p:plain

SonarQubeすごいです。感動しました。 これを指標にテストコードを書いていきたいと思います。

今回2回目の参加ですが、JJUG CCCでは毎回有益な知見をいただけて感謝しかないです。
アウトプット本当に素晴らしい。いつか勉強会とか登壇してみたいな、とか。