@Test public void sqale_characteristic_is_deprecated_and_is_ignored() { RulesDefinition.NewRepository newRepository = context.createRepository("findbugs", "java"); newRepository.createRule("NPE").setName("NPE").setHtmlDescription("desc") .setDebtSubCharacteristic(RulesDefinition.SubCharacteristics.API_ABUSE); newRepository.done(); RulesDefinition.Rule rule = context.repository("findbugs").rule("NPE"); assertThat(rule.debtSubCharacteristic()).isNull(); }
rule.setDebtSubCharacteristic(subCharName); rule.setDebtRemediationFunction(remediationFunction( rule.debtRemediationFunctions(), remediationFunction, offset, remediationFactor));
/** * Adds checks necessary information from JSON file. * * @param rule the new rule to add the information. * @param metadataKey rule key. */ private void addMetadata(NewRule rule, String metadataKey) { URL resource = ExternalDescriptionLoader.class.getResource(String.format("%s/%s.json", RESOURCE_BASE_PATH, metadataKey)); if (resource != null) { RuleMetatada metadata = gson.fromJson(readResource(resource), RuleMetatada.class); rule.setName(metadata.title); rule.setSeverity(metadata.defaultSeverity.toUpperCase()); rule.addTags(metadata.tags); rule.setStatus(RuleStatus.valueOf(metadata.status.toUpperCase())); rule.setDebtSubCharacteristic(metadata.sqaleSubCharacteristic); if (metadata.remediation != null) { rule.setDebtRemediationFunction(metadata.remediation.remediationFunction(rule.debtRemediationFunctions())); rule.setEffortToFixDescription(metadata.remediation.linearDesc); } } }
if(debt != null) { if(debt.getSqaleSubCharacteristic()!=null) { newRule.setDebtSubCharacteristic(debt.getSqaleSubCharacteristic());
private void setupSqaleModel(NewRule rule, Class<?> ruleClass) { SqaleSubCharacteristic subChar = getSqaleSubCharAnnotation(ruleClass); if (subChar != null) { rule.setDebtSubCharacteristic(subChar.value()); } SqaleConstantRemediation constant = AnnotationUtils.getAnnotation(ruleClass, SqaleConstantRemediation.class); SqaleLinearRemediation linear = AnnotationUtils.getAnnotation(ruleClass, SqaleLinearRemediation.class); SqaleLinearWithOffsetRemediation linearWithOffset = AnnotationUtils.getAnnotation(ruleClass, SqaleLinearWithOffsetRemediation.class); Set<Annotation> remediations = Sets.newHashSet(constant, linear, linearWithOffset); if (Iterables.size(Iterables.filter(remediations, Predicates.notNull())) > 1) { throw new IllegalArgumentException("Found more than one SQALE remediation annotations on " + ruleClass); } if (constant != null) { rule.setDebtRemediationFunction(rule.debtRemediationFunctions().constantPerIssue(constant.value())); } if (linear != null) { rule.setDebtRemediationFunction(rule.debtRemediationFunctions().linear(linear.coeff())); rule.setEffortToFixDescription(linear.effortToFixDescription()); } if (linearWithOffset != null) { rule.setDebtRemediationFunction( rule.debtRemediationFunctions().linearWithOffset(linearWithOffset.coeff(), linearWithOffset.offset())); rule.setEffortToFixDescription(linearWithOffset.effortToFixDescription()); } }
@Override public void define(Context context) { NewRepository repository = context.createRepository(XOO_REPOSITORY, Xoo.KEY).setName("Xoo"); // Load checks new RulesDefinitionAnnotationLoader().load(repository, Check.ALL); // define a single rule programmatically. Note that rules // can be loaded from JSON or XML files too. NewRule x1Rule = repository.createRule("x1") .setName("No empty line") .setMarkdownDescription("Generate an issue on *empty* lines of Xoo source files") // optional tags .setTags("style", "security") // optional status. Default value is READY. .setStatus(RuleStatus.BETA) // default severity when the rule is activated on a Quality profile. Default value is MAJOR. .setSeverity(Severity.MINOR); // debt-related information x1Rule .setDebtSubCharacteristic(SubCharacteristics.INTEGRATION_TESTABILITY) .setDebtRemediationFunction(x1Rule.debtRemediationFunctions().linearWithOffset("1h", "30min")) .setEffortToFixDescription("Effort to fix issue on one line"); x1Rule.createParam("acceptWhitespace") .setDefaultValue("false") .setType(RuleParamType.BOOLEAN) .setDescription("= Accept whitespace (``\\s|\\t``) on the line\nThis property is available so that a line containing only whitespace is not considered empty.\n" + "== Example with property set to ``false``\n``xoo\n <- One issue here\n<- And one here\n``\n\n" + "== Example with property set to ``true``\n``xoo\n <- No issue here\n<- But one here\n``\n"); // don't forget to call done() to finalize the definition repository.done(); }