通过生成参数验证来修复 FxCop CA1062

Posted

技术标签:

【中文标题】通过生成参数验证来修复 FxCop CA1062【英文标题】:Fix FxCop CA1062 by generating validation for parameter 【发布时间】:2013-03-15 07:05:41 【问题描述】:

为大型项目打开代码分析会显示大量 CA1062 衰减,这在 IMO 中是绝对正确的。

我想自动处理这些,而不必逐个处理,无论如何通过对所有方法参数使用断言或类似的东西来在整个代码中自动处理这些:

if (input == null)

    throw new ArgumentNullException("input");

【问题讨论】:

据我所知,这不是一个简单的方法。 Phill Haack 在这里写了关于这个确切的事情:haacked.com/archive/2013/01/05/… 他的解决方案是使用 AOP 重写方法签名,在每个签名中注入非常检查。有点笨拙,IMO,但大约是可以期望的最好的。 【参考方案1】:

是的,有很多方法可以自动添加空检查。除了 Bryan Ross 已经提到的 AOP 方法之外,您还可以创建一个工具,根据代码分析报告文件中发现的违规情况修改源代码。这会更细化(即:不在它们可能实际不属于的地方强加空验证),但您需要投入一些精力来构建工具来做到这一点。

也就是说,大量缺失的 null 检查通常很好地表明代码库中缺少各种参数验证。如果您想尝试解决所有这些问题,则需要手动操作,并且自动进行空值检查可能会隐藏您应该关注的区域。

就个人而言,我倾向于选择更手动的清理,VS sn-ps 用于促进更常见的验证(例如:非空、非空、范围内、允许列表中的枚举)。如果您想在清理工作结束(甚至开始)之前启用 CA1062 规则,http://msmvps.com/blogs/calinoiu/archive/2007/04/22/fxcop-and-the-big-bad-backlog.aspx 中描述的“TODO”抑制方法可能会很有用。

【讨论】:

谢谢你,我正在阅读你博客上的 FXcop 帖子,真的很有趣,我想周末打印一些。

以上是关于通过生成参数验证来修复 FxCop CA1062的主要内容,如果未能解决你的问题,请参考以下文章

VS代码分析CA1062即使在空检查后也会触发

有没有办法在自定义 System.Security.IPermission 实现上修复此 FxCop CA2103 警告?

通过命令行从 FXCop 中排除规则

FxCop:CA1709:使用 Resharper 中的首字母缩略词字典

构造新异常时抑制 CA1303 fxcop 警告

8.2 极验滑动验证码的识别