オープンソースのソースコード品質管理ツールである Sonar の新バージョンは、設計とアーキテクチャのメトリクスを提供する。Sonar 2.0 は、Javaアプリケーション向けの設計、アーキテクチャそしてオブジェクト指向のメトリクスの分析を導入した。そして Sonar 2.1 バージョンは、最近リリースされ、未使用のメソッドを検知する。
アーキテクチャ メトリクスのフィーチャの中には、Dependency Structure Matrix (DSM) と呼ばれる新しい可視化ツールが含まれており、コンポーネント間にまたがる依存性を表し、ナビゲートできる。望ましくない依存性を断ち切って、パッケージ間の循環依存を除いたり、余りに多くの責務(これは、単一責務の原則 (SRP) パターンへの違反である)を持つクラスを特定するのに使うことができる。オブジェクト指向のメトリクスには、継承ツリーの深さ(DIT)、子クラスの数(NOC)、クラスと関係しているメッセージの数 (RFC)、求心性/遠心性 結合 (CA/CE)とメソッドにおける凝集性の欠如(LCOM)のようなChidamber & Kemerer メトリクスがある。最新バージョンもまた Squidの上に新しいルールエンジンを持っている。 Squidは、Sonar内のパーサーでソースコードとバイトコードの両方に対して動き、使われない private とprotected メソッドおよび非推奨メソッドへのクライアントの呼び出しを検知するのに使うことができる、組込み済の ルール を持っている。 Squidは、アプリケーションのソースコード、Java API、そして外部ライブラリのバイトコードを解析して、どのメッソド、クラスそしてフィールドが非推奨かを決定する。Sonar 2.1 リリースの他の 新しいフィーチャ は:
- 新しいLibrariesページで、すべてのプロジェクトライブラリと依存関係を表示する。このフィーチャが有効になるには、プロジェクトが Maven アプリケーションビルドツールでビルドされる必要がある。プロジェクトが Sonarサイトのメインページで一度、選択されると、このサービスにより、プロジェクトの依存関係ツリーを可視化できる。またオプションで、動的なフィルタも使え、名前でライブラリをフィルタして、アプリケーションの推移的な依存関係を検索できる。
- 「依存関係」ページは、ライブラリの使用法を検索するのに使われる;例えば、Commons Logging バージョン1.1のようなサードパーティのフレームワークに依存するすべてのプロジェクトを探し出す。
- Sonar の機能は、ツールに統合できる様々な プラグイン を使って拡張できる。新しい"System Info"ページは、システムのプロパティ、インストールされたプラグインそしてJava仮想マシン(JVM)のメモリ統計情報を表示する。このページは、また 詳細なSonarの設定とデータベースの統計情報を提供する。
- インストールされたプラグインとシステム情報を示す管理用コンソール
Sonarの新しいリリースは、テストフレームワークとこれらのプラグイン用のカスタムな Mavenライフサイクルを含んでいる。また、プロジェクトのイベントと統合するためのwebサービスとプロジェクトサイズのウィジェットに、新しいメトリックス モジュールも持っている。
SonarチームのFreddy Mallet氏は、パッケージ間のサイクルの管理 とフレームワークの新バージョンを使って クラスレベルで、設計を整理する ことについて書いた。Sonar開発チームは、また Eclipse IDE用の プラグイン を開発しており、先月、バージョン0.1が リリース された。読者は、また Project Nemoをチェックすることができる、このプロジェクトは、 Apache Commons フレームワーク, Apache Tomcat, Struts2, Esper などのオープンソースのプロジェクトについて、ソースコード解析の統計情報を示したSonarのオンライン事例である。