From Wikipedia, the free encyclopedia
PMD
Initial release4 November 2002
Stable release
7.2.0 [1]  Edit this on Wikidata / 31 May 2024
Repository
Written in Java
Operating system Windows, Linux, macOS
Type Static program analysis tool
License BSD License, Apache License 2.0, GNU Lesser General Public License [2]
Website pmd.github.io  Edit this on Wikidata

PMD is an open source static source code analyzer that reports on issues found within application code. PMD includes built-in rule sets and supports the ability to write custom rules. PMD does not report compilation errors, as it only can process well-formed source files. Rather, PMD is designed to detect inefficient code or bad programming habits, which can reduce the performance and maintainability of the program if they accumulate. It can analyze files written in Java, JavaScript, Apex and Visualforce, PLSQL, Apache Velocity, XML, and XSL.

While PMD does not officially stand for anything, [3] several retro acronyms have been suggested, including for instance Programming Mistake Detector and Project Meets Deadline. [4]

Features

PMD is able to detect flaws or possible flaws in source code, like:

  • Bugs—Empty try/catch/finally/switch blocks.
  • Dead code—Unused local variables, parameters and private methods.
  • Empty if/while statements.
  • Overcomplicated expressions—Unnecessary if statements, for loops that could be while loops.
  • Suboptimal code—Wasteful String/StringBuffer usage.
  • Classes with high Cyclomatic Complexity measurements.
  • Duplicate code—Copied/pasted code can mean copied/pasted bugs, and decreases maintainability.

License

PMD is released under a BSDish license while parts of it are under Apache License 2.0 and the LGPL. [2]

Copy/Paste Detector (CPD)

The Copy/Paste Detector (CPD) is an add-on to PMD that uses the Rabin–Karp string search algorithm to find duplicated code. Unlike PMD, CPD works with a broader range of languages including Java, JavaServer Pages (JSP), C, C++, Fortran, PHP, and C# code.

Plugins

PMD has plugins for JDeveloper, Eclipse, jEdit, JBuilder, Omnicore's CodeGuide, NetBeans/ Sun Studio, IntelliJ IDEA, TextPad, Maven, Ant, Gradle, Gel, JCreator, Hudson, Jenkins, SonarQube, Visual Studio Code and Emacs. [5] There is also a CLI version.

See also

References

  1. ^ "PMD Release Notes | PMD Source Code Analyzer". 31 May 2024. Retrieved 13 June 2024.
  2. ^ a b "License". GitHub. 18 January 2015. Retrieved 13 August 2015.
  3. ^ "What does 'PMD' mean?". pmd-code.org. Retrieved 31 March 2023.
  4. ^ "Destroy annoying bugs part 4: the end is near". freesoftwaremagazine.com.
  5. ^ "Tools / Integrations". pmd-code.org. Retrieved 31 March 2023.

Further reading

External links

From Wikipedia, the free encyclopedia
PMD
Initial release4 November 2002
Stable release
7.2.0 [1]  Edit this on Wikidata / 31 May 2024
Repository
Written in Java
Operating system Windows, Linux, macOS
Type Static program analysis tool
License BSD License, Apache License 2.0, GNU Lesser General Public License [2]
Website pmd.github.io  Edit this on Wikidata

PMD is an open source static source code analyzer that reports on issues found within application code. PMD includes built-in rule sets and supports the ability to write custom rules. PMD does not report compilation errors, as it only can process well-formed source files. Rather, PMD is designed to detect inefficient code or bad programming habits, which can reduce the performance and maintainability of the program if they accumulate. It can analyze files written in Java, JavaScript, Apex and Visualforce, PLSQL, Apache Velocity, XML, and XSL.

While PMD does not officially stand for anything, [3] several retro acronyms have been suggested, including for instance Programming Mistake Detector and Project Meets Deadline. [4]

Features

PMD is able to detect flaws or possible flaws in source code, like:

  • Bugs—Empty try/catch/finally/switch blocks.
  • Dead code—Unused local variables, parameters and private methods.
  • Empty if/while statements.
  • Overcomplicated expressions—Unnecessary if statements, for loops that could be while loops.
  • Suboptimal code—Wasteful String/StringBuffer usage.
  • Classes with high Cyclomatic Complexity measurements.
  • Duplicate code—Copied/pasted code can mean copied/pasted bugs, and decreases maintainability.

License

PMD is released under a BSDish license while parts of it are under Apache License 2.0 and the LGPL. [2]

Copy/Paste Detector (CPD)

The Copy/Paste Detector (CPD) is an add-on to PMD that uses the Rabin–Karp string search algorithm to find duplicated code. Unlike PMD, CPD works with a broader range of languages including Java, JavaServer Pages (JSP), C, C++, Fortran, PHP, and C# code.

Plugins

PMD has plugins for JDeveloper, Eclipse, jEdit, JBuilder, Omnicore's CodeGuide, NetBeans/ Sun Studio, IntelliJ IDEA, TextPad, Maven, Ant, Gradle, Gel, JCreator, Hudson, Jenkins, SonarQube, Visual Studio Code and Emacs. [5] There is also a CLI version.

See also

References

  1. ^ "PMD Release Notes | PMD Source Code Analyzer". 31 May 2024. Retrieved 13 June 2024.
  2. ^ a b "License". GitHub. 18 January 2015. Retrieved 13 August 2015.
  3. ^ "What does 'PMD' mean?". pmd-code.org. Retrieved 31 March 2023.
  4. ^ "Destroy annoying bugs part 4: the end is near". freesoftwaremagazine.com.
  5. ^ "Tools / Integrations". pmd-code.org. Retrieved 31 March 2023.

Further reading

External links


Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook