CROOZ TECH BLOG

~読んだらわかるSHOPLISTの裏側~

CROOZ TECH BLOGとはクルーズ株式会社の開発チームが技術について共有するブログです
開発の中での発見や知識を広めてオモシロカッコイイ〇〇をツクリます。

ソースコードの品質メトリクス可視化のためにSonerQubeを導入してみた話

こんにちは。クルーズ株式会社CTOの鈴木です。

今回は、ソースコード品質の可視化を行う仕組みをとしてSonarQubeを導入してみようという話です。

www.sonarqube.org


きっかけ

ソースコードの品質の基準って何が適切なんだろうというところから話が始まっています。

私がCROOZ株式会社に入社した当時、Jenkins+CheckStyle+phpmdなど使って、規約違反や、重複やバグの疑いのあるコードを機械的に探してあげるというこ仕組みを構築し、運用していたことがあったのですが、運用に課題を感じていました。

理由としては、まずコーディング規約に違反があったからといってそれが一概に品質の悪いソースコードとは言えない点、そして疑いがあるものをリストアップしたところでそれが疑いなのかそうじゃないのかの切り分けは結局開発者になり、ある程度継続的デリバリーを提供するツール内でフィルタリングができないと業務効率が悪く、結局開発者もツールが提供する情報を使わなくなると感じたためです。

 

SonarQubeも基本的な考え方はCheckStyle+phpmdなどと同じなのですが、大きく違うなと感じた部分については

 

・ソフトウェアの品質メトリクスとして客観的に判断できる指標があり、それを基準としてPDCAが回せそうであるから。

PHP以外にAndroidのコードについても静的解析が行えるから。

・視覚的に分かりやすいから

 

の3点で、テスト的に私の横にあるデスクトップPCに一式インストールを行い実際のサーバサイドのソースとネイティブアプリのJavaのソースでデイリーで実行しまずは使ってみました。

所感

■GOODな点

ダッシュボードが視覚的に分かりやすい。

・issuesもphpmdと比較すると分かりやすいの精度が高い。

■MOREな点

・日本語の文献の量が少ない。特にカスタマイズしようと思うとしんどい。

・現状のコードをそのまま解析すると膨大な検出件数となり、膨大なissuesが作成される。

 

基本的に日本語ドキュメントの量が少ないことが最も大きな問題だと感じています。特にQuality Profile周りの設定がよくわからず、結果として自分の中でいまいちな評価になっているのだと思います。

また、今の状況だとSonarQubeに頼らなくてもログファイル上のWarningでもっと先に対応しなければならない顕在化した品質の問題が見えているため、まずはログ上でWarning/Deprecatedが発生している箇所の修正を優先し、SonarQubeでソース解析を行った現実的にPDCAを回せるレベルのソースコードにすることを優先したいと考えています。

上記とは別にSonarQubeのQuality Profile設定周りに詳しい方がいたら是非教えてください!