99import java .util .HashMap ;
1010import java .util .HashSet ;
1111import java .util .List ;
12+ import java .util .Locale ;
1213import java .util .Map ;
1314import java .util .Set ;
1415
4950import net .sourceforge .pmd .eclipse .runtime .properties .IProjectProperties ;
5051import net .sourceforge .pmd .eclipse .runtime .properties .PropertiesException ;
5152import net .sourceforge .pmd .eclipse .ui .actions .RuleSetUtil ;
53+ import net .sourceforge .pmd .lang .Language ;
5254import net .sourceforge .pmd .util .StringUtil ;
5355
5456/**
@@ -419,6 +421,7 @@ private void processResource(IResource resource) {
419421 }
420422
421423 RuleSets ruleSets = rulesetsFrom (resource );
424+ Set <String > fileExtensions = determineFileExtensions (ruleSets );
422425 // final PMDEngine pmdEngine = getPmdEngineForProject(project);
423426 int targetCount = 0 ;
424427 if (resource .exists ()) {
@@ -432,6 +435,7 @@ private void processResource(IResource resource) {
432435 final ResourceVisitor visitor = new ResourceVisitor ();
433436 visitor .setMonitor (getMonitor ());
434437 visitor .setRuleSets (ruleSets );
438+ visitor .setFileExtensions (fileExtensions );
435439 // visitor.setPmdEngine(pmdEngine);
436440 visitor .setAccumulator (markersByFile );
437441 visitor .setUseTaskMarker (taskMarker );
@@ -459,6 +463,22 @@ private void processResource(IResource resource) {
459463 }
460464 }
461465
466+ private Set <String > determineFileExtensions (RuleSets ruleSets ) {
467+ Set <Language > languages = new HashSet <Language >();
468+ for (Rule rule : ruleSets .getAllRules ()) {
469+ languages .add (rule .getLanguage ());
470+ }
471+ Set <String > fileExtensions = new HashSet <String >();
472+ for (Language language : languages ) {
473+ for (String extension : language .getExtensions ()) {
474+ fileExtensions .add (extension .toLowerCase (Locale .ROOT ));
475+ }
476+ }
477+ logInfo ("Determined applicable file extensions: " + fileExtensions );
478+ LOG .debug ("Determined applicable file extensions: " + fileExtensions );
479+ return fileExtensions ;
480+ }
481+
462482 /**
463483 * Review an entire project
464484 */
@@ -576,6 +596,7 @@ private void processResourceDelta() {
576596 + project .getName ());
577597
578598 final RuleSets ruleSets = rulesetsFromResourceDelta ();
599+ Set <String > fileExtensions = determineFileExtensions (ruleSets );
579600
580601 // PMDEngine pmdEngine = getPmdEngineForProject(project);
581602 int targetCount = countDeltaElement (resourceDelta );
@@ -587,6 +608,7 @@ private void processResourceDelta() {
587608 DeltaVisitor visitor = new DeltaVisitor ();
588609 visitor .setMonitor (getMonitor ());
589610 visitor .setRuleSets (ruleSets );
611+ visitor .setFileExtensions (fileExtensions );
590612 // visitor.setPmdEngine(pmdEngine);
591613 visitor .setAccumulator (markersByFile );
592614 visitor .setUseTaskMarker (taskMarker );
0 commit comments