From d6c2e505abf00e73c133d60f9809fa8e871ee95d Mon Sep 17 00:00:00 2001 From: hooperbloob Date: Wed, 31 Oct 2012 23:35:36 -0700 Subject: [PATCH] Bugfix for issue mentioned here: http://sourceforge.net/p/pmd/discussion/188192/thread/888425ac --- .../pmd/eclipse/plugin/FileChangeReviewer.java | 5 ++++- .../pmd/eclipse/runtime/cmd/ReviewCodeCmd.java | 12 +++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/plugin/FileChangeReviewer.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/plugin/FileChangeReviewer.java index bf32d763df..cb0652edc8 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/plugin/FileChangeReviewer.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/plugin/FileChangeReviewer.java @@ -4,6 +4,7 @@ import java.util.HashSet; import java.util.Set; import name.herlin.command.CommandException; +import net.sourceforge.pmd.eclipse.runtime.builder.MarkerUtil; import net.sourceforge.pmd.eclipse.runtime.cmd.ReviewCodeCmd; import org.eclipse.core.resources.IFile; @@ -11,6 +12,7 @@ import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResourceChangeEvent; import org.eclipse.core.resources.IResourceChangeListener; import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.NullProgressMonitor; @@ -79,10 +81,11 @@ public class FileChangeReviewer implements IResourceChangeListener { if (itemsChanged.isEmpty()) return; ReviewCodeCmd cmd = new ReviewCodeCmd(); // separate one for each thread + cmd.clearExistingMarkersBeforeApplying(true); cmd.reset(); for (ResourceChange chg : itemsChanged) cmd.addResource(chg.file); - + try { cmd.performExecute(); } catch (CommandException e) { diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/cmd/ReviewCodeCmd.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/cmd/ReviewCodeCmd.java index d0473db589..48d2a5b515 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/cmd/ReviewCodeCmd.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/cmd/ReviewCodeCmd.java @@ -49,6 +49,7 @@ import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.RuleSet; import net.sourceforge.pmd.eclipse.plugin.PMDPlugin; import net.sourceforge.pmd.eclipse.runtime.PMDRuntimeConstants; +import net.sourceforge.pmd.eclipse.runtime.builder.MarkerUtil; import net.sourceforge.pmd.eclipse.runtime.preferences.IPreferences; import net.sourceforge.pmd.eclipse.runtime.properties.IProjectProperties; import net.sourceforge.pmd.eclipse.runtime.properties.PropertiesException; @@ -99,6 +100,7 @@ public class ReviewCodeCmd extends AbstractDefaultCommand { private int ruleCount; private int fileCount; private long pmdDuration; + private boolean clearExistingMarkersBeforeApplying; private String onErrorIssue = null; private static final long serialVersionUID = 1L; @@ -116,6 +118,10 @@ public class ReviewCodeCmd extends AbstractDefaultCommand { setTerminated(false); } + public void clearExistingMarkersBeforeApplying(boolean flag) { + clearExistingMarkersBeforeApplying = flag; + } + public Set markedFiles() { return markersByFile.keySet(); } @@ -523,7 +529,11 @@ public class ReviewCodeCmd extends AbstractDefaultCommand { currentFile = file.getName(); Set markerInfoSet = markersByFile.get(file); - // MarkerUtil.deleteAllMarkersIn(file); + + if (clearExistingMarkersBeforeApplying) { + MarkerUtil.deleteAllMarkersIn(file); + } + for (MarkerInfo2 markerInfo : markerInfoSet) { markerInfo.addAsMarkerTo(file); violationCount++;