我有一个设置,其中Visual Studio 2010运行测试覆盖率分析,并且它的输出在集成构建期间被NDepend吸收。
一些程序集包含NDepend需要忽略的生成代码 有没有办法做到这一点?最好是整个命名空间。
答案 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查询的需要,以确保它们都忽略生成的代码。