SonarQubeを使ってみた #sonarqube

概要

Javaで作ってるリポジトリにSonarQubeを適用してみました。

SonarQubeとは?

SonarQubeは、ソースコードの静的解析ツールです。

www.sonarqube.org

今回はオープンソースであれば無料で使えるSonarQube.comを利用します。

about.sonarqube.com

アカウント

GitHubアカウントがあれば、それを利用してログインできます。

https://sonarqube.com/sessions/new

トークンの発行

適当な名前を付けて、トークンを発行します。

トークンはどこかに退避しておきます。

https://sonarqube.com/account/security

Organizationsの確認

Organizationsを確認します。

デフォルトで personal organization が作られているはずです。

※自分の場合は su-kun1899-github でした。

https://sonarqube.com/account/organizations

実行してみる

自分のプロジェクトはMavenを使っているので、mvnコマンドから実行します。

mvn sonar:sonar \
    -Dsonar.host.url=https://sonarqube.com \
    -Dsonar.organization=<あなたのorganization> \
    -Dsonar.login=<あなたのトークン>

Maven周りの設定の詳細は下記を参照

Analyzing with SonarQube Scanner for Maven - Scanners - Doc SonarQube

結果を確認してみる

ビルドログに下記のようなURLが出ているのでアクセスしてみます。

[INFO] ANALYSIS SUCCESSFUL, you can browse https://sonarqube.com/dashboard/index/red.sukun1899:shishamo

いい感じです。

CIに組み込む

CircleCIを使っているのでymlファイルに追加ます。

トークンは環境変数に入れておきました。

test:
  override:
    - mvn integration-test
    - mvn sonar:sonar -Dsonar.host.url=https://sonarqube.com -Dsonar.organization=su-kun1899-github -Dsonar.login=${SONAR_QUBE_TOKEN}

まとめ

get-started に従ってやったら簡単にできました。

静的解析をかけて修正すべきポイントも見つかりました。

https://about.sonarqube.com/get-started/

実際に適用したプロジェクトはこちら。

https://sonarqube.com/dashboard?id=red.sukun1899%3Ashishamo

github.com