我在使用NDepend时遇到了一个小问题,即不忽略生成的代码。创建实体数据模型时,EF会在EF生成的designer.cs文件中包含太多参数的方法中解决问题。该类带有“自动生成”注释,但仍被NDepend接受。

我似乎找不到如何强制* .designer.cs被忽略,或者甚至忽略不带通配符的特定文件的方法。我最接近的是几年前的this post,Patrick提到了要这样做的计划,但仅此而已。

我想念什么吗?有没有简单的方法可以排除这种情况?

最佳答案

Code Query and Rule over 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被全部定义一次。显然,如果notmycode查询依赖JustMyCode域,则CQLinq编译器会发出错误。

有4个默认的notmycode查询,可轻松适应您的需求。您还可以创建其他notmycode查询:


Discard generated Assemblies from JustMyCode
Discard generated Types from JustMyCode
Discard generated and designer Methods from JustMyCode
Discard generated Fields from JustMyCode

10-06 14:36