private static BuiltInQProfile.Builder updateOrCreateBuilder(String language, @Nullable BuiltInQProfile.Builder existingBuilder, BuiltInQualityProfile builtInProfile, Map<RuleKey, RuleDefinitionDto> rulesByRuleKey) { BuiltInQProfile.Builder builder = createOrReuseBuilder(existingBuilder, language, builtInProfile); builder.setDeclaredDefault(builtInProfile.isDefault()); builtInProfile.rules().forEach(builtInActiveRule -> { RuleKey ruleKey = RuleKey.of(builtInActiveRule.repoKey(), builtInActiveRule.ruleKey()); RuleDefinitionDto ruleDefinition = rulesByRuleKey.get(ruleKey); checkState(ruleDefinition != null, "Rule with key '%s' not found", ruleKey); builder.addRule(builtInActiveRule, ruleDefinition.getId()); }); return builder; }
@Test public void test_built_in_quality_profile() { BuiltInQualityProfilesDefinition.Context context = new BuiltInQualityProfilesDefinition.Context(); underTest.define(context); BuiltInQualityProfile profile = context.profile("xoo", "test BuiltInQualityProfilesDefinition"); assertThat(profile.isDefault()).isFalse(); assertThat(profile.name()).isEqualTo("test BuiltInQualityProfilesDefinition"); assertThat(profile.language()).isEqualTo("xoo"); assertThat(profile.rules()).hasSize(1); BuiltInQualityProfilesDefinition.BuiltInActiveRule activeRule = profile.rule(RuleKey.of("xoo", "HasTag")); assertThat(activeRule.overriddenSeverity()).isEqualTo("BLOCKER"); assertThat(activeRule.overriddenParams()).hasSize(1); assertThat(activeRule.overriddenParam("tag").overriddenValue()).isEqualTo("TODO"); } }
@Test public void bridgeProfileDefinitions() { BuiltInQProfileDefinitionsBridge bridge = new BuiltInQProfileDefinitionsBridge(new Profile1(), new NullProfile(), new ProfileWithError()); BuiltInQualityProfilesDefinition.Context context = new BuiltInQualityProfilesDefinition.Context(); bridge.define(context); assertThat(context.profilesByLanguageAndName()).hasSize(1); assertThat(context.profilesByLanguageAndName().get("xoo")).hasSize(1); BuiltInQualityProfile profile1 = context.profile("xoo", "Profile 1"); assertThat(profile1).isNotNull(); assertThat(profile1.rules()).hasSize(3); BuiltInActiveRule defaultSeverity = profile1.rule(RuleKey.of("repo1", "defaultSeverity")); assertThat(defaultSeverity).isNotNull(); assertThat(defaultSeverity.overriddenSeverity()).isNull(); assertThat(defaultSeverity.overriddenParams()).isEmpty(); assertThat(profile1.rule(RuleKey.of("repo1", "overrideSeverity")).overriddenSeverity()).isEqualTo(Severity.CRITICAL); assertThat(profile1.rule(RuleKey.of("repo1", "overrideParam")).overriddenParams()) .extracting(BuiltInQualityProfilesDefinition.OverriddenParam::key, BuiltInQualityProfilesDefinition.OverriddenParam::overriddenValue).containsOnly(tuple("param", "value")); }
@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"); }
private static BuiltInQProfile.Builder updateOrCreateBuilder(String language, @Nullable BuiltInQProfile.Builder existingBuilder, BuiltInQualityProfile builtInProfile, Map<RuleKey, RuleDefinitionDto> rulesByRuleKey) { BuiltInQProfile.Builder builder = createOrReuseBuilder(existingBuilder, language, builtInProfile); builder.setDeclaredDefault(builtInProfile.isDefault()); builtInProfile.rules().forEach(builtInActiveRule -> { RuleKey ruleKey = RuleKey.of(builtInActiveRule.repoKey(), builtInActiveRule.ruleKey()); RuleDefinitionDto ruleDefinition = rulesByRuleKey.get(ruleKey); checkState(ruleDefinition != null, "Rule with key '%s' not found", ruleKey); builder.addRule(builtInActiveRule, ruleDefinition.getId()); }); return builder; }
@Test public void createProfileWithRules() { Map<String, Map<String, BuiltInQualityProfile>> profiles = define(c -> { NewBuiltInQualityProfile profile = c.createBuiltInQualityProfile("Foo", "xoo"); profile.activateRule("repo", "ruleWithoutParam"); profile.activateRule("repo", "ruleWithSeverity").overrideSeverity("CRITICAL"); profile.activateRule("repo", "ruleWithParam").overrideParam("param", "value"); profile.done(); }); assertThat(profiles).containsOnlyKeys("xoo"); assertThat(profiles.get("xoo")).containsOnlyKeys("Foo"); BuiltInQualityProfile profile = profiles.get("xoo").get("Foo"); assertThat(profile.name()).isEqualTo("Foo"); assertThat(profile.language()).isEqualTo("xoo"); assertThat(profile.isDefault()).isFalse(); assertThat(profile.rules()) .extracting(BuiltInQualityProfilesDefinition.BuiltInActiveRule::repoKey, BuiltInQualityProfilesDefinition.BuiltInActiveRule::ruleKey, BuiltInQualityProfilesDefinition.BuiltInActiveRule::overriddenSeverity, r -> r.overriddenParams().size()) .containsOnly( tuple("repo", "ruleWithoutParam", null, 0), tuple("repo", "ruleWithSeverity", "CRITICAL", 0), tuple("repo", "ruleWithParam", null, 1)); assertThat(profile.rule(RuleKey.of("repo", "ruleWithParam")).overriddenParam("param").key()).isEqualTo("param"); assertThat(profile.rule(RuleKey.of("repo", "ruleWithParam")).overriddenParam("param").overriddenValue()).isEqualTo("value"); }
public BuiltInQProfile create(BuiltInQualityProfilesDefinition.BuiltInQualityProfile api, RuleDefinitionDto... rules) { BuiltInQProfile.Builder builder = new BuiltInQProfile.Builder() .setLanguage(api.language()) .setName(api.name()) .setDeclaredDefault(api.isDefault()); Map<RuleKey, RuleDefinitionDto> rulesByRuleKey = Arrays.stream(rules) .collect(MoreCollectors.uniqueIndex(RuleDefinitionDto::getKey)); api.rules().forEach(rule -> { RuleKey ruleKey = RuleKey.of(rule.repoKey(), rule.ruleKey()); RuleDefinitionDto ruleDefinition = rulesByRuleKey.get(ruleKey); Preconditions.checkState(ruleDefinition != null, "Rule '%s' not found", ruleKey); builder.addRule(rule, ruleDefinition.getId()); }); return builder .build(); } }
private void addPluginProfile(QProfileDto profile, RuleDefinitionDto... dbRules) { BuiltInQualityProfilesDefinition.Context context = new BuiltInQualityProfilesDefinition.Context(); NewBuiltInQualityProfile newQp = context.createBuiltInQualityProfile(profile.getName(), profile.getLanguage()); Arrays.stream(dbRules).forEach(dbRule -> newQp.activateRule(dbRule.getRepositoryKey(), dbRule.getRuleKey()).overrideSeverity(Severity.MAJOR)); newQp.done(); BuiltInQProfile.ActiveRule[] activeRules = toActiveRules(context.profile(profile.getLanguage(), profile.getName()).rules(), dbRules); builtInQProfileRepositoryRule.add(newLanguage(profile.getLanguage()), profile.getName(), false, activeRules); }
private void addPluginProfile(RulesProfileDto dbProfile, RuleDefinitionDto... dbRules) { BuiltInQualityProfilesDefinition.Context context = new BuiltInQualityProfilesDefinition.Context(); NewBuiltInQualityProfile newQp = context.createBuiltInQualityProfile(dbProfile.getName(), dbProfile.getLanguage()); Arrays.stream(dbRules).forEach(dbRule -> newQp.activateRule(dbRule.getRepositoryKey(), dbRule.getRuleKey()).overrideSeverity(Severity.MAJOR)); newQp.done(); List<BuiltInActiveRule> rules = context.profile(dbProfile.getLanguage(), dbProfile.getName()).rules(); BuiltInQProfile.ActiveRule[] activeRules = toActiveRules(rules, dbRules); builtInQProfileRepositoryRule.add(newLanguage(dbProfile.getLanguage()), dbProfile.getName(), false, activeRules); }