如何让NDepend忽略EF类?

4
我在使用NDepend时遇到了一个小问题,它没有忽略生成的代码。当实体数据模型被创建时,EF会生成designer.cs文件,在此文件中的参数过多的方法周围,NDepend会发现问题。虽然该类已经用“auto-generated”注释进行了说明,但仍然被NDepend检测到。
我似乎找不到如何强制忽略*.designer.cs文件或者甚至忽略特定文件而不使用通配符的方法。最接近的是这篇来自Patrick几年前的帖子,他提到了计划做这件事情,但没有更多的信息。
我有什么遗漏吗?有没有简单的方法来排除这个问题?
1个回答

6

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关键字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查询:

JustMyCode 会忽略任何被 [NDependIgnore] 装饰的内容吗?如果不行,那能否实现呢? - Steve Dunn
1
然后你需要创建一个NDependIgnoreAttribute,确保更新notmycode查询以避免匹配像&&!method.HasAttribute("Namespace.NDependIgnoreAttribute ")这样装饰的内容。https://www.ndepend.com/docs/cqlinq-syntax#NotMyCode - Patrick from NDepend team

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接