我在使用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