Intellij IDEA для инспекторского кода vs checkstyle, PMD & findbugs

Недавно я ищу лучший инструмент для проверки кода. Моя IDE - Intellij 15.0, и я знаю, что там есть хорошие возможности проверки, но когда я просматриваю интернет, я не нашел хорошего сравнения между встроенным кодом проверки Intellij и этими тремя. Может ли кто-нибудь, кто их пробовал, может дать какую-то лучшую практику, что использовать? Intellij охватывает все из них?

Я знаю, что findbugs работают на двоичном уровне, но все же позволяют ему оставаться в сравнении.

Ответ 1

В самом проекте Checkstyle мы используем все эти инструменты: проверки Checkstyle, PMD, FindBugs и IntelliJ IDEA.

Вот мои наблюдения:

  • Нет замены для Checkstyle, когда дело доходит до форматирования, пробелов, размещения фигурных скобок, Javadoc и общего стиля кода. Там некоторые совпадения с IntelliJ при именовании и некоторые плохие практики, но это.
  • Правила PMD очень похожи на IntelliJ. Оба инструмента направлены главным образом на обнаружение типичных ошибок или плохих практик. Вы по-прежнему найдете некоторые уникальные полезные правила PMD, хотя бы некоторые случайные примеры: BigIntegerInstantiation, CommentDefaultAccessModifier, SingletonClassReturningNewInstance.
  • Я бы никогда не ушел из FindBugs в пользу другого инструмента. FindBugs фокусируется только на поиске реальных ошибок в коде с низкой скоростью ложных срабатываний. Обычно это не требует почти любой конфигурации - просто включите все правила и безопасно для сна. Конечно, есть несколько совпадений с IntelliJ, но чем больше обнаружено ошибок, тем лучше.

Инспекции IntelliJ IDEA - отличный инструмент, поскольку они содержат множество уникальных и надежных правил. И это не только Java - вы можете из окна обнаружить проблемы в XML, свойствах, SQL, Spring, HTML, CSS и т.д. Они требуют много конфигурации и выбора правильного набора правил. Включение всех правил сообщало бы о сотнях тысяч нарушений в каждом крупном проекте. И трудно внедрить эти проверки в Maven или Gradle, чтобы проект был самооправданным.

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