Одна вещь, которую я до сих пор не видел, состоит в том, что есть плагины для IDE, которые будут применять наборы правил CheckStyle в вашем коде, тогда как плагины PMD будут сообщать только о нарушениях. Например, в многосайтовом проекте с участием нескольких команд программистов важно активно применять стандарты, а не просто сообщать о них.
Оба инструмента имеют плагины, доступные для IntelliJ, NetBeans и Eclipse (на мой взгляд, это охватывает большую часть использования). Я не так хорошо знаком с NetBeans, поэтому могу комментировать только IntelliJ и Eclipse.
В любом случае плагины PMD для IntelliJ и Eclipse будут генерировать отчеты по требованию о нарушениях PMD в кодовой базе проекта.
Плагины CheckStyle, с другой стороны, будут подсвечивать нарушения на лету и могут (по крайней мере для IntelliJ, у меня меньше опыта работы с Eclipse) настраиваться на автоматическое преобразование некоторых проблем (например, для 'OneStatementPerLine'). CR-LF между операторами, для 'NeedBraces', добавит фигурные скобки там, где они отсутствуют и т. Д.). Очевидно, что автоматически могут быть исправлены только более простые нарушения, но это все же помогает в устаревших проектах или проектах, расположенных в нескольких местах.
«По запросу» для PMD означает, что разработчик должен сознательно принять решение о запуске отчета. Принимая во внимание, что нарушения Checkstyle автоматически сообщаются им по мере их развития. В то время как PMD содержит более расширенный набор правил, на мой взгляд, автоматическое выявление / сообщение о нарушениях в IDE стоит хлопот в отношении поддержания 2 наборов правил.
Поэтому для любых проектов, над которыми я работаю, мы используем оба инструмента: Checkstyle, применяемый в IDE, PMD, сообщаемый в IDE, и , оба , сообщаемые и измеряемые в сборках (через Jenkins).