public DefaultMetricFinder(MetricsRepository metricsRepository) { Map<String, Metric<Serializable>> metrics = new LinkedHashMap<>(); for (org.sonar.api.measures.Metric metric : metricsRepository.metrics()) { metrics.put(metric.key(), new org.sonar.api.measures.Metric.Builder(metric.key(), metric.key(), metric.getType()).create()); } metricsByKey = Collections.unmodifiableMap(metrics); }
@Test public void validate_metric() { when(scannerMetrics.getMetrics()).thenReturn(ImmutableSet.of(new Builder(METRIC_KEY, "name", ValueType.INT).create())); ReportMetricValidator validator = new ReportMetricValidatorImpl(scannerMetrics); assertThat(validator.validate(METRIC_KEY)).isTrue(); assertThat(logTester.logs()).isEmpty(); }
@Test public void shouldCreateMetric() { Metric metric = new Metric.Builder("foo", "Foo", Metric.ValueType.INT) .setDomain("my domain") .create(); assertThat(metric.getKey()).isEqualTo("foo"); assertThat(metric.getName()).isEqualTo("Foo"); assertThat(metric.getDomain()).isEqualTo("my domain"); }
@Test public void shouldCreatePercentMetricWithDefaultValues() { Metric better = new Metric.Builder("foo", "Foo", Metric.ValueType.PERCENT) .setDirection(Metric.DIRECTION_BETTER) .create(); Metric worst = new Metric.Builder("foo", "Foo", Metric.ValueType.PERCENT) .setDirection(Metric.DIRECTION_WORST) .create(); assertThat(better.getBestValue()).isEqualTo(100.0); assertThat(better.getWorstValue()).isEqualTo(0.0); assertThat(worst.getBestValue()).isEqualTo(0.0); assertThat(worst.getWorstValue()).isEqualTo(100.0); }
private IssueMetricFormula newRatingLeakFormula(Rating rating) { Metric metric = new Metric.Builder(ratingMetric.getKey(), ratingMetric.getShortName(), Metric.ValueType.valueOf(ratingMetric.getValueType())).create(); return new IssueMetricFormula(metric, true, (ctx, issues) -> { ctx.setLeakValue(rating); }); }
private IssueMetricFormula newIncrementalFormula() { Metric metric = new Metric.Builder(intMetric.getKey(), intMetric.getShortName(), Metric.ValueType.valueOf(intMetric.getValueType())).create(); AtomicInteger counter = new AtomicInteger(); return new IssueMetricFormula(metric, false, (ctx, issues) -> { ctx.setValue((double) counter.incrementAndGet()); }); }
@Test public void non_decimal_metric_has_no_scale() { Metric metric = new Metric.Builder("foo", "Foo", Metric.ValueType.INT) .create(); assertThat(metric.getDecimalScale()).isNull(); } }
@Test(expected = IllegalStateException.class) public void fail_if_plugin_duplicates_core_metric() { Metrics plugin = new TestMetrics(new Metric.Builder("ncloc", "In plugin", Metric.ValueType.FLOAT).create()); new RegisterMetrics(dbClient, new Metrics[] {plugin}).start(); }
@Test(expected = IllegalStateException.class) public void fail_if_duplicated_plugin_metrics() { Metrics plugin1 = new TestMetrics(new Metric.Builder("m1", "In first plugin", Metric.ValueType.FLOAT).create()); Metrics plugin2 = new TestMetrics(new Metric.Builder("m1", "In second plugin", Metric.ValueType.FLOAT).create()); new RegisterMetrics(dbClient, new Metrics[] {plugin1, plugin2}).start(); }
private IssueMetricFormula newIntConstantFormula(double constant) { Metric metric = new Metric.Builder(intMetric.getKey(), intMetric.getShortName(), Metric.ValueType.valueOf(intMetric.getValueType())).create(); return new IssueMetricFormula(metric, false, (ctx, issues) -> { ctx.setValue(constant); }); }
@Test public void default_decimal_scale_is_1() { Metric metric = new Metric.Builder("foo", "Foo", Metric.ValueType.FLOAT) .create(); assertThat(metric.getDecimalScale()).isEqualTo(1); }
@Test public void fail_if_decimal_scale_is_greater_than_max_supported_value() { expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("Scale of decimal metric [foo] must be less than or equal 5: 6"); new Metric.Builder("foo", "Foo", Metric.ValueType.FLOAT) .setDecimalScale(6) .create(); }
@Override public List<Metric> getMetrics() { return Lists.newArrayList( new Metric.Builder(NEW_METRIC_1, "metric1", DATA).create(), new Metric.Builder(NEW_METRIC_2, "metric2", MILLISEC).create(), new Metric.Builder(NEW_METRIC_3, "metric3", INT).create(), new Metric.Builder(NEW_METRIC_4, "metric4", FLOAT).create()); } }
private IssueMetricFormula newQualifierBasedIntLeakFormula() { Metric metric = new Metric.Builder(intMetric.getKey(), intMetric.getShortName(), Metric.ValueType.valueOf(intMetric.getValueType())).create(); return new IssueMetricFormula(metric, true, (ctx, issues) -> { ctx.setLeakValue(ORDERED_BOTTOM_UP.indexOf(ctx.getComponent().qualifier())); }); }
private IssueMetricFormula newQualifierBasedIntFormula() { Metric metric = new Metric.Builder(intMetric.getKey(), intMetric.getShortName(), Metric.ValueType.valueOf(intMetric.getValueType())).create(); return new IssueMetricFormula(metric, false, (ctx, issues) -> { ctx.setValue(ORDERED_BOTTOM_UP.indexOf(ctx.getComponent().qualifier())); }); }
private IssueMetricFormula newRatingConstantFormula(Rating constant) { Metric metric = new Metric.Builder(ratingMetric.getKey(), ratingMetric.getShortName(), Metric.ValueType.valueOf(ratingMetric.getValueType())).create(); return new IssueMetricFormula(metric, false, (ctx, issues) -> { ctx.setValue(constant); }); }
@Override public List<Metric> getMetrics() { return Arrays.asList( new Metric.Builder("key1", "name1", Metric.ValueType.INT).create(), new Metric.Builder("key2", "name2", Metric.ValueType.FLOAT).create()); } }
@Test public void override_decimal_scale_of_percent_metric() { Metric metric = new Metric.Builder("foo", "Foo", Metric.ValueType.PERCENT) .setDecimalScale(3) .create(); assertThat(metric.getDecimalScale()).isEqualTo(3); }
@Test public void exception_describes_context_when_a_formula_fails() { markProjectAsAnalyzed(project); Metric metric = new Metric.Builder(intMetric.getKey(), intMetric.getShortName(), Metric.ValueType.valueOf(intMetric.getValueType())).create(); expectedException.expect(IllegalStateException.class); expectedException.expectMessage("Fail to compute " + metric.getKey() + " on " + project.getDbKey()); run(project, new IssueMetricFormula(metric, false, (context, issueCounter) -> { throw new NullPointerException("BOOM"); })); }
@Test public void override_decimal_scale_of_float_metric() { Metric metric = new Metric.Builder("foo", "Foo", Metric.ValueType.FLOAT) .setDecimalScale(3) .create(); assertThat(metric.getDecimalScale()).isEqualTo(3); }