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."); } }
@Override public RulesProfile createProfile(ValidationMessages validation) { validation.addErrorText("Foo"); return RulesProfile.create("Profile with errors", "xoo"); } }
@Override public RulesProfile importProfile(Reader reader, ValidationMessages messages) { messages.addErrorText("error!"); return RulesProfile.create(); } }
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); }
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; }
@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 RulesProfile importProfile(final Reader reader, final ValidationMessages messages) { final RulesProfile profile = profileParser.parse(reader, messages); if (null == profile) { messages.addErrorText(UNABLE_TO_LOAD_DEFAULT_PROFILE); LoggerFactory.getLogger(OCLintProfileImporter.class).error( UNABLE_TO_LOAD_DEFAULT_PROFILE); } return profile; } }
@Override public RulesProfile importProfile(Reader reader, ValidationMessages messages) { final RulesProfile profile = profileParser.parse(reader, messages); if (null == profile) { messages.addErrorText(UNABLE_TO_LOAD_DEFAULT_PROFILE); LOGGER.error(UNABLE_TO_LOAD_DEFAULT_PROFILE); } return profile; } }
private 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."); } }
/** * @param messages * @param e */ private PmdRuleset emptyRuleSetAndLogMessage(ValidationMessages messages, Exception e) { String errorMessage = "The PMD configuration file is not valid"; messages.addErrorText(errorMessage + " : " + e.getMessage()); LOG.error(errorMessage, e); return new PmdRuleset(); } }
@Override public RulesProfile importProfile(Reader reader, ValidationMessages messages) { final RulesProfile profile = profileParser.parse(reader, messages); if (null == profile) { messages.addErrorText(UNABLE_TO_LOAD_DEFAULT_PROFILE); LOGGER.error(UNABLE_TO_LOAD_DEFAULT_PROFILE); } return profile; } }
@Override public RulesProfile importProfile(Reader reader, ValidationMessages messages) { final RulesProfile profile = profileParser.parse(reader, messages); if (null == profile) { messages.addErrorText(UNABLE_TO_LOAD_DEFAULT_PROFILE); LOGGER.error(UNABLE_TO_LOAD_DEFAULT_PROFILE); } return profile; } }
@Override public RulesProfile importProfile(Reader reader, ValidationMessages messages) { final RulesProfile profile = profileParser.parse(reader, messages); if (null == profile) { messages.addErrorText(UNABLE_TO_LOAD_DEFAULT_PROFILE); LOGGER.error(UNABLE_TO_LOAD_DEFAULT_PROFILE); } return profile; } }
/** * @param messages * @param e * @return */ protected final PmdRuleset emptyRuleSetAndLogMessages(ValidationMessages messages, Exception e) { String errorMessage = "The PMD configuration file is not valid"; messages.addErrorText(errorMessage + " : " + e.getMessage()); LOG.error(errorMessage, e); return new PmdRuleset(); }
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."); } }
@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; } }
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 RulesProfile importProfile(Reader findbugsConf, ValidationMessages messages) { RulesProfile profile = RulesProfile.create(); try { XStream xStream = FindBugsFilter.createXStream(); FindBugsFilter filter = (FindBugsFilter) xStream.fromXML(findbugsConf); activateRulesByCategory(profile, filter, messages); activateRulesByCode(profile, filter, messages); activateRulesByPattern(profile, filter, messages); return profile; } catch (Exception e) { String errorMessage = "The Findbugs configuration file is not valid"; messages.addErrorText(errorMessage + " : " + e.getMessage()); LOG.error(errorMessage, e); return profile; } }
/** * Convenience method that parses the given InputStream while handling exceptions and closing resources. * * @param configReader A character stream containing the data of the {@link PmdRuleSet}. * @param messages SonarQube validation messages - allow to inform the enduser about processing problems. * @return An instance of PmdRuleSet. The output may be empty but never null. */ public static PmdRuleSet parse(Reader configReader, ValidationMessages messages) { try (PmdRuleSets parser = new PmdRuleSets(configReader)) { return parser.parse(); } catch (Exception e) { messages.addErrorText(INVALID_INPUT + " : " + e.getMessage()); LOG.error(INVALID_INPUT, e); return new PmdRuleSet(); } }
/** * {@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; }