2222import java .io .File ;
2323import java .io .IOException ;
2424import java .nio .file .Files ;
25- import java .util .HashSet ;
2625import java .util .List ;
2726import java .util .Optional ;
28- import java .util .Set ;
2927
3028import org .apache .commons .lang3 .StringUtils ;
3129import org .sonar .api .batch .fs .FileSystem ;
3230import org .sonar .api .batch .fs .InputFile ;
31+ import org .sonar .api .batch .rule .ActiveRules ;
3332import org .sonar .api .batch .sensor .SensorContext ;
3433import org .sonar .api .batch .sensor .issue .internal .DefaultIssueLocation ;
3534import org .sonar .api .rule .RuleKey ;
4544 */
4645public final class CfnNagProcessReports extends AbstractProcessReports {
4746
48- /** The Constant SUPPORTED_RULES. */
49- public static final Set <String > SUPPORTED_RULES = new HashSet <>();
50-
5147 /** The Constant UNDEFINED_FAILURE. */
5248 public static final String UNDEFINED_FAILURE = "FUNDEFINED" ;
5349
@@ -66,180 +62,6 @@ public final class CfnNagProcessReports extends AbstractProcessReports {
6662 /** The file system. */
6763 private final FileSystem fileSystem ;
6864
69- static {
70- SUPPORTED_RULES .add ("F1" );
71- SUPPORTED_RULES .add ("F2" );
72- SUPPORTED_RULES .add ("F3" );
73- SUPPORTED_RULES .add ("F4" );
74- SUPPORTED_RULES .add ("F5" );
75- SUPPORTED_RULES .add ("F6" );
76- SUPPORTED_RULES .add ("F7" );
77- SUPPORTED_RULES .add ("F8" );
78- SUPPORTED_RULES .add ("F9" );
79- SUPPORTED_RULES .add ("F10" );
80- SUPPORTED_RULES .add ("F11" );
81- SUPPORTED_RULES .add ("F12" );
82- SUPPORTED_RULES .add ("F13" );
83- SUPPORTED_RULES .add ("F14" );
84- SUPPORTED_RULES .add ("F15" );
85- SUPPORTED_RULES .add ("F16" );
86- SUPPORTED_RULES .add ("F18" );
87- SUPPORTED_RULES .add ("F19" );
88- SUPPORTED_RULES .add ("F20" );
89- SUPPORTED_RULES .add ("F21" );
90- SUPPORTED_RULES .add ("F22" );
91- SUPPORTED_RULES .add ("F23" );
92- SUPPORTED_RULES .add ("F24" );
93- SUPPORTED_RULES .add ("F25" );
94- SUPPORTED_RULES .add ("F26" );
95- SUPPORTED_RULES .add ("F27" );
96- SUPPORTED_RULES .add ("F28" );
97- SUPPORTED_RULES .add ("F29" );
98- SUPPORTED_RULES .add ("F30" );
99- SUPPORTED_RULES .add ("F31" );
100- SUPPORTED_RULES .add ("F32" );
101- SUPPORTED_RULES .add ("F33" );
102- SUPPORTED_RULES .add ("F34" );
103- SUPPORTED_RULES .add ("F35" );
104- SUPPORTED_RULES .add ("F36" );
105- SUPPORTED_RULES .add ("F37" );
106- SUPPORTED_RULES .add ("F38" );
107- SUPPORTED_RULES .add ("F39" );
108- SUPPORTED_RULES .add ("F40" );
109- SUPPORTED_RULES .add ("F41" );
110- SUPPORTED_RULES .add ("F42" );
111- SUPPORTED_RULES .add ("F43" );
112- SUPPORTED_RULES .add ("F44" );
113- SUPPORTED_RULES .add ("F45" );
114- SUPPORTED_RULES .add ("F46" );
115- SUPPORTED_RULES .add ("F47" );
116- SUPPORTED_RULES .add ("F48" );
117- SUPPORTED_RULES .add ("F49" );
118- SUPPORTED_RULES .add ("F50" );
119- SUPPORTED_RULES .add ("F51" );
120- SUPPORTED_RULES .add ("F52" );
121- SUPPORTED_RULES .add ("F53" );
122- SUPPORTED_RULES .add ("F54" );
123- SUPPORTED_RULES .add ("F55" );
124- SUPPORTED_RULES .add ("F56" );
125- SUPPORTED_RULES .add ("F57" );
126- SUPPORTED_RULES .add ("F58" );
127- SUPPORTED_RULES .add ("F60" );
128- SUPPORTED_RULES .add ("F61" );
129- SUPPORTED_RULES .add ("F62" );
130- SUPPORTED_RULES .add ("F63" );
131- SUPPORTED_RULES .add ("F64" );
132- SUPPORTED_RULES .add ("F65" );
133- SUPPORTED_RULES .add ("F66" );
134- SUPPORTED_RULES .add ("F67" );
135- SUPPORTED_RULES .add ("F68" );
136- SUPPORTED_RULES .add ("F69" );
137- SUPPORTED_RULES .add ("F70" );
138- SUPPORTED_RULES .add ("F71" );
139- SUPPORTED_RULES .add ("F74" );
140- SUPPORTED_RULES .add ("F75" );
141- SUPPORTED_RULES .add ("F76" );
142- SUPPORTED_RULES .add ("F77" );
143- SUPPORTED_RULES .add ("F78" );
144- SUPPORTED_RULES .add ("F79" );
145- SUPPORTED_RULES .add ("F80" );
146-
147- SUPPORTED_RULES .add ("F665" );
148- SUPPORTED_RULES .add ("F1000" );
149- SUPPORTED_RULES .add ("F2000" );
150-
151- SUPPORTED_RULES .add ("W1" );
152- SUPPORTED_RULES .add ("W2" );
153- SUPPORTED_RULES .add ("W5" );
154- SUPPORTED_RULES .add ("W9" );
155- SUPPORTED_RULES .add ("W10" );
156- SUPPORTED_RULES .add ("W11" );
157- SUPPORTED_RULES .add ("W12" );
158- SUPPORTED_RULES .add ("W13" );
159- SUPPORTED_RULES .add ("W14" );
160- SUPPORTED_RULES .add ("W15" );
161- SUPPORTED_RULES .add ("W16" );
162- SUPPORTED_RULES .add ("W17" );
163- SUPPORTED_RULES .add ("W18" );
164- SUPPORTED_RULES .add ("W19" );
165- SUPPORTED_RULES .add ("W20" );
166- SUPPORTED_RULES .add ("W21" );
167- SUPPORTED_RULES .add ("W22" );
168- SUPPORTED_RULES .add ("W23" );
169- SUPPORTED_RULES .add ("W24" );
170- SUPPORTED_RULES .add ("W26" );
171- SUPPORTED_RULES .add ("W27" );
172- SUPPORTED_RULES .add ("W28" );
173- SUPPORTED_RULES .add ("W29" );
174- SUPPORTED_RULES .add ("W31" );
175- SUPPORTED_RULES .add ("W32" );
176- SUPPORTED_RULES .add ("W33" );
177- SUPPORTED_RULES .add ("W34" );
178- SUPPORTED_RULES .add ("W35" );
179- SUPPORTED_RULES .add ("W36" );
180- SUPPORTED_RULES .add ("W37" );
181- SUPPORTED_RULES .add ("W38" );
182- SUPPORTED_RULES .add ("W39" );
183- SUPPORTED_RULES .add ("W40" );
184- SUPPORTED_RULES .add ("W41" );
185- SUPPORTED_RULES .add ("W42" );
186- SUPPORTED_RULES .add ("W43" );
187- SUPPORTED_RULES .add ("W44" );
188- SUPPORTED_RULES .add ("W45" );
189- SUPPORTED_RULES .add ("W46" );
190- SUPPORTED_RULES .add ("W47" );
191- SUPPORTED_RULES .add ("W48" );
192- SUPPORTED_RULES .add ("W49" );
193- SUPPORTED_RULES .add ("W50" );
194- SUPPORTED_RULES .add ("W51" );
195- SUPPORTED_RULES .add ("W52" );
196- SUPPORTED_RULES .add ("W53" );
197- SUPPORTED_RULES .add ("W54" );
198- SUPPORTED_RULES .add ("W55" );
199- SUPPORTED_RULES .add ("W56" );
200- SUPPORTED_RULES .add ("W57" );
201- SUPPORTED_RULES .add ("W58" );
202- SUPPORTED_RULES .add ("W59" );
203- SUPPORTED_RULES .add ("W60" );
204- SUPPORTED_RULES .add ("W61" );
205- SUPPORTED_RULES .add ("W62" );
206- SUPPORTED_RULES .add ("W63" );
207- SUPPORTED_RULES .add ("W64" );
208- SUPPORTED_RULES .add ("W65" );
209- SUPPORTED_RULES .add ("W66" );
210- SUPPORTED_RULES .add ("W67" );
211- SUPPORTED_RULES .add ("W68" );
212- SUPPORTED_RULES .add ("W69" );
213- SUPPORTED_RULES .add ("W70" );
214- SUPPORTED_RULES .add ("W71" );
215- SUPPORTED_RULES .add ("W72" );
216- SUPPORTED_RULES .add ("W73" );
217- SUPPORTED_RULES .add ("W74" );
218- SUPPORTED_RULES .add ("W75" );
219- SUPPORTED_RULES .add ("W76" );
220- SUPPORTED_RULES .add ("W77" );
221- SUPPORTED_RULES .add ("W78" );
222- SUPPORTED_RULES .add ("W79" );
223- SUPPORTED_RULES .add ("W80" );
224- SUPPORTED_RULES .add ("W81" );
225- SUPPORTED_RULES .add ("W82" );
226- SUPPORTED_RULES .add ("W83" );
227- SUPPORTED_RULES .add ("W84" );
228- SUPPORTED_RULES .add ("W85" );
229- SUPPORTED_RULES .add ("W86" );
230- SUPPORTED_RULES .add ("W87" );
231- SUPPORTED_RULES .add ("W88" );
232- SUPPORTED_RULES .add ("W89" );
233- SUPPORTED_RULES .add ("W90" );
234- SUPPORTED_RULES .add ("W91" );
235- SUPPORTED_RULES .add ("W92" );
236-
237- SUPPORTED_RULES .add ("W1200" );
238- SUPPORTED_RULES .add ("W1201" );
239-
240- SUPPORTED_RULES .add (UNDEFINED_FAILURE );
241- SUPPORTED_RULES .add (UNDEFINED_WARNING );
242- }
24365
24466 /**
24567 * Instantiates a new cfn nag process reports.
@@ -254,16 +76,6 @@ public CfnNagProcessReports(final FileSystem fileSystem, final PathResolver path
25476 this .pathResolver = pathResolver ;
25577 }
25678
257- /**
258- * Checks for rule.
259- *
260- * @param id the id
261- * @return true, if successful
262- */
263- public static boolean hasRule (final String id ) {
264- return SUPPORTED_RULES .contains (id );
265- }
266-
26779 /**
26880 * Process cfn nag report.
26981 *
@@ -329,30 +141,32 @@ private void handleCfnNagScanReports(final SensorContext context, final String r
329141 */
330142 private static void addIssue (final SensorContext context , final CfnNagViolation violation ,
331143 final InputFile templateInputFile ) {
144+ final ActiveRules activeRules = context .activeRules ();
145+
332146 if (templateInputFile != null ) {
333147
334148 if (violation .getLineNumbers ().isEmpty ()) {
335- context .newIssue ().forRule (RuleKey .of ("cfn-" + templateInputFile .language (), findRuleId (violation )))
149+ context .newIssue ().forRule (RuleKey .of ("cfn-" + templateInputFile .language (), findRuleId (activeRules , violation )))
336150 .at (new DefaultIssueLocation ().on (templateInputFile ).message (violation .getMessage ())).save ();
337151 } else {
338152 final List <Integer > lineNumbers = violation .getLineNumbers ();
339153 for (final Integer line : lineNumbers ) {
340154 if (line != null && line >= 0 ) {
341155 context .newIssue ()
342- .forRule (RuleKey .of ("cfn-" + templateInputFile .language (), findRuleId (violation )))
156+ .forRule (RuleKey .of ("cfn-" + templateInputFile .language (), findRuleId (activeRules , violation )))
343157 .at (new DefaultIssueLocation ().on (templateInputFile ).message (violation .getMessage ())
344158 .at (templateInputFile .selectLine (line )))
345159 .save ();
346160 } else {
347161 context .newIssue ()
348- .forRule (RuleKey .of ("cfn-" + templateInputFile .language (), findRuleId (violation )))
162+ .forRule (RuleKey .of ("cfn-" + templateInputFile .language (), findRuleId (activeRules , violation )))
349163 .at (new DefaultIssueLocation ().on (templateInputFile ).message (violation .getMessage ()))
350164 .save ();
351165 }
352166 }
353167 }
354168 } else {
355- context .newIssue ().forRule (RuleKey .of ("cfn-yaml" , findRuleId (violation )))
169+ context .newIssue ().forRule (RuleKey .of ("cfn-yaml" , findRuleId (activeRules , violation )))
356170 .at (new DefaultIssueLocation ().on (context .project ()).message (violation .getMessage ())).save ();
357171 }
358172 }
@@ -363,8 +177,11 @@ private static void addIssue(final SensorContext context, final CfnNagViolation
363177 * @param violation the violation
364178 * @return the string
365179 */
366- private static String findRuleId (final CfnNagViolation violation ) {
367- if (hasRule (violation .getId ())) {
180+ private static String findRuleId (final ActiveRules activeRules , final CfnNagViolation violation ) {
181+ RuleKey ruleKeyYaml = RuleKey .of ("cfn-yaml" , violation .getId ());
182+ RuleKey ruleKeyJson = RuleKey .of ("cfn-json" , violation .getId ());
183+
184+ if (activeRules .find (ruleKeyYaml ) != null || activeRules .find (ruleKeyJson ) != null ) {
368185 return violation .getId ();
369186 } else {
370187 if (violation .getId ().startsWith ("W" )) {
0 commit comments