Refine search
@Override public RulesProfile createProfile(ValidationMessages validation) { validation.addErrorText("Foo"); return RulesProfile.create("Profile with errors", "xoo"); } }
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());
@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); }
@Override public RulesProfile importProfile(Reader reader, ValidationMessages messages) { messages.addWarningText("a warning"); messages.addInfoText("an info"); return RulesProfile.create(); } }
/** * @deprecated replaced by {@link #log(org.sonar.api.utils.log.Logger)} since deprecation of slf4j in 5.1 */ @Deprecated public void log(Logger logger) { for (String error : getErrors()) { logger.error(error); } for (String warning : getWarnings()) { logger.warn(warning); } for (String info : getInfos()) { logger.info(info); } }
public List<RuleDebt> loadRuleDebtsFromXml(String pluginKey) { Reader xmlFileReader = null; try { xmlFileReader = languageModelFinder.createReaderForXMLFile(pluginKey); ValidationMessages validationMessages = ValidationMessages.create(); List<RuleDebt> rules = importer.importXML(xmlFileReader, validationMessages); validationMessages.log(LOG); return rules; } finally { IOUtils.closeQuietly(xmlFileReader); } }
protected RulesProfile createRuleProfile(PmdRuleset pmdRuleset, ValidationMessages messages) { RulesProfile profile = RulesProfile.create(); for (PmdRule pmdRule : pmdRuleset.getPmdRules()) { String ruleClassName = pmdRule.getClazz(); if (PmdConstants.XPATH_CLASS.equals(ruleClassName)) { messages.addWarningText("PMD XPath rule '" + pmdRule.getName() + "' can't be imported automatically. The rule must be created manually through the SonarQube web interface."); } else { String ruleRef = pmdRule.getRef(); if (ruleRef == null) { messages.addWarningText("A PMD rule without 'ref' attribute can't be imported. see '" + ruleClassName + "'"); } else { Rule rule = ruleFinder.find(RuleQuery.create().withRepositoryKey(PmdConstants.REPOSITORY_KEY).withConfigKey(ruleRef)); if (rule != null) { ActiveRule activeRule = profile.activateRule(rule, PmdLevelUtils.fromLevel(pmdRule.getPriority())); setParameters(activeRule, pmdRule, rule, messages); } else { messages.addWarningText("Unable to import unknown PMD rule '" + ruleRef + "'"); } } } } return profile; }
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; }
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); } } } }
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."); } }
RulesProfile profile = RulesProfile.create(); profile.setLanguage(languageKey); rulePriority = RulePriority.valueOfString(rawPriority); profile.activateRule(rule, rulePriority); messages.addErrorText("Failed to read the profile to import: " + e.getMessage());
private static Property processProperty(ValidationMessages validationMessages, SMInputCursor cursor) throws XMLStreamException { SMInputCursor c = cursor.childElementCursor(); String key = null; int value = 0; String textValue = null; while (c.getNext() != null) { String node = c.getLocalName(); if (StringUtils.equals(node, PROPERTY_KEY)) { key = c.collectDescendantText().trim(); } else if (StringUtils.equals(node, PROPERTY_VALUE)) { String s = c.collectDescendantText().trim(); try { Double valueDouble = NumberUtils.createDouble(s); value = valueDouble.intValue(); } catch (NumberFormatException ex) { validationMessages.addErrorText(String.format("Cannot import value '%s' for field %s - Expected a numeric value instead", s, key)); } } else if (StringUtils.equals(node, PROPERTY_TEXT_VALUE)) { textValue = c.collectDescendantText().trim(); textValue = "mn".equals(textValue) ? MINUTE : textValue; } } return new Property(key, value, textValue); }
@Override public void define(Context context) { Profiler profiler = Profiler.create(Loggers.get(getClass())); for (ProfileDefinition definition : definitions) { profiler.start(); ValidationMessages validation = ValidationMessages.create(); RulesProfile profile = definition.createProfile(validation); validation.log(LOGGER); if (profile == null) { profiler.stopDebug(format("Loaded definition %s that return no profile", definition)); } else { if (!validation.hasErrors()) { define(context, profile); } profiler.stopDebug(format("Loaded deprecated profile definition %s for language %s", profile.getName(), profile.getLanguage())); } } }
@Test public void addError() { ValidationMessages messages = ValidationMessages.create(); messages.addErrorText("my error"); assertThat(messages.hasErrors()).isTrue(); assertThat(messages.hasWarnings()).isFalse(); assertThat(messages.hasInfos()).isFalse(); assertThat(messages.getErrors()).hasSize(1); assertThat(messages.getErrors()).contains("my error"); assertThat(messages.toString()).contains("my error"); Logger logger = mock(Logger.class); messages.log(logger); verify(logger, times(1)).error("my error"); verify(logger, never()).warn(anyString()); verify(logger, never()).info(anyString()); org.slf4j.Logger slf4j = mock(org.slf4j.Logger.class); messages.log(slf4j); verify(slf4j, times(1)).error("my error"); verify(slf4j, never()).warn(anyString()); verify(slf4j, never()).info(anyString()); } }
@Override public void define(Context context) { LOGGER.info("Creating FauxPas Profile"); NewBuiltInQualityProfile nbiqp = context.createBuiltInQualityProfile(FauxPasRulesDefinition.REPOSITORY_KEY, ObjectiveC.KEY); try(Reader config = new InputStreamReader(getClass().getResourceAsStream(OCLintProfile.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 FauxPas Profile",ex); } nbiqp.done(); } }
@Test public void should_create_perlcritic_profile() { ValidationMessages validation = ValidationMessages.create(); SonarWayProfile definition = new SonarWayProfile(new XMLProfileParser(ruleFinder())); RulesProfile profile = definition.createProfile(validation); assertThat(profile.getLanguage()).isEqualTo(PerlLanguage.KEY); assertThat(profile.getName()).isEqualTo("Sonar way"); assertThat(profile.getActiveRules()).extracting("repositoryKey").containsOnly("PerlCritic", "common-perl"); assertThat(validation.hasErrors()).isFalse(); assertThat(profile.getActiveRules().size()).isGreaterThan(87); }
/** * {@inheritDoc} */ @Override public RulesProfile importProfile(Reader reader, ValidationMessages messages) { RulesProfile profile = RulesProfile.create(); profile.setLanguage(languageKey); SMInputFactory inputFactory = initStax(); try { SMHierarchicCursor cursor = inputFactory.rootElementCursor(reader); SMInputCursor rulesetCursor = cursor.advance().childElementCursor(); parseRules(profile, rulesetCursor); cursor.getStreamReader().closeCompletely(); } catch (XMLStreamException e) { messages.addErrorText("Failed to read the profile to import: " + e.getMessage()); } return profile; }
@CheckForNull private static RuleDebt createRuleDebt(RuleKey ruleKey, String function, @Nullable String coefficient, @Nullable String offset, ValidationMessages validationMessages) { if ("constant_resource".equals(function)) { validationMessages.addWarningText(String.format("Constant/file function is no longer used, technical debt definitions on '%s' are ignored.", ruleKey)); return null; } if ("linear_threshold".equals(function) && coefficient != null) { validationMessages.addWarningText(String.format("Linear with threshold function is no longer used, remediation function of '%s' is replaced by linear.", ruleKey)); return createRuleDebt(ruleKey, LINEAR.name(), coefficient, null, validationMessages); } if (CONSTANT_ISSUE.name().equalsIgnoreCase(function) && coefficient != null && offset == null) { return createRuleDebt(ruleKey, CONSTANT_ISSUE.name(), null, coefficient, validationMessages); } return new RuleDebt().setRuleKey(ruleKey).setFunction(function.toUpperCase()).setCoefficient(coefficient).setOffset(offset); }
@Override public RulesProfile importProfile(Reader reader, ValidationMessages messages) { RulesProfile profile = RulesProfile.create(); try { List<ActiveRule> activeRules = DelphiRulesUtils.importConfiguration(IOUtils.toString(reader), DelphiRulesUtils.getInitialReferential()); profile.setActiveRules(activeRules); } catch (IOException e) { messages.addErrorText(e.getMessage()); } return profile; } }
RulesProfile profile = RulesProfile.create(); for (PmdRule pmdRule : pmdRuleset.getPmdRules()) { if (XPATH_CLASS.equals(pmdRule.getClazz())) { StringBuilder message = new StringBuilder("PMD XPath rule '").append(pmdRule.getName()); message.append("' can't be imported automatically. The rule must be created manually through the Sonar web interface."); messages.addWarningText(message.toString()); StringBuilder message = new StringBuilder("Rule '").append(pmdRule.getClazz()); message.append("' does not have a 'ref' attribute and can't be imported"); messages.addWarningText(message.toString()); } else { Rule rule = ruleFinder.find(RuleQuery.create().withRepositoryKey(PHPMD_REPOSITORY_KEY).withConfigKey(configKey)); StringBuilder message = new StringBuilder("Unable to import unknown PMD rule '"); message.append(configKey).append("' consider adding an extension in sonar extenions directory"); messages.addWarningText(message.toString()); } else { createRule(messages, profile, pmdRule, configKey, rule);