RSS

来年向け: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のレポートも取り込める、となるとおそらく
CheckStyle、FindBugsといった
他の静的解析のツールの結果も統合して表示できるんだろうなぁ。

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

0 コメント:

コメントを投稿