11

Visual Studio 2010 がテスト カバレッジ分析を実行し、その出力が統合ビルド中に NDepend に吸収されるセットアップがあります。

いくつかのアセンブリには、NDepend で無視する必要がある生成コードが含まれています。
これを行う方法はありますか?できれば名前空間全体。

4

2 に答える 2

5

コードクエリとルールオーバーLINQ(CQLinq)は、実際に生成されたコードを無視する機能を提供します。

タイプICodeBaseViewのJustMyCodeという名前の便利な定義済みドメインがあります。

ドメインJustMyCodeは、CQLinqクエリ結果から生成されたコード要素を削除するCQLinqの機能を表します。たとえば、次のクエリは、ツール(UIデザイナーなど)によって生成されない大きなメソッドにのみ一致します。

from m in JustMyCode.Methods where m.NbLinesOfCode > 30 select m

生成されたコード要素のセットは、CQLinqキーワードnotmycodeで始まるCQLinqクエリによって定義されます。たとえば、以下のクエリは、名前が「.designer.cs」で終わるソースファイルで定義されたメソッドと一致します。

notmycode from m in Methods where
  m.SourceFileDeclAvailable && 
  m.SourceDecls.First().SourceFile.FileName.ToLower().EndsWith(".designer.cs")
select m

CQLinqクエリランナーは、JustMyCodeに依存するクエリの前に、すべてのnotmycodeクエリを実行しますしたがって、ドメインJustMyCodeはすべてに対して1回定義されます。明らかに、 notmycodeクエリがJustMyCodeドメインに依存している場合、CQLinqコンパイラはエラーを発行します。

デフォルトのnotmycodeクエリは4つあり、ニーズに合わせて簡単に調整できます。名前空間のデフォルトのnotmycodeクエリはありませんが、独自の名前空間を作成できることに注意してください。

于 2011-09-13T09:16:37.630 に答える
1

Found this in the "Quick summary of methods to refactor"

// Here are some ways to avoid taking account of generated methods.
!( NameIs "InitializeComponent()" OR
   // NDepend.CQL.GeneratedAttribute is defined in 
   // the redistributable assembly $NDependInstallDir$\Lib\NDepend.CQL.dll
   // You can define your own attribute to mark "Generated".
   HasAttribute "OPTIONAL:NDepend.CQL.GeneratedAttribute") 

But that doesn't address the need to modify every CQL query to ensure they all ignore the generated code.

于 2011-09-30T00:22:08.550 に答える