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); } }
@Test public void nameAndLanguageShouldBeMandatory() { ValidationMessages validation = ValidationMessages.create(); parse("nameAndLanguageShouldBeMandatory.xml", validation); assertThat(validation.getErrors()).hasSize(2); assertThat(validation.getErrors().get(0)).contains(""); }
@Test public void emptyMessages() { ValidationMessages messages = ValidationMessages.create(); assertThat(messages.hasErrors()).isFalse(); assertThat(messages.hasWarnings()).isFalse(); assertThat(messages.hasInfos()).isFalse(); Logger logger = mock(Logger.class); messages.log(logger); verify(logger, never()).error(anyString()); verify(logger, never()).warn(anyString()); verify(logger, never()).info(anyString()); org.slf4j.Logger slf4j = mock(org.slf4j.Logger.class); messages.log(slf4j); verify(slf4j, never()).error(anyString()); verify(slf4j, never()).warn(anyString()); verify(slf4j, never()).info(anyString()); }
@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); }
@Test public void importProfileWithRuleParameters() { ValidationMessages validation = ValidationMessages.create(); RulesProfile profile = parse("importProfileWithRuleParameters.xml", validation); assertThat(validation.hasErrors()).isFalse(); assertThat(validation.hasWarnings()).isFalse(); ActiveRule rule = profile.getActiveRule("checkstyle", "IllegalRegexp"); assertThat(rule.getParameter("format")).isEqualTo("foo"); assertThat(rule.getParameter("message")).isEqualTo("with special characters < > &"); }
@Test public void shouldParseOnlyWantedProfile() { RuleFinder ruleFinder = mock(RuleFinder.class); when(ruleFinder.findByKey(anyString(), anyString())).thenAnswer(new Answer<Rule>() { public Rule answer(InvocationOnMock iom) throws Throwable { return Rule.create((String) iom.getArguments()[0], (String) iom.getArguments()[1], (String) iom.getArguments()[1]); } }); ValidationMessages messages = ValidationMessages.create(); RulesProfile profile = new AnnotationProfileParser(ruleFinder).parse("squid", "Foo way", "java", Lists.<Class>newArrayList(FakeRule.class, RuleOnOtherProfile.class), messages); assertThat(profile.getActiveRule("squid", "fake")).isNotNull(); assertThat(profile.getActiveRule("squid", "other")).isNull(); } }
@Test public void shouldParseAnnotatedClasses() { RuleFinder ruleFinder = mock(RuleFinder.class); when(ruleFinder.findByKey(anyString(), anyString())).thenAnswer(new Answer<Rule>() { public Rule answer(InvocationOnMock iom) throws Throwable { return Rule.create((String) iom.getArguments()[0], (String) iom.getArguments()[1], (String) iom.getArguments()[1]); } }); ValidationMessages messages = ValidationMessages.create(); RulesProfile profile = new AnnotationProfileParser(ruleFinder).parse("squid", "Foo way", "java", Lists.<Class>newArrayList(FakeRule.class), messages); assertThat(profile.getName()).isEqualTo("Foo way"); assertThat(profile.getLanguage()).isEqualTo("java"); assertThat(profile.getActiveRule("squid", "fake").getSeverity()).isEqualTo(RulePriority.BLOCKER); assertThat(messages.hasErrors()).isFalse(); }
@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()); } }
private QProfileResult importXml(QProfileDto profile, String importerKey, Reader xml, DbSession dbSession) { QProfileResult result = new QProfileResult(); ValidationMessages messages = ValidationMessages.create(); ProfileImporter importer = getProfileImporter(importerKey); RulesProfile definition = importer.importProfile(xml, messages); List<ActiveRuleChange> changes = importProfile(profile, definition, dbSession); result.addChanges(changes); processValidationMessages(messages, result); return result; }
@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 importProfileWithUnknownRuleParameter() { ValidationMessages validation = ValidationMessages.create(); RulesProfile profile = parse("importProfileWithUnknownRuleParameter.xml", validation); assertThat(validation.getWarnings()).hasSize(1); ActiveRule rule = profile.getActiveRule("checkstyle", "IllegalRegexp"); assertThat(rule.getParameter("unknown")).isNull(); }
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); } }
private static ListMultimap<String, RulesProfile> profilesByLanguage(ProfileDefinition[] profileDefinitions) { ListMultimap<String, RulesProfile> byLang = ArrayListMultimap.create(); for (ProfileDefinition definition : profileDefinitions) { ValidationMessages validation = ValidationMessages.create(); RulesProfile profile = definition.createProfile(validation); if (profile != null && !validation.hasErrors()) { byLang.put(StringUtils.lowerCase(profile.getLanguage()), profile); } } return byLang; }
@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 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(); } }
@Override public void define(Context context) { LOGGER.info("Creating SwiftLint Profile"); NewBuiltInQualityProfile nbiqp = context.createBuiltInQualityProfile(SwiftLintRulesDefinition.REPOSITORY_KEY, Swift.KEY); try(Reader config = new InputStreamReader(getClass().getResourceAsStream(SwiftLintProfile.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 SwiftLint Profile",ex); } nbiqp.done(); } }
@Override public void define(Context context) { LOGGER.info("Creating OCLint Profile"); NewBuiltInQualityProfile nbiqp = context.createBuiltInQualityProfile(OCLintRulesDefinition.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 OCLint Profile",ex); } nbiqp.done(); } }
private QProfileResult importXml(QProfileDto profile, String importerKey, Reader xml, DbSession dbSession) { QProfileResult result = new QProfileResult(); ValidationMessages messages = ValidationMessages.create(); ProfileImporter importer = getProfileImporter(importerKey); RulesProfile definition = importer.importProfile(xml, messages); List<ActiveRuleChange> changes = importProfile(profile, definition, dbSession); result.addChanges(changes); processValidationMessages(messages, result); return result; }
@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); }
@Test public void should_create_sonar_way_profile() { ValidationMessages validation = ValidationMessages.create(); BuiltInQualityProfilesDefinition.Context context = new BuiltInQualityProfilesDefinition.Context(); new SonarWayProfile().define(context); assertThat(context.profilesByLanguageAndName()).hasSize(1); BuiltInQualityProfilesDefinition.BuiltInQualityProfile profile = context.profile("go", "Sonar way"); assertThat(profile.language()).isEqualTo("go"); assertThat(profile.name()).isEqualTo("Sonar way"); assertThat(profile.rules()).extracting("repoKey").containsOnly(GoRulesDefinition.REPOSITORY_KEY); assertThat(validation.hasErrors()).isFalse(); assertThat(profile.rules()).extracting("ruleKey").contains("S2068"); assertThat(profile.rules()).extracting("ruleKey").doesNotContain("S3801"); }