「SonarQube」を使ってみる

前回の記事でSonarQubeを構築したので、実際に使用してみます。

初期設定

パスワード設定

SonarQubeにアクセスすると、ログイン画面が表示されます。
初期のユーザ名/パスワードは両方「admin」です。

初期のユーザ名/パスワードでログインすると、ユーザ名「admin」のパスワード変更を求められるので、新しいパスワードを設定します。

picture 1

パスワード変更が完了すると、トップページが表示されます。

picture 2

実際に解析してみる

プロジェクトの作成

SonarQubeで静的解析を行うには、プロジェクトを作成する必要があります。
今回はローカル環境のソースコードを解析する手順を説明します。

ローカル環境のソースコードを解析する場合、トップページの「Manually」を選択します。

picture 2

プロジェクトの設定を行います。
「Project display name」はSonarQube上の表示名、「Project key」はSonarQubeに解析結果を登録するときに使用するキーとなります。
入力が完了したら、「Set Up」をクリックします。

picture 3

トークンの生成

プロジェクトの設定が完了すると、以下の画面が表示されます。
ローカル環境のソースコードを解析する場合、「Locally」を選択します。

picture 4

SonarQubeに解析結果を登録するときに使用するトークンを生成します。
トークン名と、トークンの有効期限を設定し、「Generate」をクリックします。

picture 5

生成されたトークンが表示されるので、保存するなりなんなりで覚えておき、「Continue」をクリックします。

ソースコード種類別の設定(.NET Framework(C#))

picture 6

解析するソースコードの種類を選択します。
今回は.NET Framework(C#)のソースコードを解析してみます。

picture 7

SonarQubeでは、「Scanner for .NET」というツールを使用して静的解析を行います。
「Download and unzip the Scanner for .NET」のリンクから、ダウンロードサイトに移動します。

picture 8

解析したいソースコードに合わせてScannerをダウンロードする必要があります。
今回の記事では、.NET Frameworkのソースコードを解析するので、「.NET Framework 4.6+」を選択してダウンロードします。

picture 9

ダウンロードしたファイルを任意の場所に解凍します。
今回は「D:\ProgramFiles\SonarQube」フォルダを作成して解凍しました。

picture 10

Scannerの準備ができたら、コマンドプロンプトでScannerを実行していきます。
以下の通り、コマンドの例が記載されています。

picture 11

コマンドは以下の3つで構成されています。

  • Scannerの起動

Scannerを起動します。
起動時にSonarQubeのURL、プロジェクトキー、トークン情報を設定します。

SonarScanner.MSBuild.exe begin /k:"<プロジェクトキー>" /d:sonar.host.url="<SonarQube URL>" /d:sonar.login="<トークン>"
  • 静的解析対象のソースコードのリビルド

MSBuild.exeを起動し、静的解析対象のソースコードをリビルドします。
リビルドする前に、コマンドプロンプト上で静的解析対象のソースコードが格納されているフォルダに移動しておく必要があります。

MsBuild.exe /t:Rebuild
  • Scannerの終了

Scannerを終了します。
静的解析結果をSonarQubeに登録するため、トークン情報を設定します。

SonarScanner.MSBuild.exe end /d:sonar.login="<トークン>"

実行してみる

とりあえずバッチファイルを作成して実行します。
上記のコマンド実行前に、静的対象のソースコードフォルダに移動するコマンドを実行しています。
※ソースコードフォルダは、「.sln」ファイルがあるフォルダを指定してください。

ScannerとMSBuildの実行ファイルは、フルパスで指定して実行しています。
※MSBuildはVisual Studioのバージョンに応じて指定してください。今回の例はVisual Studio 2019 Communityです。

REM Dドライブに移動
D:

REM 静的解析対象のソースコードフォルダに移動
cd "<静的解析対象のソースコードフォルダパス>"

REM Scannerの起動
"D:\ProgramFiles\SonarQube\sonar-scanner-msbuild-5.12.0.64969-net46\SonarScanner.MSBuild.exe" begin /k:"ARuSonarQubeSample" /d:sonar.host.url="http://aru-server:51003/sonarqube" /d:sonar.login="<トークン>"

REM 静的解析対象のソースコードのリビルド
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MsBuild.exe" /t:Rebuild

REM Scannerの終了
"D:\ProgramFiles\SonarQube\sonar-scanner-msbuild-5.12.0.64969-net46\SonarScanner.MSBuild.exe" end /d:sonar.login="<トークン>"

pause

作成したバッチファイルを実行して、「EXECUTION SUCCESS」が表示されれば成功です。
picture 12

SonarQubeにアクセスすると、静的解析の結果が確認できます。

  • 問題なしの場合
picture 13
  • 問題ありの場合
picture 14

こんな感じでバグになりそうな部分を指摘してくれます。

picture 15

参考URL

SonarQube Documentation