Installation instructions: https://pmd.github.io/eclipse/
Eclipse Update Site:
- Releases: https://pmd.github.io/pmd-eclipse-plugin-p2-site/
- Snapshots: https://pmd.github.io/pmd-eclipse-plugin-p2-site/snapshot/
This is a minor release.
This is a minor release.
- Updated to PMD 7.0.0-rc4
- Support for Eclipse 2023-09 added
- Support for Eclipse 2023-06 added
- Support for Eclipse 2022-09 removed
- Support for Eclipse 2022-06 removed
- The deprecated field net.sourceforge.pmd.eclipse.runtime.PMDRuntimeConstants.MAX_VIOLATIONS_DESCRIPTOR has been removed.
- The following deprecated classes have been removed
- net.sourceforge.pmd.eclipse.ui.preferences.br.FilterManager
- net.sourceforge.pmd.eclipse.ui.preferences.editors.FileEditorFactory
- net.sourceforge.pmd.eclipse.ui.preferences.editors.FloatEditorFactory
- The following packages are not exported anymore, as they don't exist anymore:
- net.sourceforge.pmd.cpd.renderer
- net.sourceforge.pmd.properties.constraints
This is a release candidate for the next major release.
- Updated to PMD 7.0.0-rc3
- #171: Radio button for local rules in project properties dialog is missing
- #178: Message not interpolated in "Show details..." dialog
The following packages are no longer public API and are not exported anymore:
- name.herlin.command
- net.sourceforge.pmd.eclipse.core.impl
- net.sourceforge.pmd.eclipse.ui
- net.sourceforge.pmd.eclipse.ui.actions
- net.sourceforge.pmd.eclipse.ui.model
- net.sourceforge.pmd.eclipse.ui.preferences.br
- net.sourceforge.pmd.eclipse.ui.properties
- net.sourceforge.pmd.eclipse.ui.views.actions
The following classes have finally been removed. Most of them have been deprecated before:
- net.sourceforge.pmd.eclipse.ui.preferences.PMDPreferencePage
- net.sourceforge.pmd.eclipse.ui.preferences.RuleCellModifier
- net.sourceforge.pmd.eclipse.ui.preferences.RuleDialog
- net.sourceforge.pmd.eclipse.ui.preferences.RulePropertyCellModifier (was not deprecated)
- net.sourceforge.pmd.eclipse.ui.preferences.RuleSetExcludeIncludePatternCellModifier (was not deprecated)
- net.sourceforge.pmd.eclipse.ui.properties.PMDPropertyPage
- net.sourceforge.pmd.eclipse.ui.views.actions.ShowRuleAction (was not deprecated)
- net.sourceforge.pmd.eclipse.ui.views.rules.RuleEditorView
This is a release candidate for the next major release.
- Updated to PMD 7.0.0-rc2
The following PMD packages from pmd-core are exported and can be used by other plugins:
- net.sourceforge.pmd
- net.sourceforge.pmd.cpd
- net.sourceforge.pmd.cpd.renderer
- net.sourceforge.pmd.lang
- net.sourceforge.pmd.lang.ast
- net.sourceforge.pmd.lang.document
- net.sourceforge.pmd.lang.metrics
- net.sourceforge.pmd.lang.rule
- net.sourceforge.pmd.lang.rule.xpath
- net.sourceforge.pmd.properties
- net.sourceforge.pmd.properties.constraints
- net.sourceforge.pmd.renderers
- net.sourceforge.pmd.reporting
- net.sourceforge.pmd.util
This is a release candidate for the next major release.
-
Beginning with version 7 of this plugin, only the last four eclipse releases are supported. The plugin might still work with older versions, but it's only developed and tested against the newer versions.
-
The version number of the PMD Eclipse Plugin now is synchronized with the supported and used PMD version. For Bugfixes in the PMD Eclipse Plugin only, a new version is released with the same major, minor, and patch, but a new qualifier only.
-
The minimum required Java version is Java 8.
-
The PMD Designer can't be started from within the plugin anymore. Please install PMD Designer separately when needed.
-
Updated to PMD 7.0.0-rc1
- #122: Update PMD 7 Logo in eclipse pmd plugin
- #172: Only support the last 4 eclipse releases
- #174: Upgrade to PMD 7
This is a minor release.
- Updated to PMD 6.55.0
This is a minor release.
- Updated to PMD 6.54.0
This is a minor release.
- Updated to PMD 6.53.0
- #168: Missing constraints in runtime Eclipse workspace (e.g., in Eclipse Modeling Tool since 2022-12 R)
- #169: Remove unnecessary required bundles
This is a minor release.
- Updated to PMD 6.52.0
- #109: Duplicate entries in reports
This is a minor release.
- Java 17 is required for building now. The plugin still works with older eclipse versions with Java 8.
- Updated to PMD 6.51.0
- #165: Bump tycho from 2.7.4 to 3.0.0
This is a minor release.
- Updated to PMD 6.50.0
This is a minor release.
- Updated to PMD 6.49.0
- #164: Add more language modules
This is a minor release.
- Updated to PMD 6.48.0
- #163: Bump tycho from 2.6.0 to 2.7.4
This is a minor release.
- Updated to PMD 6.47.0
This is a minor release.
- Updated to PMD 6.46.0
- #162: Fix deprecations
This is a minor release.
- Updated to PMD 6.45.0
This is a minor release.
- Updated to PMD 6.44.0
This is a minor release.
- Updated to PMD 6.43.0
This is a minor release.
- Updated to PMD 6.42.0
This is a minor release.
- Updated to PMD 6.41.0
This is a minor release.
- Updated to PMD 6.40.0
This is a minor release.
- Updated to PMD 6.39.0
This is a minor release.
- Updated to PMD 6.38.0
- #159: Error executing command ReviewCode: java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence near index (part 2)
This is a minor release.
- Updated to PMD 6.37.0
- #148: Eclipse nearly-consistently crashes on startup when workspace contains PMD enabled projects
- #150: Error executing command ReviewCode: java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence near index
- #153: Not properly disposed SWT resource
net.sourceforge.pmd.eclipse.plugin.EclipseUtilnet.sourceforge.pmd.eclipse.plugin.PMDPlugin.getPluginFolder()net.sourceforge.pmd.eclipse.runtime.cmd.BaseVisitor.isUseTaskMarker()net.sourceforge.pmd.eclipse.runtime.cmd.BaseVisitor.setUseTaskMarker(boolean)net.sourceforge.pmd.eclipse.ui.preferences.br.FilterManagernet.sourceforge.pmd.eclipse.util.IOUtilnet.sourceforge.pmd.eclipse.ui.priority.PriorityDescriptor.refreshImages()- All classes that couldn't be instantiated because they had a private constructor only
are now also
final.
This is a minor release.
- Updated to PMD 6.36.0
- #133: Updates with outdated certificates from orbit
- #134: Incompatibility between Groovy Eclipse Plugin and PMD Plugin
This is a minor release.
- Updated to PMD 6.35.0
- #146: Refactor actions to use correct selection
This is a minor release.
- The Eclipse Update site is now hosted on GitHub Pages: https://pmd.github.io/pmd-eclipse-plugin-p2-site/ The old update site on Bintray is no longer updated.
- Updated to PMD 6.34.0
- #143: Support JAR Signing for the update site
- #144: Remove support and scripts for bintray
- #145: Bump tycho from 1.7.0 to 2.3.0
- The following methods in
net.sourceforge.pmd.eclipse.ui.actions.RuleSetUtilare deprecated:setExcludePatterns(RuleSet ruleSet, Collection<String> excludePatterns)setIncludePatterns(RuleSet ruleSet, Collection<String> includePatterns)addExcludePatterns(RuleSet ruleSet, Collection<String> activeExclusionPatterns, Collection<String> buildPathExcludePatterns)addIncludePatterns(RuleSet ruleSet, Collection<String> activeInclusionPatterns, Collection<String> buildPathIncludePatterns)addExcludePatterns(RuleSet rs, Collection<String> excludePatterns)addIncludePatterns(RuleSet rs, Collection<String> includePatterns)- These methods are not supposed to be public API and will be removed eventually.
- The property
net.sourceforge.pmd.eclipse.runtime.PMDRuntimeConstants.MAX_VIOLATIONS_DESCRIPTORis deprecated and will be removed. - The preference "net.sourceforge.pmd.eclipse.plugin.max_violations_pfpr" is deprecated and will be removed.
It was never implemented. The following methods and fields are deprecated:
net.sourceforge.pmd.eclipse.runtime.preferences.IPreferences.getMaxViolationsPerFilePerRule()net.sourceforge.pmd.eclipse.runtime.preferences.IPreferences.setMaxViolationsPerFilePerRule(int)net.sourceforge.pmd.eclipse.runtime.preferences.IPreferences.MAX_VIOLATIONS_PFPR_DEFAULT
net.sourceforge.pmd.eclipse.runtime.cmd.DetectCutAndPasteCmd.setRenderer(Renderer)is deprecated.- Removed usages of deprecated class
net.sourceforge.pmd.RuleSets. Therefore the following methods are deprecated now:net.sourceforge.pmd.eclipse.runtime.cmd.BaseVisitor.getRuleSets()net.sourceforge.pmd.eclipse.runtime.cmd.BaseVisitor.setRuleSets(RuleSets)net.sourceforge.pmd.eclipse.runtime.properties.IProjectProperties.getProjectRuleSets()net.sourceforge.pmd.eclipse.runtime.properties.IProjectProperties.setProjectRuleSets(RuleSets)net.sourceforge.pmd.eclipse.runtime.properties.impl.ProjectPropertiesImpl.getProjectRuleSets()net.sourceforge.pmd.eclipse.runtime.properties.impl.ProjectPropertiesImpl.setProjectRuleSets(RuleSets)net.sourceforge.pmd.eclipse.ui.properties.PMDPropertyPageBean.getProjectRuleSets()net.sourceforge.pmd.eclipse.ui.properties.PMDPropertyPageBean.setProjectRuleSets(RuleSets)net.sourceforge.pmd.eclipse.ui.properties.UpdateProjectPropertiesCmd.setProjectRuleSets(RuleSets)
This is a minor release.
- The update site moved from Bintray to Github Pages. The new URL is from now on: https://pmd.github.io/pmd-eclipse-plugin-p2-site/
- Archives of the old versions can be found on sourceforge: https://sourceforge.net/projects/pmd/files/pmd-eclipse/zipped/
- Updated to PMD 6.33.0
- #140: Use gh pages for update site
This is a minor release.
- Updated to PMD 6.32.0
This is a minor release.
- Updated to PMD 6.31.0
This is a minor release.
- Updated to PMD 6.30.0
- #135: Fix JavaProjectClassLoader (auxclasspath support) for workspace relative libraries
This is a minor release.
- Updated to PMD 6.29.0
- #131: Conflict with Jaspersoft Studio plugin (log4j)
-
With 4.10.0 usage of log4j has been deprecated. In order to fix #131 these deprecated references have been removed now.
The following methods/fields in
net.sourceforge.pmd.eclipse.runtime.preferences.IPreferenceshave been removed:getLogLevel()setLogLevel(Level)LOG_LEVEL
- #132: Remove log4j - Rich DiCroce
This is a minor release.
- Updated to PMD 6.28.0
This is a minor release.
- Updated to PMD 6.27.0
This is a minor release.
- Updated to PMD 6.26.0
This is a minor release.
- Updated to PMD 6.25.0
- #123: Support external configuration changes
- #124: No repository found containing: osgi.bundle,org.slf4j.log4j,1.7.2.v20130115-1340
- #125: NoSuchMethodError SizeBasedTriggeringPolicy.setMaxFileSize(Ljava/lang/String;)V
- #128: Improve progress report of ReviewCodeCmd
This is a minor release.
- Updated to PMD 6.24.0
This is a minor release.
- Updated to PMD 6.23.0
This is a minor release.
- Updated to PMD 6.22.0
This is a bugfix release.
- #114: NPE in PriorityDescriptorCache
- #115: Missing dependencies when installing
- #116: SWTError: No more handles
This is a minor release.
- Updated to PMD 6.21.0
- #108: GenericPropertyDescriptor cannot be cast to NumericPropertyDescriptor
- The minimum eclipse version is now definitely Kepler (4.3) as it is declared in the market place. This is enforced via a target definition.
- Usage of Log4j is deprecated and is going to be removed. Logback via slf4j is replacing it.
Therefore the following methods/fields are deprecated for removal in
net.sourceforge.pmd.eclipse.runtime.preferences.IPreferences:getLogLevel()setLogLevel(Level)LOG_LEVELnet.sourceforge.pmd.eclipse.plugin.PMDPlugin#ROOT_LOG_ID
- The following property editors are deprecated and not used anymore:
net.sourceforge.pmd.eclipse.ui.preferences.editors.FileEditorFactorynet.sourceforge.pmd.eclipse.ui.preferences.editors.FloatEditorFactorynet.sourceforge.pmd.eclipse.ui.preferences.editors.MethodEditorFactorynet.sourceforge.pmd.eclipse.ui.preferences.editors.MultiMethodEditorFactorynet.sourceforge.pmd.eclipse.ui.preferences.editors.MultiTypeEditorFactorynet.sourceforge.pmd.eclipse.ui.preferences.editors.TypeEditorFactory
This is a minor release.
- Updated to PMD 6.20.0
This is a minor release.
- Updated PMD to 6.19.0
This is a minor release.
- Updated PMD to 6.18.0
- #110: PMD markers should be removed on Project->Clean
- #111: Delete project markers on Project -> Clean - Sebastian Ratz
This is a minor release.
- Updated PMD to 6.17.0
This is a minor release.
-
Updated PMD to 6.16.0
-
PMD specific marker property page: This version adds a PMD specific property page to the marker properties which shows more information from the rule violation and rule itself. For more information, see Marker Property Page (wiki).
-
Marker Icons: Instead of the geometrical figures, the old icons for the PMD markers can be selected again:

