PMD - Short Review

Developer Tools

PMD (Programmatic Mistake Detector) is an extensible, multilanguage static code analyzer designed to identify common programming flaws and enforce coding standards. Here’s a comprehensive overview of what PMD does and its key features:

What PMD Does

PMD analyzes source code to detect a wide range of programming issues, including unused variables, empty catch blocks, unnecessary object creation, and duplicated code. It supports multiple programming languages, making it a versatile tool for maintaining code quality across diverse projects.

Supported Languages

PMD supports over 20 languages, including Java, JavaScript, Salesforce.com Apex and Visualforce, Kotlin, Swift, Modelica, PLSQL, Apache Velocity, JSP, WSDL, Maven POM, HTML, XML, XSL, and several others. Although Scala is supported, there are currently no specific Scala rules available.

Key Features and Functionality



Rule-Based Analysis

PMD comes with over 400 built-in rules that can be extended with custom rules. These rules can be written in Java or using XPath queries. This flexibility allows developers to tailor the analysis to their specific coding practices and standards.

Abstract Syntax Tree (AST) Analysis

Before applying rules, PMD parses the source code into an Abstract Syntax Tree (AST), which represents the syntactic structure of the code. This allows for a detailed analysis of the code’s structure and the detection of complex issues.

Integration with Build Processes

PMD can be seamlessly integrated into various build processes, including Maven, Ant, Gradle, and command-line operations. This integration enables PMD to act as a quality gate, ensuring that coding standards are enforced consistently throughout the development cycle.

CPD – Copy-Paste Detector

In addition to rule-based analysis, PMD includes CPD (Copy-Paste Detector), which identifies duplicated code in the source files. This feature supports a wide range of languages and helps in maintaining code cleanliness and reducing redundancy.

Custom Rules and Extensibility

Developers can write their own custom rules to address specific coding practices or patterns unique to their codebase. These custom rules can be implemented in Java or as XPath queries, providing a high degree of flexibility and extensibility.

Reporting and Alerts

PMD can generate detailed reports, including SARIF (Static Analysis Results Interchange Format) reports, which can be uploaded as build artifacts. This feature is particularly useful when using PMD within GitHub Actions or other CI/CD pipelines. In summary, PMD is a powerful tool for static code analysis that helps in identifying and fixing common programming mistakes, enforcing coding standards, and maintaining high code quality across multiple programming languages. Its extensibility and integration capabilities make it a valuable addition to any software development workflow.

Scroll to Top