Release notes for the PMD Eclipse Plugin
----------------------------------------
v3.2.6 - March 30 2009
------------------------

PMD updated to 4.2.5

Bug fix: Exception when the project ruleset file is not the default name

Installation unpacks plugin to make sure it can be used in eclipse fragments

New project preference to handle high priority violations as Eclipse errors
  This must be enabled (the default) to get the same behavior as in previous versions

v3.2.5 - October 13 2008
------------------------

PMD to 4.2.4

plugin reorganization

code cleanup

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 changelog for complete list.


----------------------------------------
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 changelog for complete list.


----------------------------------------------------------------------------------------
v3.2.2 24/06/2007
-----------------

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

FIXED
-----
See changelog for complete list.


----------------------------------------------------------------------------------------
v3.2.1 15/02/2006
-----------------

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


----------------------------------------------------------------------------------------
v3.2.0 15/01/2006
-----------------

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


----------------------------------------------------------------------------------------
v3.1.7 05/10/2006
-----------------

UPDATED : PMD v3.8
------------------
** JSP FILES ARE NOT SUPPORTED IN THIS VERSION YET **

FIXED : various bugs...
-----------------------


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


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


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


----------------------------------------------------------------------------------------
v3.1.3 17/01/2005
-----------------

UPDATED : PMD v3.4
------------------
This version includes version 3.4 of the PMD engine with regexp support.


----------------------------------------------------------------------------------------
v3.1.2 03/11/2005
-----------------

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


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


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


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


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


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



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




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




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


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


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




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