This is a bugfix release.
- #103: IllegalStateException: Must be called in the UI thread
This is a minor release.
- Updated PMD to 6.15.0
- #100: Add missing french translations - Nicolas HENRY
This is a minor release.
- Updated PMD to 6.14.0
This is a bugfix release.
- Filtering by priority has been revamped. In both views "Violation Outline" and "Violation Overview" you can enable and disable the priorities. Changes in one view affects the other view as well as the markers displayed in the files. The selected priorities are stored in the preferences. PMD is not rerun when the priority filter is changed. The markers are only hidden instead. Changing the priority filter therefore affects the settings under General, Editors, Text Editors, Annotation for PMD Marker Annotations.
- #56: PMD not filtering
- #85: Gutter Markers not Configured Color
- #96: Wrong auxclasspath if project is stored outside of workspace
- In
net.sourceforge.pmd.eclipse.plugin.UISettingsthe following methods are deprecated for removal:reloadPriorities()markerFilenameFor(RulePriority)relativeMarkerFilenameFor(RulePriority)markerDescriptorFor(RulePriority)markerImgDescriptorsByPriority()createRuleMarkerIcons(Display)descriptionFor(RulePriority)descriptorFor(RulePriority)priorityFor(int)getPriorityLabels()
- In
net.sourceforge.pmd.eclipse.ui.RuleLabelDecoratorthe methodreloadDecorators()is deprecated for removal. - In
net.sourceforge.pmd.eclipse.ui.ShapePainterthe methoddisposeAll()is deprecated for removal. - In
net.sourceforge.pmd.eclipse.ui.priority.PriorityDescriptorthe following methods are deprecated for removal:getImageDescriptor()getImage(Display)getImage(Display, int)
- In
net.sourceforge.pmd.eclipse.ui.priority.PriorityDescriptorCachethe methoddumpTo(PrintStream)is deprecated for removal. - The whole class
net.sourceforge.pmd.eclipse.ui.views.AbstractViolationLabelProvideris deprecated for removal. - In
net.sourceforge.pmd.eclipse.plugin.PMDPluginthe methodgetOpenFiles()is deprecated for removal. - The class
net.sourceforge.pmd.eclipse.ui.views.PriorityFiltermust not be instantiated directly in the future. Therefore the public constructor has been deprecated. Additionally the following methods are deprecated for removal:setPriorityFilterList(List<Integer>)getPriorityFilterList()addPriorityToList(Integer)removePriorityFromList(Integer)setPriorityFilterListFromString(String, String)getPriorityFilterListAsString(String)
- In
net.sourceforge.pmd.eclipse.ui.views.ViolationOverviewthe methodgetPriorityFilterList()is deprecated for removal. - The whole class
net.sourceforge.pmd.eclipse.util.PriorityUtilis deprecated for removal.
This is a minor release.
- Updated PMD to 6.13.0
This is a minor release.
- Updated PMD to 6.12.0
- The package
name.herlinis deprecated and will be removed with the next major version of the plugin. - PMD markers are now problem markers again. This means, that rule violations appear in the Problem View. The project property "Handle high priority violations as Eclipse errors" now works again.
- The PMD markers are now also visible on the overview ruler. They can be customized or disabled via workspace preferences, General, Editors, Text Editors, Annotations.
- In PMD's general preferences, there is a new option "Determine applicable file types automatically". This new option is enabled by default. When enabled, only the files of the languages, for which rules are active, are considered. This is a fix for bug #88.
- #54: "violationsAsErrors" is completely ineffective
- #70: UnsupportedOperationException opening Rule Configuration
- #76: Global rule management is saved even if cancelled
- #78: Project properties cannot be loaded anymore
- #83: "Restore defaults" button in PMD preferences is always deactivated
- #86: Add Markers next to Scroll bar
- #88: PMD is executed for all file types regardless of active rules
- #89: Upgrade to PMD 6.12.0
- #1359: PMD violations in eclipse should be shown on editor by scrollbar
- #75: Prevent UnsupportedOperationException #70 - phoenix384
- Updated PMD to 6.10.0
- Eclipse SimRel 2018-09 and 2018-12 is supported.
To do this, the plugin doesn't expose log4j for other plugins anymore.
(the package
org.apache.log4jis not exported anymore). In case you used this in a fragment, you should now use the eclipse platform logging facilities.
- #48: Upgrade to PMD 6.10.0
- #65: Support multiple rulesets
- #67: PMD's XML Schemas should be registered in XML Catalog
- #73: Support openjdk 11 as runtime
- #51: Allow multiple ruleset files - Phillip Krall
- #53: README: markdown, fix links - Lars Hvam
- #60: Update to PMD 6.7.0 - Jan
- #61: Support Eclipse SimRel 2018-09 - jftsunami
- #63: Minor changes - jftsunami
- #66: Multi ruleset files - - Phillip Krall
- This is only a bugfix release.
- #52: Eclipse Internal Error - Out of Memory
- #57: De-duplicate project ruleset when loading the project properties
- Updated PMD to 6.2.0
- At least Java 1.7 is required now.
- Two new options under Preferences: "Show PMD violations overview when checking code" and "Show PMD violations outline when checking code". If these options are checked, then theses PMD views are shown automatically, when PMD check is executed for a project. This behaves similar like "Show PMD perspective", but just doesn't switch the current perspective.
- PMD is now only executed automatically, if the option "Check code after saving" is enabled. This allows to simply disable automatic PMD checks temporarily. Executing PMD via the project's context menu "Check Code" is not affected and can still be used to manually execute PMD to update the markers.
- #20: category.xml maybe broken
- #29: Processing errors without cause
- #32: Upgrade PMD to 6.2.0
- #42: Marker colors not updated in all views after change
- #43: Update unit tests to use new ruleset categories
- #46: PMD Preferences are overridden and lost
- #25: [core] Typesafe properties - Clément Fournier
- #26: Updated french translations - Clément Fournier
- #37: Global Priority Filter for Violations Overview/Outline - Phillip Krall
- #39: Show PMD violations overview/outline views when checking code - Phillip Krall
- #40: Only execute PMD when check on save is enabled - Phillip Krall
- #41: Update all views after marker color changed - Phillip Krall
- #44: Fix saving preferences for violation overview/outline - Phillip Krall
- Updated PMD to 5.8.0
- Updated PMD to 5.6.1
- Updated PMD to 5.5.5
- Updated PMD to 5.5.3
- Fix classpath errors due to multiple version on asm being on the classpath. See also bug #1492.
- Updated PMD to 5.5.0
- Fixed Violation Overview + Outline don't work for Non-Java Rule violations (issue #13, pull request #14)
- squid:S1854 - Dead stores should be removed (pull request #17)
- squid:S1213 - The members of an interface declaration or class should appear in a pre-defined order (pull request #18)
- Fixed Executing Rule.start() (bug #974)
- Fixed Cannot create reports for non-Java projects (bug #1473)
- Fixed Check Code doesn't work from project root in non-java projects (bug #1474)
- Fixed Not Able to enable PMD for Apex in Eclipse (bug #1483)
- Updated PMD to 5.3.6
- Fixed PMD-Plugin does not work if run with IBM JDK 1.7.0 (bug #1419)
- Fixed PMD Eclipse is not executed if "Full build" is not enabled (bug #1435)
- Fixed PMD is changing encoding of source code (bug #1386)
API Changes:
- The package
net.sourceforge.pmd.eclipse.core.rulesetsincluding sub-packages has been removed from the plugin. It won't export these package anymore. The purpose of this package was probably to provide a way of serializing and deserializing rulesets. As only the writer has been implemented and the reader was missing, it's not useful. If you need to read/write rulesets, use the core PMD functionality provided bynet.sourceforge.pmd.RuleSetWriter. In order to read it back, usenet.sourceforge.pmd.RuleSetFactory.
- Updated PMD to 5.3.2
- Fixed Unable to check more than one class without FullBuildEnabled (#1352)
- Fixed Manually checking code with PMD only works if PMD is activated for the project (bug #1351)
- Fixed Check code after saving runs PMD unnecessarily (bug #1350)
- Updated PMD to 5.3.0
- Updated PMD to 5.2.3 (pull request #4)
- Some performance improvements when using a BUNCH of projects with pmd settings (pull request #3)
- Fixed global rule management persistence broken (bug #1248)
- More PMD plugin performance updates (pull request #5)
- Updated PMD to 5.2.1
- Updated PMD to 5.1.3
- Fix packaging (pull request #1, bug #1129)
- Fixed Code review in Luna always throws "An internal error occurred during: "ReviewCode"." (bug #1210)
- Fixed NPE when selecting a Working Set in Eclipse (bug #1152)
- Fixed Eclipse plugin don't apply global rule configuration after restart (bug #1184)
- Fixed "Use type resolution" does not work (bug #1145)
- Fixed NullPointerException when selecting/unselecting items in the Projects Properties view (bug #1242)
- Fixed sizing of first column in Rule Configuration (bug #1237)
- Fixed Violations outline should remember column widths (bug #1240)
- Fixed Rule Configuration window does not use extra horizontal space (bug #1238)
- Updated PMD to 5.1.1
- Support workspace-relative path in ruleSetFile property (pull request #36, feature request #1133)
- Update Updatesite for Kepler and PMD 5.1.0 (feature request #1179)
- "Generate Abstract Syntax Tree" always run in JDK 1.4 mode (bug #1174)
- Fixed Plugin does not execute custom xpath rules (bug #1132)
- Fixed After changing exclude filters violations are not cleared (bug #1148)
- Updated PMD to 5.0.5
- Fixed Build path exclusions not honored (bug #988)
- Fixed right click to add reviewed comment missing (bug #1052)
- Fixed PMD Eclipse: How to ... documentation missing (bug #1061)
- Fixed Properties page: "Rule-Selection" should be disabled if project-local config is selected (bug #1070)
- Fixed Violations are reported multiple times (bug #1071)
- Fixed Exclude pattern does not work (bug #1079)
- Fixed SWTError: No more handles on Violation Outline View (bug #1096)
- Fixed Selecting non-duplicates during import doesn't work. (bug #1110)
- Fixed Eclipse log file will not be filled (bug #1112)
- Fixed PMD Eclipse plugin doesn't analyze project if it has non-existing source folders (bug #1116)
- Fixed An internal error occurred during: "RenderReport" (bug #1117)
- The official update site is now: https://sourceforge.net/projects/pmd/files/pmd-eclipse/update-site/
- Updated PMD to 5.0.4
- Fixed False Positive: LocalVariableCouldBeFinal (bug #1075)