private void appendMeasures(JsonWriter json, Map<String, MeasureDto> measuresByMetricKey, Multiset<String> severitiesAggregation, Integer periodIndex) {
json.name("measures").beginObject();
- json.prop("fNcloc", formatMeasure(measuresByMetricKey.get(CoreMetrics.NCLOC_KEY), periodIndex));
- json.prop("fCoverage", formatMeasure(measuresByMetricKey.get(CoreMetrics.COVERAGE_KEY), periodIndex));
- json.prop("fDuplicationDensity", formatMeasure(measuresByMetricKey.get(CoreMetrics.DUPLICATED_LINES_DENSITY_KEY), periodIndex));
- json.prop("fDebt", formatMeasure(measuresByMetricKey.get(CoreMetrics.TECHNICAL_DEBT_KEY), periodIndex));
- json.prop("fTests", formatMeasure(measuresByMetricKey.get(CoreMetrics.TESTS_KEY), periodIndex));
+ json.prop("fNcloc", formatMeasureOrVariation(measuresByMetricKey.get(CoreMetrics.NCLOC_KEY), periodIndex));
+ json.prop("fCoverage", formatMeasureOrVariation(measuresByMetricKey.get(CoreMetrics.COVERAGE_KEY), periodIndex));
+ json.prop("fDuplicationDensity", formatMeasureOrVariation(measuresByMetricKey.get(CoreMetrics.DUPLICATED_LINES_DENSITY_KEY), periodIndex));
+ json.prop("fDebt", formatMeasureOrVariation(measuresByMetricKey.get(CoreMetrics.TECHNICAL_DEBT_KEY), periodIndex));
+ json.prop("fSqaleRating", formatMeasureOrVariation(measuresByMetricKey.get(CoreMetrics.SQALE_RATING_KEY), periodIndex));
+ json.prop("fSqaleDebtRatio", formatMeasureOrVariation(measuresByMetricKey.get(CoreMetrics.SQALE_DEBT_RATIO_KEY), periodIndex));
+ json.prop("fTests", formatMeasureOrVariation(measuresByMetricKey.get(CoreMetrics.TESTS_KEY), periodIndex));
json.prop("fIssues", i18n.formatInteger(UserSession.get().locale(), severitiesAggregation.size()));
for (String severity : severitiesAggregation.elementSet()) {
json.beginObject()
.prop("key", manualRule.key().toString())
.prop("name", manualRule.name())
- .endObject();
+ .endObject();
}
json.endArray();
}
for (MeasureDto measureDto : dbClient.measureDao().findByComponentKeyAndMetricKeys(fileKey,
newArrayList(CoreMetrics.NCLOC_KEY, CoreMetrics.COVERAGE_KEY,
CoreMetrics.DUPLICATED_LINES_KEY, CoreMetrics.DUPLICATED_LINES_DENSITY_KEY, CoreMetrics.TECHNICAL_DEBT_KEY, CoreMetrics.TESTS_KEY,
- CoreMetrics.SCM_AUTHORS_BY_LINE_KEY),
+ CoreMetrics.SCM_AUTHORS_BY_LINE_KEY, CoreMetrics.SQALE_RATING_KEY, CoreMetrics.SQALE_DEBT_RATIO_KEY),
session)) {
measuresByMetricKey.put(measureDto.getKey().metricKey(), measureDto);
}
}
@CheckForNull
- private String formatMeasure(@Nullable MeasureDto measure, @Nullable Integer periodIndex) {
- if (measure != null) {
- Metric metric = CoreMetrics.getMetric(measure.getKey().metricKey());
- if (periodIndex == null) {
- Double value = measure.getValue();
- if (value != null) {
- return formatValue(value, metric.getType());
- }
- } else {
- Double variation = measure.getVariation(periodIndex);
- if (variation != null) {
- return formatVariation(variation, metric.getType());
- }
- }
+ private String formatMeasureOrVariation(@Nullable MeasureDto measure, @Nullable Integer periodIndex) {
+ if (periodIndex == null) {
+ return formatMeasure(measure);
+ } else {
+ return formatVariation(measure, periodIndex);
}
- return null;
}
@CheckForNull
- private String formatValue(Double value, Metric.ValueType metricType) {
- if (metricType.equals(Metric.ValueType.FLOAT)) {
- return i18n.formatDouble(UserSession.get().locale(), value);
- }
- if (metricType.equals(Metric.ValueType.INT)) {
- return i18n.formatInteger(UserSession.get().locale(), value.intValue());
- }
- if (metricType.equals(Metric.ValueType.PERCENT)) {
- return i18n.formatDouble(UserSession.get().locale(), value) + "%";
- }
- if (metricType.equals(Metric.ValueType.WORK_DUR)) {
- return durations.format(UserSession.get().locale(), durations.create(value.longValue()), Durations.DurationFormat.SHORT);
+ private String formatMeasure(@Nullable MeasureDto measure) {
+ if (measure != null) {
+ Metric metric = CoreMetrics.getMetric(measure.getKey().metricKey());
+ Metric.ValueType metricType = metric.getType();
+ Double value = measure.getValue();
+ String data = measure.getData();
+
+ if (metricType.equals(Metric.ValueType.FLOAT) && value != null) {
+ return i18n.formatDouble(UserSession.get().locale(), value);
+ }
+ if (metricType.equals(Metric.ValueType.INT) && value != null) {
+ return i18n.formatInteger(UserSession.get().locale(), value.intValue());
+ }
+ if (metricType.equals(Metric.ValueType.PERCENT) && value != null) {
+ return i18n.formatDouble(UserSession.get().locale(), value) + "%";
+ }
+ if (metricType.equals(Metric.ValueType.WORK_DUR) && value != null) {
+ return durations.format(UserSession.get().locale(), durations.create(value.longValue()), Durations.DurationFormat.SHORT);
+ }
+ if ((metricType.equals(Metric.ValueType.STRING) || metricType.equals(Metric.ValueType.RATING)) && data != null) {
+ return data;
+ }
}
return null;
}
@CheckForNull
- private String formatVariation(Double value, Metric.ValueType metricType) {
- if (metricType.equals(Metric.ValueType.FLOAT) || metricType.equals(Metric.ValueType.PERCENT)) {
- return i18n.formatDouble(UserSession.get().locale(), value);
- }
- if (metricType.equals(Metric.ValueType.INT)) {
- return i18n.formatInteger(UserSession.get().locale(), value.intValue());
- }
- if (metricType.equals(Metric.ValueType.WORK_DUR)) {
- return durations.format(UserSession.get().locale(), durations.create(value.longValue()), Durations.DurationFormat.SHORT);
+ private String formatVariation(@Nullable MeasureDto measure, Integer periodIndex) {
+ if (measure != null) {
+ Double variation = measure.getVariation(periodIndex);
+ if (variation != null) {
+ Metric metric = CoreMetrics.getMetric(measure.getKey().metricKey());
+ Metric.ValueType metricType = metric.getType();
+ if (metricType.equals(Metric.ValueType.FLOAT) || metricType.equals(Metric.ValueType.PERCENT)) {
+ return i18n.formatDouble(UserSession.get().locale(), variation);
+ }
+ if (metricType.equals(Metric.ValueType.INT)) {
+ return i18n.formatInteger(UserSession.get().locale(), variation.intValue());
+ }
+ if (metricType.equals(Metric.ValueType.WORK_DUR)) {
+ return durations.format(UserSession.get().locale(), durations.create(variation.longValue()), Durations.DurationFormat.SHORT);
+ }
+ }
}
return null;
}
addMeasure(CoreMetrics.NCLOC_KEY, 200);
addMeasure(CoreMetrics.COVERAGE_KEY, 95.4);
addMeasure(CoreMetrics.DUPLICATED_LINES_DENSITY_KEY, 7.4);
+ addMeasure(CoreMetrics.SQALE_RATING_KEY, "C");
+ addMeasure(CoreMetrics.SQALE_DEBT_RATIO_KEY, 35d);
measures.add(MeasureDto.createFor(MeasureKey.of(COMPONENT_KEY, CoreMetrics.TECHNICAL_DEBT_KEY)).setValue(182.0));
when(durations.format(any(Locale.class), any(Duration.class), eq(Durations.DurationFormat.SHORT))).thenReturn("3h 2min");
addVariationMeasure(CoreMetrics.NCLOC_KEY, 2, 1);
addVariationMeasure(CoreMetrics.COVERAGE_KEY, 5d, 1);
addVariationMeasure(CoreMetrics.DUPLICATED_LINES_DENSITY_KEY, 1.2, 1);
+ addVariationMeasure(CoreMetrics.SQALE_DEBT_RATIO_KEY, 5d, 1);
measures.add(MeasureDto.createFor(MeasureKey.of(COMPONENT_KEY, CoreMetrics.TECHNICAL_DEBT_KEY)).setVariation(1, 10.0));
when(durations.format(any(Locale.class), any(Duration.class), eq(Durations.DurationFormat.SHORT))).thenReturn("10min");
when(i18n.formatDouble(any(Locale.class), eq(value))).thenReturn(Double.toString(value));
}
+ private void addMeasure(String metricKey, String value) {
+ measures.add(MeasureDto.createFor(MeasureKey.of(COMPONENT_KEY, metricKey)).setTextValue(value));
+ }
+
private void addVariationMeasure(String metricKey, Integer value, Integer periodIndex) {
measures.add(MeasureDto.createFor(MeasureKey.of(COMPONENT_KEY, metricKey)).setVariation(periodIndex, value.doubleValue()));
when(i18n.formatInteger(any(Locale.class), eq(value))).thenReturn(Integer.toString(value));
when(context.getMeasure(CoreMetrics.TECHNICAL_DEBT)).thenReturn(new Measure(CoreMetrics.TECHNICAL_DEBT, 300.0 * ONE_DAY_IN_MINUTES));
decorator.decorate(file, context);
- verify(context).saveMeasure(argThat(new IsMeasure(CoreMetrics.RATING, 3.0)));
+ verify(context).saveMeasure(argThat(new IsMeasure(CoreMetrics.SQALE_RATING, 3.0)));
verify(context).saveMeasure(argThat(new IsMeasure(CoreMetrics.DEVELOPMENT_COST, "9600")));
verify(context).saveMeasure(CoreMetrics.SQALE_DEBT_RATIO, 1500d);
when(context.getMeasure(CoreMetrics.TECHNICAL_DEBT)).thenReturn(new Measure(CoreMetrics.TECHNICAL_DEBT, 0.0));
decorator.decorate(file, context);
- verify(context).saveMeasure(argThat(new IsMeasure(CoreMetrics.RATING, 1.0)));
+ verify(context).saveMeasure(argThat(new IsMeasure(CoreMetrics.SQALE_RATING, 1.0)));
verify(context).saveMeasure(argThat(new IsMeasure(CoreMetrics.DEVELOPMENT_COST, "9600")));
verify(context).saveMeasure(CoreMetrics.SQALE_DEBT_RATIO, 0d);
when(context.getMeasure(CoreMetrics.TECHNICAL_DEBT)).thenReturn(new Measure(CoreMetrics.TECHNICAL_DEBT, 960000.0));
decorator.decorate(file, context);
- verify(context).saveMeasure(argThat(new IsMeasure(CoreMetrics.RATING, 5.0)));
+ verify(context).saveMeasure(argThat(new IsMeasure(CoreMetrics.SQALE_RATING, 5.0)));
verify(context).saveMeasure(argThat(new IsMeasure(CoreMetrics.DEVELOPMENT_COST, "9600")));
verify(context).saveMeasure(CoreMetrics.SQALE_DEBT_RATIO, 10000d);
when(context.getChildrenMeasures(CoreMetrics.DEVELOPMENT_COST)).thenReturn(newArrayList(new Measure(CoreMetrics.DEVELOPMENT_COST, Double.toString(20.0 * ONE_DAY_IN_MINUTES))));
decorator.decorate(mock(File.class), context);
- verify(context).saveMeasure(argThat(new IsMeasure(CoreMetrics.RATING, 3.0)));
+ verify(context).saveMeasure(argThat(new IsMeasure(CoreMetrics.SQALE_RATING, 3.0)));
verify(context).saveMeasure(argThat(new IsMeasure(CoreMetrics.DEVELOPMENT_COST, "9600")));
verify(context).saveMeasure(CoreMetrics.SQALE_DEBT_RATIO, 1500d);