如何在fxcop中识别方法

时间:2012-12-04 15:47:13

标签: c# fxcop fxcopcmd

我正在尝试创建一个自定义fxcop规则,该规则检查目标程序集中的所有方法,其名称不以大写字母开头。我这样做非常成功,但有一个问题。 该规则也为“委托方法”抛出错误,例如。 btnOk_Click我不想要,有没有办法使用任何预定义的属性/方法识别/过滤fxcop中的委托方法?

1 个答案:

答案 0 :(得分:1)

一个想法是通过工具NDepend编写自定义代码规则(免责声明:我是该工具的开发人员之一)。

NDepend特别设想通过LINQ查询轻松实现自定义代码规则编辑。以下Code Query LINQ(CQLinq)查询涵盖了您的需求:

// <Name>Method name MUST start with CAPITAL</Name>
warnif count > 0 
from m in Application.Assemblies.WithName("TargetAssemblyName").ChildMethods()
where 
  !m.IsSpecialName &&         // Remove getter and setter
  !m.IsGeneratedByCompiler && // Discard methods generated by compiler
  !m.ParentType.IsDelegate &&
  !m.NameLike("^btn") &&      // Use regex here to discard btnOk_Click like method
  !char.IsUpper(m.SimpleName[0])
select m

只需在VS的NDepend查询编辑器中编写此代码规则,即可获得即时反馈:

NDepend Custom Code Rule

NDepend代码规则可以是executed/validated live in VS,也可以在构建过程时和validated in a report执行。