@Test public void testExecution() throws IOException { File measures = new File(baseDir, "src/foo.xoo.measures"); FileUtils.write(measures, "ncloc:12\nbranch_coverage:5.3\nsqale_index:300\nbool:true\n\n#comment", StandardCharsets.UTF_8); InputFile inputFile = new TestInputFileBuilder("foo", "src/foo.xoo").setLanguage("xoo").setModuleBaseDir(baseDir.toPath()).build(); context.fileSystem().add(inputFile); Metric<Boolean> booleanMetric = new Metric.Builder("bool", "Bool", Metric.ValueType.BOOL) .create(); when(metricFinder.<Integer>findByKey("ncloc")).thenReturn(CoreMetrics.NCLOC); when(metricFinder.<Double>findByKey("branch_coverage")).thenReturn(CoreMetrics.BRANCH_COVERAGE); when(metricFinder.<Long>findByKey("sqale_index")).thenReturn(CoreMetrics.TECHNICAL_DEBT); when(metricFinder.<Boolean>findByKey("bool")).thenReturn(booleanMetric); sensor.execute(context); assertThat(context.measure("foo:src/foo.xoo", CoreMetrics.NCLOC).value()).isEqualTo(12); assertThat(context.measure("foo:src/foo.xoo", CoreMetrics.BRANCH_COVERAGE).value()).isEqualTo(5.3); assertThat(context.measure("foo:src/foo.xoo", CoreMetrics.TECHNICAL_DEBT).value()).isEqualTo(300L); assertThat(context.measure("foo:src/foo.xoo", booleanMetric).value()).isTrue(); }
@Test public void enable_disabled_metrics() { dbTester.prepareDbUnit(getClass(), "enable_disabled_metric.xml"); RegisterMetrics register = new RegisterMetrics(dbClient); Metric m1 = new Metric.Builder("m1", "New name", Metric.ValueType.FLOAT) .setDescription("new description") .setDirection(-1) .setQualitative(true) .setDomain("new domain") .setUserManaged(false) .setHidden(true) .create(); register.register(asList(m1)); dbTester.assertDbUnit(getClass(), "enable_disabled_metric-result.xml", "metrics"); }
@Override public List<Metric> getMetrics() { return ImmutableList.of( new Metric.Builder("burned_budget", "Burned budget", Metric.ValueType.FLOAT) .setDirection(Metric.DIRECTION_NONE) .setQualitative(false) .setDomain(DOMAIN) .setUserManaged(true) .create(), new Metric.Builder("business_value", "Business value", Metric.ValueType.FLOAT) .setDirection(Metric.DIRECTION_BETTER) .setQualitative(true) .setDomain(DOMAIN) .setUserManaged(true) .create(), new Metric.Builder("team_size", "Team size", Metric.ValueType.INT) .setDirection(Metric.DIRECTION_NONE) .setQualitative(false) .setDomain(DOMAIN) .setUserManaged(true) .create()); } }
@Override public List<Metric> getMetrics() { return ImmutableList.<Metric>of( new Metric.Builder("burned_budget", "Burned budget", Metric.ValueType.FLOAT) .setDirection(Metric.DIRECTION_NONE) .setQualitative(false) .setDomain(DOMAIN) .setUserManaged(true) .create(), new Metric.Builder("business_value", "Business value", Metric.ValueType.FLOAT) .setDirection(Metric.DIRECTION_BETTER) .setQualitative(true) .setDomain(DOMAIN) .setUserManaged(true) .create(), new Metric.Builder("team_size", "Team size", Metric.ValueType.INT) .setDirection(Metric.DIRECTION_NONE) .setQualitative(false) .setDomain(DOMAIN) .setUserManaged(true) .create()); } }
private void loadFromPaginatedWs(List<Metric> metrics) throws IOException { int page = 1; WsMetricsResponse response; do { GetRequest getRequest = new GetRequest(METRICS_SEARCH_URL + page); try (Reader reader = wsClient.call(getRequest).contentReader()) { response = GsonHelper.create().fromJson(reader, WsMetricsResponse.class); for (WsMetric metric : response.metrics) { metrics.add(new Metric.Builder(metric.getKey(), metric.getName(), ValueType.valueOf(metric.getType())) .create() .setDirection(metric.getDirection()) .setQualitative(metric.isQualitative()) .setUserManaged(metric.isCustom()) .setDescription(metric.getDescription()) .setId(metric.getId())); } } page++; } while (response.getP() < (response.getTotal() / response.getPs() + 1)); }
public DeprecatedMetricFinder(GlobalRepositories globalReferentials) { for (org.sonar.batch.protocol.input.Metric metric : globalReferentials.metrics()) { Metric hibernateMetric = new org.sonar.api.measures.Metric.Builder(metric.key(), metric.name(), ValueType.valueOf(metric.valueType())) .create() .setDirection(metric.direction()) .setQualitative(metric.isQualitative()) .setUserManaged(metric.isUserManaged()) .setDescription(metric.description()) .setOptimizedBestValue(metric.isOptimizedBestValue()) .setBestValue(metric.bestValue()) .setWorstValue(metric.worstValue()) .setId(metric.id()); metricsByKey.put(metric.key(), hibernateMetric); metricsById.put(metric.id(), new org.sonar.api.measures.Metric.Builder(metric.key(), metric.key(), ValueType.valueOf(metric.valueType())).create().setId(metric.id())); } }
public DeprecatedMetricFinder(GlobalRepositories globalReferentials) { for (org.sonar.batch.protocol.input.Metric metric : globalReferentials.metrics()) { Metric hibernateMetric = new org.sonar.api.measures.Metric.Builder(metric.key(), metric.name(), ValueType.valueOf(metric.valueType())) .create() .setDirection(metric.direction()) .setQualitative(metric.isQualitative()) .setUserManaged(metric.isUserManaged()) .setDescription(metric.description()) .setOptimizedBestValue(metric.isOptimizedBestValue()) .setBestValue(metric.bestValue()) .setWorstValue(metric.worstValue()) .setId(metric.id()); metricsByKey.put(metric.key(), hibernateMetric); metricsById.put(metric.id(), new org.sonar.api.measures.Metric.Builder(metric.key(), metric.key(), ValueType.valueOf(metric.valueType())).create().setId(metric.id())); } }
public DefaultMetricFinder(GlobalRepositories globalReferentials) { for (org.sonar.batch.protocol.input.Metric metric : globalReferentials.metrics()) { metricsByKey.put(metric.key(), new org.sonar.api.measures.Metric.Builder(metric.key(), metric.key(), ValueType.valueOf(metric.valueType())).create()); } }
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); }
public DefaultMetricFinder(GlobalRepositories globalReferentials) { for (org.sonar.batch.protocol.input.Metric metric : globalReferentials.metrics()) { metricsByKey.put(metric.key(), new org.sonar.api.measures.Metric.Builder(metric.key(), metric.key(), ValueType.valueOf(metric.valueType())).create()); } }
@Override public List<Metric> getMetrics() { return ImmutableList.of( new Metric.Builder("burned_budget", "Burned budget", Metric.ValueType.FLOAT) .setDirection(Metric.DIRECTION_NONE) .setQualitative(false) .setDomain(DOMAIN) .setUserManaged(true) .create(), new Metric.Builder("business_value", "Business value", Metric.ValueType.FLOAT) .setDirection(Metric.DIRECTION_BETTER) .setQualitative(true) .setDomain(DOMAIN) .setUserManaged(true) .create(), new Metric.Builder("team_size", "Team size", Metric.ValueType.INT) .setDirection(Metric.DIRECTION_NONE) .setQualitative(false) .setDomain(DOMAIN) .setUserManaged(true) .create()); } }
/** * Update existing metrics, except if custom metric */ @Test public void update_non_custom_metrics() { dbTester.prepareDbUnit(getClass(), "update_non_custom_metrics.xml"); RegisterMetrics register = new RegisterMetrics(dbClient); Metric m1 = new Metric.Builder("m1", "New name", Metric.ValueType.FLOAT) .setDescription("new description") .setDirection(-1) .setQualitative(true) .setDomain("new domain") .setUserManaged(false) .setDecimalScale(3) .setHidden(true) .create(); Metric custom = new Metric.Builder("custom", "New custom", Metric.ValueType.FLOAT) .setDescription("New description of custom metric") .setUserManaged(true) .create(); register.register(asList(m1, custom)); dbTester.assertDbUnit(getClass(), "update_non_custom_metrics-result.xml", "metrics"); }
private void loadFromPaginatedWs(List<Metric> metrics) throws IOException { int page = 1; WsMetricsResponse response; do { GetRequest getRequest = new GetRequest(METRICS_SEARCH_URL + page); try (Reader reader = wsClient.call(getRequest).contentReader()) { response = GsonHelper.create().fromJson(reader, WsMetricsResponse.class); for (WsMetric metric : response.metrics) { metrics.add(new Metric.Builder(metric.getKey(), metric.getName(), ValueType.valueOf(metric.getType())) .create() .setDirection(metric.getDirection()) .setQualitative(metric.isQualitative()) .setUserManaged(metric.isCustom()) .setDescription(metric.getDescription()) .setId(metric.getId())); } } page++; } while (response.getP() < (response.getTotal() / response.getPs() + 1)); }
/** * Insert new metrics, including custom metrics */ @Test public void insert_new_metrics() { dbTester.prepareDbUnit(getClass(), "insert_new_metrics.xml"); Metric m1 = new Metric.Builder("m1", "One", Metric.ValueType.FLOAT) .setDescription("desc1") .setDirection(1) .setQualitative(true) .setDomain("domain1") .setUserManaged(false) .create(); Metric custom = new Metric.Builder("custom", "Custom", Metric.ValueType.FLOAT) .setDescription("This is a custom metric") .setUserManaged(true) .create(); RegisterMetrics register = new RegisterMetrics(dbClient); register.register(asList(m1, custom)); dbTester.assertDbUnit(getClass(), "insert_new_metrics-result.xml", "metrics"); }
@Test public void testExecutionForFoldersMeasures_no_measures() throws IOException { File measures = new File(baseDir, "src/folder.measures"); FileUtils.write(measures, "ncloc:12\nbranch_coverage:5.3\nsqale_index:300\nbool:true\n\n#comment", StandardCharsets.UTF_8); InputFile inputFile = new TestInputFileBuilder("foo", "src/foo.xoo").setLanguage("xoo").setModuleBaseDir(baseDir.toPath()).build(); context.fileSystem().add(inputFile); Metric<Boolean> booleanMetric = new Metric.Builder("bool", "Bool", Metric.ValueType.BOOL) .create(); when(metricFinder.<Integer>findByKey("ncloc")).thenReturn(CoreMetrics.NCLOC); when(metricFinder.<Double>findByKey("branch_coverage")).thenReturn(CoreMetrics.BRANCH_COVERAGE); when(metricFinder.<Long>findByKey("sqale_index")).thenReturn(CoreMetrics.TECHNICAL_DEBT); when(metricFinder.<Boolean>findByKey("bool")).thenReturn(booleanMetric); sensor.execute(context); assertThat(context.measure("foo:src", CoreMetrics.NCLOC)).isNull(); }
@Test public void shouldCreateMetricWithDefaultValues() { Metric metric = new Metric.Builder("foo", "Foo", Metric.ValueType.INT) .create(); assertThat(metric.getBestValue()).isNull(); assertThat(metric.getDescription()).isNull(); assertThat(metric.getWorstValue()).isNull(); assertThat(metric.getDirection()).isEqualTo(Metric.DIRECTION_NONE); assertThat(metric.getEnabled()).isTrue(); assertThat(metric.getId()).isNull(); assertThat(metric.getUserManaged()).isFalse(); assertThat(metric.isHidden()).isFalse(); assertThat(metric.isOptimizedBestValue()).isFalse(); }
public List<Metric> getMetrics() { return Arrays.<Metric>asList(new Metric.Builder("custom", "Custom", Metric.ValueType.FLOAT).create()); } };
@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()); }); }