@Override public DebtRatingGrid getDebtRatingGrid() { return new DebtRatingGrid(new double[] {0.05, 0.1, 0.2, 0.5}); }
private static double effortToReachMaintainabilityRatingA(IssueMetricFormula.Context context) { double developmentCost = context.getValue(CoreMetrics.DEVELOPMENT_COST).orElse(0.0); double effort = context.getValue(CoreMetrics.TECHNICAL_DEBT).orElse(0.0); double upperGradeCost = context.getDebtRatingGrid().getGradeLowerBound(Rating.B) * developmentCost; return upperGradeCost < effort ? (effort - upperGradeCost) : 0.0; }
@Test public void density_matching_exact_grid_values() { assertThat(ratingGrid.getRatingForDensity(0.1)).isEqualTo(A); assertThat(ratingGrid.getRatingForDensity(0.2)).isEqualTo(B); assertThat(ratingGrid.getRatingForDensity(0.5)).isEqualTo(C); assertThat(ratingGrid.getRatingForDensity(1)).isEqualTo(D); }
public DebtRatingGrid(double[] gridValues) { this.gridValues = Arrays.copyOf(gridValues, gridValues.length); this.ratingBounds = buildRatingBounds(gridValues); }
@Test public void load_rating_grid() { settings.setProperty(CoreProperties.RATING_GRID, "1,3.4,8,50"); RatingSettings configurationLoader = new RatingSettings(settings.asConfig()); double[] grid = configurationLoader.getDebtRatingGrid().getGridValues(); assertThat(grid).hasSize(4); assertThat(grid[0]).isEqualTo(1.0); assertThat(grid[1]).isEqualTo(3.4); assertThat(grid[2]).isEqualTo(8.0); assertThat(grid[3]).isEqualTo(50.0); }
public DebtRatingGrid(Configuration config) { try { String[] grades = config.getStringArray(RATING_GRID); gridValues = new double[4]; for (int i = 0; i < 4; i++) { gridValues[i] = Double.parseDouble(grades[i]); } this.ratingBounds = buildRatingBounds(gridValues); } catch (Exception e) { throw new IllegalArgumentException("The rating grid is incorrect. Expected something similar to '" + RATING_GRID_DEF_VALUES + "' and got '" + config.get(RATING_GRID).orElse("") + "'", e); } }
public RatingSettings(Configuration config) { ratingGrid = new DebtRatingGrid(config); defaultDevCost = initDefaultDevelopmentCost(config); languageSpecificConfigurationByLanguageKey = initLanguageSpecificConfigurationByLanguageKey(config); }
@Test public void return_rating_matching_density() { assertThat(ratingGrid.getRatingForDensity(0)).isEqualTo(A); assertThat(ratingGrid.getRatingForDensity(0.05)).isEqualTo(A); assertThat(ratingGrid.getRatingForDensity(0.09999999)).isEqualTo(A); assertThat(ratingGrid.getRatingForDensity(0.1)).isEqualTo(A); assertThat(ratingGrid.getRatingForDensity(0.15)).isEqualTo(B); assertThat(ratingGrid.getRatingForDensity(0.2)).isEqualTo(B); assertThat(ratingGrid.getRatingForDensity(0.25)).isEqualTo(C); assertThat(ratingGrid.getRatingForDensity(0.5)).isEqualTo(C); assertThat(ratingGrid.getRatingForDensity(0.65)).isEqualTo(D); assertThat(ratingGrid.getRatingForDensity(1)).isEqualTo(D); assertThat(ratingGrid.getRatingForDensity(1.01)).isEqualTo(E); }
private void addEffortToMaintainabilityRatingAMeasure(Component component, Path<Counter> path) { long developmentCostValue = path.current().devCosts; Optional<Measure> effortMeasure = measureRepository.getRawMeasure(component, maintainabilityRemediationEffortMetric); long effort = effortMeasure.isPresent() ? effortMeasure.get().getLongValue() : 0L; long upperGradeCost = ((Double) (ratingSettings.getDebtRatingGrid().getGradeLowerBound(Rating.B) * developmentCostValue)).longValue(); long effortToRatingA = upperGradeCost < effort ? (effort - upperGradeCost) : 0L; measureRepository.add(component, effortToMaintainabilityRatingAMetric, Measure.newMeasureBuilder().create(effortToRatingA)); }
@Before public void setUp() { double[] gridValues = new double[] {0.1, 0.2, 0.5, 1}; ratingGrid = new DebtRatingGrid(gridValues); }
private void addMaintainabilityRatingMeasure(Component component, double density) { Rating rating = ratingSettings.getDebtRatingGrid().getRatingForDensity(density); measureRepository.add(component, maintainabilityRatingMetric, newMeasureBuilder().create(rating.getIndex(), rating.name())); }
@Before public void setUp() { // assumes rating configuration is consistent when(ratingSettings.getDebtRatingGrid()).thenReturn(new DebtRatingGrid(RATING_GRID)); when(ratingSettings.getDevCost(LANGUAGE_KEY_1)).thenReturn(DEV_COST_LANGUAGE_1); when(ratingSettings.getDevCost(LANGUAGE_KEY_2)).thenReturn(DEV_COST_LANGUAGE_2); underTest = new VisitorsCrawler(singletonList(new MaintainabilityMeasuresVisitor(metricRepository, measureRepository, ratingSettings))); }
@Test public void fail_on_invalid_density() { throwable.expect(IllegalArgumentException.class); throwable.expectMessage("Invalid value '-1.0'"); ratingGrid.getRatingForDensity(-1); }
@Before public void setUp() throws Exception { when(ratingSettings.getDebtRatingGrid()).thenReturn(new DebtRatingGrid(RATING_GRID)); underTest = new VisitorsCrawler(Arrays.asList(new NewMaintainabilityMeasuresVisitor(metricRepository, measureRepository, newLinesRepository, ratingSettings))); }
private void computeAndSaveNewDebtRatioMeasure(Component component, Path<Counter> path) { if (!newLinesRepository.newLinesAvailable()) { return; } double density = computeDensity(path.current()); double newDebtRatio = 100.0 * density; double newMaintainability = ratingSettings.getDebtRatingGrid().getRatingForDensity(density).getIndex(); long newDevelopmentCost = path.current().getDevCost().getValue(); measureRepository.add(component, this.newDevelopmentCostMetric, newMeasureBuilder().setVariation(newDevelopmentCost).createNoValue()); measureRepository.add(component, this.newDebtRatioMetric, newMeasureBuilder().setVariation(newDebtRatio).createNoValue()); measureRepository.add(component, this.newMaintainabilityRatingMetric, newMeasureBuilder().setVariation(newMaintainability).createNoValue()); }
@Test public void fail_on_invalid_grid() { throwable.expect(IllegalStateException.class); throwable.expectMessage("Rating grid should contains 4 values"); ratingGrid = new DebtRatingGrid(new double[] {0.1, 0.2, 0.5}); } }
DebtRatingGrid debtRatingGrid = new DebtRatingGrid(config);