しおしお

IntelliJのあれやこれや

SonarQubeの結果をUpsourceに連携してみた

External inspections support - Help | Upsource を参考にやってみました。

SonarQubeにUpsourceに連携するための拡張をインストールする

upsource-sonar-plugin-0.1-SNAPSHOT.jarをダウンロードして、
$SONARQUBE_HOME/extensions/pluginsにおいてあげます。
SonarQubeを再起動するとこんな感じに管理画面にUpsource Integrationが表示されます。
f:id:sioiri:20180522075811p:plain

Gradleなプロジェクトにもろもろの設定を追加する

Gradleのsonarqubeプラグインを導入します。

plugins {
  id "org.sonarqube" version "2.6.2"
}

SonarQubeの結果をUpsourceに連携するには、VCSのリビジョン番号が必要になるので、
build.gradleの中で以下のように取得してシステムプロパティにせっていして

def revision = 'git rev-parse HEAD'.execute().text.trim()
System.setProperty("sonar.upsource.revision", revision)

ドキュメントにあるように、Upsouceに連携するための情報をプロジェクト直下のgradle.propertiesに設定します。
revisionは、build.gradleで設定しているのでここでは設定不要です。

# sonarqubeの情報
systemProp.sonar.host.url=http://localhost:9000

# upsourceの情報
systemProp.sonar.upsource.url=http://localhost:8080
systemProp.sonar.upsource.project=test-app
systemProp.sonar.upsource.token=siosio
systemProp.sonar.analysis.mode=issues

sonar.upsource.tokenには、UpsourceプロジェクトのintegrationタブのAuthentication token(下の画像の赤枠の部分)に設定した値を指定します。
デフォルトだとAuthentication tokenには何も設定されていないので適当な値を指定しましょう。
f:id:sioiri:20180522195153p:plain

動かしてみた結果

こんな感じにSonarQubeさんに指摘されるようなのを作ってみました。

package siosio;

import java.util.*;

public class Hoge {

    private static final String HOGE = "HOGE";

    public static void main(String[] args) {
        String hoge = null;
    }
}

実行するとsonar.analysis.mode=issuesが非推奨だよと言われるけど、Upsourceへの連携は成功しています。

> Task :sonarqube
The use of the issues mode (sonar.analysis.mode=issues) is deprecated. This mode will be dropped in the future.

Upsourceで確認すると、IntelliJさんのInspection結果と同じような感じに表示されます。
f:id:sioiri:20180523075238p:plain

Upsource側ですべて確認できるのなかなか良さそう。