我很确定以前版本的 Visual Studio 代码分析警告过 NotImplementedException 的使用,即包含此异常的任何成员
throw new NotImplementedException();
会发出 CA 警告。
Visual Studio 2008 似乎并非如此。
那个特定的规则是被删除了,还是我只是想象它曾经存在过?
我很确定以前版本的 Visual Studio 代码分析警告过 NotImplementedException 的使用,即包含此异常的任何成员
throw new NotImplementedException();
会发出 CA 警告。
Visual Studio 2008 似乎并非如此。
那个特定的规则是被删除了,还是我只是想象它曾经存在过?
您可能正在考虑 从属性获取器、事件访问器、Equals、GetHashCode、Dispose 等特殊方法抛出时收到的FxCop 警告:NotImplementedException
CA1065:Microsoft.Design:“SomeClass.SomeProperty.get()”创建类型为“NotImplementedException”的异常,该异常类型不应在属性中引发。如果可能引发此异常实例,请使用不同的异常类型,将此属性转换为方法,或更改此属性的逻辑以使其不再引发异常。
但是,它并没有明确地与NotImplementedException
. FxCop 有这些方法可能(直接)抛出的异常的白名单。
我不记得曾经在 Microsoft 提供的规则集中看到过这样的规则。这是我在日常工作中创建的第一个自定义规则之一,至少从 FxCop 1.35 的日子开始,所以我不得不猜测它可以追溯到 FxCop 1.32 的日子,如果它确实存在的话......
我知道这是一个老问题,但是当我使用 Visual Studio 2017 运行代码分析时,我收到了这个警告(2017 年 9 月 12 日)。这是 Wim Coenen 提到的“CA1065”代码,所以微软似乎必须已将 FxCop 规则移植到基于 Roslyn 的分析平台。
不幸的是,标准规则集中没有这样的规则。
您可以在我的其他答案之一中找到我的实现。