From 7f652d4d5eae1098e92522e9f9bb024fec000075 Mon Sep 17 00:00:00 2001 From: Duarte Meneses Date: Mon, 2 Nov 2015 15:34:12 +0100 Subject: SONAR-6931 Speed up issues mode by scanning only changed files --- .../api/batch/fs/internal/DefaultFileSystem.java | 25 +++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) (limited to 'sonar-plugin-api/src') diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/DefaultFileSystem.java b/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/DefaultFileSystem.java index 2876fdfa9ba..b53c2d6bdbd 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/DefaultFileSystem.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/batch/fs/internal/DefaultFileSystem.java @@ -54,7 +54,8 @@ public class DefaultFileSystem implements FileSystem { private final Path baseDir; private Path workDir; private Charset encoding; - private final FilePredicates predicates; + protected final FilePredicates predicates; + private FilePredicate defaultPredicate; /** * Only for testing @@ -104,7 +105,12 @@ public class DefaultFileSystem implements FileSystem { this.workDir = d.getAbsoluteFile().toPath().normalize(); return this; } - + + public DefaultFileSystem setDefaultPredicate(@Nullable FilePredicate predicate) { + this.defaultPredicate = predicate; + return this; + } + @Override public File workDir() { return workDir.toFile(); @@ -135,11 +141,24 @@ public class DefaultFileSystem implements FileSystem { throw new IllegalArgumentException(sb.toString()); } + + /** + * Bypass default predicate to get all files/dirs indexed. + * Default predicate is used when some files/dirs should not be processed by sensors. + */ + public Iterable inputFiles() { + doPreloadFiles(); + return OptimizedFilePredicateAdapter.create(predicates.all()).get(cache); + } @Override public Iterable inputFiles(FilePredicate predicate) { doPreloadFiles(); - return OptimizedFilePredicateAdapter.create(predicate).get(cache); + FilePredicate combinedPredicate = predicate; + if(defaultPredicate != null) { + combinedPredicate = predicates().and(defaultPredicate, predicate); + } + return OptimizedFilePredicateAdapter.create(combinedPredicate).get(cache); } @Override -- cgit v1.2.3