From: Simon Brandhof Date: Fri, 14 Mar 2014 11:41:20 +0000 (+0100) Subject: SONAR-4790 complete documentation of FileSystem X-Git-Tag: 4.3~439 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=69376773bc12d598e625bc3030abff289f9194f3;p=sonarqube.git SONAR-4790 complete documentation of FileSystem --- diff --git a/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/SonarBridgeEngine.java b/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/SonarBridgeEngine.java index 9fbe470b280..cf6af57a06c 100644 --- a/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/SonarBridgeEngine.java +++ b/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/SonarBridgeEngine.java @@ -45,7 +45,11 @@ import org.sonar.plugins.cpd.index.SonarDuplicationsIndex; import javax.annotation.CheckForNull; import java.util.Collection; import java.util.List; -import java.util.concurrent.*; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; public class SonarBridgeEngine extends CpdEngine { @@ -81,10 +85,11 @@ public class SonarBridgeEngine extends CpdEngine { public void analyse(Project project, String languageKey, SensorContext context) { String[] cpdExclusions = settings.getStringArray(CoreProperties.CPD_EXCLUSIONS); logExclusions(cpdExclusions, LOG); - List sourceFiles = Lists.newArrayList(fs.inputFiles(fs.predicates().and( - fs.predicates().hasType(InputFile.Type.MAIN), - fs.predicates().hasLanguage(languageKey), - fs.predicates().doesNotMatchPathPatterns(cpdExclusions) + FilePredicates p = fs.predicates(); + List sourceFiles = Lists.newArrayList(fs.inputFiles(p.and( + p.hasType(InputFile.Type.MAIN), + p.hasLanguage(languageKey), + p.doesNotMatchPathPatterns(cpdExclusions) ))); if (sourceFiles.isEmpty()) { return; diff --git a/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/SonarEngine.java b/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/SonarEngine.java index 671cebb77da..c1890f4a08c 100644 --- a/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/SonarEngine.java +++ b/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/SonarEngine.java @@ -93,10 +93,11 @@ public class SonarEngine extends CpdEngine { public void analyse(Project project, String languageKey, SensorContext context) { String[] cpdExclusions = settings.getStringArray(CoreProperties.CPD_EXCLUSIONS); logExclusions(cpdExclusions, LOG); - List sourceFiles = Lists.newArrayList(fs.inputFiles(fs.predicates().and( - fs.predicates().hasType(InputFile.Type.MAIN), - fs.predicates().hasLanguage(languageKey), - fs.predicates().doesNotMatchPathPatterns(cpdExclusions) + FilePredicates p = fs.predicates(); + List sourceFiles = Lists.newArrayList(fs.inputFiles(p.and( + p.hasType(InputFile.Type.MAIN), + p.hasLanguage(languageKey), + p.doesNotMatchPathPatterns(cpdExclusions) ))); if (sourceFiles.isEmpty()) { return; diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/FileSystem.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/FileSystem.java index b362d151206..5172eb8d542 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/FileSystem.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/FileSystem.java @@ -82,6 +82,13 @@ public interface FileSystem extends BatchComponent { * Returns the single element matching the predicate. If more than one elements match * the predicate, then {@link IllegalArgumentException} is thrown. Returns {@code null} * if no files match. + * + *

+ * How to use : + *

+   * InputFile file = fs.inputFile(fs.predicates().hasRelativePath("src/Foo.php"));
+   * 
+ * * @see #predicates() */ @CheckForNull @@ -91,9 +98,16 @@ public interface FileSystem extends BatchComponent { * Input files matching the given attributes. Return all the files if the parameter * attributes is empty. *

- * Important - result is an {@link java.lang.Iterable} to benefit from streaming and decreasing + * Important - result is an {@link java.lang.Iterable} to benefit from streaming and decreasing * memory consumption. It should be iterated only once, else copy it into a list : * {@code com.google.common.collect.Lists.newArrayList(inputFiles(predicate))} + *

+ * How to use : + *

+   * FilePredicates p = fs.predicates();
+   * Iterable files = fs.inputFiles(p.and(p.hasLanguage("java"), p.hasType(InputFile.Type.MAIN)));
+   * 
+ * * @see #predicates() */ Iterable inputFiles(FilePredicate predicate);