пользовательское правило статического анализа для принудительной обработки непроверенных исключений

1

У меня есть исключение во время выполнения, которое я создал в моем проекте, и я хочу убедиться, что он попал в один из моих классов, так что вся программа не взрывается, когда это происходит (т.е. Если кто-то удаляет try/catch Я хочу знать, если что-то в средствах сборки или статического анализа не работает). К сожалению, поскольку java не принуждает меня иметь оператор try/catch для этого неконтролируемого исключения, нет способа принудительного его применения во время компиляции. (Я не могу изменить свое исключение как исключенное исключение).

Мне интересно, есть ли какой-либо способ принудительного применения инструкции try/catch в определенном классе, возможно, с использованием пользовательских правил checkstyle/pmd/findbugs. (убедитесь, что конкретный метод в определенном классе имеет оператор try catch для моего исключения во время выполнения).

Благодарю.

Теги:
runtimeexception
checkstyle
findbugs
pmd

2 ответа

1
Лучший ответ

В Checkstyle, FindBugs или PMD (или их пакетов) нет существующего детектора, который делает то, что вы хотите. Поэтому вам придется сворачивать самостоятельно.

Самый простой способ решить это без реального программирования - это написать правило PMD XPath, которое ищет метод X в классе Y и блок catch который улавливает ваше исключение во время выполнения под ним.

В противном случае пользовательская проверка Checkstyle будет следующей самой легкой, но для этого требуется небольшая часть программирования, и вам придется впоследствии развернуть свою собственную проверку везде.

Вы также можете написать свой собственный детектор FindBugs, как это предлагается в другом ответе, но поскольку вы не будете использовать какие-либо конкретные функции FindBugs (например, анализ байтового кода), это кажется мне излишним.

  • 1
    Я решил пойти с некоторыми тестами, которые вызывают это исключение и ожидают, что оно будет обработано, а не достигнет результата теста. Это было слишком хлопотно, чтобы написать собственное правило.
2

Идея исключений во время выполнения заключается в том, что вам не нужно указывать предложение "throws XYException".

Однако вы можете проверить findbugs-contrib. Если это не решит проблему, вы можете написать свой собственный детектор ошибок. Вот несколько отправных точек:

  • 0
    Да, моя проблема заключается в том, что я не могу использовать проверенные исключения, но я хочу навязать обработку непроверенных. Похоже, у findbugs нет правила, которое я могу использовать "из коробки". Позже я посмотрю ссылки, но это кажется слишком большой работой, чтобы заставить это работать, возможно, мне просто придется довольствоваться массивным ********* ПРЕДУПРЕЖДЕНИЕ НЕ УДАЛЯЙТЕ TRY / CATCH ******** комментарий:)
  • 0
    Обратите внимание, что findbugs! = Findbugscontrib. Findbugs-contrib - это дополнительные шаблоны ошибок для findbugs. У них есть некоторые дополнительные ошибки, которые обнаруживаются при обработке исключений ...
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню