@@ -102,6 +102,8 @@ public class ReviewCodeCmd extends AbstractDefaultCommand {
102102 private int fileCount ;
103103 private long pmdDuration ;
104104 private String onErrorIssue = null ;
105+
106+ private IProjectProperties propertyCache = null ;
105107
106108 private static final long serialVersionUID = 1L ;
107109
@@ -353,11 +355,17 @@ private void processResources() throws CommandException {
353355 }
354356 }
355357 }
358+
359+ private IProjectProperties getProjectProperties (IProject project ) throws PropertiesException , CommandException {
360+ if (propertyCache == null || !propertyCache .getProject ().getName ().equals (project .getName ())) {
361+ propertyCache = PMDPlugin .getDefault ().loadProjectProperties (project );
362+ }
363+ return propertyCache ;
364+ }
356365
357366 private RuleSet rulesetFrom (IResource resource ) throws PropertiesException , CommandException {
358-
359367 IProject project = resource .getProject ();
360- IProjectProperties properties = PMDPlugin . getDefault (). loadProjectProperties (project );
368+ IProjectProperties properties = getProjectProperties (project );
361369
362370 return filteredRuleSet (properties ); //properties.getProjectRuleSet();
363371 }
@@ -369,7 +377,10 @@ private void processResource(IResource resource) throws CommandException {
369377 try {
370378
371379 final IProject project = resource .getProject ();
372- final IProjectProperties properties = PMDPlugin .getDefault ().loadProjectProperties (project );
380+ final IProjectProperties properties = getProjectProperties (project );
381+ if (!properties .isPmdEnabled ()) {
382+ return ;
383+ }
373384
374385 final RuleSet ruleSet = rulesetFrom (resource ); //properties.getProjectRuleSet();
375386
@@ -490,7 +501,7 @@ private RuleSet rulesetFromResourceDelta() throws PropertiesException, CommandEx
490501
491502 IResource resource = resourceDelta .getResource ();
492503 final IProject project = resource .getProject ();
493- final IProjectProperties properties = PMDPlugin . getDefault (). loadProjectProperties (project );
504+ final IProjectProperties properties = getProjectProperties (project );
494505
495506 return filteredRuleSet (properties ); //properties.getProjectRuleSet();
496507 }
@@ -502,7 +513,7 @@ private void processResourceDelta() throws CommandException {
502513 try {
503514 IResource resource = resourceDelta .getResource ();
504515 final IProject project = resource .getProject ();
505- final IProjectProperties properties = PMDPlugin . getDefault (). loadProjectProperties (project );
516+ final IProjectProperties properties = getProjectProperties (project );
506517
507518 RuleSet ruleSet = rulesetFromResourceDelta (); //properties.getProjectRuleSet();
508519
@@ -655,4 +666,4 @@ public boolean visit(IResourceDelta delta) {
655666 }
656667 }
657668
658- }
669+ }
0 commit comments