我知道当代码中遗留了NotImplementedException时,可以触发规则(我可以理解为发布版本)(请参阅this answer或this question),但我想反之亦然:使用代码分析忽略抛出NotImplementedException的方法,因为它们已知未完成。
背景:
当我开发一段代码时,我想在完成之前测试我到目前为止的内容。我也希望CA能够启用,因此我可以尽早纠正错误(例如:没有正确处理资源)。但是,由于我正在开发该代码,我的测试仍然会有一些我知道不会使用的存根。这种存根的主体通常不超过throw new NotImplementedException();
。
当我构建代码时,CA抱怨该方法可能是“静态的”并且参数未被使用。我知道我可以抑制CA错误,但这意味着我必须记住在构建这些方法时取出那些抑制因素并且它是一个额外的构建(一个用来获取消息所以我可以抑制它们而一个真正运行码)。
我的问题:
有没有办法让CA忽略以(至少)其中一个代码路径的NotImplementedException结尾的方法?如果可以将其设置为仅在调试模式下工作,那将是非常好的,因此您可以在发布版本中获得有关该异常的警告。
为了记录,我正在使用VS2010。
答案 0 :(得分:1)
没有。代码分析中没有这样的选项。
您可以做的是编写一个自定义规则,该规则标记抛出NotImplementedException,然后处理代码分析结果并删除与NotImplemented自定义规则具有相同目标方法的任何条目。实现此规则应该非常简单。在NotImplementedException类上搜索任何Constructor调用可能就足够了。
但是,只有从命令行运行代码分析,然后对xml文件进行后处理,这才有效。
您也可以使用GeneratedCodeAttribute标记该方法,因为默认情况下会忽略这些方法。