これは何?
静的メトリクス分析をお手軽にできないのか?を調べたときのメモで SonarQube について書いてあります。
経緯
GitHubにあるソースコードの静的メトリクス分析を行いたくて始めて、まずはGitHub APIのこの辺りを叩くようにGitHub.jsに手を入れて作ってみたものの、ソースコードの成長率とコードのコミットをしてる人たちの履歴くらいしか取れないな〜、ということで世の中のツールを探したところ、SonarQubeにたどり着き、セットアップをして使ってみることになった、という経緯。
SonarQube
ウェブサイト
こちら
Community Editionというのを使えば無料です。
何ができる?
「プログラム品質管理を行える統合品質管理ツール」とでも言えばよいのか、とにかく静的にいろいろ解析してくれます。
仕組み
荒く説明すると、クライアントで静的解析を行い(Scanner)<図中(1)の部分>、その結果をサーバに送り、サーバに送られた静的解析結果はWebUIから見やすい形で閲覧が可能になる<図中(2)の部分>、というのが大枠の仕組みです。(他の使い方もあるかもしれませんが、現在のところはここまでしか試していません)
これから説明するDockerのコンテナがサーバということになります。
対応言語
20以上対応しているみたいです。以下は対応言語の一例です。
- Java
- VB.NET
- C/C++
- PL/SQL
- C#
- T-SQL
- COBOL
- Flex
- ABAP
- Python
- HTML
- Groovy
- RPG
- PHP
- JavaScript
- Swift
- TypeScript
- Visual Basic
- Objective C
- PL/I
- Kotlin(行けるっぽい)
- (他にもあるみたい)
Requirement
動作させる手段はいろいろあるみたいです。ここではDockerで動作させサクッと動かすところの説明をします。
- Dockerが動くこと
- 解析対象のソースコードがある
ここの説明はmacOSを使って行います。
早速動かしてみる
Docker Hubに公式Imageが公開されているのでサクッと動きます。Docker Hubのページにもインストール方法が説明されていますがインストールは全く同様の内容、その後の実行はオリジナルで説明していきます。
1. 導入する
導入は以下の1行で完了です。
$ docker run -d --name sonarqube -p 9000:9000 sonarqube;
2. ブラウザに表示する
ブラウザで http://localhost:9000 にアクセスしたらそこではSonarQubeが動いています。
3. ログインしてプロジェクトを作成する
[Log in]をクリックして、ID: admin, PASS: admin でログインします。
その後[Creatte Project]からプロジェクトを作ります。
4. Tokenを生成する
Tokenは静的解析をクライアント(Scanner)で行った結果をサーバに送信する際に必要となります。再作成も可能ですがメモることをオススメします。
5. scannerをセットアップして静的解析を行い結果を表示する
続いて、Scanner(静的解析をクライアントで行うツール)をクライアント(ここではmacOS)にダウンロードしてセットアップします。
セットアップ後、PATHまで通したら説明の通りのコマンドをクライアント(ここではmacOS)から実行します。コマンドもコピペでOKなので簡単です。
$ git clone https://github.com/ryoyakawai/midimessageviewer.git;
$ cd midimessageviewer/;
$ sonar-scanner \
-Dsonar.projectKey=test00 \
-Dsonar.sources=. \
-Dsonar.host.url=http://localhost:9000 \
-Dsonar.login=xxxxxxxxxx38e5812ff9a5de07e;
Scanner(静的解析をクライアントで行うツール)での静的解析が完了すると、以下のようにブラウザの画面が切り替わります。切り替わったら完了です。
以上でSonerQubeでの静的メトリクス分析の作業は終了です。あとは内容を読みつつ修正を行い品質の改善をおこなっていきます。
動作させること自体は拍子抜けするほど簡単ですので興味がある方は是非挑戦してみてください。