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++;