@Test public void describe() { DefaultSensorDescriptor descriptor = new DefaultSensorDescriptor(); descriptor .name("Foo") .onlyOnLanguage("java") .onlyOnFileType(InputFile.Type.MAIN) .requireProperty("sonar.foo.reportPath", "sonar.foo.reportPath2") .createIssuesForRuleRepository("squid-java"); assertThat(descriptor.name()).isEqualTo("Foo"); assertThat(descriptor.languages()).containsOnly("java"); assertThat(descriptor.type()).isEqualTo(InputFile.Type.MAIN); MapSettings settings = new MapSettings(); settings.setProperty("sonar.foo.reportPath", "foo"); assertThat(descriptor.configurationPredicate().test(settings.asConfig())).isFalse(); settings.setProperty("sonar.foo.reportPath2", "foo"); assertThat(descriptor.configurationPredicate().test(settings.asConfig())).isTrue(); assertThat(descriptor.ruleRepositories()).containsOnly("squid-java"); }
@Override public DefaultSensorDescriptor createIssuesForRuleRepository(String... repositoryKey) { return createIssuesForRuleRepositories(repositoryKey); }
@Test public void should_optimize_on_language() { DefaultSensorDescriptor descriptor = new DefaultSensorDescriptor() .onlyOnLanguages("java", "php"); assertThat(optimizer.shouldExecute(descriptor)).isFalse(); fs.add(new TestInputFileBuilder("foo", "src/Foo.java").setLanguage("java").build()); assertThat(optimizer.shouldExecute(descriptor)).isTrue(); }
public AbstractSensorWrapper(G sensor, SensorContext context, AbstractSensorOptimizer optimizer) { this.wrappedSensor = sensor; this.optimizer = optimizer; this.context = context; this.descriptor = new DefaultSensorDescriptor(); sensor.describe(this.descriptor); if (descriptor.name() == null) { descriptor.name(sensor.getClass().getName()); } }
private boolean fsCondition(DefaultSensorDescriptor descriptor) { if (!descriptor.languages().isEmpty() || descriptor.type() != null) { FilePredicate langPredicate = descriptor.languages().isEmpty() ? fs.predicates().all() : fs.predicates().hasLanguages(descriptor.languages()); FilePredicate typePredicate = descriptor.type() == null ? fs.predicates().all() : fs.predicates().hasType(descriptor.type()); return fs.hasFiles(fs.predicates().and(langPredicate, typePredicate)); } return true; }
@Test public void test_descriptor() { DefaultSensorDescriptor sensorDescriptor = new DefaultSensorDescriptor(); new GoVetReportSensor().describe(sensorDescriptor); assertThat(sensorDescriptor.name()).isEqualTo("Import of go vet issues"); assertThat(sensorDescriptor.languages()).containsOnly("go"); }
@Test public void sensor_descriptor() { DefaultSensorDescriptor descriptor = new DefaultSensorDescriptor(); createSensor().describe(descriptor); assertThat(descriptor.name()).isEqualTo("Perl 5 Sensor"); assertThat(descriptor.languages()).containsOnly("perl"); assertThat(descriptor.type()).isEqualTo(Type.MAIN); }
@Test public void should_run_analyzer_with_no_metadata() { DefaultSensorDescriptor descriptor = new DefaultSensorDescriptor(); assertThat(optimizer.shouldExecute(descriptor)).isTrue(); }
@Override public String toString() { return descriptor.name(); }
@Test public void testDescriptor() { DefaultSensorDescriptor descriptor = new DefaultSensorDescriptor(); sensor.describe(descriptor); assertThat(descriptor.ruleRepositories()).containsOnly(XooRulesDefinition.XOO_REPOSITORY, XooRulesDefinition.XOO2_REPOSITORY); }
@Test public void should_optimize_on_both_type_and_language() { DefaultSensorDescriptor descriptor = new DefaultSensorDescriptor() .onlyOnLanguages("java", "php") .onlyOnFileType(InputFile.Type.MAIN); assertThat(optimizer.shouldExecute(descriptor)).isFalse(); fs.add(new TestInputFileBuilder("foo", "tests/FooTest.java").setLanguage("java").setType(InputFile.Type.TEST).build()); fs.add(new TestInputFileBuilder("foo", "src/Foo.cbl").setLanguage("cobol").setType(InputFile.Type.MAIN).build()); assertThat(optimizer.shouldExecute(descriptor)).isFalse(); fs.add(new TestInputFileBuilder("foo", "src/Foo.java").setLanguage("java").setType(InputFile.Type.MAIN).build()); assertThat(optimizer.shouldExecute(descriptor)).isTrue(); }
@Test public void should_optimize_on_settings() { DefaultSensorDescriptor descriptor = new DefaultSensorDescriptor() .requireProperty("sonar.foo.reportPath"); assertThat(optimizer.shouldExecute(descriptor)).isFalse(); settings.setProperty("sonar.foo.reportPath", "foo"); assertThat(optimizer.shouldExecute(descriptor)).isTrue(); }
private boolean activeRulesCondition(DefaultSensorDescriptor descriptor) { if (!descriptor.ruleRepositories().isEmpty()) { for (String repoKey : descriptor.ruleRepositories()) { if (!activeRules.findByRepository(repoKey).isEmpty()) { return true; } } return false; } return true; }
@Test public void should_optimize_on_repository() { DefaultSensorDescriptor descriptor = new DefaultSensorDescriptor() .createIssuesForRuleRepositories("squid"); assertThat(optimizer.shouldExecute(descriptor)).isFalse(); ActiveRules activeRules = new ActiveRulesBuilder() .addRule(new NewActiveRule.Builder().setRuleKey(RuleKey.of("repo1", "foo")).build()) .build(); optimizer = new ModuleSensorOptimizer(fs, activeRules, settings.asConfig()); assertThat(optimizer.shouldExecute(descriptor)).isFalse(); activeRules = new ActiveRulesBuilder() .addRule(new NewActiveRule.Builder().setRuleKey(RuleKey.of("repo1", "foo")).build()) .addRule(new NewActiveRule.Builder().setRuleKey(RuleKey.of("squid", "rule")).build()) .build(); optimizer = new ModuleSensorOptimizer(fs, activeRules, settings.asConfig()); assertThat(optimizer.shouldExecute(descriptor)).isTrue(); }
@Test public void should_optimize_on_type() { DefaultSensorDescriptor descriptor = new DefaultSensorDescriptor() .onlyOnFileType(InputFile.Type.MAIN); assertThat(optimizer.shouldExecute(descriptor)).isFalse(); fs.add(new TestInputFileBuilder("foo", "tests/FooTest.java").setType(InputFile.Type.TEST).build()); assertThat(optimizer.shouldExecute(descriptor)).isFalse(); fs.add(new TestInputFileBuilder("foo", "src/Foo.java").setType(InputFile.Type.MAIN).build()); assertThat(optimizer.shouldExecute(descriptor)).isTrue(); }
/** * Decide if the given Analyzer should be executed. */ public boolean shouldExecute(DefaultSensorDescriptor descriptor) { if (!fsCondition(descriptor)) { LOG.debug("'{}' skipped because there is no related file in current project", descriptor.name()); return false; } if (!activeRulesCondition(descriptor)) { LOG.debug("'{}' skipped because there is no related rule activated in the quality profile", descriptor.name()); return false; } if (!settingsCondition(descriptor)) { LOG.debug("'{}' skipped because one of the required properties is missing", descriptor.name()); return false; } if (descriptor.isDisabledInPreview() && analysisMode.isPreview()) { LOG.debug("'{}' skipped in preview mode", descriptor.name()); return false; } return true; }
/** * Decide if the given Sensor should be executed. */ public boolean shouldExecute(DefaultSensorDescriptor descriptor) { if (!fsCondition(descriptor)) { LOG.debug("'{}' skipped because there is no related file in current project", descriptor.name()); return false; } if (!activeRulesCondition(descriptor)) { LOG.debug("'{}' skipped because there is no related rule activated in the quality profile", descriptor.name()); return false; } if (!settingsCondition(descriptor)) { LOG.debug("'{}' skipped because one of the required properties is missing", descriptor.name()); return false; } if (descriptor.isDisabledInIssues() && analysisMode.isIssues()) { LOG.debug("'{}' skipped in issues mode", descriptor.name()); return false; } return true; }
private boolean settingsCondition(DefaultSensorDescriptor descriptor) { if (descriptor.configurationPredicate() != null) { return descriptor.configurationPredicate().test(config); } return true; }
@Override public DefaultSensorDescriptor onlyOnLanguage(String languageKey) { return onlyOnLanguages(languageKey); }
@Test void test_describe() { GoTestSensor goTestSensor = new GoTestSensor(); DefaultSensorDescriptor descriptor = new DefaultSensorDescriptor(); goTestSensor.describe(descriptor); assertThat(descriptor.name()).isEqualTo("Go Unit Test Report"); assertThat(descriptor.languages()).containsOnly("go"); }