Skip to content

Commit e7fa8a2

Browse files
Refactoring of the rules storing
1 parent 12952f0 commit e7fa8a2

File tree

3 files changed

+56
-12
lines changed

3 files changed

+56
-12
lines changed

src/main/java/fr/cnes/sonar/plugins/icode/languages/ICodeQualityProfiles.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
package fr.cnes.sonar.plugins.icode.languages;
1818

1919
import fr.cnes.sonar.plugins.icode.rules.ICodeRulesDefinition;
20+
import fr.cnes.sonar.plugins.icode.rules.RulesRepository;
21+
2022
import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition;
2123
import org.sonar.api.utils.log.Logger;
2224
import org.sonar.api.utils.log.Loggers;
@@ -35,15 +37,18 @@ public final class ICodeQualityProfiles implements BuiltInQualityProfilesDefinit
3537
/** Display name for the built-in quality profile. **/
3638
private static final String I_CODE_RULES_PROFILE_NAME = "Sonar way";
3739

40+
private List<NewRule> f77Rules = RulesRepository.getInstance().getF77Rules();
41+
private List<NewRule> f90Rules = RulesRepository.getInstance().getF90Rules();
42+
3843
/**
3944
* Allow to create a plugin.
4045
*
4146
* @param context Context of the plugin.
4247
*/
4348
@Override
4449
public void define(final Context context) {
45-
createBuiltInProfile(context, ICodeRulesDefinition.FORTRAN77_REPOSITORY, Fortran77Language.KEY, ICodeRulesDefinition.f77Rules);
46-
createBuiltInProfile(context, ICodeRulesDefinition.FORTRAN90_REPOSITORY, Fortran90Language.KEY, ICodeRulesDefinition.f90Rules);
50+
createBuiltInProfile(context, ICodeRulesDefinition.FORTRAN77_REPOSITORY, Fortran77Language.KEY, f77Rules);
51+
createBuiltInProfile(context, ICodeRulesDefinition.FORTRAN90_REPOSITORY, Fortran90Language.KEY, f90Rules);
4752
}
4853

4954
/**

src/main/java/fr/cnes/sonar/plugins/icode/rules/ICodeRulesDefinition.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import fr.cnes.sonar.plugins.icode.languages.Fortran77Language;
2828
import fr.cnes.sonar.plugins.icode.languages.Fortran90Language;
2929
import fr.cnes.sonar.plugins.icode.settings.ICodePluginProperties;
30+
import fr.cnes.sonar.plugins.icode.rules.RulesRepository;
3031

3132
import java.io.InputStream;
3233
import java.util.ArrayList;
@@ -61,9 +62,6 @@ public class ICodeRulesDefinition implements RulesDefinition {
6162
/** Path to xml file in resources tree (fortran 90 rules). **/
6263
public static final String PATH_TO_F90_RULES_XML = "/rules/icode-f90-rules.xml";
6364

64-
public static List<NewRule> f77Rules;
65-
public static List<NewRule> f90Rules;
66-
6765
/**
6866
* Define i-Code rules in SonarQube thanks to xml configuration files.
6967
*
@@ -95,11 +93,12 @@ protected void createFortranRepository(final Context context, final String langu
9593

9694
if (inputFile == null) {
9795
repository.done();
98-
if (language == FORTRAN77_LANGUAGE) {
99-
ICodeRulesDefinition.f77Rules = rules;
96+
if (language.equals(FORTRAN77_LANGUAGE)) {
97+
RulesRepository.getInstance().setF77Rules(rules);
10098
} else {
101-
ICodeRulesDefinition.f90Rules = rules;
99+
RulesRepository.getInstance().setF90Rules(rules);
102100
}
101+
103102
}
104103

105104
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
@@ -143,11 +142,11 @@ protected void createFortranRepository(final Context context, final String langu
143142
} catch (Exception e) {
144143
LOGGER.error("Error while creating rules.", e);
145144
}
146-
if (language == FORTRAN77_LANGUAGE) {
147-
ICodeRulesDefinition.f77Rules = rules;
145+
if (language.equals(FORTRAN77_LANGUAGE)) {
146+
RulesRepository.getInstance().setF77Rules(rules);
148147
} else {
149-
ICodeRulesDefinition.f90Rules = rules;
150-
}
148+
RulesRepository.getInstance().setF90Rules(rules);
149+
}
151150
}
152151

153152
/**
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package fr.cnes.sonar.plugins.icode.rules;
2+
3+
import java.util.List;
4+
import java.util.ArrayList;
5+
import org.sonar.api.server.rule.RulesDefinition.NewRule;
6+
7+
public class RulesRepository {
8+
private static RulesRepository instance = null;
9+
10+
private List<NewRule> f77Rules;
11+
private List<NewRule> f90Rules;
12+
13+
private RulesRepository() {
14+
this.f77Rules = new ArrayList<>();
15+
this.f90Rules = new ArrayList<>();
16+
}
17+
18+
public static RulesRepository getInstance() {
19+
if (instance == null) {
20+
instance = new RulesRepository();
21+
}
22+
return instance;
23+
}
24+
25+
public List<NewRule> getF77Rules() {
26+
return f77Rules;
27+
}
28+
29+
public List<NewRule> getF90Rules() {
30+
return f90Rules;
31+
}
32+
33+
public void setF77Rules(List<NewRule> f77Rules) {
34+
this.f77Rules = f77Rules;
35+
}
36+
37+
public void setF90Rules(List<NewRule> f90Rules) {
38+
this.f90Rules = f90Rules;
39+
}
40+
}

0 commit comments

Comments
 (0)