private static void appendRule(ActiveRule activeRule, Writer writer) throws IOException { writer.append("<rule><repositoryKey>"); writer.append(activeRule.getRepositoryKey()); writer.append("</repositoryKey><key>"); StringEscapeUtils.escapeXml(writer, activeRule.getRuleKey()); writer.append("</key>"); if (activeRule.getSeverity() != null) { writer.append("<priority>"); writer.append(activeRule.getSeverity().name()); writer.append("</priority>"); } appendRuleParameters(activeRule, writer); writer.append("</rule>"); }
@CheckForNull private static RuleActivation toRuleActivation(ActiveRule activeRule, Map<RuleKey, RuleDefinitionDto> rulesByRuleKey) { RuleKey ruleKey = activeRule.getRule().ruleKey(); RuleDefinitionDto ruleDefinition = rulesByRuleKey.get(ruleKey); if (ruleDefinition == null) { return null; } String severity = activeRule.getSeverity().name(); Map<String, String> params = activeRule.getActiveRuleParams().stream() .collect(MoreCollectors.uniqueIndex(ActiveRuleParam::getKey, ActiveRuleParam::getValue)); return RuleActivation.create(ruleDefinition.getId(), severity, params); }
private static void assertThatRuleIsUntouched(List<ActiveRuleDto> activeRules, RuleDefinitionDto rule, RulePriority severity) { ActiveRuleDto activeRule = findRule(activeRules, rule).get(); assertThat(activeRule.getInheritance()).isNull(); assertThat(activeRule.getSeverityString()).isEqualTo(severity.name()); assertThat(activeRule.getCreatedAt()).isEqualTo(PAST); assertThat(activeRule.getUpdatedAt()).isEqualTo(PAST); }
private static void assertThatRuleIsNewlyActivated(List<ActiveRuleDto> activeRules, RuleDefinitionDto rule, RulePriority severity) { ActiveRuleDto activeRule = findRule(activeRules, rule).get(); assertThat(activeRule.getInheritance()).isNull(); assertThat(activeRule.getSeverityString()).isEqualTo(severity.name()); assertThat(activeRule.getCreatedAt()).isEqualTo(NOW); assertThat(activeRule.getUpdatedAt()).isEqualTo(NOW); }
private static void assertThatRuleIsUpdated(List<ActiveRuleDto> activeRules, RuleDefinitionDto rule, RulePriority severity) { ActiveRuleDto activeRule = findRule(activeRules, rule).get(); assertThat(activeRule.getInheritance()).isNull(); assertThat(activeRule.getSeverityString()).isEqualTo(severity.name()); assertThat(activeRule.getCreatedAt()).isEqualTo(PAST); assertThat(activeRule.getUpdatedAt()).isEqualTo(NOW); }
private void verifyRule(Rule rule, RuleDefinitionDto ruleDefinition, RuleParamDto ruleParam) { assertThat(rule).isNotNull(); assertThat(rule.getName()).isEqualTo(ruleDefinition.getName()); assertThat(rule.getLanguage()).isEqualTo(ruleDefinition.getLanguage()); assertThat(rule.getKey()).isEqualTo(ruleDefinition.getRuleKey()); assertThat(rule.getConfigKey()).isEqualTo(ruleDefinition.getConfigKey()); assertThat(rule.isTemplate()).isEqualTo(ruleDefinition.isTemplate()); assertThat(rule.getCreatedAt().getTime()).isEqualTo(ruleDefinition.getCreatedAt()); assertThat(rule.getUpdatedAt().getTime()).isEqualTo(ruleDefinition.getUpdatedAt()); assertThat(rule.getRepositoryKey()).isEqualTo(ruleDefinition.getRepositoryKey()); assertThat(rule.getSeverity().name()).isEqualTo(ruleDefinition.getSeverityString()); assertThat(rule.getSystemTags()).isEqualTo(ruleDefinition.getSystemTags().stream().toArray(String[]::new)); assertThat(rule.getTags()).isEmpty(); assertThat(rule.getId()).isEqualTo(ruleDefinition.getId()); assertThat(rule.getDescription()).isEqualTo(ruleDefinition.getDescription()); assertThat(rule.getParams()).hasSize(1); org.sonar.api.rules.RuleParam param = rule.getParams().iterator().next(); assertThat(param.getRule()).isSameAs(rule); assertThat(param.getKey()).isEqualTo(ruleParam.getName()); assertThat(param.getDescription()).isEqualTo(ruleParam.getDescription()); assertThat(param.getType()).isEqualTo(ruleParam.getType()); assertThat(param.getDefaultValue()).isEqualTo(ruleParam.getDefaultValue()); } }
private static void define(Context context, RulesProfile profile) { NewBuiltInQualityProfile newQp = context.createBuiltInQualityProfile(profile.getName(), profile.getLanguage()) .setDefault(profile.getDefaultProfile().booleanValue()); for (org.sonar.api.rules.ActiveRule ar : profile.getActiveRules()) { NewBuiltInActiveRule newActiveRule = newQp.activateRule(ar.getRepositoryKey(), ar.getRuleKey()); RulePriority overriddenSeverity = ar.getOverriddenSeverity(); if (overriddenSeverity != null) { newActiveRule.overrideSeverity(overriddenSeverity.name()); } for (ActiveRuleParam param : ar.getActiveRuleParams()) { newActiveRule.overrideParam(param.getKey(), param.getValue()); } } newQp.done(); }
private void activateRuleInDb(RulesProfileDto profile, RuleDefinitionDto rule, RulePriority severity) { ActiveRuleDto dto = new ActiveRuleDto() .setProfileId(profile.getId()) .setSeverity(severity.name()) .setRuleId(rule.getId()) .setCreatedAt(PAST) .setUpdatedAt(PAST); db.getDbClient().activeRuleDao().insert(db.getSession(), dto); db.commit(); } }
private void activateRuleInDb(RulesProfileDto profile, RuleDefinitionDto rule, RulePriority severity) { ActiveRuleDto dto = new ActiveRuleDto() .setProfileId(profile.getId()) .setSeverity(severity.name()) .setRuleId(rule.getId()) .setCreatedAt(nextLong()) .setUpdatedAt(nextLong()); db.getDbClient().activeRuleDao().insert(db.getSession(), dto); db.commit(); }
private void appendRule(ActiveRule activeRule, Writer writer) throws IOException { writer.append("<rule><repositoryKey>"); writer.append(activeRule.getRepositoryKey()); writer.append("</repositoryKey><key>"); StringEscapeUtils.escapeXml(writer, activeRule.getRuleKey()); writer.append("</key>"); if (activeRule.getSeverity() != null) { writer.append("<priority>"); writer.append(activeRule.getSeverity().name()); writer.append("</priority>"); } appendRuleParameters(activeRule, writer); writer.append("</rule>"); }
private static void appendRule(ActiveRule activeRule, Writer writer) throws IOException { writer.append("<rule><repositoryKey>"); writer.append(activeRule.getRepositoryKey()); writer.append("</repositoryKey><key>"); StringEscapeUtils.escapeXml(writer, activeRule.getRuleKey()); writer.append("</key>"); if (activeRule.getSeverity() != null) { writer.append("<priority>"); writer.append(activeRule.getSeverity().name()); writer.append("</priority>"); } appendRuleParameters(activeRule, writer); writer.append("</rule>"); }
writer.append(" <ruleset name=\"default\">\n"); } else { writer.append(" <ruleset name=\"" + priority.name().toLowerCase() + "\">\n");
@CheckForNull private static RuleActivation toRuleActivation(ActiveRule activeRule, Map<RuleKey, RuleDefinitionDto> rulesByRuleKey) { RuleKey ruleKey = activeRule.getRule().ruleKey(); RuleDefinitionDto ruleDefinition = rulesByRuleKey.get(ruleKey); if (ruleDefinition == null) { return null; } String severity = activeRule.getSeverity().name(); Map<String, String> params = activeRule.getActiveRuleParams().stream() .collect(MoreCollectors.uniqueIndex(ActiveRuleParam::getKey, ActiveRuleParam::getValue)); return RuleActivation.create(ruleDefinition.getId(), severity, params); }
private List<FxCopRule> transformIntoFxCopRules(List<ActiveRule> activeRulesByPlugin) { List<FxCopRule> result = new ArrayList<FxCopRule>(); for (ActiveRule activeRule : activeRulesByPlugin) { // Extracts the rule's information Rule rule = activeRule.getRule(); String configKey = rule.getConfigKey(); String fileName = StringUtils.substringAfter(configKey, "@"); String name = StringUtils.substringBefore(configKey, "@"); // Creates the FxCop rule FxCopRule fxCopRule = new FxCopRule(); fxCopRule.setEnabled(true); fxCopRule.setFileName(fileName); fxCopRule.setName(name); RulePriority priority = activeRule.getSeverity(); if (priority != null) { fxCopRule.setPriority(priority.name().toLowerCase()); } result.add(fxCopRule); } return result; }
private static void define(Context context, RulesProfile profile) { NewBuiltInQualityProfile newQp = context.createBuiltInQualityProfile(profile.getName(), profile.getLanguage()) .setDefault(profile.getDefaultProfile().booleanValue()); for (org.sonar.api.rules.ActiveRule ar : profile.getActiveRules()) { NewBuiltInActiveRule newActiveRule = newQp.activateRule(ar.getRepositoryKey(), ar.getRuleKey()); RulePriority overriddenSeverity = ar.getOverriddenSeverity(); if (overriddenSeverity != null) { newActiveRule.overrideSeverity(overriddenSeverity.name()); } for (ActiveRuleParam param : ar.getActiveRuleParams()) { newActiveRule.overrideParam(param.getKey(), param.getValue()); } } newQp.done(); }
private static void registerProfile(ActiveRulesBuilder builder, String language, Map.Entry<String, Collection<RulesProfile>> entry) { for (RulesProfile rp : entry.getValue()) { for (ActiveRule ar : rp.getActiveRules()) { Builder newAr = new NewActiveRule.Builder() .setRuleKey(RuleKey.of(ar.getRepositoryKey(), ar.getRuleKey())) .setLanguage(language) .setName(ar.getRule().getName()) .setSeverity(ar.getSeverity().name()) .setInternalKey(ar.getConfigKey()); for (ActiveRuleParam param : ar.getActiveRuleParams()) { newAr.setParam(param.getKey(), param.getValue()); } builder.addRule(newAr.build()); } } }
private DefaultIssue newIssue(Violation violation) { return new DefaultIssueBuilder() .componentKey(violation.getResource().getEffectiveKey()) // Project can be null but Violation not used by scan2 .projectKey(project.getRoot().getEffectiveKey()) .ruleKey(RuleKey.of(violation.getRule().getRepositoryKey(), violation.getRule().getKey())) .effortToFix(violation.getCost()) .line(violation.getLineId()) .message(violation.getMessage()) .severity(violation.getSeverity() != null ? violation.getSeverity().name() : null) .build(); }
@Override public void define(Context context) { NewRepository repository = context .createRepository(DelphiPmdConstants.REPOSITORY_KEY, DelphiLanguage.KEY) .setName(DelphiPmdConstants.REPOSITORY_NAME); List<org.sonar.api.rules.Rule> rules = DelphiRulesUtils.getInitialReferential(); // TODO Review // https://github.com/SonarCommunity/sonar-pmd/blob/master/src/main/java/org/sonar/plugins/pmd/PmdRulesDefinition.java for (org.sonar.api.rules.Rule rule : rules) { NewRule newRule = repository.createRule(rule.getKey()) .setName(rule.getName()) .setHtmlDescription(rule.getDescription()) .setInternalKey(rule.getConfigKey()) .setSeverity(rule.getSeverity().name()); for (RuleParam param : rule.getParams()) { newRule.createParam(param.getKey()) .setDefaultValue(param.getDefaultValue()) .setType(RuleParamType.parse(param.getType())) .setDescription(param.getDescription()); } } SqaleXmlLoader.load(repository, "/org/sonar/plugins/delphi/sqale/delphi-model.xml"); repository.done(); }