PMD는 확장 가능한 다국어 정적 코드 분석기입니다. 이 도구는 Java와 Apex를 주로 다루지만, 16개 이상의 다른 언어를 지원합니다. PMD는 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 규칙은 제공되지 않습니다. 또한, PMD는 CPD(Copy-Paste-Detector)를 포함하고 있습니다. 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에서 중복 코드를 찾습니다.
PMD는 프로그래밍 과정에서 발생할 수 있는 다양한 문제를 자동으로 감지하고, 개발자가 코드 품질을 유지할 수 있도록 돕습니다. 이 도구는 특히 대규모 프로젝트에서 코드의 일관성과 유지보수성을 높이는 데 유용합니다. PMD는 오픈 소스 프로젝트로, 누구나 기여할 수 있으며, BSD 스타일 라이선스 하에 배포됩니다.