1616 */
1717package fr .cnes .sonar .plugins .icode .rules ;
1818
19+ import org .sonar .api .rule .RuleKey ;
20+ import org .sonar .api .rule .RuleStatus ;
21+ import org .sonar .api .rule .Severity ;
22+ import org .sonar .api .rules .RuleType ;
23+ import org .sonar .api .server .rule .RulesDefinition ;
24+
1925import fr .cnes .sonar .plugins .icode .languages .Fortran77Language ;
2026import fr .cnes .sonar .plugins .icode .languages .Fortran90Language ;
2127import fr .cnes .sonar .plugins .icode .settings .ICodePluginProperties ;
22- import org .sonar .api .server .rule .RulesDefinition ;
23- import org .sonar .api .server .rule .RulesDefinitionXmlLoader ;
2428
2529import java .io .InputStream ;
2630import java .nio .charset .StandardCharsets ;
3034 */
3135public class ICodeRulesDefinition implements RulesDefinition {
3236
37+ public static final String REPOSITORY = "f77-rules" ;
38+ public static final String FORTRAN_LANGUAGE = "f77" ;
39+ public static final RuleKey F77_DATA_ARRAY = RuleKey .of (REPOSITORY , "F77.DATA.Array" );
40+
3341 /** Partial key for repository. **/
3442 private static final String REPO_KEY_SUFFIX = "-rules" ;
3543
@@ -47,32 +55,44 @@ public class ICodeRulesDefinition implements RulesDefinition {
4755 */
4856 @ Override
4957 public void define (final Context context ) {
50- createRepository (context , Fortran77Language .KEY );
51- createRepository (context , Fortran90Language .KEY );
52- }
58+ // createRepository(context, Fortran77Language.KEY);
59+ //createRepository(context, Fortran90Language.KEY);
60+ NewRepository repository = context .createRepository (REPOSITORY , FORTRAN_LANGUAGE ).setName (ICodePluginProperties .ICODE_NAME )
61+
62+ NewRule f77DataArray = repository .createRule (F77_DATA_ARRAY .rule ())
63+ .setName ("F77.DATA.Array" )
64+ .setInternalKey ("*" )
65+ .setHtmlDescription ("Arrays dimension should be declared explicitly. The use of * is tolerated for the last one if justified with a comment." )
66+ .setSeverity (Severity .MAJOR )
67+ .setStatus (RuleStatus .READY )
68+ .setType (RuleType .CODE_SMELL )
69+ .setDebtRemediationFunction (framaErrorRule .debtRemediationFunctions ().constantPerIssue ("30min" ));
5370
54- /**
55- * Create repositories for each language.
56- *
57- * @param context SonarQube context.
58- * @param language Key of the language.
59- */
60- protected void createRepository (final Context context , final String language ) {
61- // Create a repository to put rules inside.
62- final NewRepository repository = context
63- .createRepository (getRepositoryKeyForLanguage (language ), language )
64- .setName (getRepositoryName ());
65-
66- // Get XML file describing rules for language.
67- final InputStream rulesXml = this .getClass ().getResourceAsStream (rulesDefinitionFilePath (language ));
68- // Add rules in repository.
69- if (rulesXml != null ) {
70- final RulesDefinitionXmlLoader rulesLoader = new RulesDefinitionXmlLoader ();
71- rulesLoader .load (repository , rulesXml , StandardCharsets .UTF_8 .name ());
72- }
7371 repository .done ();
7472 }
7573
74+ // /**
75+ // * Create repositories for each language.
76+ // *
77+ // * @param context SonarQube context.
78+ // * @param language Key of the language.
79+ // */
80+ // protected void createRepository(final Context context, final String language) {
81+ // // Create a repository to put rules inside.
82+ // final NewRepository repository = context
83+ // .createRepository(getRepositoryKeyForLanguage(language), language)
84+ // .setName(getRepositoryName());
85+
86+ // // Get XML file describing rules for language.
87+ // final InputStream rulesXml = this.getClass().getResourceAsStream(rulesDefinitionFilePath(language));
88+ // // Add rules in repository.
89+ // if (rulesXml != null) {
90+ // final RulesDefinitionXmlLoader rulesLoader = new RulesDefinitionXmlLoader();
91+ // rulesLoader.load(repository, rulesXml, StandardCharsets.UTF_8.name());
92+ // }
93+ // repository.done();
94+ // }
95+
7696 /**
7797 * Getter for repository key.
7898 *
@@ -83,15 +103,6 @@ public static String getRepositoryKeyForLanguage(final String language) {
83103 return language + REPO_KEY_SUFFIX ;
84104 }
85105
86- /**
87- * Getter for repository name.
88- *
89- * @return A string.
90- */
91- public static String getRepositoryName () {
92- return ICodePluginProperties .ICODE_NAME ;
93- }
94-
95106 /**
96107 * Getter for the path to rules file.
97108 *
0 commit comments