Refine search
@Override public RulesProfile createProfile(ValidationMessages validation) { final RulesProfile profile = RulesProfile.create("Basic", Xoo.KEY); profile.setDefaultProfile(true); profile.activateRule(Rule.create(XooRulesDefinition.XOO_REPOSITORY, HasTagSensor.RULE_KEY), RulePriority.MAJOR); return profile; } }
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(); }
public RulesProfile parse(Reader reader, ValidationMessages messages) { RulesProfile profile = RulesProfile.create(); SMInputFactory inputFactory = initStax(); try { SMHierarchicCursor rootC = inputFactory.rootElementCursor(reader); rootC.advance(); // <profile> SMInputCursor cursor = rootC.childElementCursor(); while (cursor.getNext() != null) { String nodeName = cursor.getLocalName(); if (StringUtils.equals("rules", nodeName)) { SMInputCursor rulesCursor = cursor.childElementCursor("rule"); processRules(rulesCursor, profile, messages); } else if (StringUtils.equals("name", nodeName)) { profile.setName(StringUtils.trim(cursor.collectDescendantText(false))); } else if (StringUtils.equals("language", nodeName)) { profile.setLanguage(StringUtils.trim(cursor.collectDescendantText(false))); } } } catch (XMLStreamException e) { messages.addErrorText("XML is not valid: " + e.getMessage()); } checkProfile(profile, messages); return profile; }
public static RulesProfile create(String name, String language) { return new RulesProfile().setName(name).setLanguage(language); }
@Override public RulesProfile importProfile(Reader reader, ValidationMessages messages) { RulesProfile rulesProfile = RulesProfile.create(); rulesProfile.activateRule(Rule.create(XooRulesDefinition.XOO_REPOSITORY, "x1"), RulePriority.CRITICAL); return rulesProfile; } }
public RulesProfile createProfile(ValidationMessages messages) { RulesProfile profile = profileImporter.importProfile( new InputStreamReader(getClass().getResourceAsStream("/org/sonar/plugins/csharp/fxcop/rules/DefaultRules-vbnet.FxCop")), messages); profile.setLanguage("vbnet"); profile.setName("Sonar way"); return profile; } }
@Override public void define(Context context) { LOGGER.info("Creating Tailor Profile"); NewBuiltInQualityProfile nbiqp = context.createBuiltInQualityProfile(TailorRulesDefinition.REPOSITORY_KEY, Swift.KEY); try(Reader config = new InputStreamReader(getClass().getResourceAsStream(PROFILE_PATH))) { RulesProfile ocLintRulesProfile = profileImporter.importProfile(config, ValidationMessages.create()); for (ActiveRule rule : ocLintRulesProfile.getActiveRules()) { nbiqp.activateRule(rule.getRepositoryKey(), rule.getRuleKey()); } } catch (IOException ex){ LOGGER.error("Error Creating Tailor Profile",ex); } nbiqp.done(); } }
@Override public RulesProfile createProfile(ValidationMessages messages) { Reader reader = new InputStreamReader(getClass().getResourceAsStream( "/org/sonar/plugins/delphi/pmd/default-delphi-profile.xml")); RulesProfile profile = importer.importProfile(reader, messages); profile.setLanguage(DelphiLanguage.KEY); profile.setName("Sonar way"); profile.setDefaultProfile(Boolean.TRUE); return profile; }
@Test public void activateRuleWithDefaultPriority() { RulesProfile profile = RulesProfile.create(); Rule rule = Rule.create("repo", "key1", "name1").setSeverity(RulePriority.CRITICAL); profile.activateRule(rule, null); assertThat(profile.getActiveRule("repo", "key1").getSeverity()).isEqualTo(RulePriority.CRITICAL); }
@Test public void searchRulesByConfigKey() { RulesProfile profile = RulesProfile.create(); profile.activateRule(Rule.create("repo", "key1", "name1"), null); profile.activateRule(Rule.create("repo", "key2", "name2").setConfigKey("config2"), null); assertThat(profile.getActiveRuleByConfigKey("repo", "unknown")).isNull(); assertThat(profile.getActiveRuleByConfigKey("repo", "config2").getRuleKey()).isEqualTo("key2"); }
@Override public RulesProfile createProfile(ValidationMessages validation) { RulesProfile profile1 = RulesProfile.create("Profile 1", "xoo"); profile1.activateRule(Rule.create("repo1", "defaultSeverity"), null); profile1.activateRule(Rule.create("repo1", "overrideSeverity"), RulePriority.CRITICAL); Rule ruleWithParam = Rule.create("repo1", "overrideParam"); ruleWithParam.setParams(Arrays.asList(new RuleParam(ruleWithParam, "param", "", ""))); ActiveRule arWithParam = profile1.activateRule(ruleWithParam, null); arWithParam.setParameter("param", "value"); return profile1; } }
@Test public void exportRuleParameters() throws IOException, SAXException { Writer writer = new StringWriter(); RulesProfile profile = RulesProfile.create("sonar way", "java"); Rule rule = Rule.create("checkstyle", "IllegalRegexp", "illegal regexp"); rule.createParameter("format"); rule.createParameter("message"); rule.createParameter("tokens"); ActiveRule activeRule = profile.activateRule(rule, RulePriority.BLOCKER); activeRule.setParameter("format", "foo"); activeRule.setParameter("message", "with special characters < > &"); // the tokens parameter is not set new XMLProfileSerializer().write(profile, writer); assertSimilarXml("exportRuleParameters.xml", writer.toString()); }
/** * @param optionalSeverity if null, then the default rule severity is used */ public ActiveRule activateRule(final Rule rule, @Nullable RulePriority optionalSeverity) { if (activeRules.stream().anyMatch(ar -> ar.getRule().equals(rule))) { throw MessageException.of(String.format( "The definition of the profile '%s' (language '%s') contains multiple occurrences of the '%s:%s' rule. The plugin which declares this profile should fix this.", getName(), getLanguage(), rule.getRepositoryKey(), rule.getKey())); } ActiveRule activeRule = new ActiveRule(this, rule, optionalSeverity); activeRules.add(activeRule); return activeRule; }
@Override public Object clone() { RulesProfile clone = RulesProfile.create(getName(), getLanguage()); clone.setDefaultProfile(getDefaultProfile()); if (activeRules != null && !activeRules.isEmpty()) { clone.setActiveRules(activeRules.stream() .map(ar -> (ActiveRule) ar.clone()) .collect(Collectors.toList())); } return clone; }
@Test public void fail_to_activate_already_activated_rule() { RulesProfile profile = RulesProfile.create("Default", "java"); Rule rule = Rule.create("repo", "key1", "name1").setSeverity(RulePriority.CRITICAL); profile.activateRule(rule, null); try { profile.activateRule(rule, null); fail(); } catch (Exception e) { assertThat(e).isInstanceOf(MessageException.class) .hasMessage("The definition of the profile 'Default' (language 'java') contains multiple occurrences of the 'repo:key1' rule. The plugin which declares this profile should fix this."); } } }
@Override public RulesProfile importProfile(Reader reader, ValidationMessages messages) { messages.addWarningText("a warning"); messages.addInfoText("an info"); return RulesProfile.create(); } }
@Test public void importProfile() { ValidationMessages validation = ValidationMessages.create(); RulesProfile profile = parse("importProfile.xml", validation); assertThat(profile.getLanguage()).isEqualTo("java"); assertThat(profile.getName()).isEqualTo("sonar way"); assertThat(validation.hasErrors()).isFalse(); assertThat(profile).isNotNull(); assertThat(profile.getActiveRule("checkstyle", "IllegalRegexp").getSeverity()).isEqualTo(RulePriority.CRITICAL); }
messages.addWarningText("Rule not found: " + ruleToString(repositoryKey, key)); ActiveRule activeRule = profile.activateRule(rule, priority); for (Map.Entry<String, String> entry : parameters.entrySet()) { if (rule.getParam(entry.getKey()) == null) { messages.addWarningText("The parameter '" + entry.getKey() + "' does not exist in the rule: " + ruleToString(repositoryKey, key)); } else { activeRule.setParameter(entry.getKey(), entry.getValue());
private static void checkProfile(RulesProfile profile, ValidationMessages messages) { if (StringUtils.isBlank(profile.getName())) { messages.addErrorText("The mandatory node <name> is missing."); } if (StringUtils.isBlank(profile.getLanguage())) { messages.addErrorText("The mandatory node <language> is missing."); } }
private void addRule(Class aClass, BelongsToProfile annotation, RulesProfile profile, String repositoryKey, ValidationMessages messages) { if ((annotation != null) && StringUtils.equals(annotation.title(), profile.getName())) { String ruleKey = RuleAnnotationUtils.getRuleKey(aClass); Rule rule = ruleFinder.findByKey(repositoryKey, ruleKey); if (rule == null) { messages.addWarningText("Rule not found: [repository=" + repositoryKey + ", key=" + ruleKey + "]"); } else { RulePriority priority = null; if (annotation.priority() != null) { priority = RulePriority.fromCheckPriority(annotation.priority()); } profile.activateRule(rule, priority); } } } }