diff --git a/sonar-groovy-plugin/src/main/java/org/sonar/plugins/groovy/codenarc/CodeNarcSensor.java b/sonar-groovy-plugin/src/main/java/org/sonar/plugins/groovy/codenarc/CodeNarcSensor.java index c9313543..c3cd307d 100644 --- a/sonar-groovy-plugin/src/main/java/org/sonar/plugins/groovy/codenarc/CodeNarcSensor.java +++ b/sonar-groovy-plugin/src/main/java/org/sonar/plugins/groovy/codenarc/CodeNarcSensor.java @@ -148,8 +148,7 @@ private void runCodeNarc() { CodeNarcRunner runner = new CodeNarcRunner(); runner.setRuleSetFiles("file:" + codeNarcConfiguration.getAbsolutePath()); - List sourceFiles = groovyFileSystem.sourceFiles(); - CodeNarcSourceAnalyzer analyzer = new CodeNarcSourceAnalyzer(sourceFiles, fileSystem.baseDir()); + CodeNarcSourceAnalyzer analyzer = new CodeNarcSourceAnalyzer(groovyFileSystem.sourceFiles()); runner.setSourceAnalyzer(analyzer); runner.execute(); reportViolations(analyzer.getViolationsByFile()); diff --git a/sonar-groovy-plugin/src/main/java/org/sonar/plugins/groovy/codenarc/CodeNarcSourceAnalyzer.java b/sonar-groovy-plugin/src/main/java/org/sonar/plugins/groovy/codenarc/CodeNarcSourceAnalyzer.java index 14cc5d5e..de3ccf9f 100644 --- a/sonar-groovy-plugin/src/main/java/org/sonar/plugins/groovy/codenarc/CodeNarcSourceAnalyzer.java +++ b/sonar-groovy-plugin/src/main/java/org/sonar/plugins/groovy/codenarc/CodeNarcSourceAnalyzer.java @@ -32,28 +32,26 @@ import org.codenarc.source.SourceFile; import java.io.File; -import java.io.FileFilter; -import java.util.Collection; import java.util.List; import java.util.Map; -import java.util.Map.Entry; public class CodeNarcSourceAnalyzer extends AbstractSourceAnalyzer { private final Map> violationsByFile = Maps.newHashMap(); private final List sourceFiles; - private final File baseDir; - private static final FileFilter SUBDIRECTORY_FILTER = new SubDirectoryFilter(); - public CodeNarcSourceAnalyzer(List sourceFiles, File baseDir) { + public CodeNarcSourceAnalyzer(List sourceFiles) { this.sourceFiles = sourceFiles; - this.baseDir = baseDir; } @Override public Results analyze(RuleSet ruleSet) { Multimap resultsByFileByDirectory = processFiles(ruleSet); - return processDirectories(baseDir, resultsByFileByDirectory); + DirectoryResults directoryResults = new DirectoryResults("."); + for (FileResults fileResults : resultsByFileByDirectory.values()) { + directoryResults.addChild(fileResults); + } + return directoryResults; } private Multimap processFiles(RuleSet ruleSet) { @@ -67,45 +65,6 @@ private Multimap processFiles(RuleSet ruleSet) { return results; } - private static DirectoryResults processDirectories(File baseDir, Multimap resultsByFileByDirectory) { - Map results = prepopulateDirectoryResults(baseDir, resultsByFileByDirectory); - - for (File directory : resultsByFileByDirectory.keySet()) { - DirectoryResults directoryResult = results.get(directory); - Collection filesResults = resultsByFileByDirectory.get(directory); - for (FileResults fileResults : filesResults) { - directoryResult.addChild(fileResults); - } - } - return results.get(baseDir); - } - - private static Map prepopulateDirectoryResults(File baseDir, Multimap resultsByFileByDirectory) { - Map results = Maps.newHashMap(); - results.put(baseDir, new DirectoryResults()); - // add a result by directory for each level from current directory to baseDir - for (File directory : resultsByFileByDirectory.keySet()) { - File parent = directory; - while (!results.containsKey(parent)) { - results.put(parent, new DirectoryResults()); - parent = parent.getParentFile(); - } - } - - // construct parent-child relationship between results - for (Entry resultsByFile : results.entrySet()) { - DirectoryResults directoryResults = resultsByFile.getValue(); - File directory = resultsByFile.getKey(); - for (File subDirectory : directory.listFiles(SUBDIRECTORY_FILTER)) { - if (results.containsKey(subDirectory)) { - directoryResults.addChild(results.get(subDirectory)); - } - } - } - - return results; - } - @Override public List getSourceDirectories() { return ImmutableList.of(); @@ -115,11 +74,4 @@ public Map> getViolationsByFile() { return violationsByFile; } - private static class SubDirectoryFilter implements FileFilter { - @Override - public boolean accept(File pathname) { - return pathname.isDirectory(); - } - - } }