夢とガラクタの集積場

落ちこぼれ三流エンジニアである管理人の夢想=『夢』と、潰えた夢=『ガラクタ』の集積場です。

来年向け:Sonar

そろそろ今年も終わり、ということで、来年に調べると面白そうな技術要素を
列挙していく方針で。

今回はSonar。(InfoQ


何かというと、ソースコード品質管理ツール

リポジトリに登録されたソースコードに対して解析を行い、
結果をレポート形式で出力するツールです。
ソースコードの量やら、コメント率やら、ソースコードの複雑度やら。

これだけだと他にもあるんですけど、面白そうなのは「アーキテクチャルール」。

===
開発者は、異なったパッケージにあるクラス間での参照を認めないパターンベースのルールを
定義することができる。
パターンの例には、*.dao.* クラスから*.web.*へのアクセスを禁止したり、
どのクラスからも java.util.Vector, java.util.Hashtable や java.util.Enumeration へのアクセスを
禁止するものが含まれている。
ソースコードアーキテクチャ制約のセットに忠実に守れば、
プロジェクトは、アーキテクチャ モデルを遵守することになる。
このルールを使うには、Javaバイトコード 分析が必要である

===

参照をルールとして定義して警告が出せるのは面白い。
これを利用すれば、下記みたいな解析が出来そう。

  1. DaoやJDBCドライバ系の参照を禁止することで、WebシステムでAction層からデータベースをレイヤーを無視してアクセスすることを検出
  2. 同一パッケージとプロジェクトのcommonパッケージにのみ参照を許すことで、後で他プロジェクトに機能を移行しやすくする
  3. スレッドやconcurrent系のパッケージに対する参照を禁止することで、開発者が独自方式でスレッドを起動することを検出

後は、Mavenのレポートも取り込める、となるとおそらく
CheckStyleFindBugsといった
他の静的解析のツールの結果も統合して表示できるんだろうなぁ。

加えて、カスタムダッシュボードを作れる辺りも面白い。
この辺りは使うだけでなくて、OSSなので実際にソースコードを見てみるかなぁ。。。