はじめに
SonarQubeサーバ上で静的コード解析をしつつ、コーディング中にも同様の解析が行えるようにするため、VS Codeの拡張機能である、「SonarLint」を使っていました。
しかし、SonarQubeサーバ上でコード解析ルールのチューニングを行っていたため、以下の問題が発生しました。
- SonarQubeサーバとSonarLint上で、検知するBug, Code Smellに差異がある
そこで、SonarLintにおける静的コード解析をSonarQubeサーバで実施することで、問題を解消することにしました。
設定導入時のバージョン
- SonarQubeサーバ: 8.3.1.34397
- VS Code: 1.59.1
- SonarLint: 2.3.0
- mac: 11.6
設定
実際に各ツール上で設定を行っていきます
SonarQubeサーバ
アクセストークン発行
SonarQubeサーバでは、当該サーバと接続するための、アクセストークンを発行します。
今回は、admin権限を持つユーザでアクセストークン発行を実施しました。
- アクセストークン発行対象ユーザ選択
- アクセストークン発行
- 発行するアクセストークンにつける任意の名称を入力し、「Generate」ボタンをクリック
- トークン文字列を控えておく
警告
アクセストークンの発行後、画面を閉じるとトークン文字列は再閲覧不可なので注意してください。
SonarLint(VS Code)
SonarLint(VS Code)では、発行したアクセストークンを利用して、sonarQubeサーバと接続を行うための設定をします。
sonarQubeサーバ上に複数のプロジェクトがあり、それぞれ使用言語やルールが異なる場合を鑑み、VS Code上のワークスペースとsonarQubeサーバのプロジェクトを紐付けます。
- SonarQubeサーバと接続
- ユーザー設定ファイルの編集
- コマンドパレットを開いて(cmd+shift+p)「>Open Settings」と入力し、setting.jsonを開く
- 下記の設定を追加する
- ユーザー設定ファイルの編集
"sonarlint.connectedMode.connections.sonarqube": [
{
"serverUrl": "自身のSonarQubeサーバのURL",
"token": "発行したトークン文字列"
}
]
- SonarQubeサーバ上の各プロジェクトとの連結
- ワークスペース設定ファイルの編集
- <プロジェクトルート>/.vscode/settings.jsonを開く
- 下記の設定を追加する
- ワークスペース設定ファイルの編集
"sonarlint.connectedMode.project": {
"projectKey": "SonarQubeサーバ上のプロジェクトキー"
}
SonarQubeサーバ上のプロジェクトキーは、sonarQubeサーバ上で確認ができます。
- admin権限でログイン
- 画面上部の「Administration」をクリック
- Administrationメニュー内の「Projects - Management」をクリック
- Key列に記載の値をコピペ
ワークスペース設定ファイルにSonarQubeサーバの接続情報を記載することも可能です。
ただし、当該ファイルをgit管理している場合、SonarQubeサーバの接続情報がリモートリポジトリに格納されることは留意してください。