NDependは、彼らの主要な製品である静的コード分析の新しいバージョンをリリースした。NDepend 4は、Code Query LINQ、NDepend.API、そしてVS 2012サポートを提供する。Code Query LINQは、コードに対してクエリを書くことができるLINQプロバイダのように聞こえる。Patrick Smacchia氏の製品発表に簡単な例が紹介されている。
// <Name>ベースクラスは継承クラスを使うべきではない</Name>
warnif count > 0
from baseClass in JustMyCode.Types
where baseClass.IsClass && baseClass.NbChildren > 0 // <-- for optimization!
let derivedClassesUsed = baseClass.DerivedTypes.UsedBy(baseClass)
where derivedClassesUsed.Count() > 0
select new { baseClass, derivedClassesUsed }
このソースのJustMyCodeは、ユーザー生成かコード生成かを区別するために使われている。それ以降のクエリは、自分自身のサブクラスを参照しているクラスがいないかを名称から探している。
NDependは多くの側面を見る機能を備えている。彼の例のひとつで、Patrick氏はコードカバレッジとサイクロマティック複雑性を比較することでリスクの高いコードを特定する方法を提示している。このテクニックは、Alberto Savoia氏のリスク分析と予測を変更という研究プロジェクトをベースにしている。
おそらく上記の例でwarnifというプレフィックスに気づいているだろう。これは、NDependが彼らの標準ツールで静的分析ルールを作成するために使用される。もし自作の静的分析ツールを使いたい場合、新しくリリースされたNDepend.APIを使うことができる。機能リストには、次の機能が含まれている:
- ひとつまたはいくつかの.NETアセンブリを分析して、NDependレポートを作成(Build Machineライセンスがある場合のみ)
- 対象のアセンブリの名前空間、型、メソッド、フィールドの依存性を探る
- 通常のコードメトリック、NDependで算出したコード要素、自作のコードメトリックを収集する
- 分析された2つのバージョンの.NETコードベースの違いと多くのバージョン間の進化を探る
- コード要素のソースファイル宣言を開く
- CQLinqルールとクエリのメモリ上生成と実行
Patrick氏の.NETコードの重複を見つける独自のアルゴリズムというタイトルの記事では、NDepend.APIでの実行を提示している。
NDependは商用製品だが、オープンソースコミュニティのためにいくつかのアフォーダンスを作っている。Patrick氏によると、
だが、私たちはコミュニティとwin-winの関係を構築することを約束します。すべての学生/教師/OSS開発者/ブロガー/MVP...私たちは喜んで無料のproライセンスを提供して、彼らが言葉を広めてくれることを望んでいます。