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