2012-01-03 46 views
1

我知道当代码中留有NotImplementedException时(我可以理解发布版本),有些规则可用(请参阅this answerthis question),但我希望有相反的:有代码分析忽略方法抛出一个NotImplementedException,因为他们被称为未完成。让代码分析忽略引发NotImplementedException的方法

背景:
当我开发一段代码时,我想测试一下我到目前为止,在我完成之前。我也希望CA能够开启,所以我可以尽早地纠正错误(例如:没有正确处理资源)。但是由于我仍然在开发这些代码,所以仍然有一些我认为不会被我的测试使用的存根。这种存根的主体通常不超过throw new NotImplementedException();

当我构建代码时,CA抱怨该方法可能是“静态”的,并且参数未使用。我知道我可以抑制CA错误,但这意味着我将不得不记住在构建这些方法时将这些抑制措施取出,并且这是一个额外的构建(一个用于获取消息,以便我可以抑制它们,一个用于真正运行码)。

我的问题:
有没有办法让CA忽略沿至少一个代码路径的NotImplementedException结尾的方法?如果可以将其设置为仅在调试模式下工作,那将会非常好,因此您可以在发布版本中获得有关该异常的警告。

为了记录,我使用VS2010。

回答

1

不是。代码分析中没有这样的选项。

你可以做的是编写一个自定义规则,标记抛出一个NotImplementedException,然后处理代码分析结果,并删除与NotImplemented自定义规则相同的目标方法的任何条目。这条规则应该很容易实现。在NotImplementedException类上搜索任何构造函数调用可能就足够了。

但是,如果您从命令行运行代码分析,然后后处理xml文件,这只会工作。

您也可以使用GeneratedCodeAttribute来标记该方法,因为默认情况下这些方法将被忽略。

+0

是的,我没有找到任何选项,所以我希望有一些插件或东西。在命令行中的用法并不是我所追求的:当我按下(Ctrl-)F5时它应该起作用。我记得语法的单个属性可能是一个临时解决方案,谢谢。 – 2012-01-05 09:24:59