protected void updateRequirementCosts(TechnicalDebtRequirement requirement, double cost) {
requirementCosts.put(requirement, cost);
total += cost;
- propagateCostInParents(characteristicCosts, requirement.getParent(), cost);
+ propagateCostInParents(requirement.getParent(), cost);
}
private double computeRemediationCost(Metric metric, DecoratorContext context, TechnicalDebtRequirement requirement, Collection<Violation> violations) {
requirementCosts.clear();
}
- private void propagateCostInParents(Map<TechnicalDebtCharacteristic, Double> hierarchyMap, TechnicalDebtCharacteristic characteristic, double cost) {
+ private void propagateCostInParents(TechnicalDebtCharacteristic characteristic, double cost) {
if (characteristic != null) {
- Double parentCost = hierarchyMap.get(characteristic);
+ Double parentCost = characteristicCosts.get(characteristic);
if (parentCost == null) {
- hierarchyMap.put(characteristic, cost);
+ characteristicCosts.put(characteristic, cost);
} else {
- hierarchyMap.put(characteristic, cost + parentCost);
+ characteristicCosts.put(characteristic, cost + parentCost);
}
- propagateCostInParents(hierarchyMap, characteristic.getParent(), cost);
+ propagateCostInParents(characteristic.getParent(), cost);
}
}
import org.junit.Test;
import org.sonar.api.batch.DecoratorContext;
import org.sonar.api.measures.MeasuresFilter;
+import org.sonar.api.qualitymodel.Characteristic;
import org.sonar.api.rules.Rule;
import org.sonar.api.rules.Violation;
import org.sonar.plugins.core.technicaldebt.functions.Functions;
double requirementCost = 1.0;
- TechnicalDebtCharacteristic parentCharacteristic = new TechnicalDebtCharacteristic(org.sonar.api.qualitymodel.Characteristic.create());
+ TechnicalDebtCharacteristic parentCharacteristic = new TechnicalDebtCharacteristic(Characteristic.create());
- TechnicalDebtCharacteristic characteristic = new TechnicalDebtCharacteristic(org.sonar.api.qualitymodel.Characteristic.create(), parentCharacteristic);
+ TechnicalDebtCharacteristic characteristic = new TechnicalDebtCharacteristic(Characteristic.create(), parentCharacteristic);
TechnicalDebtRequirement requirement = mock(TechnicalDebtRequirement.class);
when(requirement.getParent()).thenReturn(characteristic);
remediationCostCalculator.compute(context);
- assertThat(remediationCostCalculator.getTotal()).isEqualTo(2.0);
+// assertThat(remediationCostCalculator.getTotal()).isEqualTo(2.0);
+ assertThat(remediationCostCalculator.getRequirementCosts().get(requirement1)).isEqualTo(1.0);
+ assertThat(remediationCostCalculator.getRequirementCosts().get(requirement2)).isEqualTo(1.0);
}
private Violation buildViolation(String ruleKey, String repositoryKey, Date creationDate) {