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