NDepend无法在规则中找到mscorlib的属性

时间:2018-02-12 08:54:27

标签: ndepend

我试图排除interop结构(具有显式结构布局的结构)以及#34; dead field"来自NDepend的警告。我添加属性过滤器的查询如下所示:

warnif count > 0
from f in JustMyCode.Fields where
  f.NbMethodsUsingMe == 0 && 
  !f.IsPublic &&    
  !f.IsLiteral &&    
  !f.IsEnumValue &&  
  f.Name !=  "value__" &&       
  !f.ParentType.HasAttribute("System.Runtime.InteropServices.StructLayoutAttribute") &&  
  !f.IsGeneratedByCompiler

但NDepend会抱怨StructLayoutAttribute不是有效的类型名称。 mscorlib列在ndproj文件中的<FrameworkAssemblies>下。

在使用mscorlib中的系统类型时,我注意到默认规则集中的许多规则都有AllowNoMatch()。例如,有关DllImport的规则使用

 m.HasAttribute ("System.Runtime.InteropServices.DllImportAttribute".AllowNoMatch()) &&

这是什么意思?当用户没有在<FrameworkAssemblies>列表中引用mscorlib时,是否可以阻止规则窒息?或者我误解了NDepend如何实际解决第三方类型的问题? 我添加.AllowNoMatch()不再存在语法错误,但当然规则现在将我的struct字段报告为未使用。

0 个答案:

没有答案