SonarQubeとは
SonarQubeはプログラムコードの静的解析ツールです。20以上のプログラミング言語の問題点を指摘してくれる便利なツールです。テストの自動化ではなくてコードレビューを自動化するためのツールでしょうか? コード品質の向上に役立ちそうなので、さらっと使ってみました。
検証環境
- MacOS Catalina 10.15.6
- Docker 19.03.8
- Docker Compose 1.26.2
MacではDocker Desktop for Macをインストールするだけですが、Windowsの場合はLinux仮想マシンを用意して、そこにDockerとDocker Composeをインストールしてください(手順は割愛します)。
SonarQubeサーバを用意する
まずSonarQubeサーバを用意します。
といってもDcokerイメージが用意されているので、docker-compose.ymlを用意して、
docker-compose.yml
1 2 3 4 5 6 |
version: '3' services: sonarqube: image: sonarqube:latest ports: - 9000:9000 |
ビルドするだけでサーバは用意できます。
1 |
$ docker-compose up -d --build |
念のためコンテナの起動を確認します。
1 2 3 4 |
$ docker-compose ps Name Command State Ports -------------------------------------------------------------------------------- sonarqube_sonarqube_1 bin/run.sh bin/sonar.sh Up 0.0.0.0:9000->9000/tcp |
コンテナが起動したらブラウザでアクセスします。初回アクセスではサーバで何かいろいろ準備しているようで、けっこう待たされます。
Linuxの場合
SonarQubeサーバをLinuxに構築する場合、メモリマップ数などを変更する必要があります。詳しくは下記のリンク先を参照してください。
Linux
If you're running on Linux, you must ensure that:vm.max_map_count is greater than or equal to 524288
fs.file-max is greater than or equal to 131072
the user running SonarQube can open at least 131072 file descriptors
the user running SonarQube can open at least 8192 threadshttps://docs.sonarqube.org/latest/requirements/requirements/
ユーザを作成する
初期状態ではadmin/adminでログインできるので、とりあえずログインします。
adminユーザをそのまま使うこともできますが、ここでは新規ユーザを作成しましょう。
Administration
→Security
→Users
→Create User
でユーザを追加します。
adminはログアウトして、追加したユーザでログインし直します。
プロジェクトを作成する
次にプロジェクトを作成します。
Projects
→Create new project
で新しいプロジェクトを作成します。
画面の指示通りに進めればいいだけですが、ざっくり説明すると、
- プロジェクト名を決める
- トークンを生成する
- SonarScanner(zip)をダウンロードして展開する
- SonarScannerのbinフォルダにパスを通す
- ターミナルを起動して、解析したいプログラム(プロジェクト)のフォルダへ移動する
- ターミナルからSonarScannerを起動する
SonarScannerはSonarQubeのクライアントです。
SonarScannerがローカルPC上のソースコードをSonarQubeサーバへ送って、SonarQubeがコードを解析してくれる、という流れでしょう、たぶん。
SonarScannerの起動コマンドもブラウザに表示されているので、コピペしてターミナルで実行します。
解析する
SonarScannerを起動してちょっと待つと、解析結果がブラウザに反映されます。
コードに問題がある場合は、下のようにIssuesに表示されます。詳細を確認してIssueを解消しましょう。
おわりに
SonarQubeでコードを解析できるところまでを駆け足で試してみました。
といってもちょっと動かしてみただけなので、どんな解析をしてくれるのかはまだぜんぜんわかってないです。設定なんかもきちんと調べてコード品質の向上に役立てていきたいものです。
ではまた。