@codacy/tools-unsupported-tools 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,4890 @@
1
+ [
2
+ {
3
+ "id": "CodeNarc_AbcMetric",
4
+ "category": "Complexity",
5
+ "severityLevel": "Warning",
6
+ "title": "Enforce ABC Metric Thresholds",
7
+ "enabled": true,
8
+ "languages": ["Groovy"],
9
+ "parameters": [
10
+ {
11
+ "name": "ignoreMethodNames",
12
+ "default": "null",
13
+ "description": "ignoreMethodNames"
14
+ },
15
+ {
16
+ "name": "maxClassAbcScore",
17
+ "default": "0",
18
+ "description": "maxClassAbcScore"
19
+ },
20
+ {
21
+ "name": "maxClassAverageMethodAbcScore",
22
+ "default": "60",
23
+ "description": "maxClassAverageMethodAbcScore"
24
+ },
25
+ {
26
+ "name": "maxMethodAbcScore",
27
+ "default": "60",
28
+ "description": "maxMethodAbcScore"
29
+ }
30
+ ]
31
+ },
32
+ {
33
+ "id": "CodeNarc_AbstractClassName",
34
+ "category": "CodeStyle",
35
+ "severityLevel": "Info",
36
+ "title": "Enforce Abstract Class Name Pattern",
37
+ "enabled": true,
38
+ "languages": ["Groovy"],
39
+ "parameters": [
40
+ {
41
+ "name": "regex",
42
+ "default": "null",
43
+ "description": "regex"
44
+ }
45
+ ]
46
+ },
47
+ {
48
+ "id": "CodeNarc_AbstractClassWithoutAbstractMethod",
49
+ "category": "BestPractice",
50
+ "severityLevel": "Warning",
51
+ "title": "Avoid Abstract Class Without Abstract Method",
52
+ "enabled": true,
53
+ "languages": ["Groovy"],
54
+ "parameters": []
55
+ },
56
+ {
57
+ "id": "CodeNarc_AbstractClassWithPublicConstructor",
58
+ "category": "BestPractice",
59
+ "severityLevel": "Info",
60
+ "title": "Avoid Public Constructor in Abstract Class",
61
+ "enabled": true,
62
+ "languages": ["Groovy"],
63
+ "parameters": []
64
+ },
65
+ {
66
+ "id": "CodeNarc_AddEmptyString",
67
+ "category": "Performance",
68
+ "severityLevel": "Info",
69
+ "title": "Avoid Adding Empty String Literals for String Conversion",
70
+ "enabled": true,
71
+ "languages": ["Groovy"],
72
+ "parameters": []
73
+ },
74
+ {
75
+ "id": "CodeNarc_AssertWithinFinallyBlock",
76
+ "category": "ErrorProne",
77
+ "severityLevel": "High",
78
+ "title": "Avoid Assert Statements Within Finally Blocks",
79
+ "enabled": true,
80
+ "languages": ["Groovy"],
81
+ "parameters": []
82
+ },
83
+ {
84
+ "id": "CodeNarc_AssignCollectionSort",
85
+ "category": "ErrorProne",
86
+ "severityLevel": "High",
87
+ "title": "Avoid Assigning Result of Collections.sort()",
88
+ "enabled": true,
89
+ "languages": ["Groovy"],
90
+ "parameters": []
91
+ },
92
+ {
93
+ "id": "CodeNarc_AssignCollectionUnique",
94
+ "category": "ErrorProne",
95
+ "severityLevel": "High",
96
+ "title": "AvoidAssigningResultOfCollectionsUnique",
97
+ "enabled": true,
98
+ "languages": ["Groovy"],
99
+ "parameters": []
100
+ },
101
+ {
102
+ "id": "CodeNarc_AssignmentInConditional",
103
+ "category": "ErrorProne",
104
+ "severityLevel": "High",
105
+ "title": "Avoid Assignment in Conditional Expressions",
106
+ "enabled": true,
107
+ "languages": ["Groovy"],
108
+ "parameters": []
109
+ },
110
+ {
111
+ "id": "CodeNarc_AssignmentToStaticFieldFromInstanceMethod",
112
+ "category": "BestPractice",
113
+ "severityLevel": "Warning",
114
+ "title": "Avoid Assignment to Static Field from Instance Method",
115
+ "enabled": true,
116
+ "languages": ["Groovy"],
117
+ "parameters": []
118
+ },
119
+ {
120
+ "id": "CodeNarc_BigDecimalInstantiation",
121
+ "category": "ErrorProne",
122
+ "severityLevel": "High",
123
+ "title": "Avoid BigDecimal Instantiation with Double",
124
+ "enabled": true,
125
+ "languages": ["Groovy"],
126
+ "parameters": []
127
+ },
128
+ {
129
+ "id": "CodeNarc_BitwiseOperatorInConditional",
130
+ "category": "ErrorProne",
131
+ "severityLevel": "High",
132
+ "title": "Avoid Bitwise Operators in Conditionals",
133
+ "enabled": true,
134
+ "languages": ["Groovy"],
135
+ "parameters": []
136
+ },
137
+ {
138
+ "id": "CodeNarc_BlankLineBeforePackage",
139
+ "category": "CodeStyle",
140
+ "severityLevel": "Info",
141
+ "title": "DisallowBlankLineBeforePackageDeclaration",
142
+ "enabled": true,
143
+ "languages": ["Groovy"],
144
+ "parameters": []
145
+ },
146
+ {
147
+ "id": "CodeNarc_BlockEndsWithBlankLine",
148
+ "category": "CodeStyle",
149
+ "severityLevel": "Info",
150
+ "title": "Avoid Block Ending with Blank Line",
151
+ "enabled": true,
152
+ "languages": ["Groovy"],
153
+ "parameters": []
154
+ },
155
+ {
156
+ "id": "CodeNarc_BlockStartsWithBlankLine",
157
+ "category": "CodeStyle",
158
+ "severityLevel": "Info",
159
+ "title": "AvoidBlockStartingWithBlankLine",
160
+ "enabled": true,
161
+ "languages": ["Groovy"],
162
+ "parameters": []
163
+ },
164
+ {
165
+ "id": "CodeNarc_BooleanGetBoolean",
166
+ "category": "BestPractice",
167
+ "severityLevel": "Warning",
168
+ "title": "Avoid Using Boolean.getBoolean(String)",
169
+ "enabled": true,
170
+ "languages": ["Groovy"],
171
+ "parameters": []
172
+ },
173
+ {
174
+ "id": "CodeNarc_BooleanMethodReturnsNull",
175
+ "category": "ErrorProne",
176
+ "severityLevel": "High",
177
+ "title": "AvoidBooleanMethodReturningNull",
178
+ "enabled": true,
179
+ "languages": ["Groovy"],
180
+ "parameters": []
181
+ },
182
+ {
183
+ "id": "CodeNarc_BracesForClass",
184
+ "category": "CodeStyle",
185
+ "severityLevel": "Info",
186
+ "title": "Enforce Braces Placement for Classes",
187
+ "enabled": true,
188
+ "languages": ["Groovy"],
189
+ "parameters": []
190
+ },
191
+ {
192
+ "id": "CodeNarc_BracesForForLoop",
193
+ "category": "CodeStyle",
194
+ "severityLevel": "Info",
195
+ "title": "Enforce Braces Location for For Loops",
196
+ "enabled": true,
197
+ "languages": ["Groovy"],
198
+ "parameters": [
199
+ {
200
+ "name": "sameLine",
201
+ "default": "true",
202
+ "description": "sameLine"
203
+ }
204
+ ]
205
+ },
206
+ {
207
+ "id": "CodeNarc_BracesForIfElse",
208
+ "category": "CodeStyle",
209
+ "severityLevel": "Info",
210
+ "title": "Enforce Braces Placement for If-Else Statements",
211
+ "enabled": true,
212
+ "languages": ["Groovy"],
213
+ "parameters": [
214
+ {
215
+ "name": "sameLine",
216
+ "default": "true",
217
+ "description": "sameLine"
218
+ },
219
+ {
220
+ "name": "validateElse",
221
+ "default": "false",
222
+ "description": "validateElse"
223
+ }
224
+ ]
225
+ },
226
+ {
227
+ "id": "CodeNarc_BracesForMethod",
228
+ "category": "CodeStyle",
229
+ "severityLevel": "Info",
230
+ "title": "Enforce Opening Brace Position for Methods and Constructors",
231
+ "enabled": true,
232
+ "languages": ["Groovy"],
233
+ "parameters": [
234
+ {
235
+ "name": "allowBraceOnNextLineForMultilineDeclarations",
236
+ "default": "false",
237
+ "description": "allowBraceOnNextLineForMultilineDeclarations"
238
+ },
239
+ {
240
+ "name": "sameLine",
241
+ "default": "true",
242
+ "description": "sameLine"
243
+ }
244
+ ]
245
+ },
246
+ {
247
+ "id": "CodeNarc_BracesForTryCatchFinally",
248
+ "category": "CodeStyle",
249
+ "severityLevel": "Info",
250
+ "title": "Enforce Opening Brace Placement for Try-Catch-Finally",
251
+ "enabled": true,
252
+ "languages": ["Groovy"],
253
+ "parameters": [
254
+ {
255
+ "name": "sameLine",
256
+ "default": "true",
257
+ "description": "sameLine"
258
+ },
259
+ {
260
+ "name": "validateCatch",
261
+ "default": "false",
262
+ "description": "validateCatch"
263
+ },
264
+ {
265
+ "name": "validateFinally",
266
+ "default": "false",
267
+ "description": "validateFinally"
268
+ }
269
+ ]
270
+ },
271
+ {
272
+ "id": "CodeNarc_BrokenNullCheck",
273
+ "category": "ErrorProne",
274
+ "severityLevel": "High",
275
+ "title": "Avoid Broken Null Checks",
276
+ "enabled": true,
277
+ "languages": ["Groovy"],
278
+ "parameters": []
279
+ },
280
+ {
281
+ "id": "CodeNarc_BrokenOddnessCheck",
282
+ "category": "ErrorProne",
283
+ "severityLevel": "Warning",
284
+ "title": "Avoid Using 'x % 2 == 1' to Check Oddness",
285
+ "enabled": true,
286
+ "languages": ["Groovy"],
287
+ "parameters": []
288
+ },
289
+ {
290
+ "id": "CodeNarc_BuilderMethodWithSideEffects",
291
+ "category": "BestPractice",
292
+ "severityLevel": "Warning",
293
+ "title": "Enforce Builder Methods to Return a Value",
294
+ "enabled": true,
295
+ "languages": ["Groovy"],
296
+ "parameters": [
297
+ {
298
+ "name": "methodNameRegex",
299
+ "default": "(create.*|make.*|build.*)",
300
+ "description": "methodNameRegex"
301
+ }
302
+ ]
303
+ },
304
+ {
305
+ "id": "CodeNarc_BusyWait",
306
+ "category": "Performance",
307
+ "severityLevel": "Warning",
308
+ "title": "Avoid Busy Waiting",
309
+ "enabled": true,
310
+ "languages": ["Groovy"],
311
+ "parameters": []
312
+ },
313
+ {
314
+ "id": "CodeNarc_CatchArrayIndexOutOfBoundsException",
315
+ "category": "ErrorProne",
316
+ "severityLevel": "High",
317
+ "title": "Avoid Catching ArrayIndexOutOfBoundsException",
318
+ "enabled": true,
319
+ "languages": ["Groovy"],
320
+ "parameters": []
321
+ },
322
+ {
323
+ "id": "CodeNarc_CatchError",
324
+ "category": "ErrorProne",
325
+ "severityLevel": "High",
326
+ "title": "Avoid Catching Error",
327
+ "enabled": true,
328
+ "languages": ["Groovy"],
329
+ "parameters": []
330
+ },
331
+ {
332
+ "id": "CodeNarc_CatchException",
333
+ "category": "BestPractice",
334
+ "severityLevel": "Warning",
335
+ "title": "Avoid Catching General Exception",
336
+ "enabled": true,
337
+ "languages": ["Groovy"],
338
+ "parameters": []
339
+ },
340
+ {
341
+ "id": "CodeNarc_CatchIllegalMonitorStateException",
342
+ "category": "ErrorProne",
343
+ "severityLevel": "High",
344
+ "title": "Avoid Catching IllegalMonitorStateException",
345
+ "enabled": true,
346
+ "languages": ["Groovy"],
347
+ "parameters": []
348
+ },
349
+ {
350
+ "id": "CodeNarc_CatchIndexOutOfBoundsException",
351
+ "category": "BestPractice",
352
+ "severityLevel": "Warning",
353
+ "title": "Avoid Catching IndexOutOfBoundsException",
354
+ "enabled": true,
355
+ "languages": ["Groovy"],
356
+ "parameters": []
357
+ },
358
+ {
359
+ "id": "CodeNarc_CatchNullPointerException",
360
+ "category": "ErrorProne",
361
+ "severityLevel": "High",
362
+ "title": "Avoid Catching NullPointerException",
363
+ "enabled": true,
364
+ "languages": ["Groovy"],
365
+ "parameters": []
366
+ },
367
+ {
368
+ "id": "CodeNarc_CatchRuntimeException",
369
+ "category": "BestPractice",
370
+ "severityLevel": "Warning",
371
+ "title": "Avoid Catching RuntimeException",
372
+ "enabled": true,
373
+ "languages": ["Groovy"],
374
+ "parameters": []
375
+ },
376
+ {
377
+ "id": "CodeNarc_CatchThrowable",
378
+ "category": "ErrorProne",
379
+ "severityLevel": "High",
380
+ "title": "Avoid Catching Throwable",
381
+ "enabled": true,
382
+ "languages": ["Groovy"],
383
+ "parameters": []
384
+ },
385
+ {
386
+ "id": "CodeNarc_ChainedTest",
387
+ "category": "BestPractice",
388
+ "severityLevel": "Warning",
389
+ "title": "Avoid Chained Tests",
390
+ "enabled": true,
391
+ "languages": ["Groovy"],
392
+ "parameters": [
393
+ {
394
+ "name": "applyToClassNames",
395
+ "default": "*Spec,*Test,*Tests,*TestCase",
396
+ "description": "applyToClassNames"
397
+ }
398
+ ]
399
+ },
400
+ {
401
+ "id": "CodeNarc_ClassEndsWithBlankLine",
402
+ "category": "CodeStyle",
403
+ "severityLevel": "Info",
404
+ "title": "Enforce Class Ends With Blank Line",
405
+ "enabled": true,
406
+ "languages": ["Groovy"],
407
+ "parameters": [
408
+ {
409
+ "name": "blankLineRequired",
410
+ "default": "true",
411
+ "description": "blankLineRequired"
412
+ },
413
+ {
414
+ "name": "ignoreInnerClasses",
415
+ "default": "false",
416
+ "description": "ignoreInnerClasses"
417
+ },
418
+ {
419
+ "name": "ignoreSingleLineClasses",
420
+ "default": "true",
421
+ "description": "ignoreSingleLineClasses"
422
+ }
423
+ ]
424
+ },
425
+ {
426
+ "id": "CodeNarc_ClassForName",
427
+ "category": "Performance",
428
+ "severityLevel": "Warning",
429
+ "title": "Avoid Using Class.forName for Dynamic Class Loading",
430
+ "enabled": true,
431
+ "languages": ["Groovy"],
432
+ "parameters": []
433
+ },
434
+ {
435
+ "id": "CodeNarc_ClassJavadoc",
436
+ "category": "Documentation",
437
+ "severityLevel": "Info",
438
+ "title": "Enforce Class and Interface Javadoc",
439
+ "enabled": true,
440
+ "languages": ["Groovy"],
441
+ "parameters": []
442
+ },
443
+ {
444
+ "id": "CodeNarc_ClassName",
445
+ "category": "CodeStyle",
446
+ "severityLevel": "Info",
447
+ "title": "Enforce ClassName Pattern",
448
+ "enabled": true,
449
+ "languages": ["Groovy"],
450
+ "parameters": [
451
+ {
452
+ "name": "regex",
453
+ "default": "([A-Z]\\w*\\$?)*",
454
+ "description": "regex"
455
+ }
456
+ ]
457
+ },
458
+ {
459
+ "id": "CodeNarc_ClassNameSameAsFilename",
460
+ "category": "CodeStyle",
461
+ "severityLevel": "Info",
462
+ "title": "Enforce Class Name Matches Filename",
463
+ "enabled": true,
464
+ "languages": ["Groovy"],
465
+ "parameters": []
466
+ },
467
+ {
468
+ "id": "CodeNarc_ClassNameSameAsSuperclass",
469
+ "category": "BestPractice",
470
+ "severityLevel": "Warning",
471
+ "title": "Avoid Class Name Same As Superclass",
472
+ "enabled": true,
473
+ "languages": ["Groovy"],
474
+ "parameters": []
475
+ },
476
+ {
477
+ "id": "CodeNarc_ClassNotSerializable",
478
+ "category": "ErrorProne",
479
+ "severityLevel": "High",
480
+ "title": "Enforce Classes to Implement Serializable",
481
+ "enabled": false,
482
+ "languages": ["Groovy"],
483
+ "parameters": [
484
+ {
485
+ "name": "applyToFileNames",
486
+ "default": "Jenkinsfile",
487
+ "description": "applyToFileNames"
488
+ },
489
+ {
490
+ "name": "compilerPhase",
491
+ "default": "4",
492
+ "description": "compilerPhase"
493
+ }
494
+ ],
495
+ "tags": ["jenkins"]
496
+ },
497
+ {
498
+ "id": "CodeNarc_ClassSize",
499
+ "category": "Complexity",
500
+ "severityLevel": "Warning",
501
+ "title": "Enforce Maximum Class Size",
502
+ "enabled": true,
503
+ "languages": ["Groovy"],
504
+ "parameters": [
505
+ {
506
+ "name": "maxLines",
507
+ "default": "1000",
508
+ "description": "maxLines"
509
+ }
510
+ ]
511
+ },
512
+ {
513
+ "id": "CodeNarc_ClassStartsWithBlankLine",
514
+ "category": "CodeStyle",
515
+ "severityLevel": "Info",
516
+ "title": "EnforceClassStartsWithBlankLine",
517
+ "enabled": true,
518
+ "languages": ["Groovy"],
519
+ "parameters": [
520
+ {
521
+ "name": "blankLineRequired",
522
+ "default": "true",
523
+ "description": "blankLineRequired"
524
+ },
525
+ {
526
+ "name": "ignoreInnerClasses",
527
+ "default": "false",
528
+ "description": "ignoreInnerClasses"
529
+ },
530
+ {
531
+ "name": "ignoreSingleLineClasses",
532
+ "default": "true",
533
+ "description": "ignoreSingleLineClasses"
534
+ }
535
+ ]
536
+ },
537
+ {
538
+ "id": "CodeNarc_CloneableWithoutClone",
539
+ "category": "ErrorProne",
540
+ "severityLevel": "High",
541
+ "title": "Implement clone() Method When Implementing Cloneable",
542
+ "enabled": true,
543
+ "languages": ["Groovy"],
544
+ "parameters": []
545
+ },
546
+ {
547
+ "id": "CodeNarc_CloneWithoutCloneable",
548
+ "category": "ErrorProne",
549
+ "severityLevel": "High",
550
+ "title": "Enforce clone() Method Only If Class Implements Cloneable",
551
+ "enabled": true,
552
+ "languages": ["Groovy"],
553
+ "parameters": [
554
+ {
555
+ "name": "compilerPhase",
556
+ "default": "4",
557
+ "description": "compilerPhase"
558
+ }
559
+ ]
560
+ },
561
+ {
562
+ "id": "CodeNarc_CloseWithoutCloseable",
563
+ "category": "BestPractice",
564
+ "severityLevel": "Warning",
565
+ "title": "Enforce Implementation of Closeable for Classes Defining close() Method",
566
+ "enabled": true,
567
+ "languages": ["Groovy"],
568
+ "parameters": []
569
+ },
570
+ {
571
+ "id": "CodeNarc_ClosureAsLastMethodParameter",
572
+ "category": "CodeStyle",
573
+ "severityLevel": "Info",
574
+ "title": "Enforce Closure As Last Method Parameter Outside Parentheses",
575
+ "enabled": true,
576
+ "languages": ["Groovy"],
577
+ "parameters": [
578
+ {
579
+ "name": "ignoreCallsToMethodNames",
580
+ "default": "",
581
+ "description": "ignoreCallsToMethodNames"
582
+ }
583
+ ]
584
+ },
585
+ {
586
+ "id": "CodeNarc_ClosureInGString",
587
+ "category": "ErrorProne",
588
+ "severityLevel": "High",
589
+ "title": "Avoid Using Closures Inside GStrings",
590
+ "enabled": false,
591
+ "languages": ["Groovy"],
592
+ "parameters": [
593
+ {
594
+ "name": "applyToFileNames",
595
+ "default": "Jenkinsfile",
596
+ "description": "applyToFileNames"
597
+ }
598
+ ]
599
+ },
600
+ {
601
+ "id": "CodeNarc_ClosureStatementOnOpeningLineOfMultipleLineClosure",
602
+ "category": "CodeStyle",
603
+ "severityLevel": "Info",
604
+ "title": "Avoid Closure Statement on Opening Line of Multi-line Closure",
605
+ "enabled": true,
606
+ "languages": ["Groovy"],
607
+ "parameters": []
608
+ },
609
+ {
610
+ "id": "CodeNarc_CollectAllIsDeprecated",
611
+ "category": "Compatibility",
612
+ "severityLevel": "Warning",
613
+ "title": "Avoid Deprecated collectAll Method",
614
+ "enabled": true,
615
+ "languages": ["Groovy"],
616
+ "parameters": []
617
+ },
618
+ {
619
+ "id": "CodeNarc_CompareToWithoutComparable",
620
+ "category": "ErrorProne",
621
+ "severityLevel": "High",
622
+ "title": "Enforce Implementation of Comparable Interface When Defining compareTo Method",
623
+ "enabled": true,
624
+ "languages": ["Groovy"],
625
+ "parameters": []
626
+ },
627
+ {
628
+ "id": "CodeNarc_ComparisonOfTwoConstants",
629
+ "category": "ErrorProne",
630
+ "severityLevel": "Warning",
631
+ "title": "Avoid Comparison of Two Constants",
632
+ "enabled": true,
633
+ "languages": ["Groovy"],
634
+ "parameters": []
635
+ },
636
+ {
637
+ "id": "CodeNarc_ComparisonWithSelf",
638
+ "category": "ErrorProne",
639
+ "severityLevel": "High",
640
+ "title": "Avoid Comparison With Self",
641
+ "enabled": true,
642
+ "languages": ["Groovy"],
643
+ "parameters": []
644
+ },
645
+ {
646
+ "id": "CodeNarc_CompileStatic",
647
+ "category": "BestPractice",
648
+ "severityLevel": "Info",
649
+ "title": "Enforce Explicit CompileStatic or CompileDynamic Annotation",
650
+ "enabled": true,
651
+ "languages": ["Groovy"],
652
+ "parameters": []
653
+ },
654
+ {
655
+ "id": "CodeNarc_ConfusingClassNamedException",
656
+ "category": "BestPractice",
657
+ "severityLevel": "Warning",
658
+ "title": "Avoid Confusing Class Names Ending with 'Exception' Without Extending Exception",
659
+ "enabled": true,
660
+ "languages": ["Groovy"],
661
+ "parameters": []
662
+ },
663
+ {
664
+ "id": "CodeNarc_ConfusingMethodName",
665
+ "category": "BestPractice",
666
+ "severityLevel": "Warning",
667
+ "title": "Avoid Confusing Method Names Differing Only by Capitalization",
668
+ "enabled": true,
669
+ "languages": ["Groovy"],
670
+ "parameters": []
671
+ },
672
+ {
673
+ "id": "CodeNarc_ConfusingMultipleReturns",
674
+ "category": "ErrorProne",
675
+ "severityLevel": "Warning",
676
+ "title": "Avoid Confusing Multiple Returns Without Parentheses",
677
+ "enabled": true,
678
+ "languages": ["Groovy"],
679
+ "parameters": []
680
+ },
681
+ {
682
+ "id": "CodeNarc_ConfusingTernary",
683
+ "category": "Comprehensibility",
684
+ "severityLevel": "Info",
685
+ "title": "Avoid Negation in Ternary Condition",
686
+ "enabled": true,
687
+ "languages": ["Groovy"],
688
+ "parameters": []
689
+ },
690
+ {
691
+ "id": "CodeNarc_ConsecutiveBlankLines",
692
+ "category": "Comprehensibility",
693
+ "severityLevel": "Info",
694
+ "title": "Avoid Consecutive Blank Lines",
695
+ "enabled": true,
696
+ "languages": ["Groovy"],
697
+ "parameters": []
698
+ },
699
+ {
700
+ "id": "CodeNarc_ConsecutiveLiteralAppends",
701
+ "category": "Performance",
702
+ "severityLevel": "Info",
703
+ "title": "Avoid Consecutive Literal Appends",
704
+ "enabled": true,
705
+ "languages": ["Groovy"],
706
+ "parameters": []
707
+ },
708
+ {
709
+ "id": "CodeNarc_ConsecutiveStringConcatenation",
710
+ "category": "CodeStyle",
711
+ "severityLevel": "Info",
712
+ "title": "Avoid Consecutive String Literal Concatenation",
713
+ "enabled": true,
714
+ "languages": ["Groovy"],
715
+ "parameters": []
716
+ },
717
+ {
718
+ "id": "CodeNarc_ConstantAssertExpression",
719
+ "category": "ErrorProne",
720
+ "severityLevel": "High",
721
+ "title": "Avoid Constant Assert Expressions",
722
+ "enabled": true,
723
+ "languages": ["Groovy"],
724
+ "parameters": []
725
+ },
726
+ {
727
+ "id": "CodeNarc_ConstantIfExpression",
728
+ "category": "CodeStyle",
729
+ "severityLevel": "Info",
730
+ "title": "Avoid Constant If Expressions",
731
+ "enabled": true,
732
+ "languages": ["Groovy"],
733
+ "parameters": []
734
+ },
735
+ {
736
+ "id": "CodeNarc_ConstantsOnlyInterface",
737
+ "category": "BestPractice",
738
+ "severityLevel": "Info",
739
+ "title": "Avoid Using Interfaces as Constants Containers",
740
+ "enabled": true,
741
+ "languages": ["Groovy"],
742
+ "parameters": []
743
+ },
744
+ {
745
+ "id": "CodeNarc_ConstantTernaryExpression",
746
+ "category": "CodeStyle",
747
+ "severityLevel": "Info",
748
+ "title": "Avoid Constant Ternary Expressions",
749
+ "enabled": true,
750
+ "languages": ["Groovy"],
751
+ "parameters": []
752
+ },
753
+ {
754
+ "id": "CodeNarc_CouldBeElvis",
755
+ "category": "CodeStyle",
756
+ "severityLevel": "Info",
757
+ "title": "Enforce Elvis Operator Usage",
758
+ "enabled": true,
759
+ "languages": ["Groovy"],
760
+ "parameters": []
761
+ },
762
+ {
763
+ "id": "CodeNarc_CouldBeSwitchStatement",
764
+ "category": "CodeStyle",
765
+ "severityLevel": "Info",
766
+ "title": "EnforceUseOfSwitchStatement",
767
+ "enabled": true,
768
+ "languages": ["Groovy"],
769
+ "parameters": [
770
+ {
771
+ "name": "errorMessage",
772
+ "default": "Code could use switch statement",
773
+ "description": "errorMessage"
774
+ }
775
+ ]
776
+ },
777
+ {
778
+ "id": "CodeNarc_CoupledTestCase",
779
+ "category": "BestPractice",
780
+ "severityLevel": "Warning",
781
+ "title": "Avoid Coupled Test Cases",
782
+ "enabled": true,
783
+ "languages": ["Groovy"],
784
+ "parameters": [
785
+ {
786
+ "name": "applyToClassNames",
787
+ "default": "*Spec,*Test,*Tests,*TestCase",
788
+ "description": "applyToClassNames"
789
+ }
790
+ ]
791
+ },
792
+ {
793
+ "id": "CodeNarc_CpsCallFromNonCpsMethod",
794
+ "category": "ErrorProne",
795
+ "severityLevel": "High",
796
+ "title": "Avoid Calling CPS Transformed Methods from Non-CPS Methods",
797
+ "enabled": false,
798
+ "languages": ["Groovy"],
799
+ "parameters": [
800
+ {
801
+ "name": "applyToFileNames",
802
+ "default": "Jenkinsfile",
803
+ "description": "applyToFileNames"
804
+ },
805
+ {
806
+ "name": "compilerPhase",
807
+ "default": "4",
808
+ "description": "compilerPhase"
809
+ },
810
+ {
811
+ "name": "cpsScriptVariableName",
812
+ "default": "script",
813
+ "description": "cpsScriptVariableName"
814
+ }
815
+ ],
816
+ "tags": ["jenkinspipeline"]
817
+ },
818
+ {
819
+ "id": "CodeNarc_CrapMetric",
820
+ "category": "Complexity",
821
+ "severityLevel": "Warning",
822
+ "title": "Enforce CRAP Metric Thresholds",
823
+ "enabled": true,
824
+ "languages": ["Groovy"],
825
+ "parameters": [
826
+ {
827
+ "name": "coberturaXmlFile",
828
+ "default": "null",
829
+ "description": "coberturaXmlFile"
830
+ },
831
+ {
832
+ "name": "crapMetricClassName",
833
+ "default": "org.gmetrics.metric.crap.CrapMetric",
834
+ "description": "crapMetricClassName"
835
+ },
836
+ {
837
+ "name": "ignoreMethodNames",
838
+ "default": "null",
839
+ "description": "ignoreMethodNames"
840
+ }
841
+ ]
842
+ },
843
+ {
844
+ "id": "CodeNarc_CyclomaticComplexity",
845
+ "category": "Complexity",
846
+ "severityLevel": "Warning",
847
+ "title": "Enforce Cyclomatic Complexity Thresholds",
848
+ "enabled": true,
849
+ "languages": ["Groovy"],
850
+ "parameters": [
851
+ {
852
+ "name": "ignoreMethodNames",
853
+ "default": "null",
854
+ "description": "ignoreMethodNames"
855
+ },
856
+ {
857
+ "name": "maxClassAverageMethodComplexity",
858
+ "default": "20",
859
+ "description": "maxClassAverageMethodComplexity"
860
+ },
861
+ {
862
+ "name": "maxClassComplexity",
863
+ "default": "0",
864
+ "description": "maxClassComplexity"
865
+ },
866
+ {
867
+ "name": "maxMethodComplexity",
868
+ "default": "20",
869
+ "description": "maxMethodComplexity"
870
+ }
871
+ ]
872
+ },
873
+ {
874
+ "id": "CodeNarc_DeadCode",
875
+ "category": "UnusedCode",
876
+ "severityLevel": "Warning",
877
+ "title": "Avoid Dead Code",
878
+ "enabled": true,
879
+ "languages": ["Groovy"],
880
+ "parameters": []
881
+ },
882
+ {
883
+ "id": "CodeNarc_DirectConnectionManagement",
884
+ "category": "BestPractice",
885
+ "severityLevel": "High",
886
+ "title": "Avoid Direct Database Connection Management",
887
+ "enabled": true,
888
+ "languages": ["Groovy"],
889
+ "parameters": []
890
+ },
891
+ {
892
+ "id": "CodeNarc_DoubleCheckedLocking",
893
+ "category": "ErrorProne",
894
+ "severityLevel": "High",
895
+ "title": "Avoid Double Checked Locking",
896
+ "enabled": true,
897
+ "languages": ["Groovy"],
898
+ "parameters": []
899
+ },
900
+ {
901
+ "id": "CodeNarc_DoubleNegative",
902
+ "category": "CodeStyle",
903
+ "severityLevel": "Info",
904
+ "title": "Avoid Double Negative Expressions",
905
+ "enabled": true,
906
+ "languages": ["Groovy"],
907
+ "parameters": []
908
+ },
909
+ {
910
+ "id": "CodeNarc_DuplicateCaseStatement",
911
+ "category": "ErrorProne",
912
+ "severityLevel": "High",
913
+ "title": "Avoid Duplicate Case Statements",
914
+ "enabled": true,
915
+ "languages": ["Groovy"],
916
+ "parameters": []
917
+ },
918
+ {
919
+ "id": "CodeNarc_DuplicateImport",
920
+ "category": "CodeStyle",
921
+ "severityLevel": "Info",
922
+ "title": "Avoid Duplicate Import Statements",
923
+ "enabled": true,
924
+ "languages": ["Groovy"],
925
+ "parameters": []
926
+ },
927
+ {
928
+ "id": "CodeNarc_DuplicateListLiteral",
929
+ "category": "BestPractice",
930
+ "severityLevel": "Info",
931
+ "title": "Avoid Duplicate List Literals",
932
+ "enabled": true,
933
+ "languages": ["Groovy"],
934
+ "parameters": [
935
+ {
936
+ "name": "doNotApplyToFilesMatching",
937
+ "default": ".*(Spec|Test|Tests|TestCase)\\.groovy",
938
+ "description": "doNotApplyToFilesMatching"
939
+ }
940
+ ]
941
+ },
942
+ {
943
+ "id": "CodeNarc_DuplicateMapKey",
944
+ "category": "ErrorProne",
945
+ "severityLevel": "High",
946
+ "title": "Avoid Duplicate Map Keys",
947
+ "enabled": true,
948
+ "languages": ["Groovy"],
949
+ "parameters": []
950
+ },
951
+ {
952
+ "id": "CodeNarc_DuplicateMapLiteral",
953
+ "category": "BestPractice",
954
+ "severityLevel": "Warning",
955
+ "title": "Avoid Duplicate Map Literals",
956
+ "enabled": true,
957
+ "languages": ["Groovy"],
958
+ "parameters": [
959
+ {
960
+ "name": "doNotApplyToFilesMatching",
961
+ "default": ".*(Spec|Test|Tests|TestCase)\\.groovy",
962
+ "description": "doNotApplyToFilesMatching"
963
+ }
964
+ ]
965
+ },
966
+ {
967
+ "id": "CodeNarc_DuplicateNumberLiteral",
968
+ "category": "BestPractice",
969
+ "severityLevel": "Warning",
970
+ "title": "Avoid Duplicate Number Literals",
971
+ "enabled": true,
972
+ "languages": ["Groovy"],
973
+ "parameters": [
974
+ {
975
+ "name": "doNotApplyToFilesMatching",
976
+ "default": ".*(Spec|Test|Tests|TestCase)\\.groovy",
977
+ "description": "doNotApplyToFilesMatching"
978
+ },
979
+ {
980
+ "name": "ignoreNumbers",
981
+ "default": "0,1",
982
+ "description": "ignoreNumbers"
983
+ }
984
+ ]
985
+ },
986
+ {
987
+ "id": "CodeNarc_DuplicateSetValue",
988
+ "category": "ErrorProne",
989
+ "severityLevel": "Warning",
990
+ "title": "Avoid Duplicate Values in Set Literals",
991
+ "enabled": true,
992
+ "languages": ["Groovy"],
993
+ "parameters": []
994
+ },
995
+ {
996
+ "id": "CodeNarc_DuplicateStringLiteral",
997
+ "category": "BestPractice",
998
+ "severityLevel": "Warning",
999
+ "title": "Avoid Duplicate String Literals",
1000
+ "enabled": true,
1001
+ "languages": ["Groovy"],
1002
+ "parameters": [
1003
+ {
1004
+ "name": "doNotApplyToFilesMatching",
1005
+ "default": ".*(Spec|Test|Tests|TestCase)\\.groovy",
1006
+ "description": "doNotApplyToFilesMatching"
1007
+ },
1008
+ {
1009
+ "name": "ignoreStrings",
1010
+ "default": "",
1011
+ "description": "ignoreStrings"
1012
+ }
1013
+ ]
1014
+ },
1015
+ {
1016
+ "id": "CodeNarc_ElseBlockBraces",
1017
+ "category": "CodeStyle",
1018
+ "severityLevel": "Info",
1019
+ "title": "Enforce Braces for Else Blocks",
1020
+ "enabled": true,
1021
+ "languages": ["Groovy"],
1022
+ "parameters": [
1023
+ {
1024
+ "name": "bracesRequiredForElseIf",
1025
+ "default": "false",
1026
+ "description": "bracesRequiredForElseIf"
1027
+ }
1028
+ ]
1029
+ },
1030
+ {
1031
+ "id": "CodeNarc_EmptyCatchBlock",
1032
+ "category": "ErrorProne",
1033
+ "severityLevel": "High",
1034
+ "title": "Avoid Empty Catch Blocks",
1035
+ "enabled": true,
1036
+ "languages": ["Groovy"],
1037
+ "parameters": [
1038
+ {
1039
+ "name": "ignoreRegex",
1040
+ "default": "ignore|ignored",
1041
+ "description": "ignoreRegex"
1042
+ }
1043
+ ]
1044
+ },
1045
+ {
1046
+ "id": "CodeNarc_EmptyClass",
1047
+ "category": "CodeStyle",
1048
+ "severityLevel": "Info",
1049
+ "title": "Avoid Empty Classes",
1050
+ "enabled": true,
1051
+ "languages": ["Groovy"],
1052
+ "parameters": []
1053
+ },
1054
+ {
1055
+ "id": "CodeNarc_EmptyElseBlock",
1056
+ "category": "CodeStyle",
1057
+ "severityLevel": "Info",
1058
+ "title": "Avoid Empty Else Blocks",
1059
+ "enabled": true,
1060
+ "languages": ["Groovy"],
1061
+ "parameters": []
1062
+ },
1063
+ {
1064
+ "id": "CodeNarc_EmptyFinallyBlock",
1065
+ "category": "BestPractice",
1066
+ "severityLevel": "Info",
1067
+ "title": "Avoid Empty Finally Blocks",
1068
+ "enabled": true,
1069
+ "languages": ["Groovy"],
1070
+ "parameters": []
1071
+ },
1072
+ {
1073
+ "id": "CodeNarc_EmptyForStatement",
1074
+ "category": "CodeStyle",
1075
+ "severityLevel": "Info",
1076
+ "title": "Avoid Empty For Statements",
1077
+ "enabled": true,
1078
+ "languages": ["Groovy"],
1079
+ "parameters": []
1080
+ },
1081
+ {
1082
+ "id": "CodeNarc_EmptyIfStatement",
1083
+ "category": "ErrorProne",
1084
+ "severityLevel": "Warning",
1085
+ "title": "Avoid Empty If Statements",
1086
+ "enabled": true,
1087
+ "languages": ["Groovy"],
1088
+ "parameters": []
1089
+ },
1090
+ {
1091
+ "id": "CodeNarc_EmptyInstanceInitializer",
1092
+ "category": "CodeStyle",
1093
+ "severityLevel": "Info",
1094
+ "title": "Avoid Empty Instance Initializers",
1095
+ "enabled": true,
1096
+ "languages": ["Groovy"],
1097
+ "parameters": []
1098
+ },
1099
+ {
1100
+ "id": "CodeNarc_EmptyMethod",
1101
+ "category": "BestPractice",
1102
+ "severityLevel": "Warning",
1103
+ "title": "Avoid Empty Methods",
1104
+ "enabled": true,
1105
+ "languages": ["Groovy"],
1106
+ "parameters": []
1107
+ },
1108
+ {
1109
+ "id": "CodeNarc_EmptyMethodInAbstractClass",
1110
+ "category": "BestPractice",
1111
+ "severityLevel": "Warning",
1112
+ "title": "Enforce Abstract Methods Instead of Empty Methods in Abstract Classes",
1113
+ "enabled": true,
1114
+ "languages": ["Groovy"],
1115
+ "parameters": []
1116
+ },
1117
+ {
1118
+ "id": "CodeNarc_EmptyStaticInitializer",
1119
+ "category": "CodeStyle",
1120
+ "severityLevel": "Info",
1121
+ "title": "Avoid Empty Static Initializers",
1122
+ "enabled": true,
1123
+ "languages": ["Groovy"],
1124
+ "parameters": []
1125
+ },
1126
+ {
1127
+ "id": "CodeNarc_EmptySwitchStatement",
1128
+ "category": "CodeStyle",
1129
+ "severityLevel": "Info",
1130
+ "title": "Avoid Empty Switch Statements",
1131
+ "enabled": true,
1132
+ "languages": ["Groovy"],
1133
+ "parameters": []
1134
+ },
1135
+ {
1136
+ "id": "CodeNarc_EmptySynchronizedStatement",
1137
+ "category": "CodeStyle",
1138
+ "severityLevel": "Info",
1139
+ "title": "Avoid Empty Synchronized Statements",
1140
+ "enabled": true,
1141
+ "languages": ["Groovy"],
1142
+ "parameters": []
1143
+ },
1144
+ {
1145
+ "id": "CodeNarc_EmptyTryBlock",
1146
+ "category": "BestPractice",
1147
+ "severityLevel": "Info",
1148
+ "title": "Avoid Empty Try Blocks",
1149
+ "enabled": true,
1150
+ "languages": ["Groovy"],
1151
+ "parameters": []
1152
+ },
1153
+ {
1154
+ "id": "CodeNarc_EmptyWhileStatement",
1155
+ "category": "CodeStyle",
1156
+ "severityLevel": "Info",
1157
+ "title": "Avoid Empty While Statements",
1158
+ "enabled": true,
1159
+ "languages": ["Groovy"],
1160
+ "parameters": []
1161
+ },
1162
+ {
1163
+ "id": "CodeNarc_EnumCustomSerializationIgnored",
1164
+ "category": "ErrorProne",
1165
+ "severityLevel": "Warning",
1166
+ "title": "Avoid Defining Custom Serialization Methods or Fields in Enums",
1167
+ "enabled": true,
1168
+ "languages": ["Groovy"],
1169
+ "parameters": []
1170
+ },
1171
+ {
1172
+ "id": "CodeNarc_EqualsAndHashCode",
1173
+ "category": "ErrorProne",
1174
+ "severityLevel": "High",
1175
+ "title": "Enforce Overriding Both equals() and hashCode() Methods",
1176
+ "enabled": true,
1177
+ "languages": ["Groovy"],
1178
+ "parameters": []
1179
+ },
1180
+ {
1181
+ "id": "CodeNarc_EqualsOverloaded",
1182
+ "category": "ErrorProne",
1183
+ "severityLevel": "High",
1184
+ "title": "Avoid Overloading equals Method",
1185
+ "enabled": true,
1186
+ "languages": ["Groovy"],
1187
+ "parameters": []
1188
+ },
1189
+ {
1190
+ "id": "CodeNarc_ExceptionExtendsError",
1191
+ "category": "ErrorProne",
1192
+ "severityLevel": "High",
1193
+ "title": "Avoid Extending Error",
1194
+ "enabled": true,
1195
+ "languages": ["Groovy"],
1196
+ "parameters": []
1197
+ },
1198
+ {
1199
+ "id": "CodeNarc_ExceptionExtendsThrowable",
1200
+ "category": "ErrorProne",
1201
+ "severityLevel": "High",
1202
+ "title": "Avoid Extending Throwable Directly",
1203
+ "enabled": true,
1204
+ "languages": ["Groovy"],
1205
+ "parameters": []
1206
+ },
1207
+ {
1208
+ "id": "CodeNarc_ExceptionNotThrown",
1209
+ "category": "ErrorProne",
1210
+ "severityLevel": "High",
1211
+ "title": "Enforce Throwing Exception After Construction in Catch Block",
1212
+ "enabled": true,
1213
+ "languages": ["Groovy"],
1214
+ "parameters": []
1215
+ },
1216
+ {
1217
+ "id": "CodeNarc_ExplicitArrayListInstantiation",
1218
+ "category": "CodeStyle",
1219
+ "severityLevel": "Info",
1220
+ "title": "Avoid Explicit ArrayList Instantiation",
1221
+ "enabled": true,
1222
+ "languages": ["Groovy"],
1223
+ "parameters": []
1224
+ },
1225
+ {
1226
+ "id": "CodeNarc_ExplicitCallToAndMethod",
1227
+ "category": "CodeStyle",
1228
+ "severityLevel": "Info",
1229
+ "title": "Avoid Explicit Call to and() Method",
1230
+ "enabled": true,
1231
+ "languages": ["Groovy"],
1232
+ "parameters": [
1233
+ {
1234
+ "name": "ignoreThisReference",
1235
+ "default": "true",
1236
+ "description": "ignoreThisReference"
1237
+ }
1238
+ ]
1239
+ },
1240
+ {
1241
+ "id": "CodeNarc_ExplicitCallToCompareToMethod",
1242
+ "category": "CodeStyle",
1243
+ "severityLevel": "Info",
1244
+ "title": "Avoid Explicit Call to compareTo() Method",
1245
+ "enabled": true,
1246
+ "languages": ["Groovy"],
1247
+ "parameters": [
1248
+ {
1249
+ "name": "ignoreThisReference",
1250
+ "default": "false",
1251
+ "description": "ignoreThisReference"
1252
+ }
1253
+ ]
1254
+ },
1255
+ {
1256
+ "id": "CodeNarc_ExplicitCallToDivMethod",
1257
+ "category": "CodeStyle",
1258
+ "severityLevel": "Info",
1259
+ "title": "Avoid Explicit Call to div() Method",
1260
+ "enabled": true,
1261
+ "languages": ["Groovy"],
1262
+ "parameters": [
1263
+ {
1264
+ "name": "ignoreThisReference",
1265
+ "default": "false",
1266
+ "description": "ignoreThisReference"
1267
+ }
1268
+ ]
1269
+ },
1270
+ {
1271
+ "id": "CodeNarc_ExplicitCallToEqualsMethod",
1272
+ "category": "CodeStyle",
1273
+ "severityLevel": "Info",
1274
+ "title": "Avoid Explicit Call to equals() Method",
1275
+ "enabled": true,
1276
+ "languages": ["Groovy"],
1277
+ "parameters": [
1278
+ {
1279
+ "name": "ignoreThisReference",
1280
+ "default": "false",
1281
+ "description": "ignoreThisReference"
1282
+ }
1283
+ ]
1284
+ },
1285
+ {
1286
+ "id": "CodeNarc_ExplicitCallToGetAtMethod",
1287
+ "category": "CodeStyle",
1288
+ "severityLevel": "Info",
1289
+ "title": "Avoid Explicit Call to getAt Method",
1290
+ "enabled": true,
1291
+ "languages": ["Groovy"],
1292
+ "parameters": [
1293
+ {
1294
+ "name": "ignoreThisReference",
1295
+ "default": "false",
1296
+ "description": "ignoreThisReference"
1297
+ }
1298
+ ]
1299
+ },
1300
+ {
1301
+ "id": "CodeNarc_ExplicitCallToLeftShiftMethod",
1302
+ "category": "CodeStyle",
1303
+ "severityLevel": "Info",
1304
+ "title": "Avoid Explicit Call to leftShift Method",
1305
+ "enabled": true,
1306
+ "languages": ["Groovy"],
1307
+ "parameters": [
1308
+ {
1309
+ "name": "ignoreThisReference",
1310
+ "default": "false",
1311
+ "description": "ignoreThisReference"
1312
+ }
1313
+ ]
1314
+ },
1315
+ {
1316
+ "id": "CodeNarc_ExplicitCallToMinusMethod",
1317
+ "category": "CodeStyle",
1318
+ "severityLevel": "Info",
1319
+ "title": "Avoid Explicit Call to minus() Method",
1320
+ "enabled": true,
1321
+ "languages": ["Groovy"],
1322
+ "parameters": [
1323
+ {
1324
+ "name": "ignoreThisReference",
1325
+ "default": "false",
1326
+ "description": "ignoreThisReference"
1327
+ }
1328
+ ]
1329
+ },
1330
+ {
1331
+ "id": "CodeNarc_ExplicitCallToModMethod",
1332
+ "category": "CodeStyle",
1333
+ "severityLevel": "Info",
1334
+ "title": "Avoid Explicit Call to mod() Method",
1335
+ "enabled": true,
1336
+ "languages": ["Groovy"],
1337
+ "parameters": [
1338
+ {
1339
+ "name": "ignoreThisReference",
1340
+ "default": "false",
1341
+ "description": "ignoreThisReference"
1342
+ }
1343
+ ]
1344
+ },
1345
+ {
1346
+ "id": "CodeNarc_ExplicitCallToMultiplyMethod",
1347
+ "category": "CodeStyle",
1348
+ "severityLevel": "Info",
1349
+ "title": "Avoid Explicit Call to multiply() Method",
1350
+ "enabled": true,
1351
+ "languages": ["Groovy"],
1352
+ "parameters": [
1353
+ {
1354
+ "name": "ignoreThisReference",
1355
+ "default": "false",
1356
+ "description": "ignoreThisReference"
1357
+ }
1358
+ ]
1359
+ },
1360
+ {
1361
+ "id": "CodeNarc_ExplicitCallToOrMethod",
1362
+ "category": "CodeStyle",
1363
+ "severityLevel": "Info",
1364
+ "title": "Avoid Explicit Call to or(Object) Method",
1365
+ "enabled": true,
1366
+ "languages": ["Groovy"],
1367
+ "parameters": [
1368
+ {
1369
+ "name": "ignoreThisReference",
1370
+ "default": "true",
1371
+ "description": "ignoreThisReference"
1372
+ }
1373
+ ]
1374
+ },
1375
+ {
1376
+ "id": "CodeNarc_ExplicitCallToPlusMethod",
1377
+ "category": "CodeStyle",
1378
+ "severityLevel": "Info",
1379
+ "title": "Avoid Explicit Call to plus() Method",
1380
+ "enabled": true,
1381
+ "languages": ["Groovy"],
1382
+ "parameters": [
1383
+ {
1384
+ "name": "ignoreThisReference",
1385
+ "default": "false",
1386
+ "description": "ignoreThisReference"
1387
+ }
1388
+ ]
1389
+ },
1390
+ {
1391
+ "id": "CodeNarc_ExplicitCallToPowerMethod",
1392
+ "category": "CodeStyle",
1393
+ "severityLevel": "Info",
1394
+ "title": "Avoid Explicit Call to Power Method",
1395
+ "enabled": true,
1396
+ "languages": ["Groovy"],
1397
+ "parameters": [
1398
+ {
1399
+ "name": "ignoreThisReference",
1400
+ "default": "false",
1401
+ "description": "ignoreThisReference"
1402
+ }
1403
+ ]
1404
+ },
1405
+ {
1406
+ "id": "CodeNarc_ExplicitCallToPutAtMethod",
1407
+ "category": "BestPractice",
1408
+ "severityLevel": "Info",
1409
+ "title": "Avoid Explicit Call to putAt Method",
1410
+ "enabled": true,
1411
+ "languages": ["Groovy"],
1412
+ "parameters": [
1413
+ {
1414
+ "name": "ignoreThisReference",
1415
+ "default": "false",
1416
+ "description": "ignoreThisReference"
1417
+ }
1418
+ ]
1419
+ },
1420
+ {
1421
+ "id": "CodeNarc_ExplicitCallToRightShiftMethod",
1422
+ "category": "CodeStyle",
1423
+ "severityLevel": "Info",
1424
+ "title": "Avoid Explicit Call to rightShift Method",
1425
+ "enabled": true,
1426
+ "languages": ["Groovy"],
1427
+ "parameters": [
1428
+ {
1429
+ "name": "ignoreThisReference",
1430
+ "default": "false",
1431
+ "description": "ignoreThisReference"
1432
+ }
1433
+ ]
1434
+ },
1435
+ {
1436
+ "id": "CodeNarc_ExplicitCallToXorMethod",
1437
+ "category": "CodeStyle",
1438
+ "severityLevel": "Info",
1439
+ "title": "Avoid Explicit Call to xor() Method",
1440
+ "enabled": true,
1441
+ "languages": ["Groovy"],
1442
+ "parameters": [
1443
+ {
1444
+ "name": "ignoreThisReference",
1445
+ "default": "false",
1446
+ "description": "ignoreThisReference"
1447
+ }
1448
+ ]
1449
+ },
1450
+ {
1451
+ "id": "CodeNarc_ExplicitGarbageCollection",
1452
+ "category": "Performance",
1453
+ "severityLevel": "Warning",
1454
+ "title": "Avoid Explicit Garbage Collection Calls",
1455
+ "enabled": true,
1456
+ "languages": ["Groovy"],
1457
+ "parameters": []
1458
+ },
1459
+ {
1460
+ "id": "CodeNarc_ExplicitHashMapInstantiation",
1461
+ "category": "BestPractice",
1462
+ "severityLevel": "Info",
1463
+ "title": "Avoid Explicit HashMap Instantiation",
1464
+ "enabled": true,
1465
+ "languages": ["Groovy"],
1466
+ "parameters": []
1467
+ },
1468
+ {
1469
+ "id": "CodeNarc_ExplicitHashSetInstantiation",
1470
+ "category": "BestPractice",
1471
+ "severityLevel": "Info",
1472
+ "title": "Avoid Explicit HashSet Instantiation",
1473
+ "enabled": true,
1474
+ "languages": ["Groovy"],
1475
+ "parameters": []
1476
+ },
1477
+ {
1478
+ "id": "CodeNarc_ExplicitLinkedHashMapInstantiation",
1479
+ "category": "CodeStyle",
1480
+ "severityLevel": "Info",
1481
+ "title": "Avoid Explicit LinkedHashMap Instantiation",
1482
+ "enabled": true,
1483
+ "languages": ["Groovy"],
1484
+ "parameters": []
1485
+ },
1486
+ {
1487
+ "id": "CodeNarc_ExplicitLinkedListInstantiation",
1488
+ "category": "BestPractice",
1489
+ "severityLevel": "Info",
1490
+ "title": "Avoid Explicit LinkedList Instantiation",
1491
+ "enabled": true,
1492
+ "languages": ["Groovy"],
1493
+ "parameters": []
1494
+ },
1495
+ {
1496
+ "id": "CodeNarc_ExplicitStackInstantiation",
1497
+ "category": "BestPractice",
1498
+ "severityLevel": "Info",
1499
+ "title": "Avoid Explicit Stack Instantiation Using No-Arg Constructor",
1500
+ "enabled": true,
1501
+ "languages": ["Groovy"],
1502
+ "parameters": []
1503
+ },
1504
+ {
1505
+ "id": "CodeNarc_ExplicitTreeSetInstantiation",
1506
+ "category": "BestPractice",
1507
+ "severityLevel": "Info",
1508
+ "title": "Avoid Explicit TreeSet Instantiation",
1509
+ "enabled": true,
1510
+ "languages": ["Groovy"],
1511
+ "parameters": []
1512
+ },
1513
+ {
1514
+ "id": "CodeNarc_ExpressionInCpsMethodNotSerializable",
1515
+ "category": "ErrorProne",
1516
+ "severityLevel": "High",
1517
+ "title": "Ensure Expressions in CPS Methods are Serializable",
1518
+ "enabled": false,
1519
+ "languages": ["Groovy"],
1520
+ "parameters": [
1521
+ {
1522
+ "name": "applyToFileNames",
1523
+ "default": "Jenkinsfile",
1524
+ "description": "applyToFileNames"
1525
+ },
1526
+ {
1527
+ "name": "compilerPhase",
1528
+ "default": "4",
1529
+ "description": "compilerPhase"
1530
+ }
1531
+ ],
1532
+ "tags": ["jenkins"]
1533
+ },
1534
+ {
1535
+ "id": "CodeNarc_FactoryMethodName",
1536
+ "category": "CodeStyle",
1537
+ "severityLevel": "Info",
1538
+ "title": "Enforce Factory Method Naming Convention",
1539
+ "enabled": true,
1540
+ "languages": ["Groovy"],
1541
+ "parameters": [
1542
+ {
1543
+ "name": "regex",
1544
+ "default": "(build.*|create.*)",
1545
+ "description": "regex"
1546
+ }
1547
+ ]
1548
+ },
1549
+ {
1550
+ "id": "CodeNarc_FieldName",
1551
+ "category": "CodeStyle",
1552
+ "severityLevel": "Info",
1553
+ "title": "Enforce FieldName Conventions",
1554
+ "enabled": true,
1555
+ "languages": ["Groovy"],
1556
+ "parameters": [
1557
+ {
1558
+ "name": "finalRegex",
1559
+ "default": "null",
1560
+ "description": "finalRegex"
1561
+ },
1562
+ {
1563
+ "name": "ignoreFieldNames",
1564
+ "default": "serialVersionUID",
1565
+ "description": "ignoreFieldNames"
1566
+ },
1567
+ {
1568
+ "name": "privateStaticFinalRegex",
1569
+ "default": "null",
1570
+ "description": "privateStaticFinalRegex"
1571
+ },
1572
+ {
1573
+ "name": "regex",
1574
+ "default": "[a-z][a-zA-Z0-9]*",
1575
+ "description": "regex"
1576
+ },
1577
+ {
1578
+ "name": "staticFinalRegex",
1579
+ "default": "[A-Z][A-Z0-9_]*",
1580
+ "description": "staticFinalRegex"
1581
+ },
1582
+ {
1583
+ "name": "staticRegex",
1584
+ "default": "null",
1585
+ "description": "staticRegex"
1586
+ }
1587
+ ]
1588
+ },
1589
+ {
1590
+ "id": "CodeNarc_FieldTypeRequired",
1591
+ "category": "CodeStyle",
1592
+ "severityLevel": "Info",
1593
+ "title": "EnforceExplicitFieldTypeDeclaration",
1594
+ "enabled": true,
1595
+ "languages": ["Groovy"],
1596
+ "parameters": [
1597
+ {
1598
+ "name": "ignoreFieldNames",
1599
+ "default": "null",
1600
+ "description": "ignoreFieldNames"
1601
+ }
1602
+ ]
1603
+ },
1604
+ {
1605
+ "id": "CodeNarc_FileCreateTempFile",
1606
+ "category": "Security",
1607
+ "severityLevel": "High",
1608
+ "title": "Avoid Using File.createTempFile()",
1609
+ "enabled": true,
1610
+ "languages": ["Groovy"],
1611
+ "parameters": [
1612
+ {
1613
+ "name": "doNotApplyToFilesMatching",
1614
+ "default": ".*(Spec|Test|Tests|TestCase)\\.groovy",
1615
+ "description": "doNotApplyToFilesMatching"
1616
+ }
1617
+ ]
1618
+ },
1619
+ {
1620
+ "id": "CodeNarc_FileEndsWithoutNewline",
1621
+ "category": "CodeStyle",
1622
+ "severityLevel": "Info",
1623
+ "title": "Enforce File Ends With Newline",
1624
+ "enabled": true,
1625
+ "languages": ["Groovy"],
1626
+ "parameters": []
1627
+ },
1628
+ {
1629
+ "id": "CodeNarc_FinalClassWithProtectedMember",
1630
+ "category": "BestPractice",
1631
+ "severityLevel": "Warning",
1632
+ "title": "Avoid Protected Members in Final Classes",
1633
+ "enabled": true,
1634
+ "languages": ["Groovy"],
1635
+ "parameters": []
1636
+ },
1637
+ {
1638
+ "id": "CodeNarc_ForbiddenCallInCpsMethod",
1639
+ "category": "ErrorProne",
1640
+ "severityLevel": "High",
1641
+ "title": "Avoid Forbidden Calls in CPS Transformed Methods",
1642
+ "enabled": false,
1643
+ "languages": ["Groovy"],
1644
+ "parameters": [
1645
+ {
1646
+ "name": "applyToFileNames",
1647
+ "default": "Jenkinsfile",
1648
+ "description": "applyToFileNames"
1649
+ },
1650
+ {
1651
+ "name": "compilerPhase",
1652
+ "default": "4",
1653
+ "description": "compilerPhase"
1654
+ }
1655
+ ],
1656
+ "tags": ["jenkins"]
1657
+ },
1658
+ {
1659
+ "id": "CodeNarc_ForLoopShouldBeWhileLoop",
1660
+ "category": "CodeStyle",
1661
+ "severityLevel": "Info",
1662
+ "title": "Simplify For Loop Without Init and Update to While Loop",
1663
+ "enabled": true,
1664
+ "languages": ["Groovy"],
1665
+ "parameters": []
1666
+ },
1667
+ {
1668
+ "id": "CodeNarc_ForStatementBraces",
1669
+ "category": "CodeStyle",
1670
+ "severityLevel": "Info",
1671
+ "title": "EnforceBracesForForStatements",
1672
+ "enabled": true,
1673
+ "languages": ["Groovy"],
1674
+ "parameters": []
1675
+ },
1676
+ {
1677
+ "id": "CodeNarc_GetterMethodCouldBeProperty",
1678
+ "category": "CodeStyle",
1679
+ "severityLevel": "Info",
1680
+ "title": "PreferPropertyOverGetterMethodReturningConstant",
1681
+ "enabled": true,
1682
+ "languages": ["Groovy"],
1683
+ "parameters": [
1684
+ {
1685
+ "name": "ignoreMethodsWithOverrideAnnotation",
1686
+ "default": "false",
1687
+ "description": "ignoreMethodsWithOverrideAnnotation"
1688
+ }
1689
+ ]
1690
+ },
1691
+ {
1692
+ "id": "CodeNarc_GrailsDomainGormMethods",
1693
+ "category": "BestPractice",
1694
+ "severityLevel": "Warning",
1695
+ "title": "Avoid Direct Use of GORM Static or Instance Methods in Domain Classes",
1696
+ "enabled": true,
1697
+ "languages": ["Groovy"],
1698
+ "parameters": [
1699
+ {
1700
+ "name": "compilerPhase",
1701
+ "default": "4",
1702
+ "description": "compilerPhase"
1703
+ }
1704
+ ],
1705
+ "tags": ["grails", "gorm"]
1706
+ },
1707
+ {
1708
+ "id": "CodeNarc_GrailsDomainHasEquals",
1709
+ "category": "BestPractice",
1710
+ "severityLevel": "Warning",
1711
+ "title": "Enforce Redefinition of equals() in Grails Domain Classes",
1712
+ "enabled": true,
1713
+ "languages": ["Groovy"],
1714
+ "parameters": [
1715
+ {
1716
+ "name": "applyToFilesMatching",
1717
+ "default": ".*grails-app/domain/.*",
1718
+ "description": "applyToFilesMatching"
1719
+ }
1720
+ ],
1721
+ "tags": ["grails"]
1722
+ },
1723
+ {
1724
+ "id": "CodeNarc_GrailsDomainHasToString",
1725
+ "category": "BestPractice",
1726
+ "severityLevel": "Warning",
1727
+ "title": "Enforce Grails Domain Classes to Redefine toString()",
1728
+ "enabled": true,
1729
+ "languages": ["Groovy"],
1730
+ "parameters": [
1731
+ {
1732
+ "name": "applyToFilesMatching",
1733
+ "default": ".*grails-app/domain/.*",
1734
+ "description": "applyToFilesMatching"
1735
+ }
1736
+ ],
1737
+ "tags": ["grails"]
1738
+ },
1739
+ {
1740
+ "id": "CodeNarc_GrailsDomainReservedSqlKeywordName",
1741
+ "category": "ErrorProne",
1742
+ "severityLevel": "High",
1743
+ "title": "Avoid Using SQL Reserved Keywords as Grails Domain Class or Field Names",
1744
+ "enabled": true,
1745
+ "languages": ["Groovy"],
1746
+ "parameters": [
1747
+ {
1748
+ "name": "additionalHibernateBasicTypes",
1749
+ "default": "",
1750
+ "description": "additionalHibernateBasicTypes"
1751
+ },
1752
+ {
1753
+ "name": "additionalReservedSqlKeywords",
1754
+ "default": "",
1755
+ "description": "additionalReservedSqlKeywords"
1756
+ },
1757
+ {
1758
+ "name": "applyToFilesMatching",
1759
+ "default": ".*grails-app/domain/.*",
1760
+ "description": "applyToFilesMatching"
1761
+ }
1762
+ ],
1763
+ "tags": ["grails"]
1764
+ },
1765
+ {
1766
+ "id": "CodeNarc_GrailsDomainStringPropertyMaxSize",
1767
+ "category": "ErrorProne",
1768
+ "severityLevel": "High",
1769
+ "title": "Enforce Maximum Size on Grails Domain String Properties",
1770
+ "enabled": true,
1771
+ "languages": ["Groovy"],
1772
+ "parameters": [
1773
+ {
1774
+ "name": "applyToFilesMatching",
1775
+ "default": ".*grails-app/domain/.*",
1776
+ "description": "applyToFilesMatching"
1777
+ }
1778
+ ],
1779
+ "tags": ["grails"]
1780
+ },
1781
+ {
1782
+ "id": "CodeNarc_GrailsDomainWithServiceReference",
1783
+ "category": "BestPractice",
1784
+ "severityLevel": "Warning",
1785
+ "title": "Avoid Service Injection in Grails Domain Classes",
1786
+ "enabled": true,
1787
+ "languages": ["Groovy"],
1788
+ "parameters": [
1789
+ {
1790
+ "name": "applyToFilesMatching",
1791
+ "default": ".*grails-app/domain/.*",
1792
+ "description": "applyToFilesMatching"
1793
+ }
1794
+ ],
1795
+ "tags": ["grails"]
1796
+ },
1797
+ {
1798
+ "id": "CodeNarc_GrailsDuplicateConstraint",
1799
+ "category": "BestPractice",
1800
+ "severityLevel": "Warning",
1801
+ "title": "Avoid Duplicate Constraint Entries in Grails Domain Classes",
1802
+ "enabled": true,
1803
+ "languages": ["Groovy"],
1804
+ "parameters": [
1805
+ {
1806
+ "name": "applyToFilesMatching",
1807
+ "default": ".*grails-app/domain/.*",
1808
+ "description": "applyToFilesMatching"
1809
+ }
1810
+ ],
1811
+ "tags": ["grails"]
1812
+ },
1813
+ {
1814
+ "id": "CodeNarc_GrailsDuplicateMapping",
1815
+ "category": "BestPractice",
1816
+ "severityLevel": "Warning",
1817
+ "title": "Avoid Duplicate Names in Grails Domain Class Mapping",
1818
+ "enabled": true,
1819
+ "languages": ["Groovy"],
1820
+ "parameters": [
1821
+ {
1822
+ "name": "applyToFilesMatching",
1823
+ "default": ".*grails-app/domain/.*",
1824
+ "description": "applyToFilesMatching"
1825
+ }
1826
+ ],
1827
+ "tags": ["grails"]
1828
+ },
1829
+ {
1830
+ "id": "CodeNarc_GrailsMassAssignment",
1831
+ "category": "Security",
1832
+ "severityLevel": "High",
1833
+ "title": "Avoid Unrestricted Mass Assignment in Grails",
1834
+ "enabled": true,
1835
+ "languages": ["Groovy"],
1836
+ "parameters": []
1837
+ },
1838
+ {
1839
+ "id": "CodeNarc_GrailsPublicControllerMethod",
1840
+ "category": "BestPractice",
1841
+ "severityLevel": "Warning",
1842
+ "title": "Avoid Public Methods on Grails Controller Classes",
1843
+ "enabled": true,
1844
+ "languages": ["Groovy"],
1845
+ "parameters": [
1846
+ {
1847
+ "name": "applyToClassNames",
1848
+ "default": "*Controller",
1849
+ "description": "applyToClassNames"
1850
+ },
1851
+ {
1852
+ "name": "applyToFilesMatching",
1853
+ "default": ".*grails-app/controllers/.*",
1854
+ "description": "applyToFilesMatching"
1855
+ },
1856
+ {
1857
+ "name": "ignoreMethodNames",
1858
+ "default": "null",
1859
+ "description": "ignoreMethodNames"
1860
+ }
1861
+ ],
1862
+ "tags": ["grails"]
1863
+ },
1864
+ {
1865
+ "id": "CodeNarc_GrailsServletContextReference",
1866
+ "category": "BestPractice",
1867
+ "severityLevel": "Warning",
1868
+ "title": "Avoid References to servletContext in Grails Controllers and Taglibs",
1869
+ "enabled": true,
1870
+ "languages": ["Groovy"],
1871
+ "parameters": [
1872
+ {
1873
+ "name": "applyToFilesMatching",
1874
+ "default": ".*grails-app/(controllers|taglib)/.*",
1875
+ "description": "applyToFilesMatching"
1876
+ }
1877
+ ],
1878
+ "tags": ["grails"]
1879
+ },
1880
+ {
1881
+ "id": "CodeNarc_GrailsStatelessService",
1882
+ "category": "ErrorProne",
1883
+ "severityLevel": "High",
1884
+ "title": "Avoid Non-Final Fields in Grails Service Classes",
1885
+ "enabled": true,
1886
+ "languages": ["Groovy"],
1887
+ "parameters": [
1888
+ {
1889
+ "name": "applyToClassNames",
1890
+ "default": "*Service",
1891
+ "description": "applyToClassNames"
1892
+ },
1893
+ {
1894
+ "name": "applyToFilesMatching",
1895
+ "default": ".*grails-app/services/.*",
1896
+ "description": "applyToFilesMatching"
1897
+ }
1898
+ ]
1899
+ },
1900
+ {
1901
+ "id": "CodeNarc_GroovyLangImmutable",
1902
+ "category": "Compatibility",
1903
+ "severityLevel": "Warning",
1904
+ "title": "Avoid Deprecated groovy.lang.Immutable Annotation",
1905
+ "enabled": true,
1906
+ "languages": ["Groovy"],
1907
+ "parameters": []
1908
+ },
1909
+ {
1910
+ "id": "CodeNarc_GStringAsMapKey",
1911
+ "category": "ErrorProne",
1912
+ "severityLevel": "High",
1913
+ "title": "Avoid Using GString as Map Key",
1914
+ "enabled": true,
1915
+ "languages": ["Groovy"],
1916
+ "parameters": []
1917
+ },
1918
+ {
1919
+ "id": "CodeNarc_GStringExpressionWithinString",
1920
+ "category": "ErrorProne",
1921
+ "severityLevel": "Warning",
1922
+ "title": "Avoid GString Expressions Within Single-Quoted Strings",
1923
+ "enabled": true,
1924
+ "languages": ["Groovy"],
1925
+ "parameters": []
1926
+ },
1927
+ {
1928
+ "id": "CodeNarc_HardCodedWindowsFileSeparator",
1929
+ "category": "BestPractice",
1930
+ "severityLevel": "Warning",
1931
+ "title": "Avoid Hard-Coded Windows File Separator in File Constructor",
1932
+ "enabled": true,
1933
+ "languages": ["Groovy"],
1934
+ "parameters": []
1935
+ },
1936
+ {
1937
+ "id": "CodeNarc_HardCodedWindowsRootDirectory",
1938
+ "category": "Compatibility",
1939
+ "severityLevel": "Warning",
1940
+ "title": "Avoid Hard-Coded Windows Root Directory Paths",
1941
+ "enabled": true,
1942
+ "languages": ["Groovy"],
1943
+ "parameters": []
1944
+ },
1945
+ {
1946
+ "id": "CodeNarc_HashtableIsObsolete",
1947
+ "category": "BestPractice",
1948
+ "severityLevel": "Warning",
1949
+ "title": "Avoid Using Hashtable Class",
1950
+ "enabled": true,
1951
+ "languages": ["Groovy"],
1952
+ "parameters": []
1953
+ },
1954
+ {
1955
+ "id": "CodeNarc_IfStatementBraces",
1956
+ "category": "CodeStyle",
1957
+ "severityLevel": "Info",
1958
+ "title": "Enforce Braces for If Statements",
1959
+ "enabled": true,
1960
+ "languages": ["Groovy"],
1961
+ "parameters": []
1962
+ },
1963
+ {
1964
+ "id": "CodeNarc_IfStatementCouldBeTernary",
1965
+ "category": "CodeStyle",
1966
+ "severityLevel": "Info",
1967
+ "title": "Convert If Statement to Ternary Expression",
1968
+ "enabled": true,
1969
+ "languages": ["Groovy"],
1970
+ "parameters": [
1971
+ {
1972
+ "name": "checkLastStatementImplicitElse",
1973
+ "default": "true",
1974
+ "description": "checkLastStatementImplicitElse"
1975
+ }
1976
+ ]
1977
+ },
1978
+ {
1979
+ "id": "CodeNarc_IllegalClassMember",
1980
+ "category": "CodeStyle",
1981
+ "severityLevel": "Info",
1982
+ "title": "Enforce Allowed Class Member Modifiers",
1983
+ "enabled": true,
1984
+ "languages": ["Groovy"],
1985
+ "parameters": [
1986
+ {
1987
+ "name": "allowedFieldModifiersString",
1988
+ "default": "null",
1989
+ "description": "allowedFieldModifiersString"
1990
+ },
1991
+ {
1992
+ "name": "allowedMethodModifiersString",
1993
+ "default": "null",
1994
+ "description": "allowedMethodModifiersString"
1995
+ },
1996
+ {
1997
+ "name": "allowedPropertyModifiersString",
1998
+ "default": "null",
1999
+ "description": "allowedPropertyModifiersString"
2000
+ },
2001
+ {
2002
+ "name": "ignoreMethodNames",
2003
+ "default": "null",
2004
+ "description": "ignoreMethodNames"
2005
+ },
2006
+ {
2007
+ "name": "ignoreMethodsWithAnnotationNames",
2008
+ "default": "null",
2009
+ "description": "ignoreMethodsWithAnnotationNames"
2010
+ },
2011
+ {
2012
+ "name": "illegalFieldModifiersString",
2013
+ "default": "null",
2014
+ "description": "illegalFieldModifiersString"
2015
+ },
2016
+ {
2017
+ "name": "illegalMethodModifiersString",
2018
+ "default": "null",
2019
+ "description": "illegalMethodModifiersString"
2020
+ },
2021
+ {
2022
+ "name": "illegalPropertyModifiersString",
2023
+ "default": "null",
2024
+ "description": "illegalPropertyModifiersString"
2025
+ }
2026
+ ]
2027
+ },
2028
+ {
2029
+ "id": "CodeNarc_IllegalClassReference",
2030
+ "category": "BestPractice",
2031
+ "severityLevel": "Warning",
2032
+ "title": "Avoid Illegal Class Reference",
2033
+ "enabled": true,
2034
+ "languages": ["Groovy"],
2035
+ "parameters": [
2036
+ {
2037
+ "name": "classNames",
2038
+ "default": "null",
2039
+ "description": "classNames"
2040
+ }
2041
+ ]
2042
+ },
2043
+ {
2044
+ "id": "CodeNarc_IllegalPackageReference",
2045
+ "category": "Compatibility",
2046
+ "severityLevel": "Warning",
2047
+ "title": "Avoid Illegal Package References",
2048
+ "enabled": true,
2049
+ "languages": ["Groovy"],
2050
+ "parameters": [
2051
+ {
2052
+ "name": "packageNames",
2053
+ "default": "null",
2054
+ "description": "packageNames"
2055
+ }
2056
+ ]
2057
+ },
2058
+ {
2059
+ "id": "CodeNarc_IllegalRegex",
2060
+ "category": "Security",
2061
+ "severityLevel": "High",
2062
+ "title": "Detect Illegal Regular Expressions",
2063
+ "enabled": true,
2064
+ "languages": ["Groovy"],
2065
+ "parameters": []
2066
+ },
2067
+ {
2068
+ "id": "CodeNarc_IllegalString",
2069
+ "category": "BestPractice",
2070
+ "severityLevel": "Warning",
2071
+ "title": "Detect Illegal String Usage",
2072
+ "enabled": true,
2073
+ "languages": ["Groovy"],
2074
+ "parameters": []
2075
+ },
2076
+ {
2077
+ "id": "CodeNarc_IllegalSubclass",
2078
+ "category": "BestPractice",
2079
+ "severityLevel": "Warning",
2080
+ "title": "Disallow Illegal Superclass Subclassing",
2081
+ "enabled": true,
2082
+ "languages": ["Groovy"],
2083
+ "parameters": [
2084
+ {
2085
+ "name": "superclassNames",
2086
+ "default": "null",
2087
+ "description": "superclassNames"
2088
+ }
2089
+ ]
2090
+ },
2091
+ {
2092
+ "id": "CodeNarc_ImplementationAsType",
2093
+ "category": "BestPractice",
2094
+ "severityLevel": "Warning",
2095
+ "title": "Avoid Using Concrete Implementation Classes as Type",
2096
+ "enabled": true,
2097
+ "languages": ["Groovy"],
2098
+ "parameters": []
2099
+ },
2100
+ {
2101
+ "id": "CodeNarc_ImplicitClosureParameter",
2102
+ "category": "Comprehensibility",
2103
+ "severityLevel": "Info",
2104
+ "title": "Avoid Implicit Closure Parameter Usage",
2105
+ "enabled": true,
2106
+ "languages": ["Groovy"],
2107
+ "parameters": [
2108
+ {
2109
+ "name": "allowUsingItAsParameterName",
2110
+ "default": "false",
2111
+ "description": "allowUsingItAsParameterName"
2112
+ }
2113
+ ]
2114
+ },
2115
+ {
2116
+ "id": "CodeNarc_ImplicitReturnStatement",
2117
+ "category": "ErrorProne",
2118
+ "severityLevel": "High",
2119
+ "title": "Enforce Explicit Return Statement",
2120
+ "enabled": true,
2121
+ "languages": ["Groovy"],
2122
+ "parameters": []
2123
+ },
2124
+ {
2125
+ "id": "CodeNarc_ImportFromSamePackage",
2126
+ "category": "CodeStyle",
2127
+ "severityLevel": "Info",
2128
+ "title": "Avoid Importing Classes from the Same Package",
2129
+ "enabled": true,
2130
+ "languages": ["Groovy"],
2131
+ "parameters": []
2132
+ },
2133
+ {
2134
+ "id": "CodeNarc_ImportFromSunPackages",
2135
+ "category": "Compatibility",
2136
+ "severityLevel": "High",
2137
+ "title": "Avoid Importing from sun.* Packages",
2138
+ "enabled": true,
2139
+ "languages": ["Groovy"],
2140
+ "parameters": []
2141
+ },
2142
+ {
2143
+ "id": "CodeNarc_InconsistentPropertyLocking",
2144
+ "category": "ErrorProne",
2145
+ "severityLevel": "High",
2146
+ "title": "Enforce Consistent Property Locking",
2147
+ "enabled": true,
2148
+ "languages": ["Groovy"],
2149
+ "parameters": []
2150
+ },
2151
+ {
2152
+ "id": "CodeNarc_InconsistentPropertySynchronization",
2153
+ "category": "ErrorProne",
2154
+ "severityLevel": "High",
2155
+ "title": "Enforce Consistent Synchronization on Property Getters and Setters",
2156
+ "enabled": true,
2157
+ "languages": ["Groovy"],
2158
+ "parameters": []
2159
+ },
2160
+ {
2161
+ "id": "CodeNarc_Indentation",
2162
+ "category": "CodeStyle",
2163
+ "severityLevel": "Info",
2164
+ "title": "Enforce Indentation Consistency",
2165
+ "enabled": true,
2166
+ "languages": ["Groovy"],
2167
+ "parameters": [
2168
+ {
2169
+ "name": "indentUnderLabel",
2170
+ "default": "false",
2171
+ "description": "indentUnderLabel"
2172
+ },
2173
+ {
2174
+ "name": "spacesPerIndentLevel",
2175
+ "default": "4",
2176
+ "description": "spacesPerIndentLevel"
2177
+ }
2178
+ ]
2179
+ },
2180
+ {
2181
+ "id": "CodeNarc_InsecureRandom",
2182
+ "category": "Security",
2183
+ "severityLevel": "High",
2184
+ "title": "Avoid Insecure Random Number Generation",
2185
+ "enabled": true,
2186
+ "languages": ["Groovy"],
2187
+ "parameters": [
2188
+ {
2189
+ "name": "doNotApplyToFilesMatching",
2190
+ "default": ".*(Spec|Test|Tests|TestCase)\\.groovy",
2191
+ "description": "doNotApplyToFilesMatching"
2192
+ }
2193
+ ]
2194
+ },
2195
+ {
2196
+ "id": "CodeNarc_Instanceof",
2197
+ "category": "BestPractice",
2198
+ "severityLevel": "Warning",
2199
+ "title": "Avoid Using instanceof Operator",
2200
+ "enabled": true,
2201
+ "languages": ["Groovy"],
2202
+ "parameters": [
2203
+ {
2204
+ "name": "doNotApplyToFilesMatching",
2205
+ "default": ".*(Spec|Test|Tests|TestCase)\\.groovy",
2206
+ "description": "doNotApplyToFilesMatching"
2207
+ },
2208
+ {
2209
+ "name": "ignoreTypeNames",
2210
+ "default": "*Exception",
2211
+ "description": "ignoreTypeNames"
2212
+ }
2213
+ ]
2214
+ },
2215
+ {
2216
+ "id": "CodeNarc_IntegerGetInteger",
2217
+ "category": "BestPractice",
2218
+ "severityLevel": "Warning",
2219
+ "title": "Avoid Using Integer.getInteger for Parsing",
2220
+ "enabled": true,
2221
+ "languages": ["Groovy"],
2222
+ "parameters": []
2223
+ },
2224
+ {
2225
+ "id": "CodeNarc_InterfaceName",
2226
+ "category": "CodeStyle",
2227
+ "severityLevel": "Info",
2228
+ "title": "Enforce Interface Name Pattern",
2229
+ "enabled": true,
2230
+ "languages": ["Groovy"],
2231
+ "parameters": [
2232
+ {
2233
+ "name": "regex",
2234
+ "default": "null",
2235
+ "description": "regex"
2236
+ }
2237
+ ]
2238
+ },
2239
+ {
2240
+ "id": "CodeNarc_InterfaceNameSameAsSuperInterface",
2241
+ "category": "Comprehensibility",
2242
+ "severityLevel": "Info",
2243
+ "title": "Avoid Interface Name Same As Super Interface",
2244
+ "enabled": true,
2245
+ "languages": ["Groovy"],
2246
+ "parameters": []
2247
+ },
2248
+ {
2249
+ "id": "CodeNarc_InvertedCondition",
2250
+ "category": "Comprehensibility",
2251
+ "severityLevel": "Info",
2252
+ "title": "Avoid Inverted Condition",
2253
+ "enabled": true,
2254
+ "languages": ["Groovy"],
2255
+ "parameters": []
2256
+ },
2257
+ {
2258
+ "id": "CodeNarc_InvertedIfElse",
2259
+ "category": "Comprehensibility",
2260
+ "severityLevel": "Info",
2261
+ "title": "Avoid Inverted If-Else Statements",
2262
+ "enabled": true,
2263
+ "languages": ["Groovy"],
2264
+ "parameters": []
2265
+ },
2266
+ {
2267
+ "id": "CodeNarc_JavadocConsecutiveEmptyLines",
2268
+ "category": "CodeStyle",
2269
+ "severityLevel": "Info",
2270
+ "title": "Avoid Consecutive Empty Lines in Javadoc Comments",
2271
+ "enabled": true,
2272
+ "languages": ["Groovy"],
2273
+ "parameters": []
2274
+ },
2275
+ {
2276
+ "id": "CodeNarc_JavadocEmptyAuthorTag",
2277
+ "category": "Documentation",
2278
+ "severityLevel": "Info",
2279
+ "title": "Avoid Empty @author Tags in Javadoc",
2280
+ "enabled": true,
2281
+ "languages": ["Groovy"],
2282
+ "parameters": []
2283
+ },
2284
+ {
2285
+ "id": "CodeNarc_JavadocEmptyExceptionTag",
2286
+ "category": "Documentation",
2287
+ "severityLevel": "Info",
2288
+ "title": "Avoid Empty @exception Tag in Javadoc",
2289
+ "enabled": true,
2290
+ "languages": ["Groovy"],
2291
+ "parameters": []
2292
+ },
2293
+ {
2294
+ "id": "CodeNarc_JavadocEmptyFirstLine",
2295
+ "category": "Documentation",
2296
+ "severityLevel": "Info",
2297
+ "title": "Avoid Empty First Line in Javadoc Comments",
2298
+ "enabled": true,
2299
+ "languages": ["Groovy"],
2300
+ "parameters": []
2301
+ },
2302
+ {
2303
+ "id": "CodeNarc_JavadocEmptyLastLine",
2304
+ "category": "CodeStyle",
2305
+ "severityLevel": "Info",
2306
+ "title": "Avoid Empty Last Line in Javadoc Comments",
2307
+ "enabled": true,
2308
+ "languages": ["Groovy"],
2309
+ "parameters": []
2310
+ },
2311
+ {
2312
+ "id": "CodeNarc_JavadocEmptyParamTag",
2313
+ "category": "Documentation",
2314
+ "severityLevel": "Info",
2315
+ "title": "Avoid Empty @param Tags in Javadoc",
2316
+ "enabled": true,
2317
+ "languages": ["Groovy"],
2318
+ "parameters": []
2319
+ },
2320
+ {
2321
+ "id": "CodeNarc_JavadocEmptyReturnTag",
2322
+ "category": "Documentation",
2323
+ "severityLevel": "Info",
2324
+ "title": "Avoid Empty @return Tags in Javadoc",
2325
+ "enabled": true,
2326
+ "languages": ["Groovy"],
2327
+ "parameters": []
2328
+ },
2329
+ {
2330
+ "id": "CodeNarc_JavadocEmptySeeTag",
2331
+ "category": "Documentation",
2332
+ "severityLevel": "Info",
2333
+ "title": "Avoid Empty @see Tags in Javadoc",
2334
+ "enabled": true,
2335
+ "languages": ["Groovy"],
2336
+ "parameters": []
2337
+ },
2338
+ {
2339
+ "id": "CodeNarc_JavadocEmptySinceTag",
2340
+ "category": "Documentation",
2341
+ "severityLevel": "Info",
2342
+ "title": "Avoid Empty @since Tags in Javadoc",
2343
+ "enabled": true,
2344
+ "languages": ["Groovy"],
2345
+ "parameters": []
2346
+ },
2347
+ {
2348
+ "id": "CodeNarc_JavadocEmptyThrowsTag",
2349
+ "category": "Documentation",
2350
+ "severityLevel": "Info",
2351
+ "title": "Avoid Empty @throws Tag in Javadoc",
2352
+ "enabled": true,
2353
+ "languages": ["Groovy"],
2354
+ "parameters": []
2355
+ },
2356
+ {
2357
+ "id": "CodeNarc_JavadocEmptyVersionTag",
2358
+ "category": "Documentation",
2359
+ "severityLevel": "Info",
2360
+ "title": "Avoid Empty @version Tags in Javadoc",
2361
+ "enabled": true,
2362
+ "languages": ["Groovy"],
2363
+ "parameters": []
2364
+ },
2365
+ {
2366
+ "id": "CodeNarc_JavadocMissingExceptionDescription",
2367
+ "category": "Documentation",
2368
+ "severityLevel": "Info",
2369
+ "title": "Enforce Javadoc @exception Tag Description",
2370
+ "enabled": true,
2371
+ "languages": ["Groovy"],
2372
+ "parameters": []
2373
+ },
2374
+ {
2375
+ "id": "CodeNarc_JavadocMissingParamDescription",
2376
+ "category": "Documentation",
2377
+ "severityLevel": "Info",
2378
+ "title": "Enforce Javadoc @param Description",
2379
+ "enabled": true,
2380
+ "languages": ["Groovy"],
2381
+ "parameters": []
2382
+ },
2383
+ {
2384
+ "id": "CodeNarc_JavadocMissingThrowsDescription",
2385
+ "category": "Documentation",
2386
+ "severityLevel": "Info",
2387
+ "title": "Enforce Javadoc @throws Tag Description",
2388
+ "enabled": true,
2389
+ "languages": ["Groovy"],
2390
+ "parameters": []
2391
+ },
2392
+ {
2393
+ "id": "CodeNarc_JavaIoPackageAccess",
2394
+ "category": "Compatibility",
2395
+ "severityLevel": "High",
2396
+ "title": "Avoid Using java.io Package for File System Access in Enterprise JavaBeans",
2397
+ "enabled": true,
2398
+ "languages": ["Groovy"],
2399
+ "parameters": [
2400
+ {
2401
+ "name": "doNotApplyToFilesMatching",
2402
+ "default": ".*(Spec|Test|Tests|TestCase)\\.groovy",
2403
+ "description": "doNotApplyToFilesMatching"
2404
+ }
2405
+ ]
2406
+ },
2407
+ {
2408
+ "id": "CodeNarc_JdbcConnectionReference",
2409
+ "category": "BestPractice",
2410
+ "severityLevel": "Warning",
2411
+ "title": "Avoid Direct Use of java.sql.Connection",
2412
+ "enabled": true,
2413
+ "languages": ["Groovy"],
2414
+ "parameters": []
2415
+ },
2416
+ {
2417
+ "id": "CodeNarc_JdbcResultSetReference",
2418
+ "category": "BestPractice",
2419
+ "severityLevel": "Warning",
2420
+ "title": "Avoid Direct Use of java.sql.ResultSet",
2421
+ "enabled": true,
2422
+ "languages": ["Groovy"],
2423
+ "parameters": []
2424
+ },
2425
+ {
2426
+ "id": "CodeNarc_JdbcStatementReference",
2427
+ "category": "BestPractice",
2428
+ "severityLevel": "Warning",
2429
+ "title": "Avoid Direct Use of Jdbc Statement Classes",
2430
+ "enabled": true,
2431
+ "languages": ["Groovy"],
2432
+ "parameters": []
2433
+ },
2434
+ {
2435
+ "id": "CodeNarc_JUnitAssertAlwaysFails",
2436
+ "category": "ErrorProne",
2437
+ "severityLevel": "High",
2438
+ "title": "Avoid JUnit Assertions That Always Fail",
2439
+ "enabled": true,
2440
+ "languages": ["Groovy"],
2441
+ "parameters": [
2442
+ {
2443
+ "name": "applyToClassNames",
2444
+ "default": "*Spec,*Test,*Tests,*TestCase",
2445
+ "description": "applyToClassNames"
2446
+ }
2447
+ ]
2448
+ },
2449
+ {
2450
+ "id": "CodeNarc_JUnitAssertAlwaysSucceeds",
2451
+ "category": "ErrorProne",
2452
+ "severityLevel": "High",
2453
+ "title": "Avoid JUnit Assertions That Always Succeed",
2454
+ "enabled": true,
2455
+ "languages": ["Groovy"],
2456
+ "parameters": [
2457
+ {
2458
+ "name": "applyToClassNames",
2459
+ "default": "*Spec,*Test,*Tests,*TestCase",
2460
+ "description": "applyToClassNames"
2461
+ }
2462
+ ]
2463
+ },
2464
+ {
2465
+ "id": "CodeNarc_JUnitAssertEqualsConstantActualValue",
2466
+ "category": "ErrorProne",
2467
+ "severityLevel": "High",
2468
+ "title": "Avoid Using Constant as Actual Value in JUnit AssertEquals",
2469
+ "enabled": true,
2470
+ "languages": ["Groovy"],
2471
+ "parameters": [
2472
+ {
2473
+ "name": "applyToFilesMatching",
2474
+ "default": ".*(Spec|Test|Tests|TestCase)\\.groovy",
2475
+ "description": "applyToFilesMatching"
2476
+ },
2477
+ {
2478
+ "name": "compilerPhase",
2479
+ "default": "4",
2480
+ "description": "compilerPhase"
2481
+ }
2482
+ ]
2483
+ },
2484
+ {
2485
+ "id": "CodeNarc_JUnitFailWithoutMessage",
2486
+ "category": "BestPractice",
2487
+ "severityLevel": "Info",
2488
+ "title": "Enforce JUnit fail() Calls Include Message",
2489
+ "enabled": true,
2490
+ "languages": ["Groovy"],
2491
+ "parameters": [
2492
+ {
2493
+ "name": "applyToClassNames",
2494
+ "default": "*Spec,*Test,*Tests,*TestCase",
2495
+ "description": "applyToClassNames"
2496
+ }
2497
+ ]
2498
+ },
2499
+ {
2500
+ "id": "CodeNarc_JUnitLostTest",
2501
+ "category": "ErrorProne",
2502
+ "severityLevel": "High",
2503
+ "title": "Detect JUnit 4 Test Methods Missing @Test Annotation",
2504
+ "enabled": true,
2505
+ "languages": ["Groovy"],
2506
+ "parameters": [
2507
+ {
2508
+ "name": "applyToClassNames",
2509
+ "default": "*Spec,*Test,*Tests,*TestCase",
2510
+ "description": "applyToClassNames"
2511
+ }
2512
+ ]
2513
+ },
2514
+ {
2515
+ "id": "CodeNarc_JUnitPublicField",
2516
+ "category": "BestPractice",
2517
+ "severityLevel": "Info",
2518
+ "title": "Avoid Public Fields in JUnit Test Classes",
2519
+ "enabled": true,
2520
+ "languages": ["Groovy"],
2521
+ "parameters": [
2522
+ {
2523
+ "name": "applyToClassNames",
2524
+ "default": "*Spec,*Test,*Tests,*TestCase",
2525
+ "description": "applyToClassNames"
2526
+ }
2527
+ ]
2528
+ },
2529
+ {
2530
+ "id": "CodeNarc_JUnitPublicNonTestMethod",
2531
+ "category": "BestPractice",
2532
+ "severityLevel": "Warning",
2533
+ "title": "Avoid Public Non-Test Methods in JUnit Test Classes",
2534
+ "enabled": true,
2535
+ "languages": ["Groovy"],
2536
+ "parameters": [
2537
+ {
2538
+ "name": "applyToClassNames",
2539
+ "default": "*Spec,*Test,*Tests,*TestCase",
2540
+ "description": "applyToClassNames"
2541
+ }
2542
+ ]
2543
+ },
2544
+ {
2545
+ "id": "CodeNarc_JUnitPublicProperty",
2546
+ "category": "BestPractice",
2547
+ "severityLevel": "Info",
2548
+ "title": "Avoid Public Properties on JUnit Test Classes",
2549
+ "enabled": true,
2550
+ "languages": ["Groovy"],
2551
+ "parameters": [
2552
+ {
2553
+ "name": "applyToClassNames",
2554
+ "default": "*Spec,*Test,*Tests,*TestCase",
2555
+ "description": "applyToClassNames"
2556
+ },
2557
+ {
2558
+ "name": "ignorePropertyNames",
2559
+ "default": "null",
2560
+ "description": "ignorePropertyNames"
2561
+ }
2562
+ ]
2563
+ },
2564
+ {
2565
+ "id": "CodeNarc_JUnitSetUpCallsSuper",
2566
+ "category": "ErrorProne",
2567
+ "severityLevel": "High",
2568
+ "title": "EnforceJUnitSetUpCallsSuper",
2569
+ "enabled": true,
2570
+ "languages": ["Groovy"],
2571
+ "parameters": [
2572
+ {
2573
+ "name": "applyToClassNames",
2574
+ "default": "*Spec,*Test,*Tests,*TestCase",
2575
+ "description": "applyToClassNames"
2576
+ }
2577
+ ]
2578
+ },
2579
+ {
2580
+ "id": "CodeNarc_JUnitStyleAssertions",
2581
+ "category": "BestPractice",
2582
+ "severityLevel": "Info",
2583
+ "title": "Avoid JUnit Style Assertions",
2584
+ "enabled": true,
2585
+ "languages": ["Groovy"],
2586
+ "parameters": [
2587
+ {
2588
+ "name": "applyToClassNames",
2589
+ "default": "*Spec,*Test,*Tests,*TestCase",
2590
+ "description": "applyToClassNames"
2591
+ }
2592
+ ]
2593
+ },
2594
+ {
2595
+ "id": "CodeNarc_JUnitTearDownCallsSuper",
2596
+ "category": "ErrorProne",
2597
+ "severityLevel": "High",
2598
+ "title": "EnforceJUnitTearDownCallsSuper",
2599
+ "enabled": true,
2600
+ "languages": ["Groovy"],
2601
+ "parameters": [
2602
+ {
2603
+ "name": "applyToClassNames",
2604
+ "default": "*Spec,*Test,*Tests,*TestCase",
2605
+ "description": "applyToClassNames"
2606
+ }
2607
+ ],
2608
+ "tags": ["junit"]
2609
+ },
2610
+ {
2611
+ "id": "CodeNarc_JUnitTestMethodWithoutAssert",
2612
+ "category": "ErrorProne",
2613
+ "severityLevel": "High",
2614
+ "title": "Detect JUnit Test Methods Without Assert Statements",
2615
+ "enabled": true,
2616
+ "languages": ["Groovy"],
2617
+ "parameters": [
2618
+ {
2619
+ "name": "applyToClassNames",
2620
+ "default": "*Spec,*Test,*Tests,*TestCase",
2621
+ "description": "applyToClassNames"
2622
+ },
2623
+ {
2624
+ "name": "assertMethodPatterns",
2625
+ "default": "assert.*,should.*,fail.*,verify.*,expect.*",
2626
+ "description": "assertMethodPatterns"
2627
+ }
2628
+ ]
2629
+ },
2630
+ {
2631
+ "id": "CodeNarc_JUnitUnnecessarySetUp",
2632
+ "category": "CodeStyle",
2633
+ "severityLevel": "Info",
2634
+ "title": "Avoid Unnecessary JUnit setUp() Methods",
2635
+ "enabled": true,
2636
+ "languages": ["Groovy"],
2637
+ "parameters": [
2638
+ {
2639
+ "name": "applyToClassNames",
2640
+ "default": "*Spec,*Test,*Tests,*TestCase",
2641
+ "description": "applyToClassNames"
2642
+ }
2643
+ ],
2644
+ "tags": ["junit"]
2645
+ },
2646
+ {
2647
+ "id": "CodeNarc_JUnitUnnecessaryTearDown",
2648
+ "category": "CodeStyle",
2649
+ "severityLevel": "Info",
2650
+ "title": "Avoid Unnecessary JUnit tearDown Method",
2651
+ "enabled": true,
2652
+ "languages": ["Groovy"],
2653
+ "parameters": [
2654
+ {
2655
+ "name": "applyToClassNames",
2656
+ "default": "*Spec,*Test,*Tests,*TestCase",
2657
+ "description": "applyToClassNames"
2658
+ }
2659
+ ]
2660
+ },
2661
+ {
2662
+ "id": "CodeNarc_JUnitUnnecessaryThrowsException",
2663
+ "category": "CodeStyle",
2664
+ "severityLevel": "Info",
2665
+ "title": "Avoid Unnecessary Throws Clauses on JUnit Test Methods",
2666
+ "enabled": true,
2667
+ "languages": ["Groovy"],
2668
+ "parameters": [
2669
+ {
2670
+ "name": "applyToClassNames",
2671
+ "default": "*Spec,*Test,*Tests,*TestCase",
2672
+ "description": "applyToClassNames"
2673
+ }
2674
+ ]
2675
+ },
2676
+ {
2677
+ "id": "CodeNarc_LineLength",
2678
+ "category": "CodeStyle",
2679
+ "severityLevel": "Info",
2680
+ "title": "Enforce Maximum Line Length",
2681
+ "enabled": true,
2682
+ "languages": ["Groovy"],
2683
+ "parameters": [
2684
+ {
2685
+ "name": "ignoreImportStatements",
2686
+ "default": "true",
2687
+ "description": "ignoreImportStatements"
2688
+ },
2689
+ {
2690
+ "name": "ignoreLineRegex",
2691
+ "default": "null",
2692
+ "description": "ignoreLineRegex"
2693
+ },
2694
+ {
2695
+ "name": "ignorePackageStatements",
2696
+ "default": "true",
2697
+ "description": "ignorePackageStatements"
2698
+ },
2699
+ {
2700
+ "name": "length",
2701
+ "default": "120",
2702
+ "description": "length"
2703
+ }
2704
+ ]
2705
+ },
2706
+ {
2707
+ "id": "CodeNarc_LocaleSetDefault",
2708
+ "category": "BestPractice",
2709
+ "severityLevel": "Warning",
2710
+ "title": "Avoid Locale.setDefault() Usage",
2711
+ "enabled": true,
2712
+ "languages": ["Groovy"],
2713
+ "parameters": []
2714
+ },
2715
+ {
2716
+ "id": "CodeNarc_LoggerForDifferentClass",
2717
+ "category": "BestPractice",
2718
+ "severityLevel": "Warning",
2719
+ "title": "Avoid Instantiating Logger for Different Class",
2720
+ "enabled": true,
2721
+ "languages": ["Groovy"],
2722
+ "parameters": [
2723
+ {
2724
+ "name": "allowDerivedClasses",
2725
+ "default": "false",
2726
+ "description": "allowDerivedClasses"
2727
+ }
2728
+ ]
2729
+ },
2730
+ {
2731
+ "id": "CodeNarc_LoggerWithWrongModifiers",
2732
+ "category": "BestPractice",
2733
+ "severityLevel": "Warning",
2734
+ "title": "Enforce Correct Modifiers for Logger Declarations",
2735
+ "enabled": true,
2736
+ "languages": ["Groovy"],
2737
+ "parameters": [
2738
+ {
2739
+ "name": "allowNonStaticLogger",
2740
+ "default": "false",
2741
+ "description": "allowNonStaticLogger"
2742
+ },
2743
+ {
2744
+ "name": "allowProtectedLogger",
2745
+ "default": "false",
2746
+ "description": "allowProtectedLogger"
2747
+ }
2748
+ ]
2749
+ },
2750
+ {
2751
+ "id": "CodeNarc_LoggingSwallowsStacktrace",
2752
+ "category": "BestPractice",
2753
+ "severityLevel": "Warning",
2754
+ "title": "Avoid Logging Exceptions Without Stacktrace",
2755
+ "enabled": true,
2756
+ "languages": ["Groovy"],
2757
+ "parameters": []
2758
+ },
2759
+ {
2760
+ "id": "CodeNarc_LongLiteralWithLowerCaseL",
2761
+ "category": "CodeStyle",
2762
+ "severityLevel": "Info",
2763
+ "title": "Enforce Uppercase L for Long Literals",
2764
+ "enabled": true,
2765
+ "languages": ["Groovy"],
2766
+ "parameters": []
2767
+ },
2768
+ {
2769
+ "id": "CodeNarc_MethodCount",
2770
+ "category": "Complexity",
2771
+ "severityLevel": "Warning",
2772
+ "title": "Limit Method Count in Class",
2773
+ "enabled": true,
2774
+ "languages": ["Groovy"],
2775
+ "parameters": [
2776
+ {
2777
+ "name": "maxMethods",
2778
+ "default": "30",
2779
+ "description": "maxMethods"
2780
+ }
2781
+ ]
2782
+ },
2783
+ {
2784
+ "id": "CodeNarc_MethodName",
2785
+ "category": "CodeStyle",
2786
+ "severityLevel": "Info",
2787
+ "title": "Enforce Method Name Pattern",
2788
+ "enabled": true,
2789
+ "languages": ["Groovy"],
2790
+ "parameters": [
2791
+ {
2792
+ "name": "ignoreMethodNames",
2793
+ "default": "null",
2794
+ "description": "ignoreMethodNames"
2795
+ },
2796
+ {
2797
+ "name": "regex",
2798
+ "default": "[a-z]\\w*",
2799
+ "description": "regex"
2800
+ }
2801
+ ]
2802
+ },
2803
+ {
2804
+ "id": "CodeNarc_MethodParameterTypeRequired",
2805
+ "category": "BestPractice",
2806
+ "severityLevel": "Warning",
2807
+ "title": "Enforce Method Parameter Type Declaration",
2808
+ "enabled": true,
2809
+ "languages": ["Groovy"],
2810
+ "parameters": [
2811
+ {
2812
+ "name": "ignoreMethodParameterNames",
2813
+ "default": "",
2814
+ "description": "ignoreMethodParameterNames"
2815
+ }
2816
+ ]
2817
+ },
2818
+ {
2819
+ "id": "CodeNarc_MethodReturnTypeRequired",
2820
+ "category": "CodeStyle",
2821
+ "severityLevel": "Info",
2822
+ "title": "Enforce Explicit Method Return Types",
2823
+ "enabled": true,
2824
+ "languages": ["Groovy"],
2825
+ "parameters": [
2826
+ {
2827
+ "name": "ignoreMethodNames",
2828
+ "default": "",
2829
+ "description": "ignoreMethodNames"
2830
+ }
2831
+ ]
2832
+ },
2833
+ {
2834
+ "id": "CodeNarc_MethodSize",
2835
+ "category": "Complexity",
2836
+ "severityLevel": "Warning",
2837
+ "title": "Enforce Method Size Limit",
2838
+ "enabled": true,
2839
+ "languages": ["Groovy"],
2840
+ "parameters": [
2841
+ {
2842
+ "name": "ignoreMethodNames",
2843
+ "default": "null",
2844
+ "description": "ignoreMethodNames"
2845
+ },
2846
+ {
2847
+ "name": "maxLines",
2848
+ "default": "100",
2849
+ "description": "maxLines"
2850
+ }
2851
+ ]
2852
+ },
2853
+ {
2854
+ "id": "CodeNarc_MisorderedStaticImports",
2855
+ "category": "CodeStyle",
2856
+ "severityLevel": "Info",
2857
+ "title": "Enforce Static Imports Order",
2858
+ "enabled": true,
2859
+ "languages": ["Groovy"],
2860
+ "parameters": []
2861
+ },
2862
+ {
2863
+ "id": "CodeNarc_MissingBlankLineAfterImports",
2864
+ "category": "CodeStyle",
2865
+ "severityLevel": "Info",
2866
+ "title": "EnforceBlankLineAfterImports",
2867
+ "enabled": true,
2868
+ "languages": ["Groovy"],
2869
+ "parameters": []
2870
+ },
2871
+ {
2872
+ "id": "CodeNarc_MissingBlankLineAfterPackage",
2873
+ "category": "CodeStyle",
2874
+ "severityLevel": "Info",
2875
+ "title": "EnforceBlankLineAfterPackageStatement",
2876
+ "enabled": true,
2877
+ "languages": ["Groovy"],
2878
+ "parameters": []
2879
+ },
2880
+ {
2881
+ "id": "CodeNarc_MissingBlankLineBeforeAnnotatedField",
2882
+ "category": "CodeStyle",
2883
+ "severityLevel": "Info",
2884
+ "title": "EnforceBlankLineBeforeAnnotatedField",
2885
+ "enabled": true,
2886
+ "languages": ["Groovy"],
2887
+ "parameters": []
2888
+ },
2889
+ {
2890
+ "id": "CodeNarc_MissingNewInThrowStatement",
2891
+ "category": "ErrorProne",
2892
+ "severityLevel": "High",
2893
+ "title": "EnforceNewKeywordInThrowStatements",
2894
+ "enabled": true,
2895
+ "languages": ["Groovy"],
2896
+ "parameters": []
2897
+ },
2898
+ {
2899
+ "id": "CodeNarc_MissingOverrideAnnotation",
2900
+ "category": "BestPractice",
2901
+ "severityLevel": "Warning",
2902
+ "title": "Enforce Use of @Override Annotation",
2903
+ "enabled": true,
2904
+ "languages": ["Groovy"],
2905
+ "parameters": [
2906
+ {
2907
+ "name": "compilerPhase",
2908
+ "default": "4",
2909
+ "description": "compilerPhase"
2910
+ }
2911
+ ]
2912
+ },
2913
+ {
2914
+ "id": "CodeNarc_MultipleLoggers",
2915
+ "category": "BestPractice",
2916
+ "severityLevel": "Info",
2917
+ "title": "Avoid Multiple Logger Objects in a Class",
2918
+ "enabled": true,
2919
+ "languages": ["Groovy"],
2920
+ "parameters": []
2921
+ },
2922
+ {
2923
+ "id": "CodeNarc_MultipleUnaryOperators",
2924
+ "category": "ErrorProne",
2925
+ "severityLevel": "High",
2926
+ "title": "Avoid Multiple Consecutive Unary Operators",
2927
+ "enabled": true,
2928
+ "languages": ["Groovy"],
2929
+ "parameters": []
2930
+ },
2931
+ {
2932
+ "id": "CodeNarc_NestedBlockDepth",
2933
+ "category": "Complexity",
2934
+ "severityLevel": "Warning",
2935
+ "title": "Enforce Maximum Nested Block Depth",
2936
+ "enabled": true,
2937
+ "languages": ["Groovy"],
2938
+ "parameters": [
2939
+ {
2940
+ "name": "ignoreRegex",
2941
+ "default": ".*(b|B)uilder",
2942
+ "description": "ignoreRegex"
2943
+ },
2944
+ {
2945
+ "name": "maxNestedBlockDepth",
2946
+ "default": "5",
2947
+ "description": "maxNestedBlockDepth"
2948
+ }
2949
+ ]
2950
+ },
2951
+ {
2952
+ "id": "CodeNarc_NestedForLoop",
2953
+ "category": "Complexity",
2954
+ "severityLevel": "Warning",
2955
+ "title": "Avoid Nested For Loops",
2956
+ "enabled": true,
2957
+ "languages": ["Groovy"],
2958
+ "parameters": []
2959
+ },
2960
+ {
2961
+ "id": "CodeNarc_NestedSynchronization",
2962
+ "category": "ErrorProne",
2963
+ "severityLevel": "High",
2964
+ "title": "Avoid Nested Synchronized Statements",
2965
+ "enabled": true,
2966
+ "languages": ["Groovy"],
2967
+ "parameters": []
2968
+ },
2969
+ {
2970
+ "id": "CodeNarc_NoDef",
2971
+ "category": "BestPractice",
2972
+ "severityLevel": "Warning",
2973
+ "title": "Avoid Using def Keyword",
2974
+ "enabled": true,
2975
+ "languages": ["Groovy"],
2976
+ "parameters": []
2977
+ },
2978
+ {
2979
+ "id": "CodeNarc_NoDouble",
2980
+ "category": "BestPractice",
2981
+ "severityLevel": "Warning",
2982
+ "title": "Avoid Using double or Double Types",
2983
+ "enabled": true,
2984
+ "languages": ["Groovy"],
2985
+ "parameters": []
2986
+ },
2987
+ {
2988
+ "id": "CodeNarc_NoFloat",
2989
+ "category": "BestPractice",
2990
+ "severityLevel": "Warning",
2991
+ "title": "Avoid Using Float Type",
2992
+ "enabled": true,
2993
+ "languages": ["Groovy"],
2994
+ "parameters": []
2995
+ },
2996
+ {
2997
+ "id": "CodeNarc_NoJavaUtilDate",
2998
+ "category": "BestPractice",
2999
+ "severityLevel": "Warning",
3000
+ "title": "Avoid Using java.util.Date",
3001
+ "enabled": true,
3002
+ "languages": ["Groovy"],
3003
+ "parameters": []
3004
+ },
3005
+ {
3006
+ "id": "CodeNarc_NonFinalPublicField",
3007
+ "category": "Security",
3008
+ "severityLevel": "High",
3009
+ "title": "Avoid Non-Final Public Fields",
3010
+ "enabled": true,
3011
+ "languages": ["Groovy"],
3012
+ "parameters": []
3013
+ },
3014
+ {
3015
+ "id": "CodeNarc_NonFinalSubclassOfSensitiveInterface",
3016
+ "category": "Security",
3017
+ "severityLevel": "High",
3018
+ "title": "Enforce Final Declaration on Subclasses of Sensitive Interfaces and Permission Classes",
3019
+ "enabled": true,
3020
+ "languages": ["Groovy"],
3021
+ "parameters": []
3022
+ },
3023
+ {
3024
+ "id": "CodeNarc_NonSerializableFieldInSerializableClass",
3025
+ "category": "ErrorProne",
3026
+ "severityLevel": "High",
3027
+ "title": "Enforce Serializable Fields in Serializable Classes",
3028
+ "enabled": false,
3029
+ "languages": ["Groovy"],
3030
+ "parameters": [
3031
+ {
3032
+ "name": "compilerPhase",
3033
+ "default": "4",
3034
+ "description": "compilerPhase"
3035
+ }
3036
+ ]
3037
+ },
3038
+ {
3039
+ "id": "CodeNarc_NoScriptBindings",
3040
+ "category": "ErrorProne",
3041
+ "severityLevel": "High",
3042
+ "title": "Avoid Script Bindings (Global Variables)",
3043
+ "enabled": false,
3044
+ "languages": ["Groovy"],
3045
+ "parameters": []
3046
+ },
3047
+ {
3048
+ "id": "CodeNarc_NoTabCharacter",
3049
+ "category": "CodeStyle",
3050
+ "severityLevel": "Info",
3051
+ "title": "Disallow Tab Characters in Source Files",
3052
+ "enabled": true,
3053
+ "languages": ["Groovy"],
3054
+ "parameters": []
3055
+ },
3056
+ {
3057
+ "id": "CodeNarc_NoWildcardImports",
3058
+ "category": "CodeStyle",
3059
+ "severityLevel": "Info",
3060
+ "title": "Disallow Wildcard Imports",
3061
+ "enabled": true,
3062
+ "languages": ["Groovy"],
3063
+ "parameters": []
3064
+ },
3065
+ {
3066
+ "id": "CodeNarc_ObjectFinalize",
3067
+ "category": "ErrorProne",
3068
+ "severityLevel": "High",
3069
+ "title": "Avoid Explicit Calls to Object Finalize Method",
3070
+ "enabled": true,
3071
+ "languages": ["Groovy"],
3072
+ "parameters": []
3073
+ },
3074
+ {
3075
+ "id": "CodeNarc_ObjectOverrideMisspelledMethodName",
3076
+ "category": "ErrorProne",
3077
+ "severityLevel": "High",
3078
+ "title": "EnforceCorrectOverrideMethodNames",
3079
+ "enabled": true,
3080
+ "languages": ["Groovy"],
3081
+ "parameters": []
3082
+ },
3083
+ {
3084
+ "id": "CodeNarc_ObjectOverrideOnlyNonCpsMethods",
3085
+ "category": "ErrorProne",
3086
+ "severityLevel": "High",
3087
+ "title": "Enforce NonCPS Annotation on Overridden Standard Library Methods",
3088
+ "enabled": false,
3089
+ "languages": ["Groovy"],
3090
+ "parameters": [
3091
+ {
3092
+ "name": "applyToFileNames",
3093
+ "default": "Jenkinsfile",
3094
+ "description": "applyToFileNames"
3095
+ },
3096
+ {
3097
+ "name": "compilerPhase",
3098
+ "default": "4",
3099
+ "description": "compilerPhase"
3100
+ }
3101
+ ],
3102
+ "tags": ["jenkins"]
3103
+ },
3104
+ {
3105
+ "id": "CodeNarc_OptionalCollectionReturnType",
3106
+ "category": "BestPractice",
3107
+ "severityLevel": "Warning",
3108
+ "title": "Avoid Optional Collection Return Types",
3109
+ "enabled": true,
3110
+ "languages": ["Groovy"],
3111
+ "parameters": []
3112
+ },
3113
+ {
3114
+ "id": "CodeNarc_OptionalField",
3115
+ "category": "BestPractice",
3116
+ "severityLevel": "Warning",
3117
+ "title": "AvoidUsingOptionalAsFieldType",
3118
+ "enabled": true,
3119
+ "languages": ["Groovy"],
3120
+ "parameters": []
3121
+ },
3122
+ {
3123
+ "id": "CodeNarc_OptionalMethodParameter",
3124
+ "category": "BestPractice",
3125
+ "severityLevel": "Warning",
3126
+ "title": "Avoid Using Optional as a Method or Constructor Parameter",
3127
+ "enabled": true,
3128
+ "languages": ["Groovy"],
3129
+ "parameters": []
3130
+ },
3131
+ {
3132
+ "id": "CodeNarc_PackageName",
3133
+ "category": "CodeStyle",
3134
+ "severityLevel": "Info",
3135
+ "title": "Enforce PackageName Format",
3136
+ "enabled": true,
3137
+ "languages": ["Groovy"],
3138
+ "parameters": [
3139
+ {
3140
+ "name": "packageNameRequired",
3141
+ "default": "false",
3142
+ "description": "packageNameRequired"
3143
+ },
3144
+ {
3145
+ "name": "regex",
3146
+ "default": "[a-z]+[a-z0-9]*(\\.[a-z0-9]+)*",
3147
+ "description": "regex"
3148
+ }
3149
+ ]
3150
+ },
3151
+ {
3152
+ "id": "CodeNarc_PackageNameMatchesFilePath",
3153
+ "category": "BestPractice",
3154
+ "severityLevel": "Warning",
3155
+ "title": "Enforce Package Name Matches File Path",
3156
+ "enabled": true,
3157
+ "languages": ["Groovy"],
3158
+ "parameters": []
3159
+ },
3160
+ {
3161
+ "id": "CodeNarc_ParameterAssignmentInFilterClosure",
3162
+ "category": "ErrorProne",
3163
+ "severityLevel": "High",
3164
+ "title": "Avoid Assignment in Filter Closure Parameters",
3165
+ "enabled": true,
3166
+ "languages": ["Groovy"],
3167
+ "parameters": []
3168
+ },
3169
+ {
3170
+ "id": "CodeNarc_ParameterCount",
3171
+ "category": "Complexity",
3172
+ "severityLevel": "Warning",
3173
+ "title": "Enforce Maximum Number of Parameters",
3174
+ "enabled": true,
3175
+ "languages": ["Groovy"],
3176
+ "parameters": [
3177
+ {
3178
+ "name": "ignoreOverriddenMethods",
3179
+ "default": "true",
3180
+ "description": "ignoreOverriddenMethods"
3181
+ },
3182
+ {
3183
+ "name": "maxParameters",
3184
+ "default": "5",
3185
+ "description": "maxParameters"
3186
+ }
3187
+ ]
3188
+ },
3189
+ {
3190
+ "id": "CodeNarc_ParameterName",
3191
+ "category": "CodeStyle",
3192
+ "severityLevel": "Info",
3193
+ "title": "Enforce Parameter Name Pattern",
3194
+ "enabled": true,
3195
+ "languages": ["Groovy"],
3196
+ "parameters": [
3197
+ {
3198
+ "name": "ignoreParameterNames",
3199
+ "default": "null",
3200
+ "description": "ignoreParameterNames"
3201
+ },
3202
+ {
3203
+ "name": "regex",
3204
+ "default": "[a-z][a-zA-Z0-9]*",
3205
+ "description": "regex"
3206
+ }
3207
+ ]
3208
+ },
3209
+ {
3210
+ "id": "CodeNarc_ParameterOrReturnTypeNotSerializable",
3211
+ "category": "ErrorProne",
3212
+ "severityLevel": "High",
3213
+ "title": "Enforce Serializable Parameter and Return Types",
3214
+ "enabled": false,
3215
+ "languages": ["Groovy"],
3216
+ "parameters": [
3217
+ {
3218
+ "name": "applyToFileNames",
3219
+ "default": "Jenkinsfile",
3220
+ "description": "applyToFileNames"
3221
+ },
3222
+ {
3223
+ "name": "compilerPhase",
3224
+ "default": "4",
3225
+ "description": "compilerPhase"
3226
+ }
3227
+ ],
3228
+ "tags": ["jenkins"]
3229
+ },
3230
+ {
3231
+ "id": "CodeNarc_ParameterReassignment",
3232
+ "category": "BestPractice",
3233
+ "severityLevel": "Warning",
3234
+ "title": "Avoid Parameter Reassignment",
3235
+ "enabled": true,
3236
+ "languages": ["Groovy"],
3237
+ "parameters": []
3238
+ },
3239
+ {
3240
+ "id": "CodeNarc_Println",
3241
+ "category": "BestPractice",
3242
+ "severityLevel": "Info",
3243
+ "title": "Avoid Using this.print, this.println, or this.printf",
3244
+ "enabled": true,
3245
+ "languages": ["Groovy"],
3246
+ "parameters": []
3247
+ },
3248
+ {
3249
+ "id": "CodeNarc_PrintStackTrace",
3250
+ "category": "BestPractice",
3251
+ "severityLevel": "Warning",
3252
+ "title": "Avoid Using printStackTrace",
3253
+ "enabled": true,
3254
+ "languages": ["Groovy"],
3255
+ "parameters": []
3256
+ },
3257
+ {
3258
+ "id": "CodeNarc_PrivateFieldCouldBeFinal",
3259
+ "category": "BestPractice",
3260
+ "severityLevel": "Warning",
3261
+ "title": "Enforce Private Field Could Be Final",
3262
+ "enabled": true,
3263
+ "languages": ["Groovy"],
3264
+ "parameters": [
3265
+ {
3266
+ "name": "ignoreFieldNames",
3267
+ "default": "null",
3268
+ "description": "ignoreFieldNames"
3269
+ },
3270
+ {
3271
+ "name": "ignoreJpaEntities",
3272
+ "default": "false",
3273
+ "description": "ignoreJpaEntities"
3274
+ }
3275
+ ]
3276
+ },
3277
+ {
3278
+ "id": "CodeNarc_PropertyName",
3279
+ "category": "CodeStyle",
3280
+ "severityLevel": "Info",
3281
+ "title": "Enforce PropertyName Pattern",
3282
+ "enabled": true,
3283
+ "languages": ["Groovy"],
3284
+ "parameters": [
3285
+ {
3286
+ "name": "finalRegex",
3287
+ "default": "null",
3288
+ "description": "finalRegex"
3289
+ },
3290
+ {
3291
+ "name": "ignorePropertyNames",
3292
+ "default": "null",
3293
+ "description": "ignorePropertyNames"
3294
+ },
3295
+ {
3296
+ "name": "regex",
3297
+ "default": "[a-z][a-zA-Z0-9]*",
3298
+ "description": "regex"
3299
+ },
3300
+ {
3301
+ "name": "staticFinalRegex",
3302
+ "default": "[A-Z][A-Z0-9_]*",
3303
+ "description": "staticFinalRegex"
3304
+ },
3305
+ {
3306
+ "name": "staticRegex",
3307
+ "default": "null",
3308
+ "description": "staticRegex"
3309
+ }
3310
+ ]
3311
+ },
3312
+ {
3313
+ "id": "CodeNarc_PublicFinalizeMethod",
3314
+ "category": "Security",
3315
+ "severityLevel": "High",
3316
+ "title": "Avoid Public Finalize Method",
3317
+ "enabled": true,
3318
+ "languages": ["Groovy"],
3319
+ "parameters": []
3320
+ },
3321
+ {
3322
+ "id": "CodeNarc_PublicInstanceField",
3323
+ "category": "BestPractice",
3324
+ "severityLevel": "Warning",
3325
+ "title": "Avoid Public Instance Fields",
3326
+ "enabled": true,
3327
+ "languages": ["Groovy"],
3328
+ "parameters": []
3329
+ },
3330
+ {
3331
+ "id": "CodeNarc_PublicMethodsBeforeNonPublicMethods",
3332
+ "category": "CodeStyle",
3333
+ "severityLevel": "Info",
3334
+ "title": "Enforce Public Methods Before Non-Public Methods",
3335
+ "enabled": true,
3336
+ "languages": ["Groovy"],
3337
+ "parameters": [
3338
+ {
3339
+ "name": "ignoreMethodNames",
3340
+ "default": "null",
3341
+ "description": "ignoreMethodNames"
3342
+ }
3343
+ ]
3344
+ },
3345
+ {
3346
+ "id": "CodeNarc_RandomDoubleCoercedToZero",
3347
+ "category": "ErrorProne",
3348
+ "severityLevel": "High",
3349
+ "title": "Avoid Coercing Math.random() Result to Integer Types",
3350
+ "enabled": true,
3351
+ "languages": ["Groovy"],
3352
+ "parameters": []
3353
+ },
3354
+ {
3355
+ "id": "CodeNarc_RemoveAllOnSelf",
3356
+ "category": "Performance",
3357
+ "severityLevel": "Warning",
3358
+ "title": "AvoidUsing removeAll(c) to Clear a Collection",
3359
+ "enabled": true,
3360
+ "languages": ["Groovy"],
3361
+ "parameters": []
3362
+ },
3363
+ {
3364
+ "id": "CodeNarc_RequiredRegex",
3365
+ "category": "BestPractice",
3366
+ "severityLevel": "Warning",
3367
+ "title": "EnforcePresenceOfRequiredRegex",
3368
+ "enabled": true,
3369
+ "languages": ["Groovy"],
3370
+ "parameters": []
3371
+ },
3372
+ {
3373
+ "id": "CodeNarc_RequiredString",
3374
+ "category": "BestPractice",
3375
+ "severityLevel": "Warning",
3376
+ "title": "EnforcePresenceOfRequiredString",
3377
+ "enabled": true,
3378
+ "languages": ["Groovy"],
3379
+ "parameters": []
3380
+ },
3381
+ {
3382
+ "id": "CodeNarc_ReturnFromFinallyBlock",
3383
+ "category": "ErrorProne",
3384
+ "severityLevel": "High",
3385
+ "title": "Avoid Return From Finally Block",
3386
+ "enabled": true,
3387
+ "languages": ["Groovy"],
3388
+ "parameters": []
3389
+ },
3390
+ {
3391
+ "id": "CodeNarc_ReturnNullFromCatchBlock",
3392
+ "category": "BestPractice",
3393
+ "severityLevel": "Warning",
3394
+ "title": "Avoid Returning Null From Catch Block",
3395
+ "enabled": true,
3396
+ "languages": ["Groovy"],
3397
+ "parameters": []
3398
+ },
3399
+ {
3400
+ "id": "CodeNarc_ReturnsNullInsteadOfEmptyArray",
3401
+ "category": "BestPractice",
3402
+ "severityLevel": "Warning",
3403
+ "title": "Avoid Returning Null Instead of Empty Array",
3404
+ "enabled": true,
3405
+ "languages": ["Groovy"],
3406
+ "parameters": []
3407
+ },
3408
+ {
3409
+ "id": "CodeNarc_ReturnsNullInsteadOfEmptyCollection",
3410
+ "category": "BestPractice",
3411
+ "severityLevel": "Warning",
3412
+ "title": "Avoid Returning Null Instead of Empty Collection",
3413
+ "enabled": true,
3414
+ "languages": ["Groovy"],
3415
+ "parameters": []
3416
+ },
3417
+ {
3418
+ "id": "CodeNarc_SerializableClassMustDefineSerialVersionUID",
3419
+ "category": "ErrorProne",
3420
+ "severityLevel": "High",
3421
+ "title": "Enforce Serializable Classes Define serialVersionUID",
3422
+ "enabled": true,
3423
+ "languages": ["Groovy"],
3424
+ "parameters": []
3425
+ },
3426
+ {
3427
+ "id": "CodeNarc_SerialPersistentFields",
3428
+ "category": "ErrorProne",
3429
+ "severityLevel": "High",
3430
+ "title": "Enforce Correct Declaration of serialPersistentFields",
3431
+ "enabled": true,
3432
+ "languages": ["Groovy"],
3433
+ "parameters": []
3434
+ },
3435
+ {
3436
+ "id": "CodeNarc_SerialVersionUID",
3437
+ "category": "ErrorProne",
3438
+ "severityLevel": "High",
3439
+ "title": "Enforce SerialVersionUID Declaration in Serializable Classes",
3440
+ "enabled": true,
3441
+ "languages": ["Groovy"],
3442
+ "parameters": []
3443
+ },
3444
+ {
3445
+ "id": "CodeNarc_SimpleDateFormatMissingLocale",
3446
+ "category": "BestPractice",
3447
+ "severityLevel": "Warning",
3448
+ "title": "Enforce Specifying Locale in SimpleDateFormat Instantiation",
3449
+ "enabled": true,
3450
+ "languages": ["Groovy"],
3451
+ "parameters": []
3452
+ },
3453
+ {
3454
+ "id": "CodeNarc_SpaceAfterCatch",
3455
+ "category": "CodeStyle",
3456
+ "severityLevel": "Info",
3457
+ "title": "Enforce Single Space After Catch Keyword",
3458
+ "enabled": true,
3459
+ "languages": ["Groovy"],
3460
+ "parameters": []
3461
+ },
3462
+ {
3463
+ "id": "CodeNarc_SpaceAfterClosingBrace",
3464
+ "category": "CodeStyle",
3465
+ "severityLevel": "Info",
3466
+ "title": "Enforce Space After Closing Brace",
3467
+ "enabled": true,
3468
+ "languages": ["Groovy"],
3469
+ "parameters": [
3470
+ {
3471
+ "name": "checkClosureMapEntryValue",
3472
+ "default": "true",
3473
+ "description": "checkClosureMapEntryValue"
3474
+ }
3475
+ ]
3476
+ },
3477
+ {
3478
+ "id": "CodeNarc_SpaceAfterComma",
3479
+ "category": "CodeStyle",
3480
+ "severityLevel": "Info",
3481
+ "title": "Enforce Space After Comma",
3482
+ "enabled": true,
3483
+ "languages": ["Groovy"],
3484
+ "parameters": []
3485
+ },
3486
+ {
3487
+ "id": "CodeNarc_SpaceAfterCommentDelimiter",
3488
+ "category": "CodeStyle",
3489
+ "severityLevel": "Info",
3490
+ "title": "Enforce Space After Comment Delimiter",
3491
+ "enabled": false,
3492
+ "languages": ["Groovy"],
3493
+ "parameters": []
3494
+ },
3495
+ {
3496
+ "id": "CodeNarc_SpaceAfterFor",
3497
+ "category": "CodeStyle",
3498
+ "severityLevel": "Info",
3499
+ "title": "Enforce Single Space After 'for' Keyword",
3500
+ "enabled": true,
3501
+ "languages": ["Groovy"],
3502
+ "parameters": []
3503
+ },
3504
+ {
3505
+ "id": "CodeNarc_SpaceAfterIf",
3506
+ "category": "CodeStyle",
3507
+ "severityLevel": "Info",
3508
+ "title": "Enforce Single Space After If Keyword",
3509
+ "enabled": true,
3510
+ "languages": ["Groovy"],
3511
+ "parameters": []
3512
+ },
3513
+ {
3514
+ "id": "CodeNarc_SpaceAfterMethodCallName",
3515
+ "category": "CodeStyle",
3516
+ "severityLevel": "Info",
3517
+ "title": "Avoid Space After Method Call Name",
3518
+ "enabled": true,
3519
+ "languages": ["Groovy"],
3520
+ "parameters": []
3521
+ },
3522
+ {
3523
+ "id": "CodeNarc_SpaceAfterMethodDeclarationName",
3524
+ "category": "CodeStyle",
3525
+ "severityLevel": "Info",
3526
+ "title": "Avoid Space After Method Declaration Name",
3527
+ "enabled": true,
3528
+ "languages": ["Groovy"],
3529
+ "parameters": []
3530
+ },
3531
+ {
3532
+ "id": "CodeNarc_SpaceAfterNotOperator",
3533
+ "category": "CodeStyle",
3534
+ "severityLevel": "Info",
3535
+ "title": "Disallow Space After Not Operator",
3536
+ "enabled": true,
3537
+ "languages": ["Groovy"],
3538
+ "parameters": []
3539
+ },
3540
+ {
3541
+ "id": "CodeNarc_SpaceAfterOpeningBrace",
3542
+ "category": "CodeStyle",
3543
+ "severityLevel": "Info",
3544
+ "title": "Enforce Space After Opening Brace",
3545
+ "enabled": true,
3546
+ "languages": ["Groovy"],
3547
+ "parameters": [
3548
+ {
3549
+ "name": "checkClosureMapEntryValue",
3550
+ "default": "true",
3551
+ "description": "checkClosureMapEntryValue"
3552
+ },
3553
+ {
3554
+ "name": "ignoreEmptyBlock",
3555
+ "default": "false",
3556
+ "description": "ignoreEmptyBlock"
3557
+ }
3558
+ ]
3559
+ },
3560
+ {
3561
+ "id": "CodeNarc_SpaceAfterSemicolon",
3562
+ "category": "CodeStyle",
3563
+ "severityLevel": "Info",
3564
+ "title": "Enforce Space After Semicolon",
3565
+ "enabled": true,
3566
+ "languages": ["Groovy"],
3567
+ "parameters": []
3568
+ },
3569
+ {
3570
+ "id": "CodeNarc_SpaceAfterSwitch",
3571
+ "category": "CodeStyle",
3572
+ "severityLevel": "Info",
3573
+ "title": "Enforce Single Space After switch Keyword",
3574
+ "enabled": true,
3575
+ "languages": ["Groovy"],
3576
+ "parameters": []
3577
+ },
3578
+ {
3579
+ "id": "CodeNarc_SpaceAfterWhile",
3580
+ "category": "CodeStyle",
3581
+ "severityLevel": "Info",
3582
+ "title": "EnforceSingleSpaceAfterWhileKeyword",
3583
+ "enabled": true,
3584
+ "languages": ["Groovy"],
3585
+ "parameters": []
3586
+ },
3587
+ {
3588
+ "id": "CodeNarc_SpaceAroundClosureArrow",
3589
+ "category": "CodeStyle",
3590
+ "severityLevel": "Info",
3591
+ "title": "Enforce Space Around Closure Arrow",
3592
+ "enabled": true,
3593
+ "languages": ["Groovy"],
3594
+ "parameters": []
3595
+ },
3596
+ {
3597
+ "id": "CodeNarc_SpaceAroundMapEntryColon",
3598
+ "category": "CodeStyle",
3599
+ "severityLevel": "Info",
3600
+ "title": "EnforceNoSpaceAroundMapEntryColon",
3601
+ "enabled": true,
3602
+ "languages": ["Groovy"],
3603
+ "parameters": [
3604
+ {
3605
+ "name": "characterAfterColonRegex",
3606
+ "default": "\\S",
3607
+ "description": "characterAfterColonRegex"
3608
+ },
3609
+ {
3610
+ "name": "characterBeforeColonRegex",
3611
+ "default": "\\S",
3612
+ "description": "characterBeforeColonRegex"
3613
+ }
3614
+ ]
3615
+ },
3616
+ {
3617
+ "id": "CodeNarc_SpaceAroundOperator",
3618
+ "category": "CodeStyle",
3619
+ "severityLevel": "Info",
3620
+ "title": "Enforce Space Around Binary Operators",
3621
+ "enabled": true,
3622
+ "languages": ["Groovy"],
3623
+ "parameters": [
3624
+ {
3625
+ "name": "ignoreParameterDefaultValueAssignments",
3626
+ "default": "true",
3627
+ "description": "ignoreParameterDefaultValueAssignments"
3628
+ }
3629
+ ]
3630
+ },
3631
+ {
3632
+ "id": "CodeNarc_SpaceBeforeClosingBrace",
3633
+ "category": "CodeStyle",
3634
+ "severityLevel": "Info",
3635
+ "title": "Enforce Space Before Closing Brace",
3636
+ "enabled": true,
3637
+ "languages": ["Groovy"],
3638
+ "parameters": [
3639
+ {
3640
+ "name": "checkClosureMapEntryValue",
3641
+ "default": "true",
3642
+ "description": "checkClosureMapEntryValue"
3643
+ },
3644
+ {
3645
+ "name": "ignoreEmptyBlock",
3646
+ "default": "false",
3647
+ "description": "ignoreEmptyBlock"
3648
+ }
3649
+ ]
3650
+ },
3651
+ {
3652
+ "id": "CodeNarc_SpaceBeforeCommentDelimiter",
3653
+ "category": "CodeStyle",
3654
+ "severityLevel": "Info",
3655
+ "title": "Enforce Space Before Comment Delimiters",
3656
+ "enabled": false,
3657
+ "languages": ["Groovy"],
3658
+ "parameters": []
3659
+ },
3660
+ {
3661
+ "id": "CodeNarc_SpaceBeforeOpeningBrace",
3662
+ "category": "CodeStyle",
3663
+ "severityLevel": "Info",
3664
+ "title": "Enforce Space Before Opening Brace",
3665
+ "enabled": true,
3666
+ "languages": ["Groovy"],
3667
+ "parameters": [
3668
+ {
3669
+ "name": "checkClosureMapEntryValue",
3670
+ "default": "true",
3671
+ "description": "checkClosureMapEntryValue"
3672
+ }
3673
+ ]
3674
+ },
3675
+ {
3676
+ "id": "CodeNarc_SpaceInsideParentheses",
3677
+ "category": "CodeStyle",
3678
+ "severityLevel": "Info",
3679
+ "title": "Avoid Space Inside Parentheses",
3680
+ "enabled": true,
3681
+ "languages": ["Groovy"],
3682
+ "parameters": []
3683
+ },
3684
+ {
3685
+ "id": "CodeNarc_SpockIgnoreRestUsed",
3686
+ "category": "BestPractice",
3687
+ "severityLevel": "Warning",
3688
+ "title": "Avoid Using Spock's @IgnoreRest Annotation",
3689
+ "enabled": true,
3690
+ "languages": ["Groovy"],
3691
+ "parameters": [
3692
+ {
3693
+ "name": "specificationClassNames",
3694
+ "default": "null",
3695
+ "description": "specificationClassNames"
3696
+ },
3697
+ {
3698
+ "name": "specificationSuperclassNames",
3699
+ "default": "*Specification",
3700
+ "description": "specificationSuperclassNames"
3701
+ }
3702
+ ],
3703
+ "tags": ["spock"]
3704
+ },
3705
+ {
3706
+ "id": "CodeNarc_SpockMissingAssert",
3707
+ "category": "ErrorProne",
3708
+ "severityLevel": "High",
3709
+ "title": "Enforce Explicit Assert Inside Conditional Blocks in Spock Tests",
3710
+ "enabled": false,
3711
+ "languages": ["Groovy"],
3712
+ "parameters": [
3713
+ {
3714
+ "name": "specificationClassNames",
3715
+ "default": "null",
3716
+ "description": "specificationClassNames"
3717
+ },
3718
+ {
3719
+ "name": "specificationSuperclassNames",
3720
+ "default": "*Specification",
3721
+ "description": "specificationSuperclassNames"
3722
+ }
3723
+ ],
3724
+ "tags": ["spock"]
3725
+ },
3726
+ {
3727
+ "id": "CodeNarc_StatelessClass",
3728
+ "category": "ErrorProne",
3729
+ "severityLevel": "High",
3730
+ "title": "Enforce Stateless Class Fields",
3731
+ "enabled": true,
3732
+ "languages": ["Groovy"],
3733
+ "parameters": [
3734
+ {
3735
+ "name": "ignoreFieldNames",
3736
+ "default": "null",
3737
+ "description": "ignoreFieldNames"
3738
+ },
3739
+ {
3740
+ "name": "ignoreFieldTypes",
3741
+ "default": "null",
3742
+ "description": "ignoreFieldTypes"
3743
+ }
3744
+ ]
3745
+ },
3746
+ {
3747
+ "id": "CodeNarc_StatelessSingleton",
3748
+ "category": "BestPractice",
3749
+ "severityLevel": "Warning",
3750
+ "title": "Avoid Stateless Singleton",
3751
+ "enabled": true,
3752
+ "languages": ["Groovy"],
3753
+ "parameters": [
3754
+ {
3755
+ "name": "instanceRegex",
3756
+ "default": "instance|_instance",
3757
+ "description": "instanceRegex"
3758
+ }
3759
+ ]
3760
+ },
3761
+ {
3762
+ "id": "CodeNarc_StaticCalendarField",
3763
+ "category": "ErrorProne",
3764
+ "severityLevel": "High",
3765
+ "title": "Avoid Using Static Calendar Fields",
3766
+ "enabled": true,
3767
+ "languages": ["Groovy"],
3768
+ "parameters": []
3769
+ },
3770
+ {
3771
+ "id": "CodeNarc_StaticConnection",
3772
+ "category": "Security",
3773
+ "severityLevel": "High",
3774
+ "title": "Avoid Static Database Connections",
3775
+ "enabled": true,
3776
+ "languages": ["Groovy"],
3777
+ "parameters": []
3778
+ },
3779
+ {
3780
+ "id": "CodeNarc_StaticDateFormatField",
3781
+ "category": "ErrorProne",
3782
+ "severityLevel": "High",
3783
+ "title": "Avoid Using Static DateFormat Fields",
3784
+ "enabled": true,
3785
+ "languages": ["Groovy"],
3786
+ "parameters": []
3787
+ },
3788
+ {
3789
+ "id": "CodeNarc_StaticFieldsBeforeInstanceFields",
3790
+ "category": "CodeStyle",
3791
+ "severityLevel": "Info",
3792
+ "title": "Enforce Static Fields Before Instance Fields",
3793
+ "enabled": true,
3794
+ "languages": ["Groovy"],
3795
+ "parameters": []
3796
+ },
3797
+ {
3798
+ "id": "CodeNarc_StaticMatcherField",
3799
+ "category": "ErrorProne",
3800
+ "severityLevel": "High",
3801
+ "title": "Avoid Using Static Matcher Fields",
3802
+ "enabled": true,
3803
+ "languages": ["Groovy"],
3804
+ "parameters": []
3805
+ },
3806
+ {
3807
+ "id": "CodeNarc_StaticMethodsBeforeInstanceMethods",
3808
+ "category": "CodeStyle",
3809
+ "severityLevel": "Info",
3810
+ "title": "Enforce Static Methods Before Instance Methods",
3811
+ "enabled": true,
3812
+ "languages": ["Groovy"],
3813
+ "parameters": [
3814
+ {
3815
+ "name": "ignoreMethodNames",
3816
+ "default": "null",
3817
+ "description": "ignoreMethodNames"
3818
+ }
3819
+ ]
3820
+ },
3821
+ {
3822
+ "id": "CodeNarc_StaticSimpleDateFormatField",
3823
+ "category": "ErrorProne",
3824
+ "severityLevel": "High",
3825
+ "title": "Avoid Using Static SimpleDateFormat Fields",
3826
+ "enabled": true,
3827
+ "languages": ["Groovy"],
3828
+ "parameters": []
3829
+ },
3830
+ {
3831
+ "id": "CodeNarc_SwallowThreadDeath",
3832
+ "category": "ErrorProne",
3833
+ "severityLevel": "High",
3834
+ "title": "Avoid Swallowing ThreadDeath Exception",
3835
+ "enabled": true,
3836
+ "languages": ["Groovy"],
3837
+ "parameters": []
3838
+ },
3839
+ {
3840
+ "id": "CodeNarc_SynchronizedMethod",
3841
+ "category": "BestPractice",
3842
+ "severityLevel": "Warning",
3843
+ "title": "Avoid Synchronized Methods",
3844
+ "enabled": true,
3845
+ "languages": ["Groovy"],
3846
+ "parameters": []
3847
+ },
3848
+ {
3849
+ "id": "CodeNarc_SynchronizedOnBoxedPrimitive",
3850
+ "category": "ErrorProne",
3851
+ "severityLevel": "High",
3852
+ "title": "Avoid Synchronizing on Boxed Primitive Constants",
3853
+ "enabled": true,
3854
+ "languages": ["Groovy"],
3855
+ "parameters": []
3856
+ },
3857
+ {
3858
+ "id": "CodeNarc_SynchronizedOnGetClass",
3859
+ "category": "ErrorProne",
3860
+ "severityLevel": "High",
3861
+ "title": "Avoid Synchronization on getClass()",
3862
+ "enabled": true,
3863
+ "languages": ["Groovy"],
3864
+ "parameters": []
3865
+ },
3866
+ {
3867
+ "id": "CodeNarc_SynchronizedOnReentrantLock",
3868
+ "category": "ErrorProne",
3869
+ "severityLevel": "High",
3870
+ "title": "Avoid Synchronizing on a ReentrantLock",
3871
+ "enabled": true,
3872
+ "languages": ["Groovy"],
3873
+ "parameters": []
3874
+ },
3875
+ {
3876
+ "id": "CodeNarc_SynchronizedOnString",
3877
+ "category": "ErrorProne",
3878
+ "severityLevel": "High",
3879
+ "title": "Avoid Synchronization on String Objects",
3880
+ "enabled": true,
3881
+ "languages": ["Groovy"],
3882
+ "parameters": []
3883
+ },
3884
+ {
3885
+ "id": "CodeNarc_SynchronizedOnThis",
3886
+ "category": "BestPractice",
3887
+ "severityLevel": "Warning",
3888
+ "title": "Avoid Synchronizing on 'this'",
3889
+ "enabled": true,
3890
+ "languages": ["Groovy"],
3891
+ "parameters": []
3892
+ },
3893
+ {
3894
+ "id": "CodeNarc_SynchronizedReadObjectMethod",
3895
+ "category": "BestPractice",
3896
+ "severityLevel": "Warning",
3897
+ "title": "Avoid Synchronized readObject Method in Serializable Classes",
3898
+ "enabled": true,
3899
+ "languages": ["Groovy"],
3900
+ "parameters": []
3901
+ },
3902
+ {
3903
+ "id": "CodeNarc_SystemErrPrint",
3904
+ "category": "BestPractice",
3905
+ "severityLevel": "Warning",
3906
+ "title": "Avoid System.err Print Calls",
3907
+ "enabled": true,
3908
+ "languages": ["Groovy"],
3909
+ "parameters": []
3910
+ },
3911
+ {
3912
+ "id": "CodeNarc_SystemExit",
3913
+ "category": "Security",
3914
+ "severityLevel": "Error",
3915
+ "title": "Avoid System.exit() Calls",
3916
+ "enabled": true,
3917
+ "languages": ["Groovy"],
3918
+ "parameters": []
3919
+ },
3920
+ {
3921
+ "id": "CodeNarc_SystemOutPrint",
3922
+ "category": "BestPractice",
3923
+ "severityLevel": "Warning",
3924
+ "title": "Avoid System.out Print Calls",
3925
+ "enabled": true,
3926
+ "languages": ["Groovy"],
3927
+ "parameters": []
3928
+ },
3929
+ {
3930
+ "id": "CodeNarc_SystemRunFinalizersOnExit",
3931
+ "category": "ErrorProne",
3932
+ "severityLevel": "High",
3933
+ "title": "Avoid Using System.runFinalizersOnExit",
3934
+ "enabled": true,
3935
+ "languages": ["Groovy"],
3936
+ "parameters": []
3937
+ },
3938
+ {
3939
+ "id": "CodeNarc_TernaryCouldBeElvis",
3940
+ "category": "CodeStyle",
3941
+ "severityLevel": "Info",
3942
+ "title": "Simplify Ternary to Elvis Expression",
3943
+ "enabled": true,
3944
+ "languages": ["Groovy"],
3945
+ "parameters": []
3946
+ },
3947
+ {
3948
+ "id": "CodeNarc_ThisReferenceEscapesConstructor",
3949
+ "category": "ErrorProne",
3950
+ "severityLevel": "High",
3951
+ "title": "Avoid Passing 'this' Reference from Constructor",
3952
+ "enabled": true,
3953
+ "languages": ["Groovy"],
3954
+ "parameters": []
3955
+ },
3956
+ {
3957
+ "id": "CodeNarc_ThreadGroup",
3958
+ "category": "ErrorProne",
3959
+ "severityLevel": "High",
3960
+ "title": "Avoid Using ThreadGroup",
3961
+ "enabled": true,
3962
+ "languages": ["Groovy"],
3963
+ "parameters": []
3964
+ },
3965
+ {
3966
+ "id": "CodeNarc_ThreadLocalNotStaticFinal",
3967
+ "category": "ErrorProne",
3968
+ "severityLevel": "High",
3969
+ "title": "Enforce ThreadLocal Fields to be Static and Final",
3970
+ "enabled": true,
3971
+ "languages": ["Groovy"],
3972
+ "parameters": []
3973
+ },
3974
+ {
3975
+ "id": "CodeNarc_ThreadYield",
3976
+ "category": "ErrorProne",
3977
+ "severityLevel": "High",
3978
+ "title": "Disallow Thread.yield() Calls",
3979
+ "enabled": true,
3980
+ "languages": ["Groovy"],
3981
+ "parameters": []
3982
+ },
3983
+ {
3984
+ "id": "CodeNarc_ThrowError",
3985
+ "category": "ErrorProne",
3986
+ "severityLevel": "High",
3987
+ "title": "Avoid Throwing java.lang.Error",
3988
+ "enabled": true,
3989
+ "languages": ["Groovy"],
3990
+ "parameters": []
3991
+ },
3992
+ {
3993
+ "id": "CodeNarc_ThrowException",
3994
+ "category": "BestPractice",
3995
+ "severityLevel": "Warning",
3996
+ "title": "Avoid Throwing Generic java.lang.Exception",
3997
+ "enabled": true,
3998
+ "languages": ["Groovy"],
3999
+ "parameters": []
4000
+ },
4001
+ {
4002
+ "id": "CodeNarc_ThrowExceptionFromFinallyBlock",
4003
+ "category": "ErrorProne",
4004
+ "severityLevel": "High",
4005
+ "title": "Avoid Throwing Exception From Finally Block",
4006
+ "enabled": true,
4007
+ "languages": ["Groovy"],
4008
+ "parameters": []
4009
+ },
4010
+ {
4011
+ "id": "CodeNarc_ThrowNullPointerException",
4012
+ "category": "BestPractice",
4013
+ "severityLevel": "High",
4014
+ "title": "Avoid Throwing NullPointerException",
4015
+ "enabled": true,
4016
+ "languages": ["Groovy"],
4017
+ "parameters": []
4018
+ },
4019
+ {
4020
+ "id": "CodeNarc_ThrowRuntimeException",
4021
+ "category": "BestPractice",
4022
+ "severityLevel": "Warning",
4023
+ "title": "Avoid Throwing Generic RuntimeException",
4024
+ "enabled": true,
4025
+ "languages": ["Groovy"],
4026
+ "parameters": []
4027
+ },
4028
+ {
4029
+ "id": "CodeNarc_ThrowThrowable",
4030
+ "category": "BestPractice",
4031
+ "severityLevel": "Warning",
4032
+ "title": "Avoid Throwing java.lang.Throwable",
4033
+ "enabled": true,
4034
+ "languages": ["Groovy"],
4035
+ "parameters": []
4036
+ },
4037
+ {
4038
+ "id": "CodeNarc_ToStringReturnsNull",
4039
+ "category": "ErrorProne",
4040
+ "severityLevel": "High",
4041
+ "title": "Avoid toString() Methods Returning Null",
4042
+ "enabled": true,
4043
+ "languages": ["Groovy"],
4044
+ "parameters": []
4045
+ },
4046
+ {
4047
+ "id": "CodeNarc_TrailingComma",
4048
+ "category": "CodeStyle",
4049
+ "severityLevel": "Info",
4050
+ "title": "EnforceTrailingCommaInListAndMapLiterals",
4051
+ "enabled": true,
4052
+ "languages": ["Groovy"],
4053
+ "parameters": [
4054
+ {
4055
+ "name": "checkList",
4056
+ "default": "true",
4057
+ "description": "checkList"
4058
+ },
4059
+ {
4060
+ "name": "checkMap",
4061
+ "default": "true",
4062
+ "description": "checkMap"
4063
+ },
4064
+ {
4065
+ "name": "ignoreSingleElementList",
4066
+ "default": "true",
4067
+ "description": "ignoreSingleElementList"
4068
+ },
4069
+ {
4070
+ "name": "ignoreSingleElementMap",
4071
+ "default": "true",
4072
+ "description": "ignoreSingleElementMap"
4073
+ }
4074
+ ]
4075
+ },
4076
+ {
4077
+ "id": "CodeNarc_TrailingWhitespace",
4078
+ "category": "CodeStyle",
4079
+ "severityLevel": "Info",
4080
+ "title": "Avoid Trailing Whitespace",
4081
+ "enabled": true,
4082
+ "languages": ["Groovy"],
4083
+ "parameters": []
4084
+ },
4085
+ {
4086
+ "id": "CodeNarc_UnnecessaryBigDecimalInstantiation",
4087
+ "category": "CodeStyle",
4088
+ "severityLevel": "Info",
4089
+ "title": "Avoid Unnecessary BigDecimal Instantiation",
4090
+ "enabled": true,
4091
+ "languages": ["Groovy"],
4092
+ "parameters": []
4093
+ },
4094
+ {
4095
+ "id": "CodeNarc_UnnecessaryBigIntegerInstantiation",
4096
+ "category": "CodeStyle",
4097
+ "severityLevel": "Info",
4098
+ "title": "Avoid Unnecessary BigInteger Instantiation",
4099
+ "enabled": true,
4100
+ "languages": ["Groovy"],
4101
+ "parameters": []
4102
+ },
4103
+ {
4104
+ "id": "CodeNarc_UnnecessaryBooleanExpression",
4105
+ "category": "CodeStyle",
4106
+ "severityLevel": "Info",
4107
+ "title": "Avoid Unnecessary Boolean Expressions",
4108
+ "enabled": true,
4109
+ "languages": ["Groovy"],
4110
+ "parameters": []
4111
+ },
4112
+ {
4113
+ "id": "CodeNarc_UnnecessaryBooleanInstantiation",
4114
+ "category": "Performance",
4115
+ "severityLevel": "Info",
4116
+ "title": "Avoid Unnecessary Boolean Instantiation",
4117
+ "enabled": true,
4118
+ "languages": ["Groovy"],
4119
+ "parameters": []
4120
+ },
4121
+ {
4122
+ "id": "CodeNarc_UnnecessaryCallForLastElement",
4123
+ "category": "CodeStyle",
4124
+ "severityLevel": "Info",
4125
+ "title": "Avoid Unnecessary Verbose Calls to Access Last Element",
4126
+ "enabled": true,
4127
+ "languages": ["Groovy"],
4128
+ "parameters": []
4129
+ },
4130
+ {
4131
+ "id": "CodeNarc_UnnecessaryCallToSubstring",
4132
+ "category": "CodeStyle",
4133
+ "severityLevel": "Info",
4134
+ "title": "Avoid Unnecessary Call to substring(0)",
4135
+ "enabled": true,
4136
+ "languages": ["Groovy"],
4137
+ "parameters": []
4138
+ },
4139
+ {
4140
+ "id": "CodeNarc_UnnecessaryCast",
4141
+ "category": "CodeStyle",
4142
+ "severityLevel": "Info",
4143
+ "title": "Avoid Unnecessary Casts",
4144
+ "enabled": true,
4145
+ "languages": ["Groovy"],
4146
+ "parameters": []
4147
+ },
4148
+ {
4149
+ "id": "CodeNarc_UnnecessaryCatchBlock",
4150
+ "category": "CodeStyle",
4151
+ "severityLevel": "Info",
4152
+ "title": "Avoid Unnecessary Catch Block",
4153
+ "enabled": true,
4154
+ "languages": ["Groovy"],
4155
+ "parameters": []
4156
+ },
4157
+ {
4158
+ "id": "CodeNarc_UnnecessaryCollectCall",
4159
+ "category": "CodeStyle",
4160
+ "severityLevel": "Info",
4161
+ "title": "Avoid Unnecessary Collect Call",
4162
+ "enabled": true,
4163
+ "languages": ["Groovy"],
4164
+ "parameters": []
4165
+ },
4166
+ {
4167
+ "id": "CodeNarc_UnnecessaryCollectionCall",
4168
+ "category": "BestPractice",
4169
+ "severityLevel": "Info",
4170
+ "title": "Avoid Unnecessary Collection Calls",
4171
+ "enabled": true,
4172
+ "languages": ["Groovy"],
4173
+ "parameters": []
4174
+ },
4175
+ {
4176
+ "id": "CodeNarc_UnnecessaryConstructor",
4177
+ "category": "CodeStyle",
4178
+ "severityLevel": "Info",
4179
+ "title": "Avoid Unnecessary Constructor",
4180
+ "enabled": true,
4181
+ "languages": ["Groovy"],
4182
+ "parameters": [
4183
+ {
4184
+ "name": "ignoreAnnotations",
4185
+ "default": "false",
4186
+ "description": "ignoreAnnotations"
4187
+ }
4188
+ ]
4189
+ },
4190
+ {
4191
+ "id": "CodeNarc_UnnecessaryDefInFieldDeclaration",
4192
+ "category": "CodeStyle",
4193
+ "severityLevel": "Info",
4194
+ "title": "Avoid Unnecessary 'def' in Field Declarations",
4195
+ "enabled": true,
4196
+ "languages": ["Groovy"],
4197
+ "parameters": []
4198
+ },
4199
+ {
4200
+ "id": "CodeNarc_UnnecessaryDefInMethodDeclaration",
4201
+ "category": "CodeStyle",
4202
+ "severityLevel": "Info",
4203
+ "title": "Avoid Unnecessary 'def' Keyword in Method Declaration",
4204
+ "enabled": true,
4205
+ "languages": ["Groovy"],
4206
+ "parameters": []
4207
+ },
4208
+ {
4209
+ "id": "CodeNarc_UnnecessaryDefInVariableDeclaration",
4210
+ "category": "CodeStyle",
4211
+ "severityLevel": "Info",
4212
+ "title": "Avoid Unnecessary 'def' in Variable Declarations",
4213
+ "enabled": true,
4214
+ "languages": ["Groovy"],
4215
+ "parameters": []
4216
+ },
4217
+ {
4218
+ "id": "CodeNarc_UnnecessaryDotClass",
4219
+ "category": "CodeStyle",
4220
+ "severityLevel": "Info",
4221
+ "title": "Avoid Unnecessary '.class' Identifier",
4222
+ "enabled": true,
4223
+ "languages": ["Groovy"],
4224
+ "parameters": []
4225
+ },
4226
+ {
4227
+ "id": "CodeNarc_UnnecessaryDoubleInstantiation",
4228
+ "category": "Performance",
4229
+ "severityLevel": "Info",
4230
+ "title": "Avoid Unnecessary Double Object Instantiation",
4231
+ "enabled": true,
4232
+ "languages": ["Groovy"],
4233
+ "parameters": []
4234
+ },
4235
+ {
4236
+ "id": "CodeNarc_UnnecessaryElseStatement",
4237
+ "category": "CodeStyle",
4238
+ "severityLevel": "Info",
4239
+ "title": "Avoid Unnecessary Else Statements After Return",
4240
+ "enabled": true,
4241
+ "languages": ["Groovy"],
4242
+ "parameters": []
4243
+ },
4244
+ {
4245
+ "id": "CodeNarc_UnnecessaryFail",
4246
+ "category": "BestPractice",
4247
+ "severityLevel": "Warning",
4248
+ "title": "Avoid Unnecessary Assert.fail() in Exception Catch Blocks",
4249
+ "enabled": true,
4250
+ "languages": ["Groovy"],
4251
+ "parameters": [
4252
+ {
4253
+ "name": "applyToClassNames",
4254
+ "default": "*Spec,*Test,*Tests,*TestCase",
4255
+ "description": "applyToClassNames"
4256
+ }
4257
+ ]
4258
+ },
4259
+ {
4260
+ "id": "CodeNarc_UnnecessaryFinalOnPrivateMethod",
4261
+ "category": "CodeStyle",
4262
+ "severityLevel": "Info",
4263
+ "title": "Avoid Unnecessary final Modifier on Private Methods",
4264
+ "enabled": true,
4265
+ "languages": ["Groovy"],
4266
+ "parameters": []
4267
+ },
4268
+ {
4269
+ "id": "CodeNarc_UnnecessaryFloatInstantiation",
4270
+ "category": "Performance",
4271
+ "severityLevel": "Info",
4272
+ "title": "Avoid Unnecessary Float Object Instantiation",
4273
+ "enabled": true,
4274
+ "languages": ["Groovy"],
4275
+ "parameters": []
4276
+ },
4277
+ {
4278
+ "id": "CodeNarc_UnnecessaryGetter",
4279
+ "category": "CodeStyle",
4280
+ "severityLevel": "Info",
4281
+ "title": "Avoid Unnecessary Getter Method Calls",
4282
+ "enabled": true,
4283
+ "languages": ["Groovy"],
4284
+ "parameters": [
4285
+ {
4286
+ "name": "checkIsMethods",
4287
+ "default": "true",
4288
+ "description": "checkIsMethods"
4289
+ },
4290
+ {
4291
+ "name": "ignoreMethodNames",
4292
+ "default": "null",
4293
+ "description": "ignoreMethodNames"
4294
+ }
4295
+ ]
4296
+ },
4297
+ {
4298
+ "id": "CodeNarc_UnnecessaryGroovyImport",
4299
+ "category": "CodeStyle",
4300
+ "severityLevel": "Info",
4301
+ "title": "Avoid Unnecessary Groovy Imports",
4302
+ "enabled": true,
4303
+ "languages": ["Groovy"],
4304
+ "parameters": []
4305
+ },
4306
+ {
4307
+ "id": "CodeNarc_UnnecessaryGString",
4308
+ "category": "CodeStyle",
4309
+ "severityLevel": "Info",
4310
+ "title": "Avoid Unnecessary GString Usage",
4311
+ "enabled": true,
4312
+ "languages": ["Groovy"],
4313
+ "parameters": []
4314
+ },
4315
+ {
4316
+ "id": "CodeNarc_UnnecessaryIfStatement",
4317
+ "category": "CodeStyle",
4318
+ "severityLevel": "Info",
4319
+ "title": "Avoid Unnecessary If Statements",
4320
+ "enabled": true,
4321
+ "languages": ["Groovy"],
4322
+ "parameters": [
4323
+ {
4324
+ "name": "checkLastStatementImplicitElse",
4325
+ "default": "true",
4326
+ "description": "checkLastStatementImplicitElse"
4327
+ }
4328
+ ]
4329
+ },
4330
+ {
4331
+ "id": "CodeNarc_UnnecessaryInstanceOfCheck",
4332
+ "category": "ErrorProne",
4333
+ "severityLevel": "High",
4334
+ "title": "Avoid Unnecessary instanceof Checks",
4335
+ "enabled": true,
4336
+ "languages": ["Groovy"],
4337
+ "parameters": []
4338
+ },
4339
+ {
4340
+ "id": "CodeNarc_UnnecessaryInstantiationToGetClass",
4341
+ "category": "Performance",
4342
+ "severityLevel": "Info",
4343
+ "title": "Avoid Unnecessary Instantiation to Get Class",
4344
+ "enabled": true,
4345
+ "languages": ["Groovy"],
4346
+ "parameters": []
4347
+ },
4348
+ {
4349
+ "id": "CodeNarc_UnnecessaryIntegerInstantiation",
4350
+ "category": "Performance",
4351
+ "severityLevel": "Info",
4352
+ "title": "Avoid Unnecessary Integer Instantiation",
4353
+ "enabled": true,
4354
+ "languages": ["Groovy"],
4355
+ "parameters": []
4356
+ },
4357
+ {
4358
+ "id": "CodeNarc_UnnecessaryLongInstantiation",
4359
+ "category": "Performance",
4360
+ "severityLevel": "Info",
4361
+ "title": "Avoid Unnecessary Long Object Instantiation",
4362
+ "enabled": true,
4363
+ "languages": ["Groovy"],
4364
+ "parameters": []
4365
+ },
4366
+ {
4367
+ "id": "CodeNarc_UnnecessaryModOne",
4368
+ "category": "ErrorProne",
4369
+ "severityLevel": "High",
4370
+ "title": "Avoid Unnecessary Modulo One Operation",
4371
+ "enabled": true,
4372
+ "languages": ["Groovy"],
4373
+ "parameters": []
4374
+ },
4375
+ {
4376
+ "id": "CodeNarc_UnnecessaryNullCheck",
4377
+ "category": "BestPractice",
4378
+ "severityLevel": "Info",
4379
+ "title": "Avoid Unnecessary Null Checks",
4380
+ "enabled": true,
4381
+ "languages": ["Groovy"],
4382
+ "parameters": []
4383
+ },
4384
+ {
4385
+ "id": "CodeNarc_UnnecessaryNullCheckBeforeInstanceOf",
4386
+ "category": "CodeStyle",
4387
+ "severityLevel": "Info",
4388
+ "title": "Avoid Unnecessary Null Check Before instanceof",
4389
+ "enabled": true,
4390
+ "languages": ["Groovy"],
4391
+ "parameters": []
4392
+ },
4393
+ {
4394
+ "id": "CodeNarc_UnnecessaryObjectReferences",
4395
+ "category": "CodeStyle",
4396
+ "severityLevel": "Info",
4397
+ "title": "Avoid Unnecessary Object References",
4398
+ "enabled": true,
4399
+ "languages": ["Groovy"],
4400
+ "parameters": [
4401
+ {
4402
+ "name": "maxReferencesAllowed",
4403
+ "default": "5",
4404
+ "description": "maxReferencesAllowed"
4405
+ }
4406
+ ]
4407
+ },
4408
+ {
4409
+ "id": "CodeNarc_UnnecessaryOverridingMethod",
4410
+ "category": "CodeStyle",
4411
+ "severityLevel": "Info",
4412
+ "title": "Avoid Unnecessary Overriding Methods",
4413
+ "enabled": true,
4414
+ "languages": ["Groovy"],
4415
+ "parameters": []
4416
+ },
4417
+ {
4418
+ "id": "CodeNarc_UnnecessaryPackageReference",
4419
+ "category": "CodeStyle",
4420
+ "severityLevel": "Info",
4421
+ "title": "Avoid Unnecessary Package References",
4422
+ "enabled": true,
4423
+ "languages": ["Groovy"],
4424
+ "parameters": []
4425
+ },
4426
+ {
4427
+ "id": "CodeNarc_UnnecessaryParenthesesForMethodCallWithClosure",
4428
+ "category": "CodeStyle",
4429
+ "severityLevel": "Info",
4430
+ "title": "Avoid Unnecessary Parentheses for Method Calls with Closure",
4431
+ "enabled": true,
4432
+ "languages": ["Groovy"],
4433
+ "parameters": []
4434
+ },
4435
+ {
4436
+ "id": "CodeNarc_UnnecessaryPublicModifier",
4437
+ "category": "CodeStyle",
4438
+ "severityLevel": "Info",
4439
+ "title": "Avoid Unnecessary Public Modifier",
4440
+ "enabled": true,
4441
+ "languages": ["Groovy"],
4442
+ "parameters": []
4443
+ },
4444
+ {
4445
+ "id": "CodeNarc_UnnecessaryReturnKeyword",
4446
+ "category": "CodeStyle",
4447
+ "severityLevel": "Info",
4448
+ "title": "Avoid Unnecessary Return Keyword",
4449
+ "enabled": true,
4450
+ "languages": ["Groovy"],
4451
+ "parameters": []
4452
+ },
4453
+ {
4454
+ "id": "CodeNarc_UnnecessarySafeNavigationOperator",
4455
+ "category": "CodeStyle",
4456
+ "severityLevel": "Info",
4457
+ "title": "Avoid Unnecessary Safe Navigation Operator",
4458
+ "enabled": true,
4459
+ "languages": ["Groovy"],
4460
+ "parameters": []
4461
+ },
4462
+ {
4463
+ "id": "CodeNarc_UnnecessarySelfAssignment",
4464
+ "category": "CodeStyle",
4465
+ "severityLevel": "Info",
4466
+ "title": "Avoid Unnecessary Self-Assignment",
4467
+ "enabled": true,
4468
+ "languages": ["Groovy"],
4469
+ "parameters": []
4470
+ },
4471
+ {
4472
+ "id": "CodeNarc_UnnecessarySemicolon",
4473
+ "category": "CodeStyle",
4474
+ "severityLevel": "Info",
4475
+ "title": "Avoid Unnecessary Semicolons",
4476
+ "enabled": true,
4477
+ "languages": ["Groovy"],
4478
+ "parameters": []
4479
+ },
4480
+ {
4481
+ "id": "CodeNarc_UnnecessarySetter",
4482
+ "category": "CodeStyle",
4483
+ "severityLevel": "Info",
4484
+ "title": "Avoid Unnecessary Setter Method Calls",
4485
+ "enabled": true,
4486
+ "languages": ["Groovy"],
4487
+ "parameters": []
4488
+ },
4489
+ {
4490
+ "id": "CodeNarc_UnnecessaryStringInstantiation",
4491
+ "category": "Performance",
4492
+ "severityLevel": "Info",
4493
+ "title": "Avoid Unnecessary String Instantiation",
4494
+ "enabled": true,
4495
+ "languages": ["Groovy"],
4496
+ "parameters": []
4497
+ },
4498
+ {
4499
+ "id": "CodeNarc_UnnecessaryTernaryExpression",
4500
+ "category": "CodeStyle",
4501
+ "severityLevel": "Info",
4502
+ "title": "Avoid Unnecessary Ternary Expressions",
4503
+ "enabled": true,
4504
+ "languages": ["Groovy"],
4505
+ "parameters": []
4506
+ },
4507
+ {
4508
+ "id": "CodeNarc_UnnecessaryToString",
4509
+ "category": "CodeStyle",
4510
+ "severityLevel": "Info",
4511
+ "title": "Avoid Unnecessary toString() Calls",
4512
+ "enabled": true,
4513
+ "languages": ["Groovy"],
4514
+ "parameters": [
4515
+ {
4516
+ "name": "checkAssignments",
4517
+ "default": "true",
4518
+ "description": "checkAssignments"
4519
+ }
4520
+ ]
4521
+ },
4522
+ {
4523
+ "id": "CodeNarc_UnnecessaryTransientModifier",
4524
+ "category": "CodeStyle",
4525
+ "severityLevel": "Info",
4526
+ "title": "Avoid Unnecessary Transient Modifier",
4527
+ "enabled": true,
4528
+ "languages": ["Groovy"],
4529
+ "parameters": []
4530
+ },
4531
+ {
4532
+ "id": "CodeNarc_UnsafeArrayDeclaration",
4533
+ "category": "Security",
4534
+ "severityLevel": "High",
4535
+ "title": "Avoid Unsafe Array Declaration",
4536
+ "enabled": true,
4537
+ "languages": ["Groovy"],
4538
+ "parameters": []
4539
+ },
4540
+ {
4541
+ "id": "CodeNarc_UnsafeImplementationAsMap",
4542
+ "category": "ErrorProne",
4543
+ "severityLevel": "High",
4544
+ "title": "Avoid Unsafe Implementation of Interfaces via Map Coercion",
4545
+ "enabled": true,
4546
+ "languages": ["Groovy"],
4547
+ "parameters": [
4548
+ {
4549
+ "name": "compilerPhase",
4550
+ "default": "4",
4551
+ "description": "compilerPhase"
4552
+ },
4553
+ {
4554
+ "name": "doNotApplyToFilesMatching",
4555
+ "default": ".*(Spec|Test|Tests|TestCase)\\.groovy",
4556
+ "description": "doNotApplyToFilesMatching"
4557
+ }
4558
+ ]
4559
+ },
4560
+ {
4561
+ "id": "CodeNarc_UnusedArray",
4562
+ "category": "UnusedCode",
4563
+ "severityLevel": "Warning",
4564
+ "title": "Detect Unused Array Allocations",
4565
+ "enabled": true,
4566
+ "languages": ["Groovy"],
4567
+ "parameters": []
4568
+ },
4569
+ {
4570
+ "id": "CodeNarc_UnusedImport",
4571
+ "category": "UnusedCode",
4572
+ "severityLevel": "Info",
4573
+ "title": "Avoid Unused Imports",
4574
+ "enabled": true,
4575
+ "languages": ["Groovy"],
4576
+ "parameters": []
4577
+ },
4578
+ {
4579
+ "id": "CodeNarc_UnusedMethodParameter",
4580
+ "category": "BestPractice",
4581
+ "severityLevel": "Warning",
4582
+ "title": "Avoid Unused Method Parameters",
4583
+ "enabled": true,
4584
+ "languages": ["Groovy"],
4585
+ "parameters": [
4586
+ {
4587
+ "name": "ignoreClassRegex",
4588
+ "default": ".*Category",
4589
+ "description": "ignoreClassRegex"
4590
+ },
4591
+ {
4592
+ "name": "ignoreRegex",
4593
+ "default": "ignore|ignored",
4594
+ "description": "ignoreRegex"
4595
+ }
4596
+ ]
4597
+ },
4598
+ {
4599
+ "id": "CodeNarc_UnusedObject",
4600
+ "category": "UnusedCode",
4601
+ "severityLevel": "Warning",
4602
+ "title": "Avoid Unused Object Allocations",
4603
+ "enabled": true,
4604
+ "languages": ["Groovy"],
4605
+ "parameters": [
4606
+ {
4607
+ "name": "doNotApplyToFilesMatching",
4608
+ "default": ".*(Spec|Test|Tests|TestCase)\\.groovy",
4609
+ "description": "doNotApplyToFilesMatching"
4610
+ }
4611
+ ]
4612
+ },
4613
+ {
4614
+ "id": "CodeNarc_UnusedPrivateField",
4615
+ "category": "UnusedCode",
4616
+ "severityLevel": "Warning",
4617
+ "title": "Detect Unused Private Fields",
4618
+ "enabled": true,
4619
+ "languages": ["Groovy"],
4620
+ "parameters": [
4621
+ {
4622
+ "name": "allowConstructorOnlyUsages",
4623
+ "default": "true",
4624
+ "description": "allowConstructorOnlyUsages"
4625
+ },
4626
+ {
4627
+ "name": "ignoreClassesAnnotatedWithNames",
4628
+ "default": "Entity",
4629
+ "description": "ignoreClassesAnnotatedWithNames"
4630
+ },
4631
+ {
4632
+ "name": "ignoreFieldNames",
4633
+ "default": "serialVersionUID",
4634
+ "description": "ignoreFieldNames"
4635
+ }
4636
+ ]
4637
+ },
4638
+ {
4639
+ "id": "CodeNarc_UnusedPrivateMethod",
4640
+ "category": "UnusedCode",
4641
+ "severityLevel": "Warning",
4642
+ "title": "Detect Unused Private Methods",
4643
+ "enabled": true,
4644
+ "languages": ["Groovy"],
4645
+ "parameters": [
4646
+ {
4647
+ "name": "ignoreMethodsWithAnnotationNames",
4648
+ "default": "",
4649
+ "description": "ignoreMethodsWithAnnotationNames"
4650
+ }
4651
+ ]
4652
+ },
4653
+ {
4654
+ "id": "CodeNarc_UnusedPrivateMethodParameter",
4655
+ "category": "UnusedCode",
4656
+ "severityLevel": "Warning",
4657
+ "title": "Detect Unused Private Method Parameters",
4658
+ "enabled": true,
4659
+ "languages": ["Groovy"],
4660
+ "parameters": [
4661
+ {
4662
+ "name": "ignoreRegex",
4663
+ "default": "ignore|ignored",
4664
+ "description": "ignoreRegex"
4665
+ }
4666
+ ]
4667
+ },
4668
+ {
4669
+ "id": "CodeNarc_UnusedVariable",
4670
+ "category": "UnusedCode",
4671
+ "severityLevel": "Warning",
4672
+ "title": "Detect Unused Variables",
4673
+ "enabled": true,
4674
+ "languages": ["Groovy"],
4675
+ "parameters": [
4676
+ {
4677
+ "name": "ignoreVariableNames",
4678
+ "default": "null",
4679
+ "description": "ignoreVariableNames"
4680
+ }
4681
+ ]
4682
+ },
4683
+ {
4684
+ "id": "CodeNarc_UseAssertEqualsInsteadOfAssertTrue",
4685
+ "category": "BestPractice",
4686
+ "severityLevel": "Info",
4687
+ "title": "Use assertEquals Instead of assertTrue for Object Equality",
4688
+ "enabled": true,
4689
+ "languages": ["Groovy"],
4690
+ "parameters": [
4691
+ {
4692
+ "name": "applyToClassNames",
4693
+ "default": "*Spec,*Test,*Tests,*TestCase",
4694
+ "description": "applyToClassNames"
4695
+ }
4696
+ ]
4697
+ },
4698
+ {
4699
+ "id": "CodeNarc_UseAssertFalseInsteadOfNegation",
4700
+ "category": "CodeStyle",
4701
+ "severityLevel": "Info",
4702
+ "title": "Use AssertFalse Instead of Negation in Unit Tests",
4703
+ "enabled": true,
4704
+ "languages": ["Groovy"],
4705
+ "parameters": [
4706
+ {
4707
+ "name": "applyToClassNames",
4708
+ "default": "*Spec,*Test,*Tests,*TestCase",
4709
+ "description": "applyToClassNames"
4710
+ }
4711
+ ]
4712
+ },
4713
+ {
4714
+ "id": "CodeNarc_UseAssertNullInsteadOfAssertEquals",
4715
+ "category": "BestPractice",
4716
+ "severityLevel": "Info",
4717
+ "title": "Use AssertNull Instead of AssertEquals for Null Checks",
4718
+ "enabled": true,
4719
+ "languages": ["Groovy"],
4720
+ "parameters": [
4721
+ {
4722
+ "name": "applyToClassNames",
4723
+ "default": "*Spec,*Test,*Tests,*TestCase",
4724
+ "description": "applyToClassNames"
4725
+ }
4726
+ ]
4727
+ },
4728
+ {
4729
+ "id": "CodeNarc_UseAssertSameInsteadOfAssertTrue",
4730
+ "category": "BestPractice",
4731
+ "severityLevel": "Info",
4732
+ "title": "Use AssertSame Instead of AssertTrue for Reference Equality",
4733
+ "enabled": true,
4734
+ "languages": ["Groovy"],
4735
+ "parameters": [
4736
+ {
4737
+ "name": "applyToClassNames",
4738
+ "default": "*Spec,*Test,*Tests,*TestCase",
4739
+ "description": "applyToClassNames"
4740
+ }
4741
+ ]
4742
+ },
4743
+ {
4744
+ "id": "CodeNarc_UseAssertTrueInsteadOfAssertEquals",
4745
+ "category": "BestPractice",
4746
+ "severityLevel": "Info",
4747
+ "title": "Use AssertTrue or AssertFalse Instead of AssertEquals for Boolean Assertions",
4748
+ "enabled": true,
4749
+ "languages": ["Groovy"],
4750
+ "parameters": [
4751
+ {
4752
+ "name": "applyToClassNames",
4753
+ "default": "*Spec,*Test,*Tests,*TestCase",
4754
+ "description": "applyToClassNames"
4755
+ },
4756
+ {
4757
+ "name": "checkAssertStatements",
4758
+ "default": "false",
4759
+ "description": "checkAssertStatements"
4760
+ }
4761
+ ]
4762
+ },
4763
+ {
4764
+ "id": "CodeNarc_UseAssertTrueInsteadOfNegation",
4765
+ "category": "BestPractice",
4766
+ "severityLevel": "Info",
4767
+ "title": "Use AssertTrue Instead of Negation in Assertions",
4768
+ "enabled": true,
4769
+ "languages": ["Groovy"],
4770
+ "parameters": [
4771
+ {
4772
+ "name": "applyToClassNames",
4773
+ "default": "*Spec,*Test,*Tests,*TestCase",
4774
+ "description": "applyToClassNames"
4775
+ }
4776
+ ]
4777
+ },
4778
+ {
4779
+ "id": "CodeNarc_UseCollectMany",
4780
+ "category": "CodeStyle",
4781
+ "severityLevel": "Info",
4782
+ "title": "Use collectMany Instead of collect{}.flatten()",
4783
+ "enabled": true,
4784
+ "languages": ["Groovy"],
4785
+ "parameters": []
4786
+ },
4787
+ {
4788
+ "id": "CodeNarc_UseCollectNested",
4789
+ "category": "CodeStyle",
4790
+ "severityLevel": "Info",
4791
+ "title": "Use collectNested Instead of Nested collect Calls",
4792
+ "enabled": true,
4793
+ "languages": ["Groovy"],
4794
+ "parameters": []
4795
+ },
4796
+ {
4797
+ "id": "CodeNarc_UseOfNotifyMethod",
4798
+ "category": "ErrorProne",
4799
+ "severityLevel": "Warning",
4800
+ "title": "Avoid Using notify() Instead of notifyAll()",
4801
+ "enabled": true,
4802
+ "languages": ["Groovy"],
4803
+ "parameters": []
4804
+ },
4805
+ {
4806
+ "id": "CodeNarc_VariableName",
4807
+ "category": "CodeStyle",
4808
+ "severityLevel": "Info",
4809
+ "title": "Enforce Variable Name Pattern",
4810
+ "enabled": true,
4811
+ "languages": ["Groovy"],
4812
+ "parameters": [
4813
+ {
4814
+ "name": "finalRegex",
4815
+ "default": "null",
4816
+ "description": "finalRegex"
4817
+ },
4818
+ {
4819
+ "name": "ignoreVariableNames",
4820
+ "default": "null",
4821
+ "description": "ignoreVariableNames"
4822
+ },
4823
+ {
4824
+ "name": "regex",
4825
+ "default": "[a-z][a-zA-Z0-9]*",
4826
+ "description": "regex"
4827
+ }
4828
+ ]
4829
+ },
4830
+ {
4831
+ "id": "CodeNarc_VariableTypeRequired",
4832
+ "category": "CodeStyle",
4833
+ "severityLevel": "Info",
4834
+ "title": "EnforceExplicitVariableTypeDeclaration",
4835
+ "enabled": true,
4836
+ "languages": ["Groovy"],
4837
+ "parameters": [
4838
+ {
4839
+ "name": "ignoreVariableNames",
4840
+ "default": "null",
4841
+ "description": "ignoreVariableNames"
4842
+ }
4843
+ ]
4844
+ },
4845
+ {
4846
+ "id": "CodeNarc_VectorIsObsolete",
4847
+ "category": "BestPractice",
4848
+ "severityLevel": "Warning",
4849
+ "title": "Avoid Using java.util.Vector",
4850
+ "enabled": true,
4851
+ "languages": ["Groovy"],
4852
+ "parameters": []
4853
+ },
4854
+ {
4855
+ "id": "CodeNarc_VolatileArrayField",
4856
+ "category": "ErrorProne",
4857
+ "severityLevel": "High",
4858
+ "title": "Avoid Volatile Array Fields",
4859
+ "enabled": true,
4860
+ "languages": ["Groovy"],
4861
+ "parameters": []
4862
+ },
4863
+ {
4864
+ "id": "CodeNarc_VolatileLongOrDoubleField",
4865
+ "category": "ErrorProne",
4866
+ "severityLevel": "High",
4867
+ "title": "Avoid Declaring Long or Double Fields as Volatile",
4868
+ "enabled": true,
4869
+ "languages": ["Groovy"],
4870
+ "parameters": []
4871
+ },
4872
+ {
4873
+ "id": "CodeNarc_WaitOutsideOfWhileLoop",
4874
+ "category": "ErrorProne",
4875
+ "severityLevel": "High",
4876
+ "title": "Enforce Wait Calls Within While Loops",
4877
+ "enabled": true,
4878
+ "languages": ["Groovy"],
4879
+ "parameters": []
4880
+ },
4881
+ {
4882
+ "id": "CodeNarc_WhileStatementBraces",
4883
+ "category": "CodeStyle",
4884
+ "severityLevel": "Info",
4885
+ "title": "Enforce Braces on While Statements",
4886
+ "enabled": true,
4887
+ "languages": ["Groovy"],
4888
+ "parameters": []
4889
+ }
4890
+ ]