
Um analisador de código estático multilíngue extensível.

PMD é um analisador estático de código multilíngue extensível. Ele encontra falhas comuns de programação, como variáveis não utilizadas, blocos catch vazios, criação desnecessária de objetos e assim por diante. Ele se concentra principalmente em Java e Apex, mas suporta outras 16 linguagens. Ele vem com mais de 400 regras integradas. Pode ser estendido com regras personalizadas. Ele usa JavaCC e Antlr para analisar arquivos de origem em árvores de sintaxe abstrata (AST) e executa regras contra elas para encontrar violações. As regras podem ser escritas em Java ou usando uma consulta XPath.
Atualmente, o PMD suporta Java, JavaScript, Salesforce.com Apex e Visualforce, Kotlin, Swift, Modelica, PL/SQL, Apache Velocity, JSP, WSDL, Maven POM, HTML, XML e XSL. Scala é suportado, mas atualmente não há regras de Scala disponíveis.
Além disso, ele inclui o CPD, o detector de cópia e colagem. O CPD encontra código duplicado em 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 e Visualforce, Scala, Swift, T-SQL, Typescript, Apache Velocity, WSDL, XML e XSL.
Baixe o zip binário mais recente na página de releases e extraia-o em algum lugar.
Execute bin/pmd check ou bin\pmd.bat check.
Veja também Primeiros Passos
Demonstração:
Isto mostra como o PMD analisa o openjdk:

Existem plugins para Maven e Gradle, bem como para várias IDEs. Veja Ferramentas / Integrações
Pull requests são bem-vindos. Para mudanças significativas, abra uma issue primeiro para discutir o que você gostaria de alterar.
Nossa fonte mais recente do PMD pode ser encontrada no GitHub. Faça um fork!
Para detalhes, consulte Como contribuir com o PMD.
O rule designer é desenvolvido em pmd/pmd-designer. Consulte seu README para documentação do desenvolvedor.
Torne-se um contribuidor financeiro e ajude-nos a sustentar nossa comunidade. Contribua
Este projeto segue a especificação all-contributors. Contribuições de qualquer tipo são bem-vindas!
Consulte créditos para a lista completa.