/** * Used to build a measure from the current object * * @param allowEmptyData should be built if current object is empty * @return the built measure */ public Measure<String> build(boolean allowEmptyData) { if (isValid && (!isEmpty || allowEmptyData)) { return new Measure<String>(metric, KeyValueFormat.format(countBag, -1)); } return null; }
private void saveNewIssues(DecoratorContext context, Collection<Issue> issues, boolean shouldSaveNewMetrics) { if (shouldSaveNewMetrics) { Measure measure = new Measure(CoreMetrics.NEW_VIOLATIONS); saveNewIssues(context, measure, issues); } }
protected final void savePositiveMeasure(DecoratorContext context, Metric<Integer> metric, double value) { if (value >= 0.0) { context.saveMeasure(new Measure(metric, value)); } }
private void saveNewIssuesForSeverity(DecoratorContext context, RulePriority severity, ListMultimap<RulePriority, Issue> issuesPerSeverities, boolean shouldSaveNewMetrics) { if (shouldSaveNewMetrics) { Metric metric = SeverityUtils.severityToNewMetricIssue(severity); Measure measure = new Measure(metric); saveNewIssues(context, measure, issuesPerSeverities.get(severity)); } }
@Override public DecoratorContext saveMeasure(Metric metric, Double value) { checkReadOnly(SAVE_MEASURE_METHOD); saveMeasure(new Measure(metric, value)); return this; }
private Measure createCoveredConditionsByLine() { return new Measure(CoreMetrics.COVERED_CONDITIONS_BY_LINE) .setData(KeyValueFormat.format(coveredConditionsByLine)) .setPersistenceMode(PersistenceMode.DATABASE); }
private Measure createConditionsByLine() { return new Measure(CoreMetrics.CONDITIONS_BY_LINE) .setData(KeyValueFormat.format(conditionsByLine)) .setPersistenceMode(PersistenceMode.DATABASE); }
protected final void saveDsm(DecoratorContext context, Dsm<Resource> dsm) { Measure measure = new Measure(CoreMetrics.DEPENDENCY_MATRIX, DsmSerializer.serialize(dsm)); measure.setPersistenceMode(PersistenceMode.DATABASE); context.saveMeasure(measure); }
@Override public Measure saveMeasure(InputFile inputFile, Metric metric, Double value) { Measure<?> measure = new Measure(metric, value); coverageFilter.validate(measure, inputFile); return saveMeasure(getResource(inputFile), measure); }
@VisibleForTesting void saveCharacteristicMeasure(DecoratorContext context, Characteristic characteristic, Double value, boolean inMemory) { // we need the value on projects (root or module) even if value==0 in order to display correctly the SQALE history chart (see SQALE-122) // BUT we don't want to save zero-values for non top-characteristics (see SQALE-147) if (value > 0.0 || (ResourceUtils.isProject(context.getResource()) && characteristic.isRoot())) { Measure measure = new Measure(CoreMetrics.TECHNICAL_DEBT); measure.setCharacteristic(characteristic); saveMeasure(context, measure, value, inMemory); } }
@Override public Measure calculate(FormulaData data, FormulaContext context) { Double sum = MeasureUtils.sum(saveZeroIfNoChildValues, data.getChildrenMeasures(context.getTargetMetric())); if (sum != null) { return new Measure(context.getTargetMetric(), sum); } return null; } }
/** * Save the metrics values and the duplicated code as XML. * * @param context */ protected void saveUsing(SensorContext context) { context.saveMeasure(resource, DUPLICATED_FILES, 1d); context.saveMeasure(resource, DUPLICATED_LINES, duplicatedLines); context.saveMeasure(resource, DUPLICATED_BLOCKS, duplicatedBlocks); context.saveMeasure(resource, new Measure(DUPLICATIONS_DATA, getDuplicationXMLData())); }
@Override public void analyse(Project project, SensorContext context) { UsedQProfiles used = new UsedQProfiles(); for (String language : fs.languages()) { QProfile profile = moduleQProfiles.findByLanguage(language); if (profile != null) { used.add(profile); } } Measure detailsMeasure = new Measure(CoreMetrics.QUALITY_PROFILES, used.toJson()); context.saveMeasure(detailsMeasure); }
@Override public void analyse(Project project, SensorContext context) { UsedQProfiles used = new UsedQProfiles(); for (String language : fs.languages()) { QProfile profile = moduleQProfiles.findByLanguage(language); if (profile != null) { used.add(profile); } } Measure<?> detailsMeasure = new Measure<>(CoreMetrics.QUALITY_PROFILES, used.toJson()); context.saveMeasure(detailsMeasure); }
private Measure copy(ManualMeasure manualMeasure) { Metric metric = metricFinder.findById(manualMeasure.getMetricId()); checkState(metric != null, "Unable to find manual metric with id: " + manualMeasure.getMetricId()); Measure measure = new Measure(metric); measure.setValue(manualMeasure.getValue(), 5); measure.setData(manualMeasure.getTextValue()); measure.setDescription(manualMeasure.getDescription()); return measure; }
private Measure calculateForFile(FormulaData data, FormulaContext context) { Measure result = null; Double fallbackMeasure = fallbackMetric != null ? MeasureUtils.getValue(data.getMeasure(fallbackMetric), null) : null; Double byMeasure = MeasureUtils.getValue(data.getMeasure(byMetric), null); Double mainMeasure = MeasureUtils.getValue(data.getMeasure(mainMetric), fallbackMeasure); if (mainMeasure != null && byMeasure != null && byMeasure > 0.0) { result = new Measure(context.getTargetMetric(), mainMeasure / byMeasure); } return result; }
@Override public void decorate(Resource resource, DecoratorContext context) { if (ResourceUtils.isPersistable(resource) && !ResourceUtils.isUnitTestFile(resource)) { Long developmentCost = getDevelopmentCost(context); context.saveMeasure(new Measure(CoreMetrics.DEVELOPMENT_COST, Long.toString(developmentCost))); long debt = getMeasureValue(context, CoreMetrics.TECHNICAL_DEBT); double density = computeDensity(debt, developmentCost); context.saveMeasure(CoreMetrics.SQALE_DEBT_RATIO, 100.0 * density); SqaleRatingGrid ratingGrid = new SqaleRatingGrid(sqaleRatingSettings.getRatingGrid()); context.saveMeasure(createRatingMeasure(ratingGrid.getRatingForDensity(density))); } }
private void savePublicApiDensity(DecoratorContext context) { if (context.getMeasure(CoreMetrics.PUBLIC_DOCUMENTED_API_DENSITY) != null) { return; } Measure publicApi = context.getMeasure(CoreMetrics.PUBLIC_API); Measure publicUndocApi = context.getMeasure(CoreMetrics.PUBLIC_UNDOCUMENTED_API); if (MeasureUtils.hasValue(publicApi) && MeasureUtils.hasValue(publicUndocApi) && publicApi.getValue() > 0) { double documentedAPI = publicApi.getValue() - publicUndocApi.getValue(); Double value = 100.0 * (documentedAPI / publicApi.getValue()); context.saveMeasure(new Measure(CoreMetrics.PUBLIC_DOCUMENTED_API_DENSITY, value)); } }
private void saveMeasures(DecoratorContext context, Collection<Issue> issues) { Measure measure = new Measure(CoreMetrics.NEW_TECHNICAL_DEBT); for (Period period : timeMachineConfiguration.periods()) { Date periodDate = period.getDate(); double value = calculateNewTechnicalDebtValue(issues, periodDate); Collection<Measure> children = context.getChildrenMeasures(measure.getMetric()); double sum = MeasureUtils.sumOnVariation(true, period.getIndex(), children) + value; measure.setVariation(period.getIndex(), sum); } context.saveMeasure(measure); }
private void saveCommentsDensity(DecoratorContext context) { if (context.getMeasure(CoreMetrics.COMMENT_LINES_DENSITY) != null) { return; } Measure ncloc = context.getMeasure(CoreMetrics.NCLOC); Measure comments = context.getMeasure(CoreMetrics.COMMENT_LINES); if (MeasureUtils.hasValue(ncloc) && MeasureUtils.hasValue(comments) && (comments.getValue() + ncloc.getValue()) > 0) { double val = 100.0 * (comments.getValue() / (comments.getValue() + ncloc.getValue())); context.saveMeasure(new Measure(CoreMetrics.COMMENT_LINES_DENSITY, val)); } }