diff options
author | Evgeny Mandrikov <mandrikov@gmail.com> | 2011-12-19 10:06:23 +0000 |
---|---|---|
committer | Evgeny Mandrikov <mandrikov@gmail.com> | 2011-12-19 10:06:23 +0000 |
commit | 058098984bae5172dd98d4293da1073600644537 (patch) | |
tree | c184cc8afbff224a9487ce0160359889d43fbb3c /src/main | |
parent | 270bdf2df0a7d482dfd8f93dbda244da772992c6 (diff) | |
download | sonar-scanner-cli-058098984bae5172dd98d4293da1073600644537.tar.gz sonar-scanner-cli-058098984bae5172dd98d4293da1073600644537.zip |
SONARPLUGINS-1376 Allow to use pattern like "lib/*.jar" for property "libraries"
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/org/sonar/runner/Launcher.java | 28 | ||||
-rw-r--r-- | src/main/java/org/sonar/runner/Runner.java | 4 |
2 files changed, 28 insertions, 4 deletions
diff --git a/src/main/java/org/sonar/runner/Launcher.java b/src/main/java/org/sonar/runner/Launcher.java index 7aabda7..ea6f9ce 100644 --- a/src/main/java/org/sonar/runner/Launcher.java +++ b/src/main/java/org/sonar/runner/Launcher.java @@ -21,6 +21,7 @@ package org.sonar.runner; import java.io.File; +import java.io.FileFilter; import java.io.InputStream; import java.util.Properties; @@ -29,6 +30,9 @@ import ch.qos.logback.classic.joran.JoranConfigurator; import ch.qos.logback.core.joran.spi.JoranException; import org.apache.commons.configuration.*; import org.apache.commons.io.IOUtils; +import org.apache.commons.io.filefilter.AndFileFilter; +import org.apache.commons.io.filefilter.FileFileFilter; +import org.apache.commons.io.filefilter.WildcardFileFilter; import org.apache.commons.lang.StringUtils; import org.slf4j.LoggerFactory; import org.sonar.api.utils.SonarException; @@ -91,12 +95,32 @@ public class Launcher { for (String dir : getList(properties, "binaries")) { definition.addBinaryDir(dir); } - for (String file : getList(properties, "libraries")) { - definition.addLibrary(file); + for (String pattern : getList(properties, "libraries")) { + for (File file : getLibraries(pattern)) { + definition.addLibrary(file.getAbsolutePath()); + } } return definition; } + /** + * Returns files matching specified pattern. + * Visibility has been relaxed to make code testable. + */ + static File[] getLibraries(String pattern) { + final int i = Math.max(pattern.lastIndexOf('/'), pattern.lastIndexOf('\\')); + final String dir, filePattern; + if (i == -1) { + dir = "."; + filePattern = pattern; + } else { + dir = pattern.substring(0, i); + filePattern = pattern.substring(i + 1); + } + FileFilter fileFilter = new AndFileFilter(FileFileFilter.FILE, new WildcardFileFilter(filePattern)); + return new File(dir).listFiles(fileFilter); + } + private String[] getList(Properties properties, String key) { return StringUtils.split(properties.getProperty(key, ""), ','); } diff --git a/src/main/java/org/sonar/runner/Runner.java b/src/main/java/org/sonar/runner/Runner.java index 64bb52f..a4d02b8 100644 --- a/src/main/java/org/sonar/runner/Runner.java +++ b/src/main/java/org/sonar/runner/Runner.java @@ -51,7 +51,7 @@ public final class Runner { /** * Array of prefixes of versions of Sonar without support of this runner. */ - private static final String[] unsupportedVersions = { "1", "2.0", "2.1", "2.2", "2.3", "2.4", "2.5" }; + private static final String[] UNSUPPORTED_VERSIONS = { "1", "2.0", "2.1", "2.2", "2.3", "2.4", "2.5" }; /** * Array of all mandatory properties required to execute runner. @@ -151,7 +151,7 @@ public final class Runner { } static boolean isUnsupportedVersion(String version) { - for (String unsupportedVersion : unsupportedVersions) { + for (String unsupportedVersion : UNSUPPORTED_VERSIONS) { if (isVersion(version, unsupportedVersion)) { return true; } |