Intellij IDEA встроенный код проверки vs checkstyle, PMD & findbugs

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

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

1 ответов


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

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

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

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

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