是否可以从NDepend分析中排除整个名称空间?

时间:2011-09-12 15:11:54

标签: visual-studio-2010 namespaces code-coverage ndepend cqlinq

我有一个设置,其中Visual Studio 2010运行测试覆盖率分析,并且它的输出在集成构建期间被NDepend吸收。

一些程序集包含NDepend需要忽略的生成代码 有没有办法做到这一点?最好是整个命名空间。

2 个答案:

答案 0 :(得分:4)

Code Query and Rule over LINQ (CQLinq)确实为忽略生成的代码提供了便利。

有一个名为 JustMyCode 的方便预定义域名ICodeBaseView

JustMyCode 表示CQLinq的工具,用于从CQLinq查询结果中消除生成的代码元素。例如,以下查询仅匹配工具(如UI设计器)未生成的大型方法:

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

生成的代码元素集由CQLinq查询定义,前缀为CQLinq关键字 notmycode 。例如,下面的查询匹配源文件中定义的方法,源文件的名称以“。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 被定义为一次。显然,如果 notmycode 查询依赖于 JustMyCode 域,CQLinq编译器会发出错误。

有4个默认 notmycode 查询,可轻松根据您的需要进行调整。请注意,名称空间没有默认的 notmycode 查询,但您可以创建自己的名称

答案 1 :(得分:1)

在“重构方法的快速摘要”

中找到了这个
// 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") 

但这并未解决修改每个CQL查询的需要,以确保它们都忽略生成的代码。