Найти операторы журнала, которые теряют трассировку стека исключений - PullRequest
3 голосов
/ 24 ноября 2011

Я наткнулся на код, написанный кем-то, кто поймал какое-то исключение и попытался записать это как ОШИБКУ без печати трассировки стека. Я ожидал ниже использования

log.error("message", exception);

Однако это было

log.error("message");

Как отследить такие ошибки кодирования с помощью статических анализаторов кода или любого другого такого инструмента?

Ответы [ 2 ]

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

Вы можете использовать Eclipse и выполнять Поиск файлов по вашему рабочему пространству с помощью Регулярное выражение , например:

^.*\.(error|debug|info)\([^,]*\);$

Это лучший вариант, так как вы увидите результаты на панели «Поиск» и сможете двойным щелчком перейти к файлам / строкам.

Также простой редактор, такой как Notepad ++ , может выполнять эту работу с помощью опции Найти в файлах с Регулярными выражениями . К сожалению, Notepad ++ не может выполнять регулярные выражения OR, такие как (this|that), поэтому для поиска log.debug(...) s и log.info(...) s вам потребуется заменить ключевое слово error вручную. Просто выберите каталог вашего проекта и используйте шаблон, подобный этому:

^.*\.error\([^,]*\);$
0 голосов
/ 24 ноября 2011

Вы можете найти все случаи использования Log.error (String) в вашей IDE и убедиться, что они не входят в блок исключений catch. Это не та вещь, которую вы должны регулярно проверять, т.е. лучше учиться на своих ошибках.

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