@@ -19,17 +19,22 @@ | |||
*/ | |||
package org.sonar.xoo; | |||
import java.util.Arrays; | |||
import org.sonar.api.config.Settings; | |||
import org.sonar.api.resources.Language; | |||
public class Xoo implements Language { | |||
public static final String KEY = "xoo"; | |||
public static final String NAME = "Xoo"; | |||
public static final String FILE_SUFFIX = ".xoo"; | |||
public static final String FILE_SUFFIXES_KEY = "sonar.xoo.file.suffixes"; | |||
public static final String DEFAULT_FILE_SUFFIXES = ".xoo"; | |||
private static final String[] XOO_SUFFIXES = { | |||
FILE_SUFFIX | |||
}; | |||
private final Settings settings; | |||
public Xoo(Settings settings) { | |||
this.settings = settings; | |||
} | |||
@Override | |||
public String getKey() { | |||
@@ -43,6 +48,6 @@ public class Xoo implements Language { | |||
@Override | |||
public String[] getFileSuffixes() { | |||
return XOO_SUFFIXES; | |||
return Arrays.stream(settings.getStringArray(FILE_SUFFIXES_KEY)).filter(s -> s != null && !s.trim().isEmpty()).toArray(String[]::new); | |||
} | |||
} |
@@ -21,6 +21,8 @@ package org.sonar.xoo; | |||
import org.sonar.api.Plugin; | |||
import org.sonar.api.SonarProduct; | |||
import org.sonar.api.config.PropertyDefinition; | |||
import org.sonar.api.resources.Qualifiers; | |||
import org.sonar.xoo.coverage.ItCoverageSensor; | |||
import org.sonar.xoo.coverage.OverallCoverageSensor; | |||
import org.sonar.xoo.coverage.UtCoverageSensor; | |||
@@ -73,6 +75,13 @@ public class XooPlugin implements Plugin { | |||
@Override | |||
public void define(Context context) { | |||
context.addExtensions( | |||
PropertyDefinition.builder(Xoo.FILE_SUFFIXES_KEY) | |||
.defaultValue(Xoo.DEFAULT_FILE_SUFFIXES) | |||
.name("File suffixes") | |||
.description("Comma-separated list of suffixes for files to analyze. To not filter, leave the list empty.") | |||
.subCategory("General") | |||
.onQualifiers(Qualifiers.PROJECT) | |||
.build(), | |||
Xoo.class, | |||
Xoo2.class, | |||
XooRulesDefinition.class, |
@@ -35,10 +35,10 @@ public class XooPluginTest { | |||
public void provide_extensions_for_5_5() { | |||
Plugin.Context context = new Plugin.Context(new SonarRuntime(Version.parse("5.5"), SonarProduct.SONARQUBE, SonarQubeSide.SCANNER)); | |||
new XooPlugin().define(context); | |||
assertThat(context.getExtensions()).hasSize(43).contains(CpdTokenizerSensor.class); | |||
assertThat(context.getExtensions()).hasSize(44).contains(CpdTokenizerSensor.class); | |||
context = new Plugin.Context(new SonarRuntime(Version.parse("5.4"), SonarProduct.SONARLINT, null)); | |||
new XooPlugin().define(context); | |||
assertThat(context.getExtensions()).hasSize(40).doesNotContain(CpdTokenizerSensor.class); | |||
assertThat(context.getExtensions()).hasSize(41).doesNotContain(CpdTokenizerSensor.class); | |||
} | |||
} |