Существует ли стандартное правило FxCop, которое обнаруживает создание новых исключений без установки InnerException?

Наша (довольно большая) база кода имеет несколько таких конструкций:

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

И я хочу убедиться, что мы генерируем новое исключение с установленным InnerException в большинстве этих случаев.

Существует ли стандартное правило FxCop, которое обнаруживает создание новых исключений без установки InnerException? Мое исследование (поиск в Google) показывает, что такого правила не существует.

А если нет, то как можно создать такое правило? (Я никогда прежде не создавал пользовательское правило FxCop).

Я также взглянул на инструмент Жандарм, но не смог найти ничего похожего на то, что мне нужно.

Правила FxCop управляются SonarQube, BTW.

1 ответ

Да, это возможно с FxCop. Руководство по созданию пользовательских правил можно http://www.binarycoder.net/fxcop/index.html.

FWIW, я бы рекомендовал вместо этого создать правило "не употреблять исключения", при этом новое исключение с оригиналом в качестве внутреннего исключения будет являться одним из шаблонов "не поедания", распознаваемых правилом. Это было бы более полезным, чем "каждое исключение броска должно иметь правило внутреннего исключения", а также избегать потенциально большого количества ложных срабатываний с последним правилом.

Другие вопросы по тегам