Help us understand the problem. What is going on with this article?

ソースコードの静的メトリクス分析

これは何?

静的メトリクス分析をお手軽にできないのか?を調べたときのメモで SonarQube について書いてあります。

経緯

GitHubにあるソースコードの静的メトリクス分析を行いたくて始めて、まずはGitHub APIのこの辺りを叩くようにGitHub.jsに手を入れて作ってみたものの、ソースコードの成長率とコードのコミットをしてる人たちの履歴くらいしか取れないな〜、ということで世の中のツールを探したところ、SonarQubeにたどり着き、セットアップをして使ってみることになった、という経緯。

SonarQube

ウェブサイト

こちら
Community Editionというのを使えば無料です。

何ができる?

「プログラム品質管理を行える統合品質管理ツール」とでも言えばよいのか、とにかく静的にいろいろ解析してくれます。

仕組み

荒く説明すると、クライアントで静的解析を行い(Scanner)<図中(1)の部分>、その結果をサーバに送り、サーバに送られた静的解析結果はWebUIから見やすい形で閲覧が可能になる<図中(2)の部分>、というのが大枠の仕組みです。(他の使い方もあるかもしれませんが、現在のところはここまでしか試していません)
これから説明するDockerのコンテナがサーバということになります。
Screen Shot 2019-09-12 at 10.59.32 PM.png

対応言語

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が動いています。

こんな画面が出てきて、
Screen Shot 2019-09-12 at 14.18.44.png

しばらく時間が経つと、この画面に切り替わります。
Screen Shot 2019-09-12 at 14.19.39.png

3. ログインしてプロジェクトを作成する

[Log in]をクリックして、ID: admin, PASS: admin でログインします。
その後[Creatte Project]からプロジェクトを作ります。
Screen Shot 2019-09-12 at 14.24.42.png

4. Tokenを生成する

Tokenは静的解析をクライアント(Scanner)で行った結果をサーバに送信する際に必要となります。再作成も可能ですがメモることをオススメします。
Screen Shot 2019-09-12 at 14.25.58.png

5. scannerをセットアップして静的解析を行い結果を表示する

続いて、Scanner(静的解析をクライアントで行うツール)をクライアント(ここではmacOS)にダウンロードしてセットアップします。
Screen Shot 2019-09-12 at 14.29.21.png

セットアップ後、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(静的解析をクライアントで行うツール)での静的解析が完了すると、以下のようにブラウザの画面が切り替わります。切り替わったら完了です。
Screen Shot 2019-09-12 at 15.24.04.png

以上でSonerQubeでの静的メトリクス分析の作業は終了です。あとは内容を読みつつ修正を行い品質の改善をおこなっていきます。
動作させること自体は拍子抜けするほど簡単ですので興味がある方は是非挑戦してみてください。

Reference

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away