我正在尝试创建一个自定义fxcop规则,该规则检查目标程序集中的所有方法,其名称不以大写字母开头。我这样做非常成功,但有一个问题。 该规则也为“委托方法”抛出错误,例如。 btnOk_Click我不想要,有没有办法使用任何预定义的属性/方法识别/过滤fxcop中的委托方法?
答案 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代码规则可以是executed/validated live in VS,也可以在构建过程时和validated in a report执行。