間があいてしまいましたが、前回 に引き続きSonarQubeで静的解析を行うための手順を書いていきたいと思います。
今回はDockerコンテナでSonarQube立ち上げて、Windows10(ホスト)にあるCakePHPプロジェクトをSonar Scannerでスキャンしてみようと思います。
参考にした記事
https://qiita.com/takao-takass/items/5d54768ad0d315d3dad4
環境
SonarQubeの設定
- SonarQubeへアクセス
ブラウザを開いて、SonarQubeへアクセスします。
http://{IP or ホスト名}/
特に設定していなければhttp://localhost:9000/
でアクセスできると思います。
- ログイン
ID:admin
Password:admin
でログイン可能です。
- プロジェクトの作成
画面中央付近にある『Create new project』をクリックします。
次に『Project key』、『Display name』を入力し、『Set up』をクリックします。
そして、SonarQube ScannerからSonarQubeへログインするためのTokenを生成します。
ある程度の文字列の長さが必要です。
Tokenが生成できたら、『Continue』をクリックします。
Scannerの設定
Scannerはソースコードをスキャンするプログラムなり、スキャン結果をSonarQubeへ返します。
こちらを参考にしました
- プログラム言語などの選択
今回はPHPのプロジェクトをスキャンするので、『Other』選択します。
次にScannerを動かすOSを選択しますが、『Windows』を選択します。
- Scannerのダウンロードと設定
zipファイルがダウンロードされるので、適当なフォルダで解答します。
サンプルとして下記ファイルパスで実行します。
- PHPプロジェクト:
C:\tmp\{PHPプロジェクト}
- Scanner:
C:\tmp\{Scanner}
スキャンしてみる
- コマンドプロンプトを開きディレクト移動
PHPプロジェクト配下へ移動します。
cd C:\tmp\{PHPプロジェクト}
2. スキャン実行
『Execute the Scanner from your computer』に表示されているコマンドをちょっと変えて実行
環境変数にbinまでのパスを通した方がいいと思うのですが、それは割愛してbatまでのフルパスを指定する形にしました。
なので、下記を参考にScannerまでのパスだけ修正してください。
■変更前
sonar-scanner.bat -D"sonar.projectKey=php-test" -D"sonar.sources=." -D"sonar.host.url=http://localhost:9000" -D"sonar.login=トークンが表示されます"
■変更後
C:\tmp\sonar-scanner-4.6.2.2472-windows\bin\sonar-scanner.bat -D"sonar.projectKey=php-test" -D"sonar.sources=." -D"sonar.host.url=http://localhost:9000" -D"sonar.login=トークンが表示されます"
※Scanner解凍時のフォルダ名は読み替えをお願いします。
3. スキャン結果を見る(まずは成功 or 失敗)
プロンプト上にログがバーッと流れます
(ちょいちょいWARNINGがあるのは気になりますが・・・今はまぁいいでしょうw)
最終的に『EXECUTION SUCCESS』が表示されていることを確認してください。
INFO: Analysis total time: 28.439 s
INFO: ------------------------------------------------------------------------
INFO: EXECUTION SUCCESS
INFO: ------------------------------------------------------------------------
INFO: Total time: 30.419s
INFO: Final Memory: 14M/57M
INFO: ------------------------------------------------------------------------
SonarQubeでの結果確認
上記までの手順が順調にいけば、SonarQube側がこんな感じで表示されます。
あとがき
あとは、デフォルトの解析設定だとちょっと物足りない感じですが、『Rules』、『Quality profile』、『Quality Gates』などで解析についての設定が行えそうなので、今後調査していこうと思います。
そして、お気づきの方もいらっしゃるかと思いますが、実はちょっと日本語化してあります。
別記事で記載していこうと思います。