Как найти все места в проекте Java, где можно создать исключение RuntimeException? - PullRequest
2 голосов
/ 22 ноября 2011

У меня есть проект Java, и я хочу список мест в исходном коде, где может быть выброшено исключение RuntimeException.Есть ли какой-нибудь инструмент или плагин Eclipse для этого?

С FindBugs или PMD могут быть обнаружены исключения NullPointerException, но мне нужно найти и другие.

Ответы [ 3 ]

2 голосов
/ 22 ноября 2011

NullPointerException, ClassCastException и ArithmeticException являются особыми случаями, поскольку их не нужно явно выбрасывать. Тем не менее, все остальное должно быть выброшено явно.

Поиск возможных причин NullPointerException полезен как распространенная ошибка, однако, как и все RuntimeException, их лучше избегать, а не обрабатывать. Поиск всех возможных причин, скорее всего, даст вам очень большой результат, который вряд ли будет полезен. (Я сам прошел это упражнение и после большой работы не достиг большого ИМХО)

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

0 голосов
/ 22 ноября 2011

Я согласен с другими ответами.Поскольку я не знаю, чего вы хотите достичь, я хочу предложить более прямой ответ на ваш вопрос:

К сожалению, я не знаю ни одного инструмента, который бы это делал.Сожалею.В зависимости от того, насколько это важно для вас, вы можете инвестировать некоторую работу самостоятельно.

Проверяйте свой код «вручную».

После этого JDK остается (и, скорее всего, некоторые библиотеки, которые вы используете).Вы можете скачать исходный код JDK из Oracle.Затем вы можете снова выполнить полнотекстовый поиск по вновь созданным экземплярам исключений.Обратите внимание, однако, что даже эта утомительная работа не даст вам все возможные источники, поскольку некоторые методы там отсутствуют.

0 голосов
/ 22 ноября 2011

Если вы проверяете только свой код, вы можете сделать это с помощью Checkstyle . Посмотрите на проверку Проблемы с кодированием, незаконные броски .

Вы можете указать любое количество исключений, по умолчанию это: java.lang.Throwable, java.lang.Error, java.lang.RuntimeException.

Примечание: это не выбирает подклассы вышеупомянутых исключений, оно только выбирает сами классы. Он также не проверяет исходный код, к которому у вас нет доступа, поэтому библиотеки времени выполнения не будут проверяться, например.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...