連載
» 2010年10月08日 00時00分 公開

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

[岡本隆史,@IT]

Sonarのアーキテクチャ・仕組み

 Sonarは、大きく分けて、WebアプリケーションのSonar本体とSonarのプラグイン、MavenのSonarプラグイン、そしてデータベースから構成されています。メトリクスの収集は、ソースコードのビルド実行時にMavenのSonarプラグインを実行することにより行います。

図2 Sonarのアーキテクチャ 図2 Sonarのアーキテクチャ

 Sonarの処理の流れは、次のとおりです。この構成と処理の流れを頭に入れておくと、ビルドサーバとSonarサーバ、データベースを別のサーバマシンで実行するように設定を変更する際や、トラブルが発生したときの切り分けが楽になるので、覚えておくといいでしょう。

【1】Sonarの設定情報、プラグイン取得

 MavenのSonarプラグインを実行すると、Sonar本体にプロジェクトの設定情報の取得と必要なモジュールをダウンロードします。Sonar本体より設定情報やモジュール(jarファイル)を取得するため、ビルドファイル側での設定を極力減らしています。

【2】ビルド・メトリクス計算

 取得した設定ファイルに基付き、ビルドとメトリクスを算出します。Javaであれば、JUnitによるテスト、Coberturaによるカバレッジの取得、そのほかのメトリクス情報が算出されます。

【3】メトリクス情報登録

 算出されたメトリクスはSonarプラグインから直接データベースに書き込まれます。データベースの設定については後述しますが、データベースを変更する場合はMavenの設定が必要です。

【4】設定、参照

 ユーザーは、WebブラウザでSonarにアクセスします。デフォルトのポートは9000番です。Webの画面からSonarに関する設定やメトリクスの閲覧を行います。閲覧時には、データベースからメトリクス情報を取得して画面を作成します。

潜水艇「Sonar」に試乗してみよう!

 繰り返しますがSonarは、デフォルトではJava言語に対応しています。本稿では、Windows上でJavaアプリケーションを開発することを前提に、Windows上での動作を前提に利用方法を紹介します。もちろんJavaアプリケーションなのでWindows以外のOSでも動かせます。

 なおSonarの利用には、メモリがそれなりに必要です。1Gbyte以上のメモリを値搭載しているPCで試してください。

Sonarを利用する準備

 Sonarを利用するためには、JDK/JREとMavenが必要です。JDK/JRE(1.6以降)、Mavenをダウンロードし、適当なディレクトリにインストールしてください。

 また、適当なMavenプロジェクトを準備してください。Mavenプロジェクトを持っていない場合は、Trac Lightningのサンプルコードなどをご利用ください。TracLightningのMavenのサンプルプロジェクトは、「http://svn.sourceforge.jp/svnroot/traclight/trunk/install/repository/LibraryProject/trunk/」からSubversionで取得できます。

インストール・起動

 Sonarのサイトからダウンロード、インストールします。インストールしたSonarのディレクトリに移動し、下記のコマンドにより、Sonarを起動してください(Windowsの場合)。

> bin\windows-x86-32\StartSonar.bat

 ここでは、試しで利用するため、コマンドライン上でSonarを実行する方法を紹介しましたが、Windowsサービスとして登録、実行することもできます。Windowsサービとして利用するには、「bin\windows-x86-32」内の下記のコマンドを利用します。

表1 (参考)SonarのWindowsサービス用コマンド
コマンド名 説明
InstallNTService.bat サービスとしてインストール
StartNTService.bat サービスの開始
StopNTService.bat サービスの停止
UninstallNTService.bat サービスのアンインストール

MavenのSonarプラグインを実行

 Mavenのプロジェクトから、下記のコマンドによりMavenのSonarプラグインを実行すればSonarにメトリクス情報が登録されます。Sonarプラグインを実行する前に、cleanコマンドでプロジェクトをクリーンにしておくといいでしょう。

> mvn.bat clean sonar:sonar

 Sonarを起動してすぐにMavenを実行すると、Sonarが起動が完了していないため、エラーになることがあります。そのような場合は、少し時間を置いてからコマンドを実行してみてください。

Webブラウザで確認

 Sonarプラグインの実行後、「http://localhost:9000/」にアクセスすると、Sonarの画面が表示されます。

図3 Sonarの起動ページ 図3 Sonarの起動ページ

 先ほど実行したMavenのプロジェクトが登利用録されているので、表示しているクリックするとメトリクス情報を見られます。

図4 デフォルトで取得できるメトリクス 図4 デフォルトで取得できるメトリクス

 色が付いているものは、オレンジが警告で赤が危険、緑が安全の意味を示します。メトリクスごとに“しきい値”が設定され、しきい値を超えると色が付くようになっています。メトリクスをクリックすると、パッケージごとの詳細が表示されます。

 デフォルトの状態では、次のメトリクスを取得できます。

表2 デフォルトで表示されるメトリクスの種類
カテゴリ 名前 説明
【1】規模情報    Lines of Code コードの行数(コメント、空白を除いた行数)
lines コード全体の行数
statements ステートメント数
files ファイル数
【2】クラス情報    Classes クラス数
packages パッケージ数
methods メソッド数
accessors アクセッサ数
【3】コメント情報     Comments コメントの割合
lines コメントの行数(/*、*/、//だけの行は除く)
doc.API APIのコメントが記述されたAPI率
undoc.API APIのコメントが記述されていないAPI率
commented LOCc コメントアウトされたコードの行数
【4】重複したコード    Duplications 重複したコードの割合
lines 重複したコードの行数
blocks 重複したコードのブロック数
files 重複したコードを持つファイル数
【5】コーディング規約  Rules Compliance 規約順守率。以下のカテゴリごとに規約にどれだけ順守しているか。すべて順守している場合、100%となりレーダチャートが大きくなる
  • Eff.(有効性)
  • Mai.(保守性)
  • Por.(再利用性)
  • Rel.(信頼性)
  • Usa.(ユーザビリティ)
Violations 重要度別の規約違反の数
【6】複雑性   /methods メソッドの複雑性
/class クラスの複雑性
/file ファイルの複雑性
【7】カバレッジ・テスト        Code Coverage インカバレッジとブランチカバレッジを混ぜたカバレッジ
line coverage ラインカバレッジ(各行が実行されているか)
branch coverage ブランチカバレッジ(各分岐が網羅的に実行されているか)
tests テスト数
ms 実行時間
Test success パスしたテストの割合
failures 失敗したテストの数
errors 例外により失敗したテストの数

 メトリクスの詳細については、Codehausの「Metric definitions」に記載されているので、興味がある方は、そちらもご覧ください。

 次ページでは引き続き、基本的なSonarの使い方や、プロファイルをカスタマイズする方法を解説します。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。