Что статические анализаторы Вы считаете обязательным для себя работу кода Java, и почему?

Я экспериментировал с несколькими различными статическими анализаторами для Java, особенно Findbugs и PMD.

Я ищу примеры других статических анализаторов, которые могут стоить работать на коде Java.

8
задан Finbarr 13 May 2010 в 14:51
поделиться

5 ответов

Рядом с FindBugs и PMD , есть также Bandera , ESC / Java и JLint . Вы можете найти их сравнение здесь (PDF) . Вот выдержка по теме:

Bug Category - Example                            | ESC | FindBugs | JLint | PMD
--------------------------------------------------+-----+----------+-------+-----
General - Null dereference                        |  V  |    V     |   V   |  V
Concurrency - Possible deadlock                   |  V  |    V     |   V   |  V
Exceptions - Possible unexpexted exception        |  V  |          |       |
Array - Length may be less than zero              |  V  |          |   V   |   
Mathematics - Division by zero                    |  V  |          |   V   |  
Conditional, loop - Unreachable code              |     |    V     |       |  V 
String - Checking equality using == or !=         |     |    V     |   V   |  V
Object overriding - Equal objects/equal hashcodes |     |    V     |   V   |  V
I/O stream - Stream not closed on all paths       |     |    V     |       |  
Unused or duplicate statement - Unused local      |     |    V     |       |  V
Design - Should be a static inner class           |     |    V     |       |  
Unnecessary statement - Unnecessary return        |     |          |       |  V

Примечание: статья датирована 2004 годом. Инструменты, возможно, были улучшены за это время.

Как видите, FindBugs и PMD находят довольно много, а также являются наиболее популярными инструментами статического анализатора. Однако в настоящее время некоторые моменты также покрываются интеллектуальной IDE, например, нулевое уважение, неиспользуемые локальные переменные и недоступный код. Eclipse, например, может их предупредить.

12
ответ дан 5 December 2019 в 10:39
поделиться

Здесь есть список инструментов статического анализа java: http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#Java

Findbugs - мой личный фаворит из-за простого в использовании интерфейса и всестороннего анализа, плюс есть плагины для eclipse и idea.

1
ответ дан 5 December 2019 в 10:39
поделиться

Findbugs - это в значительной степени стандарт, так как он очень надежен (для инструмента, который начат в результате исследования), регулярно поддерживается и в последних версиях действительно охватывает большинство баз. Он также имеет отличную интеграцию с Eclipse и различные параметры фильтрации и сортировки, чтобы вы могли достичь желаемого отношения сигнал / шум.

Я только хочу, чтобы он мог предоставить рабочий процесс для рекомендаций, чтобы я мог игнорировать определенные экземпляры (например, для кода, который я не контролирую) и видеть только изменения. Непрерывный анализ тоже был бы неплохим, когда у меня есть запасные ядра.

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

2
ответ дан 5 December 2019 в 10:39
поделиться

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

0
ответ дан 5 December 2019 в 10:39
поделиться

Я бы посоветовал вам использовать анализатор кода в IntelliJ. В нем более 600 проверок, которые легко включать и выключать, однако основная причина в том, что многие проверки содержат быстрые исправления.

Если вы просто запустите отчет, вы можете найти тысячи или 10 000 отмеченных проблем. Это может быть утомительно, если каждая проблема часто имеет очень небольшую ценность, но имеет реальный риск того, что вы внесете ошибку. Однако IntelliJ позволяет вам выбрать и исправить тысячи проблем за считанные минуты, с намного меньшим риском появления ошибки.

IntelliJ CE имеет открытый исходный код, бесплатен и имеет эту функцию.

1
ответ дан 5 December 2019 в 10:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: