Skip to content

Commit e83a267

Browse files
committed
Cache the last used IProjectProperties to avoid a bunch of repeated checks and lookups.
1 parent 7000b2d commit e83a267

File tree

1 file changed

+17
-6
lines changed
  • net.sourceforge.pmd.eclipse.plugin/src/main/java/net/sourceforge/pmd/eclipse/runtime/cmd

1 file changed

+17
-6
lines changed

net.sourceforge.pmd.eclipse.plugin/src/main/java/net/sourceforge/pmd/eclipse/runtime/cmd/ReviewCodeCmd.java

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)