/** * @deprecated since 5.5, replaced by {@link #gapDescription()} */ @Deprecated @CheckForNull public String effortToFixDescription() { return gapDescription(); }
@Test public void define_xoo_rules() { RulesDefinition.Repository repo = context.repository("xoo"); assertThat(repo).isNotNull(); assertThat(repo.name()).isEqualTo("Xoo"); assertThat(repo.language()).isEqualTo("xoo"); assertThat(repo.rules()).hasSize(19); RulesDefinition.Rule rule = repo.rule(OneIssuePerLineSensor.RULE_KEY); assertThat(rule.name()).isNotEmpty(); assertThat(rule.debtRemediationFunction().type()).isEqualTo(DebtRemediationFunction.Type.LINEAR); assertThat(rule.debtRemediationFunction().gapMultiplier()).isEqualTo("1min"); assertThat(rule.debtRemediationFunction().baseEffort()).isNull(); assertThat(rule.gapDescription()).isNotEmpty(); }
@Test public void test_linear_with_offset_remediation_function() { String xml = "" + "<rules>" + " <rule>" + " <key>1</key>" + " <name>One</name>" + " <description>Desc</description>" + " <effortToFixDescription>lines</effortToFixDescription>" + " <remediationFunction>LINEAR_OFFSET</remediationFunction>" + " <remediationFunctionGapMultiplier>2d 3h</remediationFunctionGapMultiplier>" + " <remediationFunctionBaseEffort>5min</remediationFunctionBaseEffort>" + " </rule>" + "</rules>"; RulesDefinition.Rule rule = load(xml).rule("1"); assertThat(rule.gapDescription()).isEqualTo("lines"); DebtRemediationFunction function = rule.debtRemediationFunction(); assertThat(function).isNotNull(); assertThat(function.type()).isEqualTo(DebtRemediationFunction.Type.LINEAR_OFFSET); assertThat(function.gapMultiplier()).isEqualTo("2d3h"); assertThat(function.baseEffort()).isEqualTo("5min"); }
.setSeverity(ruleDef.severity()) .setStatus(ruleDef.status()) .setGapDescription(ruleDef.gapDescription()) .setSystemTags(ruleDef.tags()) .setType(RuleType.valueOf(ruleDef.type().name())) ruleDto.setDefRemediationGapMultiplier(debtRemediationFunction.gapMultiplier()); ruleDto.setDefRemediationBaseEffort(debtRemediationFunction.baseEffort()); ruleDto.setGapDescription(ruleDef.gapDescription());
private static boolean mergeDebtDefinitions(RulesDefinition.Rule def, RuleDefinitionDto dto) { // Debt definitions are set to null if the sub-characteristic and the remediation function are null DebtRemediationFunction debtRemediationFunction = def.debtRemediationFunction(); boolean hasDebt = debtRemediationFunction != null; if (hasDebt) { return mergeDebtDefinitions(dto, debtRemediationFunction.type().name(), debtRemediationFunction.gapMultiplier(), debtRemediationFunction.baseEffort(), def.gapDescription()); } return mergeDebtDefinitions(dto, null, null, null, null); }
/** * @deprecated since 5.5, replaced by {@link #gapDescription()} */ @Deprecated @CheckForNull public String effortToFixDescription() { return gapDescription(); }
.setSeverity(ruleDef.severity()) .setStatus(ruleDef.status()) .setGapDescription(ruleDef.gapDescription()) .setSystemTags(ruleDef.tags()) .setSecurityStandards(ruleDef.securityStandards()) ruleDto.setDefRemediationGapMultiplier(debtRemediationFunction.gapMultiplier()); ruleDto.setDefRemediationBaseEffort(debtRemediationFunction.baseEffort()); ruleDto.setGapDescription(ruleDef.gapDescription());
@Test public void test_deprecated_remediation_function() { String xml = "" + "<rules>" + " <rule>" + " <key>1</key>" + " <name>One</name>" + " <description>Desc</description>" + " <effortToFixDescription>lines</effortToFixDescription>" + " <debtRemediationFunction>LINEAR_OFFSET</debtRemediationFunction>" + " <debtRemediationFunctionCoefficient>2d 3h</debtRemediationFunctionCoefficient>" + " <debtRemediationFunctionOffset>5min</debtRemediationFunctionOffset>" + " </rule>" + "</rules>"; RulesDefinition.Rule rule = load(xml).rule("1"); assertThat(rule.gapDescription()).isEqualTo("lines"); DebtRemediationFunction function = rule.debtRemediationFunction(); assertThat(function).isNotNull(); assertThat(function.type()).isEqualTo(DebtRemediationFunction.Type.LINEAR_OFFSET); assertThat(function.gapMultiplier()).isEqualTo("2d3h"); assertThat(function.baseEffort()).isEqualTo("5min"); }
@Test public void define_rules_with_remediation_function() { RulesDefinition.NewRepository newRepo = context.createRepository("common-java", "java"); RulesDefinition.NewRule newRule = newRepo.createRule("InsufficientBranchCoverage") .setName("Insufficient condition coverage") .setHtmlDescription("Insufficient condition coverage by unit tests") .setSeverity(Severity.MAJOR) .setGapDescription("Effort to test one uncovered branch"); newRule.setDebtRemediationFunction(newRule.debtRemediationFunctions().linearWithOffset("1h", "10min")); newRepo.done(); RulesDefinition.Repository repo = context.repository("common-java"); assertThat(repo.rules()).hasSize(1); RulesDefinition.Rule rule = repo.rule("InsufficientBranchCoverage"); assertThat(rule.debtRemediationFunction().type()).isEqualTo(DebtRemediationFunction.Type.LINEAR_OFFSET); assertThat(rule.debtRemediationFunction().gapMultiplier()).isEqualTo("1h"); assertThat(rule.debtRemediationFunction().baseEffort()).isEqualTo("10min"); assertThat(rule.gapDescription()).isEqualTo("Effort to test one uncovered branch"); }
@Test public void test_linear_remediation_function() throws Exception { String xml = "" + "<rules>" + " <rule>" + " <key>1</key>" + " <name>One</name>" + " <description>Desc</description>" + " <gapDescription>lines</gapDescription>" + " <remediationFunction>LINEAR</remediationFunction>" + " <remediationFunctionGapMultiplier>2d 3h</remediationFunctionGapMultiplier>" + " </rule>" + "</rules>"; RulesDefinition.Rule rule = load(xml).rule("1"); assertThat(rule.gapDescription()).isEqualTo("lines"); DebtRemediationFunction function = rule.debtRemediationFunction(); assertThat(function).isNotNull(); assertThat(function.type()).isEqualTo(DebtRemediationFunction.Type.LINEAR); assertThat(function.gapMultiplier()).isEqualTo("2d3h"); assertThat(function.baseEffort()).isNull(); }
private static boolean mergeDebtDefinitions(RulesDefinition.Rule def, RuleDefinitionDto dto) { // Debt definitions are set to null if the sub-characteristic and the remediation function are null DebtRemediationFunction debtRemediationFunction = def.debtRemediationFunction(); boolean hasDebt = debtRemediationFunction != null; if (hasDebt) { return mergeDebtDefinitions(dto, debtRemediationFunction.type().name(), debtRemediationFunction.gapMultiplier(), debtRemediationFunction.baseEffort(), def.gapDescription()); } return mergeDebtDefinitions(dto, null, null, null, null); }