2

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

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

而且我想确保我们在大多数情况下抛出一个带有 InnerException 的新异常。

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

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

我还查看了Gendarme tool,但在那里找不到我需要的东西。

FxCop 规则由 SonarQube 运行,顺便说一句。

4

1 回答 1

1

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

FWIW,我建议改为创建“不吃异常”规则,抛出一个新异常,原始异常作为内部异常是规则识别的“不吃”模式之一。这比“每个抛出异常都必须有一个内部异常规则”更普遍有用,并且使用后一个规则避免潜在的大量误报。

于 2015-12-04T18:30:31.167 回答