
pmd pmd_releases/7.27.0
Расширяемый мультиязычный статический анализатор кода.
PMD - анализатор исходного кода

PMD — это расширяемый многоязычный статический анализатор кода. Он находит распространённые ошибки программирования, такие как неиспользуемые переменные, пустые блоки catch, создание лишних объектов и так далее. В основном он ориентирован на Java и Apex, но поддерживает 16 других языков. Он содержит более 400 встроенных правил. Его можно расширять с помощью пользовательских правил. Для разбора исходных файлов в абстрактные синтаксические деревья (AST) используется JavaCC и Antlr, после чего по ним запускаются правила для поиска нарушений. Правила можно писать на Java или с помощью XPath-запросов.
В настоящее время PMD поддерживает Java, JavaScript, Salesforce.com Apex и Visualforce, Kotlin, Swift, Modelica, PL/SQL, Apache Velocity, JSP, WSDL, Maven POM, HTML, XML и XSL. Scala поддерживается, но на данный момент нет правил для Scala.
Кроме того, он включает CPD — детектор копирования и вставки. CPD находит дублированный код в Coco, C/C++, C#, CSS, Dart, Fortran, Gherkin, Go, Groovy, HTML, Java, JavaScript, JSP, Julia, Kotlin, Lua, Matlab, Modelica, Objective-C, Perl, PHP, PL/SQL, Python, Ruby, Salesforce.com Apex и Visualforce, Scala, Swift, T-SQL, Typescript, Apache Velocity, WSDL, XML и XSL.
🚀️ Установка и использование
Загрузите последний бинарный zip-архив из релизов и распакуйте его.
Выполните bin/pmd check или bin\pmd.bat check.
См. также Начало работы
Демонстрация:
Здесь показано, как PMD анализирует openjdk:

Существуют плагины для Maven и Gradle, а также для различных IDE. См. Инструменты / Интеграции
ℹ️ Как получить поддержку?
- Как мне? — Задайте вопрос на StackOverflow или в обсуждениях.
- Я получил эту ошибку, почему? — Задайте вопрос на StackOverflow или в обсуждениях.
- Я получил эту ошибку и уверен, что это баг — создайте issue.
- У меня есть идея/запрос/вопрос — создайте новое обсуждение.
- У меня быстрый вопрос — спросите в нашем Gitter-чате или у нашего PMD Guru на Gurubase.
- Где ваша документация? — https://docs.pmd-code.org/latest/
🤝️ Вклад в развитие
Pull request’ы приветствуются. Для существенных изменений, пожалуйста, сначала откройте issue, чтобы обсудить, что вы хотите изменить.
Последний исходный код PMD можно найти на GitHub. Форкните нас!
Подробности см. в Как внести вклад в PMD.
Дизайнер правил разрабатывается в pmd/pmd-designer. Обратитесь к его README для документации разработчика.
💵️ Финансовые участники
Станьте финансовым участником и помогите нам поддерживать наше сообщество. Внести вклад
✨️ Участники
Этот проект следует спецификации all-contributors. Приветствуются любые виды вклада!
Полный список см. в credits.