検索
連載

コード探知機「Sonar」でプロジェクトの深海を探れ!ユカイ、ツーカイ、カイハツ環境!(17)(1/4 ページ)

Share
Tweet
LINE
Hatena

プロジェクトの深海を照らす「Sonar」とは?

 「Sonar」は、スイスのSonarSource S.A.を中心に開発されているコードの品質管理を行うオープンソースのプラットフォームです。LGPLライセンスで提供され、無償で利用可能で、拡張も自由です。

 2009年に「Jolt Product Excellence Awards」「Open World Forum Innovation Awards」などを受賞した、いま注目のツールです。


 Sonarは、まるで音波探知機を装備した潜水艦のように、コードのさまざまなメトリクス(統計情報)を総合的に集計し、現在の開発の状況を視覚化します。非常に使いやすいWebのUI(ユーザーインターフェイス)で、プロジェクトごとのメトリクスから各パッケージごとのメトリクスまで、ドリルダウンすることにより、問題が潜んでいそうなところを調査できます。

図1 Sonarの画面
図1 Sonarの画面

 さらに、プロジェクトごとのメトリクスを横並びすることにより、ほかのプロジェクトとのメトリクスの差異を見ることができます。

Sonarが持つ、7つの装備

 Sonarは次のような特徴を装備しています。

【1】さまざまな言語に対応

 デフォルトはJava言語のみに対応していますが、後述するプラグイン拡張によりPHPFlex.NETなどのほかの言語にも対応します。プラグインには、オープンソースで利用できるものと商用プロダクトのものがあります。詳細は、SonarのWebサイト上の記事「Sonar has become a Multi-Languages Platform」をご覧ください。

 余談ですが、Sonar自身はJavaとRubyで記述されており、JVMで動作するという、面白い構成になっています。

【2】品質の集中管理が可能

 SonarはWebアプリケーションとして利用できるため、各プロジェクトのメトリクス情報をSonarに登録しておけば、Sonarで集中して品質の管理ができます。複数のプロジェクトを集中管理できるため、集中管理ができるようになります。

 メトリクスに対する設定変更やプラグイン導入などもWebインターフェイスを利用してサーバ側で管理すればよいので、メトリクスを取得するために複雑なビルドファイルを記述する必要はありません。

【3】プラグインによる拡張性

 Sonarはプラグインアーキテクチャを採用しており、プラグインの作成により、ルールエンジン、新しいメトリクスを利用できるようになります。オープン性が高いので、EclipseTracのようにたくさんのプラグインがコミュニティや企業により提供されています。

 提供されているプラグインについては、「Sonar Plugin Library」をご覧ください。

【4】分かりやすいUI

 図1でも紹介したように、簡潔で分かりやすいUIにより、メトリクス上問題がある個所を簡単に特定できます。

【5】タイムマシン

 メトリクスの変化を時系列に見られるタイムマシン機能があります。リファクタリングなどの改善により、ソフトウェアの品質が向上していく様子を視覚的に見ることができます。

 また、急なloc(ステップ数)の増加など、問題となりそうな状況を視覚的にとらえられます。

【6】標準的なメトリクスを統合して表示

 loc(ステップ数)やサイクロマティック複雑性、重複コード、コメント率、カバレッジなど、標準的なメトリクスを取得できます。また、600以上のコーディング規約をチェックできます。なお内部では、JUnitFindBugsPMDCPDCoberturaなどのツールの結果を集計しています。

 また、ツールの結果がバラバラに出るようなことはなく、複数のツールの結果を統合して表示してくれます。例えば、Javaのコーディング規約違反であれば、PMDやFindBugs、CheckStyleの表示を統合して、コーディング規約違反として表示します。

【7】Mavenのプラグインとして提供

 SolarはMavenのプラグインとして提供されています。Mavenを導入しているプロジェクトであれば、簡単にSonarを利用できます。逆にMavenの知識が必要なので注意が必要です。

 実際に動作するSonarをSorceforgeのサイトで触ってみることができるので、どのようなものか確認したい方は、のぞいてみるといいでしょう。

 次ページでは、Sonarのアーキテクチャ・仕組みを解説し、使い始めてみます。

Copyright © ITmedia, Inc. All Rights Reserved.

       | 次のページへ
ページトップに戻る