File tree Expand file tree Collapse file tree 4 files changed +20
-9
lines changed
main/java/fr/greencodeinitiative/java
test/java/fr/greencodeinitiative/java Expand file tree Collapse file tree 4 files changed +20
-9
lines changed Original file line number Diff line number Diff line change 136136 <scope >test</scope >
137137 </dependency >
138138
139+ <dependency >
140+ <groupId >org.reflections</groupId >
141+ <artifactId >reflections</artifactId >
142+ <version >0.10.2</version >
143+ <scope >test</scope >
144+ </dependency >
139145 </dependencies >
140146
141147 <build >
Original file line number Diff line number Diff line change 4747 */
4848@ SonarLintSide
4949public class JavaCheckRegistrar implements CheckRegistrar {
50- private static final List <Class <? extends JavaCheck >> ANNOTATED_RULE_CLASSES = List .of (
50+ static final List <Class <? extends JavaCheck >> ANNOTATED_RULE_CLASSES = List .of (
5151 ArrayCopyCheck .class ,
5252 IncrementCheck .class ,
5353 AvoidUsageOfStaticCollections .class ,
Original file line number Diff line number Diff line change 1717 */
1818package fr .greencodeinitiative .java ;
1919
20+ import java .util .Set ;
21+
2022import org .junit .jupiter .api .Test ;
23+ import org .reflections .Reflections ;
24+ import org .sonar .check .Rule ;
2125import org .sonar .plugins .java .api .CheckRegistrar ;
2226
2327import static org .assertj .core .api .Assertions .assertThat ;
@@ -30,10 +34,14 @@ void checkNumberRules() {
3034
3135 final JavaCheckRegistrar registrar = new JavaCheckRegistrar ();
3236 registrar .register (context );
33-
34- assertThat (context .checkClasses ()).hasSize (15 );
37+ assertThat (context .checkClasses ())
38+ .describedAs ("All implemented rules must be registered into " + JavaCheckRegistrar .class )
39+ .containsExactlyInAnyOrder (getDefinedRules ().toArray (new Class [0 ]));
3540 assertThat (context .testCheckClasses ()).isEmpty ();
36-
3741 }
3842
43+ static Set <Class <?>> getDefinedRules () {
44+ Reflections r = new Reflections (JavaCheckRegistrar .class .getPackageName () + ".checks" );
45+ return r .getTypesAnnotatedWith (Rule .class );
46+ }
3947}
Original file line number Diff line number Diff line change 2828import org .sonar .api .server .rule .RulesDefinition .Rule ;
2929import org .sonar .api .utils .Version ;
3030
31+ import static fr .greencodeinitiative .java .JavaCheckRegistrar .ANNOTATED_RULE_CLASSES ;
3132import static org .assertj .core .api .Assertions .assertThat ;
3233import static org .mockito .Mockito .doReturn ;
3334import static org .mockito .Mockito .mock ;
@@ -36,8 +37,6 @@ class JavaRulesDefinitionTest {
3637
3738 private RulesDefinition .Repository repository ;
3839
39- private int rulesSize ;
40-
4140 @ BeforeEach
4241 void init () {
4342 final SonarRuntime sonarRuntime = mock (SonarRuntime .class );
@@ -46,7 +45,6 @@ void init() {
4645 RulesDefinition .Context context = new RulesDefinition .Context ();
4746 rulesDefinition .define (context );
4847 repository = context .repository (rulesDefinition .repositoryKey ());
49- rulesSize = 15 ;
5048 }
5149
5250 @ Test
@@ -55,12 +53,11 @@ void testMetadata() {
5553 assertThat (repository .name ()).isEqualTo ("ecoCode" );
5654 assertThat (repository .language ()).isEqualTo ("java" );
5755 assertThat (repository .key ()).isEqualTo ("ecocode-java" );
58- assertThat (repository .rules ()).hasSize (rulesSize );
5956 }
6057
6158 @ Test
6259 void testRegistredRules () {
63- assertThat (repository .rules ()).hasSize (rulesSize );
60+ assertThat (repository .rules ()).hasSize (ANNOTATED_RULE_CLASSES . size () );
6461 }
6562
6663 @ Test
You can’t perform that action at this time.
0 commit comments