読者です 読者をやめる 読者になる 読者になる

SonarQubeでJavaのコードを解析する(Maven編)

SonarQubeでは複数の方法でコード解析を実行することが出来ます。

MavenもしくはGradleで管理されたプロジェクトでは、それぞれ対応するプラグインを利用するのが最も簡単かと思います。また、Jenkins等のCI環境があれば、そちらにプラグインを入れて実行することもできます。

コード行数が増えてくるとそれなりに解析に時間もかかりますし、個人的にはJenkinsプラグインでの実行がお勧めです。

この記事では、手始めとして、最も簡単なMavenプラグインを使った方法を紹介します。

SonarQube Maven Pluginを使って解析を実行する

SonarQube Maven Pluginsonarゴールで解析を行うことが出来ます。POMファイルは特に編集しなくても、以下のコマンドで実行可能です。

mvn sonar:sonar

SonarQubeサーバがローカルの9000番ポートで上がっていて、デフォルトであるH2をデータベースとして使っているのであれば、本当にこれだけで解析が実行されます。

SonarQubeサーバがリモートにあり、データベースもMySQL等他の製品を利用している場合は、以下の設定を追加してくだい。

キー 設定する内容 値の例
sonar.host.url SonarQubeサーバのURL。ブラウザでトップページを表示する際のアドレスと同じ値を指定する。 http://localhost:9000
sonar.jdbc.url SonarQubeが参照するデータベースに接続するためのJDBC URL。 jdbc:mysql://localhost:3306/sonar
sonar.jdbc.username データベースに接続するためのユーザ名 sonar
sonar.jdbc.password データベースに接続するためのパスワード sonar

長いので省略してしまいましたが、MySQLJDBCドライバを使用するときは、JDBCのバッチ実行を高速化するため rewriteBatchedStatements=true を付けた方がよいです。 各データベース製品におけるJDBC設定の具体例は、SonarQube Maven Pluginのページを参照してください。

SonarQube Maven Plugin - Use Enterprise Database

Sonarが利用するデータベースとはいえ、パスワードをPOMに記載するのははばかられるため、sonar.jdbc.username等の設定はsettings.xmlに指定するか、毎回実行時に-Dsonar.jdbc.url=xxxの形で指定するとよいでしょう。

とりあえず実行するだけであれば、これだけでおしまいです。SonarQubeがデフォルトで持っているルールを使い、Javaコードの静的解析が行われ、結果が蓄積されています。 ブラウザでSonarQubeサーバに接続すれば、解析結果を見ることができます。