Skip to content

Latest commit

 

History

History
2136 lines (1426 loc) · 80.6 KB

ReleaseNotes.md

File metadata and controls

2136 lines (1426 loc) · 80.6 KB

PMD For Eclipse - Release Notes

Installation instructions: https://pmd.github.io/eclipse/

Eclipse Update Site:

????: 7.7.0.v????

This is a minor release.

New and noteworthy

Fixed Issues

API Changes

External Contributions

27-September-2024: 7.6.0.v20240927-1030-r

This is a minor release.

New and noteworthy

  • Update to PMD 7.6.0
  • Support for Eclipse 2024-09 added
  • Support for Eclipse 2023-09 removed
  • New Git default branch - "main":
    We are joining the Git community and updating "master" to "main". Using the term "master" for the main development branch can be offensive to some people. Existing versions of Git have been always capable of working with any branch name and since 2.28.0 (July 2020) the default initial branch is configurable (init.defaultBranch). Since October 2020, the default branch for new repositories on GitHub is "main". Finally, PMD will also use this new name for the main branch in all our own repositories.

Merged pull requests

  • Only include the jars under target/lib that are on the classpath (#223) by @adangel
  • Update PMD icon to use small variant of the logo (#222) by @adangel
  • Support eclipse 2024-09 (#221) by @adangel
  • Change branch master to main (#220) by @adangel

Dependency updates

  • Bump checkstyle from 10.14.0 to 10.18.1 (#217)

30-August-2024: 7.5.0.v20240830-0910-r

This is a minor release.

New and noteworthy

  • Update to PMD 7.5.0

Dependency updates

  • Bump org.apache.maven.plugins:maven-surefire-plugin from 3.3.0 to 3.4.0 (#215)

26-July-2024: 7.4.0.v20240726-0845-r

This is a minor release.

New and noteworthy

  • Update to PMD 7.4.0

Dependency updates

  • Bump org.apache.maven.plugins:maven-surefire-plugin from 3.2.5 to 3.3.0 (#199)
  • Bump org.apache.maven.plugins:maven-site-plugin from 4.0.0-M13 to 4.0.0-M15 (#201)
  • Bump org.apache.maven.plugins:maven-clean-plugin from 3.3.2 to 3.4.0 (#202)
  • Bump org.apache.maven.plugins:maven-deploy-plugin from 3.1.1 to 3.1.2 (#203)
  • Bump org.apache.maven.plugins:maven-enforcer-plugin from 3.4.1 to 3.5.0 (#204)
  • Bump org.apache.maven.plugins:maven-pmd-plugin from 3.22.0 to 3.23.0 (#206)
  • Bump org.apache.maven.plugins:maven-dependency-plugin from 3.5.0 to 3.7.1 (#207)

28-June-2024: 7.3.0.v20240628-1015-r

This is a minor release.

New and noteworthy

  • Updated to PMD 7.3.0
  • Support for Eclipse 2024-06 added
  • Support for Eclipse 2023-06 removed

31-May-2024: 7.2.0.v20240531-1152-r

This is a minor release.

New and noteworthy

  • Updated to PMD 7.2.0

Merged pull requests

  • #194: [ci] Support macos on arm64/aarch64
  • #195: chore: Use pmd 7.1.0 for checks

26-April-2024: 7.1.0.v20240426-0821-r

This is a minor release.

New and noteworthy

  • Updated to PMD 7.1.0

Fixed Issues

  • #191: Rule Configuration Pref Page - PropertyDescriptor cannot be cast to Comparable
  • #192: Add japicmp

API Changes

Deprecations

The following classes have been deprecated for removal. Either they were not intended to be public API at all or they were used to support the UI for rule configuration. With the switch to PMD 7.0.0, these editor factories are not used anymore.

  • net.sourceforge.pmd.eclipse.ui.preferences.editors.AbstractEditorFactory
  • net.sourceforge.pmd.eclipse.ui.preferences.editors.AbstractMultiValueEditorFactory
  • net.sourceforge.pmd.eclipse.ui.preferences.editors.AbstractNumericEditorFactory
  • net.sourceforge.pmd.eclipse.ui.preferences.editors.AbstractRealNumberEditor
  • net.sourceforge.pmd.eclipse.ui.preferences.editors.BooleanEditorFactory
  • net.sourceforge.pmd.eclipse.ui.preferences.editors.CharacterEditorFactory
  • net.sourceforge.pmd.eclipse.ui.preferences.editors.DoubleEditorFactory
  • net.sourceforge.pmd.eclipse.ui.preferences.editors.EnumerationEditorFactory
  • net.sourceforge.pmd.eclipse.ui.preferences.editors.FilePicker
  • net.sourceforge.pmd.eclipse.ui.preferences.editors.IntegerEditorFactory
  • net.sourceforge.pmd.eclipse.ui.preferences.editors.MethodPicker
  • net.sourceforge.pmd.eclipse.ui.preferences.editors.MultiEnumerationEditorFactory
  • net.sourceforge.pmd.eclipse.ui.preferences.editors.MultiIntegerEditorFactory
  • net.sourceforge.pmd.eclipse.ui.preferences.editors.MultiStringEditorFactory
  • net.sourceforge.pmd.eclipse.ui.preferences.editors.RegexEditorFactory
  • net.sourceforge.pmd.eclipse.ui.preferences.editors.StringEditorFactory
  • net.sourceforge.pmd.eclipse.ui.preferences.editors.SWTUtil
  • net.sourceforge.pmd.eclipse.ui.preferences.editors.TypeText

The following members have been deprecated for removal:

  • net.sourceforge.pmd.eclipse.ui.dialogs.NewPropertyDialog#NewPropertyDialog(Shell, Map<Class<?>, EditorFactory<?>>, PropertySource, ValueChangeListener)
  • net.sourceforge.pmd.eclipse.ui.dialogs.NewPropertyDialog#NewPropertyDialog(Shell, Map<Class<?>, EditorFactory<?>>, Rule, PropertyDescriptor<?>, ValueChangeListener)
  • net.sourceforge.pmd.eclipse.ui.dialogs.NewPropertyDialog#withOnly(Map<Class<?>, EditorFactory<?>>, Class<?>[])
  • net.sourceforge.pmd.eclipse.ui.preferences.panelmanagers.AbstractRulePanelManager.show(TypeText, Class<?>)
  • net.sourceforge.pmd.eclipse.ui.preferences.panelmanagers.FormArranger#FormArranger(Composite, Map<Class<?>, EditorFactory<?>>, ValueChangeListener, SizeChangeListener)
  • net.sourceforge.pmd.eclipse.ui.preferences.panelmanagers.PerRulePropertyPanelManager#EDITOR_FACTORIES_BY_PROPERTY_TYPE

See the javadoc for more info and any possible alternatives if available.

22-March-2024: 7.0.0.v20240322-0920-r

This is a major release.

New and noteworthy

  • Updated to PMD 7.0.0
  • Support for Eclipse 2024-03 added
  • Support for Eclipse 2023-12 added
  • Support for Eclipse 2023-03 removed
  • Support for Eclipse 2022-12 removed

Fixed Issues

  • #185: Bump ch.qos.logback:logback-classic from 1.2.3 to 1.2.13
  • #186: Support eclipse 2023-12
  • #187: Bump tycho from 3.0.4 to 4.0.4
  • #190: Support eclipse 2024-03

API Changes

Due to the updated PMD version, there are a couple of incompatible changes, like changed packages. For the details, see the release notes of PMD.

The following members have been removed, even though they have not been deprecated before:

  • net.sourceforge.pmd.eclipse.ui.preferences.panelmanagers.Configuratio#EXCLUDED_RULE_PROPERTIES

The following deprecated members have been removed:

  • net.sourceforge.pmd.eclipse.runtime.properties.impl.ProjectPropertiesImpl#getProjectRuleSets()
  • net.sourceforge.pmd.eclipse.runtime.properties.impl.ProjectPropertiesImpl#setProjectRuleSets(RuleSets)
  • net.sourceforge.pmd.eclipse.runtime.properties.IProjectProperties#getProjectRuleSets()
  • net.sourceforge.pmd.eclipse.runtime.properties.IProjectProperties#setProjectRuleSets(RuleSets)
  • net.sourceforge.pmd.eclipse.ui.properties.PMDPropertyPageBean#getProjectRuleSets()
  • net.sourceforge.pmd.eclipse.ui.properties.PMDPropertyPageBean#setProjectRuleSets(RuleSets)
  • net.sourceforge.pmd.eclipse.runtime.cmd.BaseVisitor#getRuleSets()
  • net.sourceforge.pmd.eclipse.runtime.cmd.BaseVisitor#setRuleSets(RuleSets)
  • net.sourceforge.pmd.eclipse.ui.properties.UpdateProjectPropertiesCmd#setProjectRuleSets(RuleSets)
  • net.sourceforge.pmd.eclipse.plugin.PMDPlugin#ROOT_LOG_ID
  • net.sourceforge.pmd.eclipse.plugin.PMDPlugin#setJavaClassLoader(PMDConfiguration, IProject)
  • net.sourceforge.pmd.eclipse.plugin.PMDPlugin#getPluginFolder()
  • net.sourceforge.pmd.eclipse.plugin.PMDPlugin#getOpenFiles()
  • net.sourceforge.pmd.eclipse.plugin.PMDPlugin#getPriorityValues()
  • net.sourceforge.pmd.eclipse.plugin.UISettings#createRuleMarkerIcons(Display)
  • net.sourceforge.pmd.eclipse.plugin.UISettings#markerFilenameFor(RulePriority)
  • net.sourceforge.pmd.eclipse.plugin.UISettings#relativeMarkerFilenameFor(RulePriority)
  • net.sourceforge.pmd.eclipse.plugin.UISettings#reloadPriorities()
  • net.sourceforge.pmd.eclipse.plugin.UISettings#markerImgDescriptorsByPriority()
  • net.sourceforge.pmd.eclipse.plugin.UISettings#markerDescriptorFor(RulePriority)
  • net.sourceforge.pmd.eclipse.plugin.UISettings#descriptionFor(RulePriority)
  • net.sourceforge.pmd.eclipse.plugin.UISettings#descriptorFor(RulePriority)
  • net.sourceforge.pmd.eclipse.plugin.UISettings#priorityFor(int)
  • net.sourceforge.pmd.eclipse.plugin.UISettings#getPriorityLabels()
  • net.sourceforge.pmd.eclipse.runtime.cmd.AbstractDefaultCommand#isJavaFile(IFile)
  • net.sourceforge.pmd.eclipse.runtime.cmd.BaseVisitor#isUseTaskMarker()
  • net.sourceforge.pmd.eclipse.runtime.cmd.BaseVisitor#setUseTaskMarker(boolean)
  • net.sourceforge.pmd.eclipse.runtime.cmd.ReviewCodeCmd#setTaskMarker(boolean)
  • net.sourceforge.pmd.eclipse.runtime.preferences.IPreferences#MAX_VIOLATIONS_PFPR_DEFAULT
  • net.sourceforge.pmd.eclipse.runtime.preferences.IPreferences#getMaxViolationsPerFilePerRule()
  • net.sourceforge.pmd.eclipse.runtime.preferences.IPreferences#setMaxViolationsPerFilePerRule(int)
  • net.sourceforge.pmd.eclipse.runtime.properties.impl.ProjectPropertiesImpl#getResolvedRuleSetFile()
  • net.sourceforge.pmd.eclipse.runtime.properties.IProjectProperties#getResolvedRuleSetFile()
  • net.sourceforge.pmd.eclipse.ui.actions.RuleSetUtil#addExcludePatterns(RuleSet, Collection)
  • net.sourceforge.pmd.eclipse.ui.actions.RuleSetUtil#addExcludePatterns(RuleSet, Collection, Collection)
  • net.sourceforge.pmd.eclipse.ui.actions.RuleSetUtil#setExcludePatterns(RuleSet, Collection)
  • net.sourceforge.pmd.eclipse.ui.actions.RuleSetUtil#addIncludePatterns(RuleSet, Collection)
  • net.sourceforge.pmd.eclipse.ui.actions.RuleSetUtil#addIncludePatterns(RuleSet, Collection, Collection)
  • net.sourceforge.pmd.eclipse.ui.actions.RuleSetUtil#setIncludePatterns(RuleSet, Collection)
  • net.sourceforge.pmd.eclipse.ui.actions.RuleSetUtil#addRuleSetByReference(RuleSet, RuleSet, boolean)
  • net.sourceforge.pmd.eclipse.ui.priority.PriorityDescriptor#getImageDescriptor()
  • net.sourceforge.pmd.eclipse.ui.priority.PriorityDescriptor#getImage(Display)
  • net.sourceforge.pmd.eclipse.ui.priority.PriorityDescriptor#getImage(Display, int)
  • net.sourceforge.pmd.eclipse.ui.priority.PriorityDescriptor#refreshImages()
  • net.sourceforge.pmd.eclipse.ui.priority.PriorityDescriptorCache#dumpTo(PrintStream)
  • net.sourceforge.pmd.eclipse.ui.views.PriorityFilter#PriorityFilter()
  • net.sourceforge.pmd.eclipse.ui.views.PriorityFilter#addPriorityToList(Integer)
  • net.sourceforge.pmd.eclipse.ui.views.PriorityFilter#removePriorityFromList(Integer)
  • net.sourceforge.pmd.eclipse.ui.views.PriorityFilter#setPriorityFilterListFromString(String, String)
  • net.sourceforge.pmd.eclipse.ui.views.PriorityFilter#getPriorityFilterListAsString(String)
  • net.sourceforge.pmd.eclipse.ui.views.PriorityFilter#getPriorityFilterList()
  • net.sourceforge.pmd.eclipse.ui.views.PriorityFilter#setPriorityFilterList(List)
  • net.sourceforge.pmd.eclipse.ui.views.ViolationOverview#getPriorityFilterList()
  • net.sourceforge.pmd.eclipse.ui.RuleLabelDecorator#reloadDecorators()
  • net.sourceforge.pmd.eclipse.ui.ShapePainter#disposeAll()

The following deprecated classes have been removed:

  • name.herlin.command.AbstractProcessableCommand
  • name.herlin.command.Command
  • name.herlin.command.CommandException
  • name.herlin.command.CommandProcessor
  • name.herlin.command.CommandProcessorStrategy
  • name.herlin.command.DefaultCommandProcessor
  • name.herlin.command.DefaultCommandProcessorStrategy
  • name.herlin.command.Timer
  • name.herlin.command.UnregisteredCommandException
  • name.herlin.command.UnsetInputPropertiesException
  • net.sourceforge.pmd.eclipse.plugin.EclipseUtil
  • net.sourceforge.pmd.eclipse.ui.views.AbstractViolationLabelProvider
  • net.sourceforge.pmd.eclipse.ui.preferences.RulePropertiesContentProvider
  • net.sourceforge.pmd.eclipse.ui.preferences.RulePropertyLabelProvider (not previously deprecated, but unused)
  • net.sourceforge.pmd.eclipse.ui.preferences.RuleProperty
  • net.sourceforge.pmd.eclipse.util.PriorityUtil
  • net.sourceforge.pmd.eclipse.util.IOUtil

30-September-2023: 7.0.0.v20230930-1814-rc4

This is a minor release.

New and noteworthy

  • 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

Fixed Issues

  • #181: Support eclipse 2023-06
  • #182: Update to PMD 7.0.0-rc4
  • #183: Support eclipse 2023-09

API Changes

  • 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

30-May-2023: 7.0.0.v20230530-1924-rc3

This is a release candidate for the next major release.

New and noteworthy

  • Updated to PMD 7.0.0-rc3

Fixed Issues

  • #171: Radio button for local rules in project properties dialog is missing
  • #178: Message not interpolated in "Show details..." dialog

API Changes

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

02-May-2023: 7.0.0.v20230502-1028-rc2

This is a release candidate for the next major release.

New and noteworthy

  • Updated to PMD 7.0.0-rc2

Fixed Issues

  • #176: Update to pmd 7.0.0-rc2
  • #177: Export PMD API

API Changes

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

10-April-2023: 7.0.0.v20230410-1321-rc1

This is a release candidate for the next major release.

New and noteworthy

  • 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

Fixed Issues

  • #122: Update PMD 7 Logo in eclipse pmd plugin
  • #172: Only support the last 4 eclipse releases
  • #174: Upgrade to PMD 7

25-February-2023: 4.44.0.v20230225-1718-r

This is a minor release.

New and noteworthy

  • Updated to PMD 6.55.0

28-January-2023: 4.43.0.v20230128-1625-r

This is a minor release.

New and noteworthy

  • Updated to PMD 6.54.0

31-December-2022: 4.42.0.v20221231-1753-r

This is a minor release.

New and noteworthy

  • Updated to PMD 6.53.0

Fixed Issues

  • #168: Missing constraints in runtime Eclipse workspace (e.g., in Eclipse Modeling Tool since 2022-12 R)
  • #169: Remove unnecessary required bundles

26-November-2022: 4.41.0.v20221126-1044-r

This is a minor release.

New and noteworthy

  • Updated to PMD 6.52.0

Fixed Issues

  • #109: Duplicate entries in reports

29-October-2022: 4.40.0.v20221029-0812-r

This is a minor release.

New and noteworthy

  • Java 17 is required for building now. The plugin still works with older eclipse versions with Java 8.
  • Updated to PMD 6.51.0

Fixed Issues

  • #165: Bump tycho from 2.7.4 to 3.0.0

30-September-2022: 4.39.0.v20220930-1439-r

This is a minor release.

New and noteworthy

  • Updated to PMD 6.50.0

31-August-2022: 4.38.0.v20220831-1801-r

This is a minor release.

New and noteworthy

  • Updated to PMD 6.49.0
  • #164: Add more language modules

30-July-2022: 4.37.0.v20220730-1056-r

This is a minor release.

New and noteworthy

  • Updated to PMD 6.48.0

Fixed Issues

  • #163: Bump tycho from 2.6.0 to 2.7.4

25-June-2022: 4.36.0.v20220625-0934-r

This is a minor release.

New and noteworthy

  • Updated to PMD 6.47.0

28-May-2022: 4.35.0.v20220528-0951-r

This is a minor release.

New and noteworthy

  • Updated to PMD 6.46.0

Fixed Issues

  • #162: Fix deprecations

30-April-2022: 4.34.0.v20220430-0913-r

This is a minor release.

New and noteworthy

  • Updated to PMD 6.45.0

27-March-2022: 4.33.0.v20220327-1533-r

This is a minor release.

New and noteworthy

  • Updated to PMD 6.44.0

26-February-2022: 4.32.0.v20220226-1008-r

This is a minor release.

New and noteworthy

  • Updated to PMD 6.43.0

29-January-2022: 4.31.0.v20220129-0959-r

This is a minor release.

New and noteworthy

  • Updated to PMD 6.42.0

27-November-2021: 4.30.0.v20211127-1115-r

This is a minor release.

New and noteworthy

  • Updated to PMD 6.41.0

30-October-2021: 4.29.0.v20211030-0859-r

This is a minor release.

New and noteworthy

  • Updated to PMD 6.40.0

25-September-2021: 4.28.0.v20210925-1222-r

This is a minor release.

New and noteworthy

  • Updated to PMD 6.39.0

28-August-2021: 4.27.0.v20210828-1623-r

This is a minor release.

New and noteworthy

  • Updated to PMD 6.38.0

Fixed Issues

  • #159: Error executing command ReviewCode: java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence near index (part 2)

31-July-2021: 4.26.0.v20210731-1741-r

This is a minor release.

New and noteworthy

  • Updated to PMD 6.37.0

Fixed Issues

  • #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

API Changes

Deprecated for removal

  • net.sourceforge.pmd.eclipse.plugin.EclipseUtil
  • net.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.FilterManager
  • net.sourceforge.pmd.eclipse.util.IOUtil
  • net.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.

26-June-2021: 4.25.0.v20210626-0908

This is a minor release.

New and noteworthy

  • Updated to PMD 6.36.0

Fixed Issues

  • #133: Updates with outdated certificates from orbit
  • #134: Incompatibility between Groovy Eclipse Plugin and PMD Plugin

29-May-2021: 4.24.0.v20210529-0600

This is a minor release.

New and noteworthy

  • Updated to PMD 6.35.0

Fixed Issues

  • #146: Refactor actions to use correct selection

24-April-2021: 4.23.0.v20210424-1524

This is a minor release.

New and noteworthy

Fixed Issues

  • #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

API Changes

  • The following methods in net.sourceforge.pmd.eclipse.ui.actions.RuleSetUtil are 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_DESCRIPTOR is 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)

27-March-2021: 4.22.0.v20210327-1603

This is a minor release.

New and noteworthy

Fixed Issues

  • #140: Use gh pages for update site

27-February-2021: 4.21.0.v20210227-1131

This is a minor release.

New and noteworthy

  • Updated to PMD 6.32.0

30-January-2021: 4.20.0.v20210130-1744

This is a minor release.

New and noteworthy

  • Updated to PMD 6.31.0

12-December-2020: 4.19.0.v20201212-1115

This is a minor release.

New and noteworthy

  • Updated to PMD 6.30.0

Fixed Issues

  • #135: Fix JavaProjectClassLoader (auxclasspath support) for workspace relative libraries

24-October-2020: 4.18.0.v20201024-1129

This is a minor release.

New and noteworthy

  • Updated to PMD 6.29.0

Fixed Issues

  • #131: Conflict with Jaspersoft Studio plugin (log4j)

Breaking Changes

  • 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.IPreferences have been removed:

    • getLogLevel()
    • setLogLevel(Level)
    • LOG_LEVEL

External Contributions

26-September-2020: 4.17.0.v20200926-0854

This is a minor release.

New and noteworthy

  • Updated to PMD 6.28.0

31-August-2020: 4.16.0.v20200831-1731

This is a minor release.

New and noteworthy

  • Updated to PMD 6.27.0

25-July-2020: 4.15.0.v20200725-1231

This is a minor release.

New and noteworthy

  • Updated to PMD 6.26.0

27-June-2020: 4.14.0.v20200627-1203

This is a minor release.

New and noteworthy

  • Updated to PMD 6.25.0

Fixed Issues

  • #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

24-May-2020: 4.13.0.v20200524-1630

This is a minor release.

New and noteworthy

  • Updated to PMD 6.24.0

24-April-2020: 4.12.0.v20200424-1006

This is a minor release.

New and noteworthy

  • Updated to PMD 6.23.0

12-March-2020: 4.11.0.v20200312-1712

This is a minor release.

New and noteworthy

  • Updated to PMD 6.22.0

Fixed Issues

API Changes

External Contributions

07-February-2020: 4.10.1.v20200207-1909

This is a bugfix release.

Fixed Issues

  • #114: NPE in PriorityDescriptorCache
  • #115: Missing dependencies when installing
  • #116: SWTError: No more handles

25-January-2020: 4.10.0.v20200125-1230

This is a minor release.

New and noteworthy

  • Updated to PMD 6.21.0

Fixed Issues

  • #108: GenericPropertyDescriptor cannot be cast to NumericPropertyDescriptor

API Changes

  • 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_LEVEL
    • net.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.FileEditorFactory
    • net.sourceforge.pmd.eclipse.ui.preferences.editors.FloatEditorFactory
    • net.sourceforge.pmd.eclipse.ui.preferences.editors.MethodEditorFactory
    • net.sourceforge.pmd.eclipse.ui.preferences.editors.MultiMethodEditorFactory
    • net.sourceforge.pmd.eclipse.ui.preferences.editors.MultiTypeEditorFactory
    • net.sourceforge.pmd.eclipse.ui.preferences.editors.TypeEditorFactory

External Contributions

29-November-2019: 4.9.0.v20191129-1951

This is a minor release.

New and noteworthy

  • Updated to PMD 6.20.0

31-October-2019: 4.8.0.v20191031-1916

This is a minor release.

New and noteworthy

  • Updated PMD to 6.19.0

15-September-2019: 4.7.0.v20190915-0943

This is a minor release.

New and noteworthy

  • Updated PMD to 6.18.0

Fixed Issues

  • #110: PMD markers should be removed on Project->Clean

External Contributions

28-July-2019: 4.6.0.v20190728-0905

This is a minor release.

New and noteworthy

  • Updated PMD to 6.17.0

30-June-2019: 4.5.0.v20190630-0922

This is a minor release.

New and noteworthy

  • 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: Screenshot of PMD Marker Property Page

Fixed Issues

  • #82: Support old PMD icons
  • #84: Rule Name in Tooltip

API Changes

External Contributions

20-June-2019: 4.4.1.v20190620-0836

This is a bugfix release.

Fixed Issues

  • #103: IllegalStateException: Must be called in the UI thread

26-May-2019: 4.4.0.v20190526-1012

This is a minor release.

New and noteworthy

  • Updated PMD to 6.15.0

External Contributions

28-April-2019: 4.3.0.v20190428-0918

This is a minor release.

New and noteworthy

  • Updated PMD to 6.14.0

26-April-2019: 4.2.1.v20190426-1741

This is a bugfix release.

New and noteworthy

  • 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.

Fixed Issues

  • #56: PMD not filtering
  • #85: Gutter Markers not Configured Color
  • #96: Wrong auxclasspath if project is stored outside of workspace

API Changes

  • In net.sourceforge.pmd.eclipse.plugin.UISettings the 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.RuleLabelDecorator the method reloadDecorators() is deprecated for removal.
  • In net.sourceforge.pmd.eclipse.ui.ShapePainter the method disposeAll() is deprecated for removal.
  • In net.sourceforge.pmd.eclipse.ui.priority.PriorityDescriptor the following methods are deprecated for removal:
    • getImageDescriptor()
    • getImage(Display)
    • getImage(Display, int)
  • In net.sourceforge.pmd.eclipse.ui.priority.PriorityDescriptorCache the method dumpTo(PrintStream) is deprecated for removal.
  • The whole class net.sourceforge.pmd.eclipse.ui.views.AbstractViolationLabelProvider is deprecated for removal.
  • In net.sourceforge.pmd.eclipse.plugin.PMDPlugin the method getOpenFiles() is deprecated for removal.
  • The class net.sourceforge.pmd.eclipse.ui.views.PriorityFilter must 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.ViolationOverview the method getPriorityFilterList() is deprecated for removal.
  • The whole class net.sourceforge.pmd.eclipse.util.PriorityUtil is deprecated for removal.

31-March-2019: 4.2.0.v20190331-1136

This is a minor release.

New and noteworthy

  • Updated PMD to 6.13.0

Fixed Issues

  • #94: Changing a project's PMD configuration no longer prompts for build
  • #95: Upgrade to PMD 6.13.0

07-March-2019: 4.1.0.v20190307-2036

This is a minor release.

New and noteworthy

  • Updated PMD to 6.12.0
  • The package name.herlin is 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.

Fixed Issues

  • #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

External Contributions

20-December-2018: 4.0.18.v20181220-1448

New and noteworthy

  • 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.log4j is not exported anymore). In case you used this in a fragment, you should now use the eclipse platform logging facilities.

Fixed Issues

  • #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

External Contributions

01-August-2018: 4.0.17.v20180801-1551

New and noteworthy

  • This is only a bugfix release.

Fixed Issues

  • #52: Eclipse Internal Error - Out of Memory
  • #57: De-duplicate project ruleset when loading the project properties

12-April-2018: 4.0.16.v20180412-0833

New and noteworthy

  • 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.

Fixed Issues

  • #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

External Contributions

24-June-2017: 4.0.15.v20170624-2134

  • Updated PMD to 5.8.0

28-May-2017: 4.0.14.v20170528-1456

  • Fixed Add travis build (issue #21)
  • Fixed NPE while creating ruleset due to hashcode (issue #23)

29-April-2017: 4.0.13.v20170429-1921

  • Updated PMD to 5.6.1

31-March-2017: 4.0.12.v20170331-0813

  • Updated PMD to 5.5.5

28-January-2017: 4.0.11.v20170128-2103

  • Updated PMD to 5.5.3

26-June-2016: 4.0.10.v20160626-1043

  • Fix classpath errors due to multiple version on asm being on the classpath. See also bug #1492.

25-June-2016: 4.0.9.v20160625-2101

  • 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)

04-December-2015: 4.0.8.v20151204-2156

  • 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.rulesets including 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 by net.sourceforge.pmd.RuleSetWriter. In order to read it back, use net.sourceforge.pmd.RuleSetFactory.

22-May-2015: 4.0.7.v20150522-1709

  • 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)

01-April-2015: 4.0.6.v20150401-1945

  • 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)

05-November-2014: 4.0.5.v20141105-1906

  • Updated PMD to 5.2.1

09-September-2014: 4.0.4.v20140909-1748

  • 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)

27-April-2014: 4.0.3.v20140427-0831

31-October-2013: 4.0.2.v20131031-1124

  • Fixed Plugin does not execute custom xpath rules (bug #1132)
  • Fixed After changing exclude filters violations are not cleared (bug #1148)

11-August-2013: 4.0.1.v20130811-0001

  • 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/

10-May-2013: 4.0.0.v20130510-1000

  • Updated PMD to 5.0.4
  • Fixed False Positive: LocalVariableCouldBeFinal (bug #1075)

v4.0.0 - November 8 2012

Numerous changes & bugfixes Latest 5.0.1 snapshot of PMD itself Compatibility with Eclipse Juno

DETAILS

  • New integrated AST View and XPath test area
  • New rule creation wizard
  • New report preferences panel
  • New file filter panel for exclusion/inclusion entries
  • New automatic "Check code on file save" function (off by default)
  • User-definable rule violation markers
    • Highest priority markers also decorate folders & projects (selectable)
  • Colour syntax highlighting in code viewers/editors
  • Expanded rule import dialog to show incoming rules and any duplicates
  • Export rule function now only exports selected rules
  • Overhauled rule preferences screen
    • allows users to group/edit rules by multiple criteria
    • new ability to enable/disable rules without removing them from rulesets
    • larger editors for the various fields
    • support for non-Java languages
    • group editing of rule exclusion filters
    • highlighting of non-default property values
    • colour-tagged expressions in shown in rule table
    • new property editors are fully type-aware
    • misconfigured rules are highlighted
  • Huge code cleanup
  • Several usability fixes for the Dataflow view
  • Updated to use latest SWT widgets wherever possible
  • New option to control the launch of a full build per project - Thanks to Joe Freeman
  • Check code from working set selections - Thanks to Dominik

v3.2.5 - October 13 2008

  • PMD updated to v4.2.4
  • plugin reorganization
  • code cleanup
  • all rule examples displayed in Rule Configuration panel
  • Full file path now set on RuleContext.setSouceCodeFile(file) instead of workspace relative path

v3.2.4 - April 11 2008

NEW

Workspace level Rule editor enhanced to show nearly all Rule details, lots of little things. New exclude/include patterns from PMD 4.2 are supported. Support for storing RuleSets using Rule References (new PMD 4.2) is now default behavior. Projects can now specify a custom ruleset file explicitly, default remains .ruleset Type Resolution using Project Build Path settings is now possible. To use this feature, the Eclipse JVM must be able to read the version of .class files produced by the Projects.

UPDATE

PMD to 4.2.1

FIXED

Bug #1811828 RuntimeException in RuleSetFactory, default RuleSet used on error Bug #1903578 Handler error in Eclipse log

See details for complete list.

DETAILS

Runtime

  • Fix 1811828 RuntimeException in RuleSetFactory, default ruleset is used on error
  • Fix 1903578 Handler error in Eclipse log
  • Fix 1909929 clean violation review is not selective enough
  • PMD updated to v4.2.1
  • Use new standard PMD RuleSet serialization mechanism
  • Use new PMD support for RuleReferences in RuleSets, instead of using Rule copies
  • Use Java Project Build Path when invoking PMD to allow Type Resolution to work better
  • Error type PMD Violations now show in Problems View for manual PMD invocations
  • Workspace PMD Preferences allows enabling/disabling use of Java Project Build Path
  • Workspace PMD Preferences removed DFA option, use DataflowAnomalyAnalysis rule instead
  • Workspace Rules Configuration Rule table now shows RuleSet name
  • Workspace Rules Configuration Rule table now shows Since attribute
  • Workspace Rules Configuration now has Add Rule... button, defaulting to adding of an XPath Rule
  • Workspace Rules Configuration Import Rule... dialog nows supports importing Rules by Reference (default) or by Copy
  • Workspace Rules Configuration supports editing/adding of Exclude/Include patterns
  • Workspace Rules Configuration supports launching of the PMD Rule Designer GUI
  • Workspace Rules Configuration Rule editing dialog greatly enhanced to support presentation/editing of nearly all Rule details
  • Workspace Rules Configuration Rule editing dialog shows when a Rule is a RuleReference
  • Workspace Rules Configuration Rule editing dialog allows opening External Info URL in Browser
  • Workspace Rules Configuration Rule editing dialog shows blue background when a Rule detail is overridden (e.g. what exactly have you customized)
  • Project PMD Preference Rule table now sorts just like the Workspace Preferences version
  • Project PMD Preference Rule table now shows RuleSet name
  • Project PMD Preference Rule table now shows Rule Since attribute
  • Project PMD Preference supports specifying arbitrary RuleSet file, default remains .ruleset

v3.2.3 - Dec 02 2007

UPDATE

PMD to 4.1 dependency jars updated

FIXED

Bug #1661524 Working set functionality doesn't work Bug #1811828 RuntimeException in RuleSetFactory

See details for complete list.

DETAILS

  • PMD updated to v4.1
  • dependency jars updated
  • Fix 1661524 Working set functionality doesn't work
  • Fix 1811828 RuntimeException in RuleSetFactory
  • Fix NPE on empty rulesets
  • Fix UI preference refresh bug
  • xml rulesets now use indentation: human readable and easier to modify

3.2.2 - 24/06/2007

UPDATE

Include PMD 4.0rc1. The included version is the one for Java14.

FIXED

See details for complete list.

DETAILS

Runtime

  • Add PMD v4.0rc1 (java 1.4 retroweaver support)
  • Fix 1671486 Rule set is not serialized/deserialized properly
  • Fix 1703589 ConcurrentModificationException in RuleSet.apply
  • Fix 1710977 Null Pointer Exception on click of Add Rule (remove the button)
  • Fix 1737975 CPD view double-click selection&jump bug
  • Remove the embedded PMD documentation and point to the PMD remote site.

v3.2.1 - 15/02/2007

Runtime

  • Fix 1583788 StackOverflowError in rule edit window
  • Fix 1641930 Creation of ruleset.xml file causes error in Eclipse
  • Fix 1645449 Views broken in 3.2.0 with Eclipse 3.2.1 on Solaris

v3.2.0 - 15/01/2007

UPDATED : PMD v3.9

JSP FILES ARE NOT SUPPORTED IN THIS VERSION YET

UPDATED : imporve overview and outline views

These views include filters and the overview now propose 3 different layout of violations. Statistics are computed when a package is collapsed. A button is added to force statistics computations.

NEW : Support for JDK 6.0

Projects targeted for JDK 6.0 are now supported.

NEW : CPD support has been refactored

Dialogs and views has been developped to improve CPD integration.

FIXED : various bugs...

DETAILS

Runtime

  • Upgrade to PMD v3.9
  • Update and improve overview and outline views
  • Refactor CPD views
  • Fix major NullPointer and ClassCastException bugs
  • Add support for JDK 6.0

v3.1.7 - 05/10/2006

UPDATED : PMD v3.8

JSP FILES ARE NOT SUPPORTED IN THIS VERSION YET

FIXED : various bugs...

DETAILS

Runtime

  • Upgrade to PMD v3.8
  • Fix NPE when searching for quickfixes for rules from project rulesets
  • Fix 1541795 (at least it should)
  • Fix 1554639 (thanks to Sven Jacob)
  • Fix the refreshproblem of the dataflowanomalytable and a bug with overloaded methods in the dataflowview (Thanks to Sven Jacob)
  • Fix 1417291 CCE when adding report (eclipse)
  • Fix 1470054 Violation Details dlg has OK button which does nothing
  • Fix 1470080 NPE in PMDRecord.findResource
  • Fix 1481300 plugin throws NPE after move prjs to new workspace
  • Fix 1486390 Exception during execution

v3.1.6 - 09/06/2006

UPDATED : Architecture refactoring

This version is a major enhancement from previous ones. While this is not visible, it includes a complete refactoring of the plugin architecture necessary to ease future evolutions.

The consequence is that any preferences customizations from older versions will be lost. Project properties should be kept.

The suggested update procedure is to:

  1. disable PMD from all your projects
  2. disable then uninstall PMD from your Eclipse
  3. install new version

UPDATED : PMD v3.7

JSP FILES ARE NOT SUPPORTED IN THIS VERSION YET

UPDATED : Performance issues

This version include major performances enhancements:

  • process files that are only included in source directories
  • by default, derived files are excluded (this is an option of the project properties)
  • heavy statistics computation has been shutdown (#violations/loc & #violations/method)
  • refactor the markers application to use uptodate Eclipe features
  • limit the number of reported violations per file per rule the default is set to 5 and can be changed in the preferences.

Now the plugin overhead to PMD should be only few hundreds of milliseconds (depends of the #files to process and #violations generated of course).

UPDATED : The legacy Violation View has been removed

The old violation view has been removed to the benefit of the new PMD Perspective which is more efficient.

To obtain the same kind of view, simply use the standard Problems view.

UPDATED : Make CPD working set aware

Running CPD now benefits of the working set selected for the project.

UPDATED : Log files preferences

Now the logging properties can be set in the preferences dialog. You can choose the logging level (default to WARN) and the logging file name and location (default to the standard pmd-eclipse.log file in the Eclipse install directory).

UPDATED : Default review to PMD style

By default, the review comment style is the standard PMD style (// NOPMD comment) and no more the former Eclipse style (// @PMD:REVIEW...).

This can be changed in the preferences dialog.

Note that the Eclipse style is considered deprecated and will be removed in a next version.

DETAILS

Runtime

  • Reconfigure the rebuild command to better handle huge projects
  • Add the include derived files option
  • make CPD "working set aware"
  • remove some dead code
  • limit the number of reported violations per file and per rule (default to 5)
  • Add the possibility to use the PMD violation review style
  • Refactor the plugin architecture to better accept future evolutions

v3.1.5 - 12/04/2006

UPDATED : PMD v3.6

This version includes a patched version of PMD v3.6. The new VBHTML report has been included.

JSP FILES ARE NOT SUPPORTED IN THIS VERSION YET

FIXED

Generating reports with violations on classes in the default package now works correctly.

Fix BUG#1467817 Change the label of the rebuild_project question.

DETAILS

Runtime

  • Update to PMD v3.6
  • Fix the default package issue when generating reports
  • Fix BUG#1467817 Change the label of the rebuild_project question

v3.1.4 - 06/02/2006

UPDATED : PMD v3.5

This version includes the patched version 3.5 of the PMD engine.

FIXED

Variuous bugs are fixed: #1357798, #1365407 and various internal bugs.

Internal refactoring is still occurring.

DETAILS

Runtime

  • Fix BUG#1357798 Source file utf-8 charset problem
  • Fix BUG#1365407 Problems with PMD in Eclipse/Issue 1
  • Update to PMD v3.5
  • Fix NullPointerException on PriorityFilter class
  • Fix NullPointerException and InvocationTargetException on ASTWriterImpl class
  • Fix BUG#1365407 Problems with PMD in Eclipse/Issue 3
  • Upgrade development environment to Eclipse 3.1.2
  • Apply a patch to PMD v3.5
  • Fix documentation about fragment plugin-id

v3.1.3 - 17/01/2006

UPDATED : PMD v3.4

This version includes version 3.4 of the PMD engine with regexp support.

DETAILS

Runtime

  • Update to PMD v3.4 with regexp support

v3.1.2 - 03/11/2005

This is a minor release that fix missing elements from previous release.

Runtime

  • RFE#1334241-Add an extension point to declare custom rulesets
  • BUG#1212311-Deselecting a rules should now work
  • Fix the missing ShowDataflowView issue

v3.1.1 - 01/11/2005

NEW : PMD perspective and views

Great thanks to Sebastian Raffel. Sebastian has developped a PMD perspective with new views. The legacy "Violations view" still exists. By default, the PMD perspective is shown when a manual check is performed. Otherwise, simply go to the menu Window->Open perspective->Other... and select PMD in the PMD folder.

UPDATED : PMD v3.3

This version includes version 3.3 of the PMD engine

FIXED : Various bug fixes

Some internal bugs and some described in the user forum has been fixed.

DETAILS

Runtime

  • RFE#1231112-Make the rule table columns sortable in preferences dialog (thanks to Brian R)
  • BUG#1231108-Fix the resizing issue
  • Upgrade to PMD 3.3
  • Add a PMD perspective
  • Add a Violations Overview view
  • Add a Violation Outline view
  • Add a Dataflow view
  • Continue internal code refactoring

v3.1.0 - 04/07/2005

IT IS HIGHLY RECOMMENDED YOU DELETE THE ruleset.xml FILE IN YOUR .metadata/plugins/net.sourceforge.pmd.eclipse DIRECTORY BEFORE UPGRADING. Well, it should works with it. But if you have any problem, please try to delete it before requesting support.

FIXED/UPDATED : CPD report

Because the bug #1190624 cannot be fixed, the CPD integration has been refactored. Now CPD can be launched on one project at a time only. The results are produced in a report file inside the report folder. The SimpleRenderer is used to render the report.

UPDATED: Works on Eclipse v3.1

This new version now works both on Eclipse v3.0 and Eclipse v3.1

UPDATED: PMD v3.2

This version is packaged with PMD v3.2

UPDATED: Support for Java 5.0 source files

Now the plugin works for projects that are targeted to Java 5.0

UPDATED: Project properties

In consequence of upgrading to Eclipse v3.1, project properties management has been reviewed. Now project properties are stored in a .pmd file at the project root. If you do not explicitly use the .ruleset file, you can delete it.

NEW: Rulesets extension point

The PMD core plugin now define the net.sourceforge.pmd.eclipse.core.rulesets extension point. This extension point allows fragment developers to declare their customs rulesets so that they appears in the drop down list when you request to import rulesets. This extension point allows also to declare rulesets that will be automatically loaded when creating a brand new workspace.

For implementation details, a sample is best. A sample fragment project is committed in the CVS. The module name is "pmd-eclipse-test-fragment".

DETAILS

Runtime

  • Migrate to PMD v3.2
  • Migrate to Eclipse v3.1
  • Add support for JDK 1.5
  • Create a CPD report instead of displaying a window
  • Fix Bug#1190624 (Completly refactor the CPD feature. see release notes)
  • Fix other non documented bugs

Development

  • Continuing the refactoring.
  • Forgive "small" commands.
  • Use Castor to serialize project properties inside the project itself and no more inside the workspace .metadata
  • Small improvements in the Plugin class

v3.0.1 - 07/05/2005

v3.0RC2 (alias v3.0.1) - 07/05/2005

FIXED : Tested on Eclipse 3.1M6

The problem for Eclipse v3.1 Mx version has been solved. Because of this, now the project ruleset is always stored as a file (.ruleset) inside the project itself. This file is created "lazyly": it will not be created unless necessary; so don't panic if you cannot see it.

FIXED (maybe?) : CPD report window for Mac users

The way the window is created has been changed. This should fix the problem.

UPDATED: Xerces Implementation re-packaged inside the core plugin

When migrating for Eclipse v3 (and then Java 1.4), a special plugin for Xerces was created. This has been forgiven and the XercesImpl.jar is now packaged inside the PMD Core plugin.

DETAILS

Runtime

  • Fix Bug#1144793
  • Fix Bug#1190624 (try)
  • Fix PMD violations
  • Continue refactoring

Development

  • Forgive the Xerces plungin and repackage the xercesImpl.jar inside the PMD Core plugin.

v3.0.0 - 21/04/2005

v3.0RC1 (alias v3.0.0) - 21/04/2005

UPDATED : PMD Engine v3.0

Include the new PMD engine v3.0.

NEW : Adding a report generation feature (RFE#1177802)

The plugin includes now the possibility to generate reports. To generate reports, select a project and choose PMD->Generate Reports in the context menu. 4 reports will be generated in a "reports" directory at the project root: a HTML, CVS, TEXT and XML report. These reports are the one generated by the renderers from the PMD Engine.

These reports are based on the PMD markers. Therefore, in order to work, PMD must be activated for the project or a manual must be executed before. Otherwise reports will be empty.

Future versions of the plugin will include report selection, automatic generation and filename and targer folder customization.

DETAILS

Runtime

  • upgrade the core engine to PMD v3.0
  • implement reports generation (RFE#1177802)

v2.2.1 - 01/02/2005

Runtime

  • upgrade the core engine to PMD v2.2

v2.2.0 - 23/01/2005

v2.2 (alias v2.2.0) - 23/01/2005

This relase is considered as stable (no more a release candidate). The only bug it corrects is the management of the new "symboltable" and "dfa" rule attributes.

It also includes PMD 2.1 and basically manages "// NOPMD" comments.

DETAILS

Runtime

  • upgrade the core engine to PMD v2.1 (fix 1095049)
  • integrate to rule attributes when exporting rulesets (fix 1090032 & 1087079)

v2.1.1 - 03/12/2004

Runtime

  • implements the "NOPMD" feature

Development

  • refining the refactoring of the property page
  • implementing a Command framework

v2.1.0 - 22/11/2004

v2.1RC1 (alias v2.1.0) - 22/11/2004

Nothing very special in this release, but the confirmation of the new way of downloading the plugin.

PMD core engine has been upgraded to v2.0.

This release is a candidate, because a refactoring of the plugin has begun. The project property page is used as a test for this refactoring. Do not hesitate to open bug if something goes wrong.

IMPORTANT: Lots of things have changed in PMD. There are some rules that are now XPath rules and have no more an implementation class. Because ruleset is cached, upgrading may cause trouble. To correct this try first to delete the file ruleset.xml in the .metadata.plugins\net.sourceforge.pmd.eclipse directory of your workspace.

Also, some new rules causes exception in some circumstances. Just unselect them. We are already working on this.

DETAILS

Runtime

  • update to PMD v2.0
  • update the icons (thanks to Ebu)
  • fix error in the fragment how to

Development

  • begin the refactoring; apply MVC to GUIs; apply Command and CommandProcessor patterns for PMD and Eclipse resources operations.
  • Before generalizing the refactoring, test on the property page.

v2.0.6 - xx/07/2004

Runtime

  • fix DOMSerializer class not found. -> Package Xerces as an Eclipse feature because SUN JDK 1.4 packages an incomplete Xerces implementation

v2.0.5 - 30/06/2004

Runtime

  • Upgrading to PMD v1.8

v2.0.4 - 29/04/2004

Runtime

  • Upgrading to PMD v1.7

v2.0.3 - 20/04/2004

Runtime

  • Fixing UTF-8 issues in some source files
  • Upgrading to PMD v1.6
  • Upgrading to Eclipse v3M8

v2.0.2 - 19/12/2003

Runtime

  • Fixing malformed UTF-8 characters in generated xml files (thanks to Jacques Lebourgeois)

v2.0.1 - 09/12/2003

Runtime

  • Fixing bug #852522 : PreferencesPage doesn't show up
  • Adapting to Eclipse v3M5
  • Fixing Java Model Exception handling

v2.0.0 - 01/12/2003

v2.0RC1 (alias v2.0.0) - 01/12/2003

As the plugin has become more complex, the plugin is now published with "release candidates" technique. So, when a RC is published, only bugs are corrected before a final release is published.

UPDATED : Changing the deployment structure of the plugin

The plugin has been refactored to follow the standard deployment (installation) procedures of Eclipse. PMD comes now into Eclipse as a "feature" and is composed of two plugins : one for encapsulating PMD (net.sourceforge.pmd.eclipse.core) and one for the UI integration (net.sourceforge.pmd.eclipse). A simple unzip doesn't work anymore, but using the update manager of Eclipse is required. Please, read the instructions included in the setup_readme.txt file of the package you downloaded from Sourceforge.

NEW : Adding the "lazy check" feature

This feature comes to help "big" projects. Now, when PMD is enabled for a project, the plugin ask before checking the entire project. If the answer is no, the new options are only applied when files are saved or added into the project.

NEW : Adding the "working set" feature

This feature also comes for big projects. A working set can be configured by project to filter files that have to be checked by PMD. Open the project properties dialog to specify this working set.

NEW : Using a project ruleset file

Instead of using the rulset configured in Eclipse preferences, it's possible to configure projects to use a ruleset file from the project. This file must be named ".ruleset" and must be in the root directory of the project. When the option is enabled, if the ruleset file doesn't exist, it is created.

NEW : Previewing the Quickfix feature

The plugin comes with a preview of the future "quickfix" feature. This feature will enable to use the Quickfix feature of Eclipse to correct rules violations. This version provides a quickfix for the duplicate imports rule. The quickfix consists of deleting the line where the violation occurs.

UPDATED : Improving Eclipse v3 support

The plugin has been refactored so that it should now work for both Eclipse v2 and v3 under a JDK v1.3. But a Eclipse v2.10 minimum is still required. This version has been tested whith Eclipse v2.11 and Eclipse v3M4.

FIXED : Importing rules and rulesets

Various bug reports shared the same problem : XML parsing of ruleset files. This parsing has been refactored (included in the PMD core engine) so that these bugs should now be fixed. These bugs were about importing rulesets, modifying rules properties,...

FIXED : Improving AST generation

The generation of the AST has been refactored so that it now uses introspection to produce the tree. So now, no attributes should missed. Also, the XML output has been reviewed so that the generated file should now be a valid XML file.

DETAILS

Runtime

  • Fixing bug #819518 : AST writes out method return types incorrectly
  • Fixing bug #820241 : VariableDeclaration doesn't show variable modifiers
  • Fixing bug #850242 : PMD working from time to time
  • Fixing bug #849558 : Cannot use pmd-eclipse plugin with Eclipse 2.1.2
  • Fixing bug #841110 : PMD-eclipse not working after rule import and restart
  • Fixing bug #838054 : PMD cannot run inside Eclipse
  • Fixing bug #832250 : plugin exception in 1.2
  • Adding the lazy check feature : suggest to not rebuild the project when the properties has changed.
  • Adding the working set feature
  • Previewing quickfix feature
  • Refactoring to remove Eclipse internal APIs usage
  • Refactoring to use the Eclipse adaptable framework instead of downcasting (where possible)
  • Refactoring to adapt to Eclipse v3

v1.2.1 - 30/10/2003

Runtime

  • Fixing JDK 1.3 runtime problem (for WSAD users for example) (thanks to Eduard Naum)
  • Adding "scratchpad" ruleset in the drop down list when importing rulesets
  • Refactoring JDK 1.3 compatibility feature so that it uses the compiler compliance option

v1.2.0 - 27/10/2003

NEW : Adding a JDK 1.3 compatibility option

With the upgrade to PMD 1.3, the plug-in now provide an option to flag the project to be JDK1.3 compatible. If the flag is checked, the "assert" keyword will be processed by PMD like a identifier. If the flag is unchecked, the "assert" will be processed as a keyword.

NEW : Adding a review feature

Some rules occured and nothing can be done to correct it (unused parameter in a framework abstract method or interface method, complexity warning, deep ifs,...) You cannot remove the rules from the configuration because other or future occurrences are still needed. But if the rule is still used, then the violations view will be polluted by the undesired violations.

To address this problem, the plug-in now provide a review feature. When a violation occurs, if it cannot be corrected, then it can be marked as "reviewed". Reviews are comments placed above the targeted line of code that avoid the violation to be raised in future checks. As it is in the code, it is automatically shared with other developpers.

To learn more about this feature, please read the online documentation in the howto chapter.

FIX : Encoding of generated XML files

The plugin may generates 2 kind of XML files : rulesets file and AST files. Encoding problems that were sometimes encountered are now fixed.

DETAILS

Runtime

  • Refactoring some classes to avoid the warnings about accessing private members from inner types.
  • Adding the review feature (RFE#785023 and RFE#787086)
  • Adding a Java 1.3 compatibility property for projects
  • Upgrading to PMD 1.3.0
  • Fixing encoding in rulesets (bug #810858)
  • Fixing encoding of AST (bug #819520)

Development

  • Rebuild the build.xml file according to the "Create Ant Build File" feature

v1.1.2 - 11/08/2003

Runtime

  • Fixing exception in violations view when display violations of a class in the default package
  • Refactoring ruleset preferences. Moving the prefered ruleset from preference store to state location

v1.1.1 - 05/08/2003

Runtime

  • Updating to PMD v1.2.1
  • Fixing CoreException when refreshing violations view with Eclipse v3

v1.1.0 - 30/07/2003

NEW : Redesigning the plugin configuration

Since the beginning, the plugin was configured by selecting globaly desired, already written rulesets. Before v1.0.0, only rulesets from PMD was allowed or also, custom rulesets packaged in a fragment plugin. Since then, rulesets can also be loaded from standard file system.

Now, the plugin configuration is no more rulset based, but rule based. That is, you can configure globaly what rules are to be used and configure them (change the priority level, the description and the violation message). The rules can be imported from PMD rulesets or from any custom ruleset. It's even possible to create new rules, such as XPath rules.

Finally, the configured rules can be enabled or disabled in the properties of each project.

For more information, read the how to chapter about the plugin configuration.

NEW : Adding a violation view

PMD violations are shown as problems (or tasks) in the tasks view. Some users do not like this method to list violations. Now, a special view has been designed to display only violations. This view works like the tasks view, but displays informations differently. Also, this view provides filters specific for PMD such as a sorter by priority level. The users who do not want to use the tasks view any more may filter PMD markers to remove them from the tasks view.

For more information, read the how to chapter about using the plugin.

UPDATED : Grouping menu items

(request and patch from Christian J�ckel) In order to be less intrusive in the context menu of the package and navigator views, PMD menu items are now grouped in a submenu. This submenu is displayed by selecting the unique entry "PMD" in the context menu of the desired view.

DETAILS

Runtime

  • Writing more docs (using PMD, using CPD, reporting bugs)
  • Redesigning the way to configure the plugin (see doc)
  • Adding a view that show PMD violations
  • Grouping PMD menu items in a submenu to be less intrusive in the views context menu
  • Updating to PMD v1.2

v1.0.0 - 19/06/2003

NEW : Adding a logging facility

The logging support is based on Log4J from Apache (see: http://jakarta.apache.org/log4j). The default is to log at the warn level to the file "pmd-eclipse.log" using a rolling file appender of 10 MB and one backup file. The file is located in the {user.dir} directory which should be your Eclipse home directory To change these options, simply edit the "log4j.xml" file located in the plugin. Please read the Log4J doc to learn how to update this file.

NEW : PMD actions from folder and package popups

Now, PMD actions (check code and remove markers) are available from the popup menus of a folder (resource navigator view) and package (package explorer view).

NEW : On-line help

PMD documentation is now shipped with the plugin. Open the help contents and select 'PMD Plugin documentation'. The topic 'PMD Documentation' points to the PMD official documentation. The chapter 'How to...' contains pages about some usual tasks with the plugin.

UPDATED

Lastest PMD Engine (v1.1). Now, no more error message is displayed when PMD is executed against a file with syntax errors. The progress indicators are more accurate. Violations are batch processed to speed up manual PMD invocation.

DETAILS

Runtime

  • Fixing SWTException when PMD is run on a file with syntax error (thanks to Chris Grindstaff)
  • Generalize above fix for all message dialog in the plugin
  • Adding logging facility to help support (using commons-logging and Log4J)
  • Removing error dialog when PMD is executed on a file with syntax error (the PMD exception is logged as a warning)
  • Adding PMD actions on folder and package popup menus (request from Vladimir Bossica)
  • Processing markers changes as batch operations so that performances are improved.
  • Updating PMD engine to v1.1
  • Fixing CPD usage to conform to new engine implementation
  • Improving progress indicators accurracy
  • Adding online help that points to official PMD help and a howto section
  • When generating an AST :
    • place image information as an attribute instead of the tag body
    • add other attributes (lines and cols) to all tags even those without children

v0.5.0 - 19/03/2003

NEW : Using PMD as a project incremental builder

When PMD is used as an incremental builder, then violations are added as problem marker. Then, markers will be removed when violations are fixed. To enable PMD as a incremental, simply check "enable PMD" on your project PMD property page.

UPDATED

When PMD is used "one shot" from the popup menu, then violations are added as task. Then, markers should be removed manually via the popup menus, either from the project (all violations for this project will be removed), or from a file or group of files (all violations for these files will be removed) or from the task view (all violations for all projects will be removed).

PMD markers (violations) can be filtered in the task view : either PMD task marker or PMD problem marker or both.

PMD rule violations have a priority from 1 to 5. Markers have only 3 level of severity, so the mapping is as follow : PMD priority 1 -> severity error, priority high PMD priority 2 -> severity error, priority normal PMD priority 3 -> severity warning, priority high PMD priority 4 -> severity warning, priority normal PMD priority 5 -> severity information, priority normal

MISC

PMD engine is not shipped with the source archive. Download it from source forge and install it in a lib subdirectory.

DETAILS

Runtime

  • Adding PMD as a project incremental builder.
  • Refactor some entries in the plugin.xml file.
  • Adding a "Delete PMD marker" popup menu on project, java files and task view.
  • Adding a "Generate AST" popup menu on java file.
  • Enabling popups in resource view and package view
  • Externalizing strings and messages.
  • Adding support for i18n : english is the default locale and providing french as the first alternative locale.
  • Using PMD v1.03

Development

  • Adding a ant build file
  • Adapting .project to be compatible with both Eclipse 2.02 and WSAD v5.