1

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

4

1 回答 1

1

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

NDepend 专门设计用于通过 LINQ 查询轻松进行自定义代码规则编辑。以下代码查询 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 自定义代码规则

NDepend 代码规则可以在 VS 中实时执行/验证,或者可以在构建过程时执行并在报告中验证

于 2012-12-05T10:51:37.103 回答