diff --git a/src/main/java/fr/greencodeinitiative/java/JavaEcoCodeProfile.java b/src/main/java/fr/greencodeinitiative/java/JavaEcoCodeProfile.java new file mode 100644 index 0000000..9120cc9 --- /dev/null +++ b/src/main/java/fr/greencodeinitiative/java/JavaEcoCodeProfile.java @@ -0,0 +1,23 @@ +package fr.greencodeinitiative.java; + +import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition; +import org.sonarsource.analyzer.commons.BuiltInQualityProfileJsonLoader; + +import static fr.greencodeinitiative.java.JavaRulesDefinition.LANGUAGE; +import static fr.greencodeinitiative.java.JavaRulesDefinition.REPOSITORY_KEY; + +public final class JavaEcoCodeProfile implements BuiltInQualityProfilesDefinition { + static final String PROFILE_NAME = "ecoCode"; + private static final String PROFILE_PATH = JavaEcoCodeProfile.class.getPackageName().replace('.', '/') + "/ecocode_profile.json"; + + @Override + public void define(Context context) { + NewBuiltInQualityProfile ecoCodeProfile = context.createBuiltInQualityProfile(PROFILE_NAME, LANGUAGE); + loadProfile(ecoCodeProfile); + ecoCodeProfile.done(); + } + + void loadProfile(NewBuiltInQualityProfile profile) { + BuiltInQualityProfileJsonLoader.load(profile, REPOSITORY_KEY, PROFILE_PATH); + } +} diff --git a/src/main/java/fr/greencodeinitiative/java/JavaRulesDefinition.java b/src/main/java/fr/greencodeinitiative/java/JavaRulesDefinition.java index 958edc8..f9e03e3 100644 --- a/src/main/java/fr/greencodeinitiative/java/JavaRulesDefinition.java +++ b/src/main/java/fr/greencodeinitiative/java/JavaRulesDefinition.java @@ -31,7 +31,7 @@ public class JavaRulesDefinition implements RulesDefinition { private static final String RESOURCE_BASE_PATH = "io/ecocode/rules/java"; private static final String NAME = "ecoCode"; - private static final String LANGUAGE = "java"; + static final String LANGUAGE = "java"; static final String REPOSITORY_KEY = "ecocode-java"; private final SonarRuntime sonarRuntime; diff --git a/src/main/resources/fr/greencodeinitiative/java/ecocode_profile.json b/src/main/resources/fr/greencodeinitiative/java/ecocode_profile.json new file mode 100644 index 0000000..b44ffce --- /dev/null +++ b/src/main/resources/fr/greencodeinitiative/java/ecocode_profile.json @@ -0,0 +1,20 @@ +{ + "name": "ecoCode", + "ruleKeys": [ + "EC1", + "EC2", + "EC3", + "EC5", + "EC27", + "EC28", + "EC32", + "EC67", + "EC69", + "EC72", + "EC74", + "EC76", + "EC77", + "EC78", + "EC79" + ] +} diff --git a/src/test/java/fr/greencodeinitiative/java/JavaEcoCodeProfileTest.java b/src/test/java/fr/greencodeinitiative/java/JavaEcoCodeProfileTest.java new file mode 100644 index 0000000..63fb78d --- /dev/null +++ b/src/test/java/fr/greencodeinitiative/java/JavaEcoCodeProfileTest.java @@ -0,0 +1,32 @@ +package fr.greencodeinitiative.java; + +import java.util.List; +import java.util.stream.Collectors; + +import org.junit.jupiter.api.Test; +import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition; +import org.sonar.check.Rule; + +import static fr.greencodeinitiative.java.JavaCheckRegistrarTest.getDefinedRules; +import static fr.greencodeinitiative.java.JavaEcoCodeProfile.PROFILE_NAME; +import static fr.greencodeinitiative.java.JavaRulesDefinition.LANGUAGE; +import static org.assertj.core.api.Assertions.assertThat; + +class JavaEcoCodeProfileTest { + @Test + void should_create_ecocode_profile() { + BuiltInQualityProfilesDefinition.Context context = new BuiltInQualityProfilesDefinition.Context(); + + JavaEcoCodeProfile definition = new JavaEcoCodeProfile(); + definition.define(context); + + BuiltInQualityProfilesDefinition.BuiltInQualityProfile profile = context.profile(LANGUAGE, PROFILE_NAME); + + assertThat(profile.language()).isEqualTo(LANGUAGE); + assertThat(profile.name()).isEqualTo(PROFILE_NAME); + List definedRuleIds = getDefinedRules().stream().map(c -> c.getAnnotation(Rule.class).key()).collect(Collectors.toList()); + assertThat(profile.rules()) + .map(BuiltInQualityProfilesDefinition.BuiltInActiveRule::ruleKey) + .containsExactlyInAnyOrderElementsOf(definedRuleIds); + } +}