是否有标准的FxCop规则检测抛出新异常而不设置InnerException?

时间:2015-12-04 11:43:58

标签: c# .net sonarqube fxcop fxcop-customrules

我们的(非常大的)代码库有一些这样的结构:

try {
    DoSomething();
}
catch (Exception e) {
    CleanUp();
    throw new MoreSpecificException();
}

我想确保在大多数情况下设置InnerException时抛出一个新的异常。

是否有标准的FxCop规则检测到抛出新异常而不设置InnerException?我的研究(谷歌搜索)表明不存在这样的规则。

如果没有,如何制定这样的规则? (我以前从未创建过自定义FxCop规则)。

我也看过Gendarme tool,但找不到我需要的东西。

FxCop规则由SonarQube,BTW运行。

1 个答案:

答案 0 :(得分:1)

是的,这可以通过FxCop实现。创建自定义规则的指南可以http://www.binarycoder.net/fxcop/index.html

FWIW,我建议创建一个“不要吃异常”的规则,抛出一个新的异常,将原作为内部异常,作为规则识别的“不吃”模式之一。这通常比“每个抛出异常必须具有内部异常规则”更有用,并且避免使用后一规则可能存在大量误报。