npm-groovy-lint 9.4.0 → 9.4.1

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.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,13 @@
4
4
 
5
5
  - Add your updates here :)
6
6
 
7
+ ## [9.4.1] 2022-01-22
8
+
9
+ - Upgrade node-sarif-builder to 2.0.1 and send npm-groovy-lint version in SARIF logs
10
+ - New range detection for rules:
11
+ - MethodReturnTypeRequired
12
+ - UnusedImport
13
+
7
14
  ## [9.4.0] 2022-01-11
8
15
 
9
16
  - Add [SARIF](https://sarifweb.azurewebsites.net/) output format using [node-sarif-builder](https://github.com/nvuillam/node-sarif-builder)
@@ -1,395 +1,395 @@
1
1
  {
2
- "rules": {
3
- "basic.AssertWithinFinallyBlock": {},
4
- "basic.AssignmentInConditional": {},
5
- "basic.BigDecimalInstantiation": {},
6
- "basic.BitwiseOperatorInConditional": {},
7
- "basic.BooleanGetBoolean": {},
8
- "basic.BrokenNullCheck": {},
9
- "basic.BrokenOddnessCheck": {},
10
- "basic.ClassForName": {},
11
- "basic.ComparisonOfTwoConstants": {},
12
- "basic.ComparisonWithSelf": {},
13
- "basic.ConstantAssertExpression": {},
14
- "basic.ConstantIfExpression": {},
15
- "basic.ConstantTernaryExpression": {},
16
- "basic.DeadCode": {},
17
- "basic.DoubleNegative": {},
18
- "basic.DuplicateCaseStatement": {},
19
- "basic.DuplicateMapKey": {},
20
- "basic.DuplicateSetValue": {},
21
- "basic.EmptyCatchBlock": {},
22
- "basic.EmptyClass": {},
23
- "basic.EmptyElseBlock": {},
24
- "basic.EmptyFinallyBlock": {},
25
- "basic.EmptyForStatement": {},
26
- "basic.EmptyIfStatement": {},
27
- "basic.EmptyInstanceInitializer": {},
28
- "basic.EmptyMethod": {},
29
- "basic.EmptyStaticInitializer": {},
30
- "basic.EmptySwitchStatement": {},
31
- "basic.EmptySynchronizedStatement": {},
32
- "basic.EmptyTryBlock": {},
33
- "basic.EmptyWhileStatement": {},
34
- "basic.EqualsAndHashCode": {},
35
- "basic.EqualsOverloaded": {},
36
- "basic.ExplicitGarbageCollection": {},
37
- "basic.ForLoopShouldBeWhileLoop": {},
38
- "basic.HardCodedWindowsFileSeparator": {},
39
- "basic.HardCodedWindowsRootDirectory": {},
40
- "basic.IntegerGetInteger": {},
41
- "basic.MultipleUnaryOperators": {},
42
- "basic.ParameterAssignmentInFilterClosure": {},
43
- "basic.RandomDoubleCoercedToZero": {},
44
- "basic.RemoveAllOnSelf": {},
45
- "basic.ReturnFromFinallyBlock": {},
46
- "basic.ThrowExceptionFromFinallyBlock": {},
47
- "braces.ElseBlockBraces": {},
48
- "braces.ForStatementBraces": {},
49
- "braces.IfStatementBraces": {},
50
- "braces.WhileStatementBraces": {},
51
- "comments.ClassJavadoc": {},
52
- "comments.JavadocConsecutiveEmptyLines": {},
53
- "comments.JavadocEmptyAuthorTag": {},
54
- "comments.JavadocEmptyExceptionTag": {},
55
- "comments.JavadocEmptyFirstLine": {},
56
- "comments.JavadocEmptyLastLine": {},
57
- "comments.JavadocEmptyParamTag": {},
58
- "comments.JavadocEmptyReturnTag": {},
59
- "comments.JavadocEmptySeeTag": {},
60
- "comments.JavadocEmptySinceTag": {},
61
- "comments.JavadocEmptyThrowsTag": {},
62
- "comments.JavadocEmptyVersionTag": {},
63
- "comments.JavadocMissingExceptionDescription": {},
64
- "comments.JavadocMissingParamDescription": {},
65
- "comments.JavadocMissingThrowsDescription": {},
66
- "concurrency.BusyWait": {},
67
- "concurrency.DoubleCheckedLocking": {},
68
- "concurrency.InconsistentPropertyLocking": {},
69
- "concurrency.InconsistentPropertySynchronization": {},
70
- "concurrency.NestedSynchronization": {},
71
- "concurrency.StaticCalendarField": {},
72
- "concurrency.StaticConnection": {},
73
- "concurrency.StaticDateFormatField": {},
74
- "concurrency.StaticMatcherField": {},
75
- "concurrency.StaticSimpleDateFormatField": {},
76
- "concurrency.SynchronizedMethod": {},
77
- "concurrency.SynchronizedOnBoxedPrimitive": {},
78
- "concurrency.SynchronizedOnGetClass": {},
79
- "concurrency.SynchronizedOnReentrantLock": {},
80
- "concurrency.SynchronizedOnString": {},
81
- "concurrency.SynchronizedOnThis": {},
82
- "concurrency.SynchronizedReadObjectMethod": {},
83
- "concurrency.SystemRunFinalizersOnExit": {},
84
- "concurrency.ThisReferenceEscapesConstructor": {},
85
- "concurrency.ThreadGroup": {},
86
- "concurrency.ThreadLocalNotStaticFinal": {},
87
- "concurrency.ThreadYield": {},
88
- "concurrency.UseOfNotifyMethod": {},
89
- "concurrency.VolatileArrayField": {},
90
- "concurrency.VolatileLongOrDoubleField": {},
91
- "concurrency.WaitOutsideOfWhileLoop": {},
92
- "convention.CompileStatic": {},
93
- "convention.ConfusingTernary": {},
94
- "convention.CouldBeElvis": {},
95
- "convention.CouldBeSwitchStatement": {},
96
- "convention.FieldTypeRequired": {},
97
- "convention.HashtableIsObsolete": {},
98
- "convention.IfStatementCouldBeTernary": {},
99
- "convention.ImplicitClosureParameter": {},
100
- "convention.ImplicitReturnStatement": {},
101
- "convention.InvertedCondition": {},
102
- "convention.InvertedIfElse": {},
103
- "convention.LongLiteralWithLowerCaseL": {},
104
- "convention.MethodParameterTypeRequired": {},
105
- "convention.MethodReturnTypeRequired": {},
106
- "convention.NoDef": {},
107
- "convention.NoDouble": {},
108
- "convention.NoFloat": {},
109
- "convention.NoJavaUtilDate": {},
110
- "convention.NoTabCharacter": {},
111
- "convention.ParameterReassignment": {},
112
- "convention.PublicMethodsBeforeNonPublicMethods": {},
113
- "convention.StaticFieldsBeforeInstanceFields": {},
114
- "convention.StaticMethodsBeforeInstanceMethods": {},
115
- "convention.TernaryCouldBeElvis": {},
116
- "convention.TrailingComma": {},
117
- "convention.VariableTypeRequired": {},
118
- "convention.VectorIsObsolete": {},
119
- "design.AbstractClassWithPublicConstructor": {},
120
- "design.AbstractClassWithoutAbstractMethod": {},
121
- "design.AssignmentToStaticFieldFromInstanceMethod": {},
122
- "design.BooleanMethodReturnsNull": {},
123
- "design.BuilderMethodWithSideEffects": {},
124
- "design.CloneableWithoutClone": {},
125
- "design.CloseWithoutCloseable": {},
126
- "design.CompareToWithoutComparable": {},
127
- "design.ConstantsOnlyInterface": {},
128
- "design.EmptyMethodInAbstractClass": {},
129
- "design.FinalClassWithProtectedMember": {},
130
- "design.ImplementationAsType": {},
131
- "design.Instanceof": {},
132
- "design.LocaleSetDefault": {},
133
- "design.NestedForLoop": {},
134
- "design.OptionalCollectionReturnType": {},
135
- "design.OptionalField": {},
136
- "design.OptionalMethodParameter": {},
137
- "design.PrivateFieldCouldBeFinal": {},
138
- "design.PublicInstanceField": {},
139
- "design.ReturnsNullInsteadOfEmptyArray": {},
140
- "design.ReturnsNullInsteadOfEmptyCollection": {},
141
- "design.SimpleDateFormatMissingLocale": {},
142
- "design.StatelessSingleton": {},
143
- "design.ToStringReturnsNull": {},
144
- "dry.DuplicateListLiteral": {},
145
- "dry.DuplicateMapLiteral": {},
146
- "dry.DuplicateNumberLiteral": {},
147
- "dry.DuplicateStringLiteral": {},
148
- "enhanced.CloneWithoutCloneable": {},
149
- "enhanced.JUnitAssertEqualsConstantActualValue": {},
150
- "enhanced.MissingOverrideAnnotation": {},
151
- "enhanced.UnsafeImplementationAsMap": {},
152
- "exceptions.CatchArrayIndexOutOfBoundsException": {},
153
- "exceptions.CatchError": {},
154
- "exceptions.CatchException": {},
155
- "exceptions.CatchIllegalMonitorStateException": {},
156
- "exceptions.CatchIndexOutOfBoundsException": {},
157
- "exceptions.CatchNullPointerException": {},
158
- "exceptions.CatchRuntimeException": {},
159
- "exceptions.CatchThrowable": {},
160
- "exceptions.ConfusingClassNamedException": {},
161
- "exceptions.ExceptionExtendsError": {},
162
- "exceptions.ExceptionExtendsThrowable": {},
163
- "exceptions.ExceptionNotThrown": {},
164
- "exceptions.MissingNewInThrowStatement": {},
165
- "exceptions.ReturnNullFromCatchBlock": {},
166
- "exceptions.SwallowThreadDeath": {},
167
- "exceptions.ThrowError": {},
168
- "exceptions.ThrowException": {},
169
- "exceptions.ThrowNullPointerException": {},
170
- "exceptions.ThrowRuntimeException": {},
171
- "exceptions.ThrowThrowable": {},
172
- "formatting.BlankLineBeforePackage": {},
173
- "formatting.BlockEndsWithBlankLine": {},
174
- "formatting.BlockStartsWithBlankLine": {},
175
- "formatting.BracesForClass": {},
176
- "formatting.BracesForForLoop": {},
177
- "formatting.BracesForIfElse": {},
178
- "formatting.BracesForMethod": {},
179
- "formatting.BracesForTryCatchFinally": {},
180
- "formatting.ClassEndsWithBlankLine": {},
181
- "formatting.ClassStartsWithBlankLine": {},
182
- "formatting.ClosureStatementOnOpeningLineOfMultipleLineClosure": {},
183
- "formatting.ConsecutiveBlankLines": {},
184
- "formatting.FileEndsWithoutNewline": {},
185
- "formatting.Indentation": {},
186
- "formatting.LineLength": {},
187
- "formatting.MissingBlankLineAfterImports": {},
188
- "formatting.MissingBlankLineAfterPackage": {},
189
- "formatting.MissingBlankLineBeforeAnnotatedField": {},
190
- "formatting.SpaceAfterCatch": {},
191
- "formatting.SpaceAfterClosingBrace": {},
192
- "formatting.SpaceAfterComma": {},
193
- "formatting.SpaceAfterFor": {},
194
- "formatting.SpaceAfterIf": {},
195
- "formatting.SpaceAfterMethodCallName": {},
196
- "formatting.SpaceAfterMethodDeclarationName": {},
197
- "formatting.SpaceAfterNotOperator": {},
198
- "formatting.SpaceAfterOpeningBrace": {},
199
- "formatting.SpaceAfterSemicolon": {},
200
- "formatting.SpaceAfterSwitch": {},
201
- "formatting.SpaceAfterWhile": {},
202
- "formatting.SpaceAroundClosureArrow": {},
203
- "formatting.SpaceAroundMapEntryColon": {},
204
- "formatting.SpaceAroundOperator": {},
205
- "formatting.SpaceBeforeClosingBrace": {},
206
- "formatting.SpaceBeforeOpeningBrace": {},
207
- "formatting.SpaceInsideParentheses": {},
208
- "formatting.TrailingWhitespace": {},
209
- "generic.IllegalClassMember": {},
210
- "generic.IllegalClassReference": {},
211
- "generic.IllegalPackageReference": {},
212
- "generic.IllegalRegex": {},
213
- "generic.IllegalString": {},
214
- "generic.IllegalSubclass": {},
215
- "generic.RequiredRegex": {},
216
- "generic.RequiredString": {},
217
- "generic.StatelessClass": {},
218
- "grails.GrailsDomainGormMethods": {},
219
- "grails.GrailsDomainHasEquals": {},
220
- "grails.GrailsDomainHasToString": {},
221
- "grails.GrailsDomainReservedSqlKeywordName": {},
222
- "grails.GrailsDomainStringPropertyMaxSize": {},
223
- "grails.GrailsDomainWithServiceReference": {},
224
- "grails.GrailsDuplicateConstraint": {},
225
- "grails.GrailsDuplicateMapping": {},
226
- "grails.GrailsMassAssignment": {},
227
- "grails.GrailsPublicControllerMethod": {},
228
- "grails.GrailsServletContextReference": {},
229
- "grails.GrailsStatelessService": {},
230
- "groovyism.AssignCollectionSort": {},
231
- "groovyism.AssignCollectionUnique": {},
232
- "groovyism.ClosureAsLastMethodParameter": {},
233
- "groovyism.CollectAllIsDeprecated": {},
234
- "groovyism.ConfusingMultipleReturns": {},
235
- "groovyism.ExplicitArrayListInstantiation": {},
236
- "groovyism.ExplicitCallToAndMethod": {},
237
- "groovyism.ExplicitCallToCompareToMethod": {},
238
- "groovyism.ExplicitCallToDivMethod": {},
239
- "groovyism.ExplicitCallToEqualsMethod": {},
240
- "groovyism.ExplicitCallToGetAtMethod": {},
241
- "groovyism.ExplicitCallToLeftShiftMethod": {},
242
- "groovyism.ExplicitCallToMinusMethod": {},
243
- "groovyism.ExplicitCallToModMethod": {},
244
- "groovyism.ExplicitCallToMultiplyMethod": {},
245
- "groovyism.ExplicitCallToOrMethod": {},
246
- "groovyism.ExplicitCallToPlusMethod": {},
247
- "groovyism.ExplicitCallToPowerMethod": {},
248
- "groovyism.ExplicitCallToPutAtMethod": {},
249
- "groovyism.ExplicitCallToRightShiftMethod": {},
250
- "groovyism.ExplicitCallToXorMethod": {},
251
- "groovyism.ExplicitHashMapInstantiation": {},
252
- "groovyism.ExplicitHashSetInstantiation": {},
253
- "groovyism.ExplicitLinkedHashMapInstantiation": {},
254
- "groovyism.ExplicitLinkedListInstantiation": {},
255
- "groovyism.ExplicitStackInstantiation": {},
256
- "groovyism.ExplicitTreeSetInstantiation": {},
257
- "groovyism.GStringAsMapKey": {},
258
- "groovyism.GStringExpressionWithinString": {},
259
- "groovyism.GetterMethodCouldBeProperty": {},
260
- "groovyism.GroovyLangImmutable": {},
261
- "groovyism.UseCollectMany": {},
262
- "groovyism.UseCollectNested": {},
263
- "imports.DuplicateImport": {},
264
- "imports.ImportFromSamePackage": {},
265
- "imports.ImportFromSunPackages": {},
266
- "imports.MisorderedStaticImports": {},
267
- "imports.NoWildcardImports": {},
268
- "imports.UnnecessaryGroovyImport": {},
269
- "imports.UnusedImport": {},
270
- "jdbc.DirectConnectionManagement": {},
271
- "jdbc.JdbcConnectionReference": {},
272
- "jdbc.JdbcResultSetReference": {},
273
- "jdbc.JdbcStatementReference": {},
274
- "junit.ChainedTest": {},
275
- "junit.CoupledTestCase": {},
276
- "junit.JUnitAssertAlwaysFails": {},
277
- "junit.JUnitAssertAlwaysSucceeds": {},
278
- "junit.JUnitFailWithoutMessage": {},
279
- "junit.JUnitLostTest": {},
280
- "junit.JUnitPublicField": {},
281
- "junit.JUnitPublicNonTestMethod": {},
282
- "junit.JUnitPublicProperty": {},
283
- "junit.JUnitSetUpCallsSuper": {},
284
- "junit.JUnitStyleAssertions": {},
285
- "junit.JUnitTearDownCallsSuper": {},
286
- "junit.JUnitTestMethodWithoutAssert": {},
287
- "junit.JUnitUnnecessarySetUp": {},
288
- "junit.JUnitUnnecessaryTearDown": {},
289
- "junit.JUnitUnnecessaryThrowsException": {},
290
- "junit.SpockIgnoreRestUsed": {},
291
- "junit.UnnecessaryFail": {},
292
- "junit.UseAssertEqualsInsteadOfAssertTrue": {},
293
- "junit.UseAssertFalseInsteadOfNegation": {},
294
- "junit.UseAssertNullInsteadOfAssertEquals": {},
295
- "junit.UseAssertSameInsteadOfAssertTrue": {},
296
- "junit.UseAssertTrueInsteadOfAssertEquals": {},
297
- "junit.UseAssertTrueInsteadOfNegation": {},
298
- "logging.LoggerForDifferentClass": {},
299
- "logging.LoggerWithWrongModifiers": {},
300
- "logging.LoggingSwallowsStacktrace": {},
301
- "logging.MultipleLoggers": {},
302
- "logging.PrintStackTrace": {},
303
- "logging.Println": {},
304
- "logging.SystemErrPrint": {},
305
- "logging.SystemOutPrint": {},
306
- "naming.AbstractClassName": {},
307
- "naming.ClassName": {},
308
- "naming.ClassNameSameAsFilename": {},
309
- "naming.ClassNameSameAsSuperclass": {},
310
- "naming.ConfusingMethodName": {},
311
- "naming.FactoryMethodName": {},
312
- "naming.FieldName": {},
313
- "naming.InterfaceName": {},
314
- "naming.InterfaceNameSameAsSuperInterface": {},
315
- "naming.MethodName": {},
316
- "naming.ObjectOverrideMisspelledMethodName": {},
317
- "naming.PackageName": {},
318
- "naming.PackageNameMatchesFilePath": {},
319
- "naming.ParameterName": {},
320
- "naming.PropertyName": {},
321
- "naming.VariableName": {},
322
- "security.FileCreateTempFile": {},
323
- "security.InsecureRandom": {},
324
- "security.JavaIoPackageAccess": {},
325
- "security.NonFinalPublicField": {},
326
- "security.NonFinalSubclassOfSensitiveInterface": {},
327
- "security.ObjectFinalize": {},
328
- "security.PublicFinalizeMethod": {},
329
- "security.SystemExit": {},
330
- "security.UnsafeArrayDeclaration": {},
331
- "serialization.EnumCustomSerializationIgnored": {},
332
- "serialization.SerialPersistentFields": {},
333
- "serialization.SerialVersionUID": {},
334
- "serialization.SerializableClassMustDefineSerialVersionUID": {},
335
- "size.ClassSize": {},
336
- "size.MethodCount": {},
337
- "size.MethodSize": {},
338
- "size.NestedBlockDepth": {},
339
- "size.ParameterCount": {},
340
- "unnecessary.AddEmptyString": {},
341
- "unnecessary.ConsecutiveLiteralAppends": {},
342
- "unnecessary.ConsecutiveStringConcatenation": {},
343
- "unnecessary.UnnecessaryBigDecimalInstantiation": {},
344
- "unnecessary.UnnecessaryBigIntegerInstantiation": {},
345
- "unnecessary.UnnecessaryBooleanExpression": {},
346
- "unnecessary.UnnecessaryBooleanInstantiation": {},
347
- "unnecessary.UnnecessaryCallForLastElement": {},
348
- "unnecessary.UnnecessaryCallToSubstring": {},
349
- "unnecessary.UnnecessaryCast": {},
350
- "unnecessary.UnnecessaryCatchBlock": {},
351
- "unnecessary.UnnecessaryCollectCall": {},
352
- "unnecessary.UnnecessaryCollectionCall": {},
353
- "unnecessary.UnnecessaryConstructor": {},
354
- "unnecessary.UnnecessaryDefInFieldDeclaration": {},
355
- "unnecessary.UnnecessaryDefInMethodDeclaration": {},
356
- "unnecessary.UnnecessaryDefInVariableDeclaration": {},
357
- "unnecessary.UnnecessaryDotClass": {},
358
- "unnecessary.UnnecessaryDoubleInstantiation": {},
359
- "unnecessary.UnnecessaryElseStatement": {},
360
- "unnecessary.UnnecessaryFinalOnPrivateMethod": {},
361
- "unnecessary.UnnecessaryFloatInstantiation": {},
362
- "unnecessary.UnnecessaryGString": {},
363
- "unnecessary.UnnecessaryGetter": {},
364
- "unnecessary.UnnecessaryIfStatement": {},
365
- "unnecessary.UnnecessaryInstanceOfCheck": {},
366
- "unnecessary.UnnecessaryInstantiationToGetClass": {},
367
- "unnecessary.UnnecessaryIntegerInstantiation": {},
368
- "unnecessary.UnnecessaryLongInstantiation": {},
369
- "unnecessary.UnnecessaryModOne": {},
370
- "unnecessary.UnnecessaryNullCheck": {},
371
- "unnecessary.UnnecessaryNullCheckBeforeInstanceOf": {},
372
- "unnecessary.UnnecessaryObjectReferences": {},
373
- "unnecessary.UnnecessaryOverridingMethod": {},
374
- "unnecessary.UnnecessaryPackageReference": {},
375
- "unnecessary.UnnecessaryParenthesesForMethodCallWithClosure": {},
376
- "unnecessary.UnnecessaryPublicModifier": {},
377
- "unnecessary.UnnecessaryReturnKeyword": {},
378
- "unnecessary.UnnecessarySafeNavigationOperator": {},
379
- "unnecessary.UnnecessarySelfAssignment": {},
380
- "unnecessary.UnnecessarySemicolon": {},
381
- "unnecessary.UnnecessarySetter": {},
382
- "unnecessary.UnnecessaryStringInstantiation": {},
383
- "unnecessary.UnnecessarySubstring": {},
384
- "unnecessary.UnnecessaryTernaryExpression": {},
385
- "unnecessary.UnnecessaryToString": {},
386
- "unnecessary.UnnecessaryTransientModifier": {},
387
- "unused.UnusedArray": {},
388
- "unused.UnusedMethodParameter": {},
389
- "unused.UnusedObject": {},
390
- "unused.UnusedPrivateField": {},
391
- "unused.UnusedPrivateMethod": {},
392
- "unused.UnusedPrivateMethodParameter": {},
393
- "unused.UnusedVariable": {}
394
- }
395
- }
2
+ "rules": {
3
+ "basic.AssertWithinFinallyBlock": {},
4
+ "basic.AssignmentInConditional": {},
5
+ "basic.BigDecimalInstantiation": {},
6
+ "basic.BitwiseOperatorInConditional": {},
7
+ "basic.BooleanGetBoolean": {},
8
+ "basic.BrokenNullCheck": {},
9
+ "basic.BrokenOddnessCheck": {},
10
+ "basic.ClassForName": {},
11
+ "basic.ComparisonOfTwoConstants": {},
12
+ "basic.ComparisonWithSelf": {},
13
+ "basic.ConstantAssertExpression": {},
14
+ "basic.ConstantIfExpression": {},
15
+ "basic.ConstantTernaryExpression": {},
16
+ "basic.DeadCode": {},
17
+ "basic.DoubleNegative": {},
18
+ "basic.DuplicateCaseStatement": {},
19
+ "basic.DuplicateMapKey": {},
20
+ "basic.DuplicateSetValue": {},
21
+ "basic.EmptyCatchBlock": {},
22
+ "basic.EmptyClass": {},
23
+ "basic.EmptyElseBlock": {},
24
+ "basic.EmptyFinallyBlock": {},
25
+ "basic.EmptyForStatement": {},
26
+ "basic.EmptyIfStatement": {},
27
+ "basic.EmptyInstanceInitializer": {},
28
+ "basic.EmptyMethod": {},
29
+ "basic.EmptyStaticInitializer": {},
30
+ "basic.EmptySwitchStatement": {},
31
+ "basic.EmptySynchronizedStatement": {},
32
+ "basic.EmptyTryBlock": {},
33
+ "basic.EmptyWhileStatement": {},
34
+ "basic.EqualsAndHashCode": {},
35
+ "basic.EqualsOverloaded": {},
36
+ "basic.ExplicitGarbageCollection": {},
37
+ "basic.ForLoopShouldBeWhileLoop": {},
38
+ "basic.HardCodedWindowsFileSeparator": {},
39
+ "basic.HardCodedWindowsRootDirectory": {},
40
+ "basic.IntegerGetInteger": {},
41
+ "basic.MultipleUnaryOperators": {},
42
+ "basic.ParameterAssignmentInFilterClosure": {},
43
+ "basic.RandomDoubleCoercedToZero": {},
44
+ "basic.RemoveAllOnSelf": {},
45
+ "basic.ReturnFromFinallyBlock": {},
46
+ "basic.ThrowExceptionFromFinallyBlock": {},
47
+ "braces.ElseBlockBraces": {},
48
+ "braces.ForStatementBraces": {},
49
+ "braces.IfStatementBraces": {},
50
+ "braces.WhileStatementBraces": {},
51
+ "comments.ClassJavadoc": {},
52
+ "comments.JavadocConsecutiveEmptyLines": {},
53
+ "comments.JavadocEmptyAuthorTag": {},
54
+ "comments.JavadocEmptyExceptionTag": {},
55
+ "comments.JavadocEmptyFirstLine": {},
56
+ "comments.JavadocEmptyLastLine": {},
57
+ "comments.JavadocEmptyParamTag": {},
58
+ "comments.JavadocEmptyReturnTag": {},
59
+ "comments.JavadocEmptySeeTag": {},
60
+ "comments.JavadocEmptySinceTag": {},
61
+ "comments.JavadocEmptyThrowsTag": {},
62
+ "comments.JavadocEmptyVersionTag": {},
63
+ "comments.JavadocMissingExceptionDescription": {},
64
+ "comments.JavadocMissingParamDescription": {},
65
+ "comments.JavadocMissingThrowsDescription": {},
66
+ "concurrency.BusyWait": {},
67
+ "concurrency.DoubleCheckedLocking": {},
68
+ "concurrency.InconsistentPropertyLocking": {},
69
+ "concurrency.InconsistentPropertySynchronization": {},
70
+ "concurrency.NestedSynchronization": {},
71
+ "concurrency.StaticCalendarField": {},
72
+ "concurrency.StaticConnection": {},
73
+ "concurrency.StaticDateFormatField": {},
74
+ "concurrency.StaticMatcherField": {},
75
+ "concurrency.StaticSimpleDateFormatField": {},
76
+ "concurrency.SynchronizedMethod": {},
77
+ "concurrency.SynchronizedOnBoxedPrimitive": {},
78
+ "concurrency.SynchronizedOnGetClass": {},
79
+ "concurrency.SynchronizedOnReentrantLock": {},
80
+ "concurrency.SynchronizedOnString": {},
81
+ "concurrency.SynchronizedOnThis": {},
82
+ "concurrency.SynchronizedReadObjectMethod": {},
83
+ "concurrency.SystemRunFinalizersOnExit": {},
84
+ "concurrency.ThisReferenceEscapesConstructor": {},
85
+ "concurrency.ThreadGroup": {},
86
+ "concurrency.ThreadLocalNotStaticFinal": {},
87
+ "concurrency.ThreadYield": {},
88
+ "concurrency.UseOfNotifyMethod": {},
89
+ "concurrency.VolatileArrayField": {},
90
+ "concurrency.VolatileLongOrDoubleField": {},
91
+ "concurrency.WaitOutsideOfWhileLoop": {},
92
+ "convention.CompileStatic": {},
93
+ "convention.ConfusingTernary": {},
94
+ "convention.CouldBeElvis": {},
95
+ "convention.CouldBeSwitchStatement": {},
96
+ "convention.FieldTypeRequired": {},
97
+ "convention.HashtableIsObsolete": {},
98
+ "convention.IfStatementCouldBeTernary": {},
99
+ "convention.ImplicitClosureParameter": {},
100
+ "convention.ImplicitReturnStatement": {},
101
+ "convention.InvertedCondition": {},
102
+ "convention.InvertedIfElse": {},
103
+ "convention.LongLiteralWithLowerCaseL": {},
104
+ "convention.MethodParameterTypeRequired": {},
105
+ "convention.MethodReturnTypeRequired": {},
106
+ "convention.NoDef": {},
107
+ "convention.NoDouble": {},
108
+ "convention.NoFloat": {},
109
+ "convention.NoJavaUtilDate": {},
110
+ "convention.NoTabCharacter": {},
111
+ "convention.ParameterReassignment": {},
112
+ "convention.PublicMethodsBeforeNonPublicMethods": {},
113
+ "convention.StaticFieldsBeforeInstanceFields": {},
114
+ "convention.StaticMethodsBeforeInstanceMethods": {},
115
+ "convention.TernaryCouldBeElvis": {},
116
+ "convention.TrailingComma": {},
117
+ "convention.VariableTypeRequired": {},
118
+ "convention.VectorIsObsolete": {},
119
+ "design.AbstractClassWithPublicConstructor": {},
120
+ "design.AbstractClassWithoutAbstractMethod": {},
121
+ "design.AssignmentToStaticFieldFromInstanceMethod": {},
122
+ "design.BooleanMethodReturnsNull": {},
123
+ "design.BuilderMethodWithSideEffects": {},
124
+ "design.CloneableWithoutClone": {},
125
+ "design.CloseWithoutCloseable": {},
126
+ "design.CompareToWithoutComparable": {},
127
+ "design.ConstantsOnlyInterface": {},
128
+ "design.EmptyMethodInAbstractClass": {},
129
+ "design.FinalClassWithProtectedMember": {},
130
+ "design.ImplementationAsType": {},
131
+ "design.Instanceof": {},
132
+ "design.LocaleSetDefault": {},
133
+ "design.NestedForLoop": {},
134
+ "design.OptionalCollectionReturnType": {},
135
+ "design.OptionalField": {},
136
+ "design.OptionalMethodParameter": {},
137
+ "design.PrivateFieldCouldBeFinal": {},
138
+ "design.PublicInstanceField": {},
139
+ "design.ReturnsNullInsteadOfEmptyArray": {},
140
+ "design.ReturnsNullInsteadOfEmptyCollection": {},
141
+ "design.SimpleDateFormatMissingLocale": {},
142
+ "design.StatelessSingleton": {},
143
+ "design.ToStringReturnsNull": {},
144
+ "dry.DuplicateListLiteral": {},
145
+ "dry.DuplicateMapLiteral": {},
146
+ "dry.DuplicateNumberLiteral": {},
147
+ "dry.DuplicateStringLiteral": {},
148
+ "enhanced.CloneWithoutCloneable": {},
149
+ "enhanced.JUnitAssertEqualsConstantActualValue": {},
150
+ "enhanced.MissingOverrideAnnotation": {},
151
+ "enhanced.UnsafeImplementationAsMap": {},
152
+ "exceptions.CatchArrayIndexOutOfBoundsException": {},
153
+ "exceptions.CatchError": {},
154
+ "exceptions.CatchException": {},
155
+ "exceptions.CatchIllegalMonitorStateException": {},
156
+ "exceptions.CatchIndexOutOfBoundsException": {},
157
+ "exceptions.CatchNullPointerException": {},
158
+ "exceptions.CatchRuntimeException": {},
159
+ "exceptions.CatchThrowable": {},
160
+ "exceptions.ConfusingClassNamedException": {},
161
+ "exceptions.ExceptionExtendsError": {},
162
+ "exceptions.ExceptionExtendsThrowable": {},
163
+ "exceptions.ExceptionNotThrown": {},
164
+ "exceptions.MissingNewInThrowStatement": {},
165
+ "exceptions.ReturnNullFromCatchBlock": {},
166
+ "exceptions.SwallowThreadDeath": {},
167
+ "exceptions.ThrowError": {},
168
+ "exceptions.ThrowException": {},
169
+ "exceptions.ThrowNullPointerException": {},
170
+ "exceptions.ThrowRuntimeException": {},
171
+ "exceptions.ThrowThrowable": {},
172
+ "formatting.BlankLineBeforePackage": {},
173
+ "formatting.BlockEndsWithBlankLine": {},
174
+ "formatting.BlockStartsWithBlankLine": {},
175
+ "formatting.BracesForClass": {},
176
+ "formatting.BracesForForLoop": {},
177
+ "formatting.BracesForIfElse": {},
178
+ "formatting.BracesForMethod": {},
179
+ "formatting.BracesForTryCatchFinally": {},
180
+ "formatting.ClassEndsWithBlankLine": {},
181
+ "formatting.ClassStartsWithBlankLine": {},
182
+ "formatting.ClosureStatementOnOpeningLineOfMultipleLineClosure": {},
183
+ "formatting.ConsecutiveBlankLines": {},
184
+ "formatting.FileEndsWithoutNewline": {},
185
+ "formatting.Indentation": {},
186
+ "formatting.LineLength": {},
187
+ "formatting.MissingBlankLineAfterImports": {},
188
+ "formatting.MissingBlankLineAfterPackage": {},
189
+ "formatting.MissingBlankLineBeforeAnnotatedField": {},
190
+ "formatting.SpaceAfterCatch": {},
191
+ "formatting.SpaceAfterClosingBrace": {},
192
+ "formatting.SpaceAfterComma": {},
193
+ "formatting.SpaceAfterFor": {},
194
+ "formatting.SpaceAfterIf": {},
195
+ "formatting.SpaceAfterMethodCallName": {},
196
+ "formatting.SpaceAfterMethodDeclarationName": {},
197
+ "formatting.SpaceAfterNotOperator": {},
198
+ "formatting.SpaceAfterOpeningBrace": {},
199
+ "formatting.SpaceAfterSemicolon": {},
200
+ "formatting.SpaceAfterSwitch": {},
201
+ "formatting.SpaceAfterWhile": {},
202
+ "formatting.SpaceAroundClosureArrow": {},
203
+ "formatting.SpaceAroundMapEntryColon": {},
204
+ "formatting.SpaceAroundOperator": {},
205
+ "formatting.SpaceBeforeClosingBrace": {},
206
+ "formatting.SpaceBeforeOpeningBrace": {},
207
+ "formatting.SpaceInsideParentheses": {},
208
+ "formatting.TrailingWhitespace": {},
209
+ "generic.IllegalClassMember": {},
210
+ "generic.IllegalClassReference": {},
211
+ "generic.IllegalPackageReference": {},
212
+ "generic.IllegalRegex": {},
213
+ "generic.IllegalString": {},
214
+ "generic.IllegalSubclass": {},
215
+ "generic.RequiredRegex": {},
216
+ "generic.RequiredString": {},
217
+ "generic.StatelessClass": {},
218
+ "grails.GrailsDomainGormMethods": {},
219
+ "grails.GrailsDomainHasEquals": {},
220
+ "grails.GrailsDomainHasToString": {},
221
+ "grails.GrailsDomainReservedSqlKeywordName": {},
222
+ "grails.GrailsDomainStringPropertyMaxSize": {},
223
+ "grails.GrailsDomainWithServiceReference": {},
224
+ "grails.GrailsDuplicateConstraint": {},
225
+ "grails.GrailsDuplicateMapping": {},
226
+ "grails.GrailsMassAssignment": {},
227
+ "grails.GrailsPublicControllerMethod": {},
228
+ "grails.GrailsServletContextReference": {},
229
+ "grails.GrailsStatelessService": {},
230
+ "groovyism.AssignCollectionSort": {},
231
+ "groovyism.AssignCollectionUnique": {},
232
+ "groovyism.ClosureAsLastMethodParameter": {},
233
+ "groovyism.CollectAllIsDeprecated": {},
234
+ "groovyism.ConfusingMultipleReturns": {},
235
+ "groovyism.ExplicitArrayListInstantiation": {},
236
+ "groovyism.ExplicitCallToAndMethod": {},
237
+ "groovyism.ExplicitCallToCompareToMethod": {},
238
+ "groovyism.ExplicitCallToDivMethod": {},
239
+ "groovyism.ExplicitCallToEqualsMethod": {},
240
+ "groovyism.ExplicitCallToGetAtMethod": {},
241
+ "groovyism.ExplicitCallToLeftShiftMethod": {},
242
+ "groovyism.ExplicitCallToMinusMethod": {},
243
+ "groovyism.ExplicitCallToModMethod": {},
244
+ "groovyism.ExplicitCallToMultiplyMethod": {},
245
+ "groovyism.ExplicitCallToOrMethod": {},
246
+ "groovyism.ExplicitCallToPlusMethod": {},
247
+ "groovyism.ExplicitCallToPowerMethod": {},
248
+ "groovyism.ExplicitCallToPutAtMethod": {},
249
+ "groovyism.ExplicitCallToRightShiftMethod": {},
250
+ "groovyism.ExplicitCallToXorMethod": {},
251
+ "groovyism.ExplicitHashMapInstantiation": {},
252
+ "groovyism.ExplicitHashSetInstantiation": {},
253
+ "groovyism.ExplicitLinkedHashMapInstantiation": {},
254
+ "groovyism.ExplicitLinkedListInstantiation": {},
255
+ "groovyism.ExplicitStackInstantiation": {},
256
+ "groovyism.ExplicitTreeSetInstantiation": {},
257
+ "groovyism.GStringAsMapKey": {},
258
+ "groovyism.GStringExpressionWithinString": {},
259
+ "groovyism.GetterMethodCouldBeProperty": {},
260
+ "groovyism.GroovyLangImmutable": {},
261
+ "groovyism.UseCollectMany": {},
262
+ "groovyism.UseCollectNested": {},
263
+ "imports.DuplicateImport": {},
264
+ "imports.ImportFromSamePackage": {},
265
+ "imports.ImportFromSunPackages": {},
266
+ "imports.MisorderedStaticImports": {},
267
+ "imports.NoWildcardImports": {},
268
+ "imports.UnnecessaryGroovyImport": {},
269
+ "imports.UnusedImport": {},
270
+ "jdbc.DirectConnectionManagement": {},
271
+ "jdbc.JdbcConnectionReference": {},
272
+ "jdbc.JdbcResultSetReference": {},
273
+ "jdbc.JdbcStatementReference": {},
274
+ "junit.ChainedTest": {},
275
+ "junit.CoupledTestCase": {},
276
+ "junit.JUnitAssertAlwaysFails": {},
277
+ "junit.JUnitAssertAlwaysSucceeds": {},
278
+ "junit.JUnitFailWithoutMessage": {},
279
+ "junit.JUnitLostTest": {},
280
+ "junit.JUnitPublicField": {},
281
+ "junit.JUnitPublicNonTestMethod": {},
282
+ "junit.JUnitPublicProperty": {},
283
+ "junit.JUnitSetUpCallsSuper": {},
284
+ "junit.JUnitStyleAssertions": {},
285
+ "junit.JUnitTearDownCallsSuper": {},
286
+ "junit.JUnitTestMethodWithoutAssert": {},
287
+ "junit.JUnitUnnecessarySetUp": {},
288
+ "junit.JUnitUnnecessaryTearDown": {},
289
+ "junit.JUnitUnnecessaryThrowsException": {},
290
+ "junit.SpockIgnoreRestUsed": {},
291
+ "junit.UnnecessaryFail": {},
292
+ "junit.UseAssertEqualsInsteadOfAssertTrue": {},
293
+ "junit.UseAssertFalseInsteadOfNegation": {},
294
+ "junit.UseAssertNullInsteadOfAssertEquals": {},
295
+ "junit.UseAssertSameInsteadOfAssertTrue": {},
296
+ "junit.UseAssertTrueInsteadOfAssertEquals": {},
297
+ "junit.UseAssertTrueInsteadOfNegation": {},
298
+ "logging.LoggerForDifferentClass": {},
299
+ "logging.LoggerWithWrongModifiers": {},
300
+ "logging.LoggingSwallowsStacktrace": {},
301
+ "logging.MultipleLoggers": {},
302
+ "logging.PrintStackTrace": {},
303
+ "logging.Println": {},
304
+ "logging.SystemErrPrint": {},
305
+ "logging.SystemOutPrint": {},
306
+ "naming.AbstractClassName": {},
307
+ "naming.ClassName": {},
308
+ "naming.ClassNameSameAsFilename": {},
309
+ "naming.ClassNameSameAsSuperclass": {},
310
+ "naming.ConfusingMethodName": {},
311
+ "naming.FactoryMethodName": {},
312
+ "naming.FieldName": {},
313
+ "naming.InterfaceName": {},
314
+ "naming.InterfaceNameSameAsSuperInterface": {},
315
+ "naming.MethodName": {},
316
+ "naming.ObjectOverrideMisspelledMethodName": {},
317
+ "naming.PackageName": {},
318
+ "naming.PackageNameMatchesFilePath": {},
319
+ "naming.ParameterName": {},
320
+ "naming.PropertyName": {},
321
+ "naming.VariableName": {},
322
+ "security.FileCreateTempFile": {},
323
+ "security.InsecureRandom": {},
324
+ "security.JavaIoPackageAccess": {},
325
+ "security.NonFinalPublicField": {},
326
+ "security.NonFinalSubclassOfSensitiveInterface": {},
327
+ "security.ObjectFinalize": {},
328
+ "security.PublicFinalizeMethod": {},
329
+ "security.SystemExit": {},
330
+ "security.UnsafeArrayDeclaration": {},
331
+ "serialization.EnumCustomSerializationIgnored": {},
332
+ "serialization.SerialPersistentFields": {},
333
+ "serialization.SerialVersionUID": {},
334
+ "serialization.SerializableClassMustDefineSerialVersionUID": {},
335
+ "size.ClassSize": {},
336
+ "size.MethodCount": {},
337
+ "size.MethodSize": {},
338
+ "size.NestedBlockDepth": {},
339
+ "size.ParameterCount": {},
340
+ "unnecessary.AddEmptyString": {},
341
+ "unnecessary.ConsecutiveLiteralAppends": {},
342
+ "unnecessary.ConsecutiveStringConcatenation": {},
343
+ "unnecessary.UnnecessaryBigDecimalInstantiation": {},
344
+ "unnecessary.UnnecessaryBigIntegerInstantiation": {},
345
+ "unnecessary.UnnecessaryBooleanExpression": {},
346
+ "unnecessary.UnnecessaryBooleanInstantiation": {},
347
+ "unnecessary.UnnecessaryCallForLastElement": {},
348
+ "unnecessary.UnnecessaryCallToSubstring": {},
349
+ "unnecessary.UnnecessaryCast": {},
350
+ "unnecessary.UnnecessaryCatchBlock": {},
351
+ "unnecessary.UnnecessaryCollectCall": {},
352
+ "unnecessary.UnnecessaryCollectionCall": {},
353
+ "unnecessary.UnnecessaryConstructor": {},
354
+ "unnecessary.UnnecessaryDefInFieldDeclaration": {},
355
+ "unnecessary.UnnecessaryDefInMethodDeclaration": {},
356
+ "unnecessary.UnnecessaryDefInVariableDeclaration": {},
357
+ "unnecessary.UnnecessaryDotClass": {},
358
+ "unnecessary.UnnecessaryDoubleInstantiation": {},
359
+ "unnecessary.UnnecessaryElseStatement": {},
360
+ "unnecessary.UnnecessaryFinalOnPrivateMethod": {},
361
+ "unnecessary.UnnecessaryFloatInstantiation": {},
362
+ "unnecessary.UnnecessaryGString": {},
363
+ "unnecessary.UnnecessaryGetter": {},
364
+ "unnecessary.UnnecessaryIfStatement": {},
365
+ "unnecessary.UnnecessaryInstanceOfCheck": {},
366
+ "unnecessary.UnnecessaryInstantiationToGetClass": {},
367
+ "unnecessary.UnnecessaryIntegerInstantiation": {},
368
+ "unnecessary.UnnecessaryLongInstantiation": {},
369
+ "unnecessary.UnnecessaryModOne": {},
370
+ "unnecessary.UnnecessaryNullCheck": {},
371
+ "unnecessary.UnnecessaryNullCheckBeforeInstanceOf": {},
372
+ "unnecessary.UnnecessaryObjectReferences": {},
373
+ "unnecessary.UnnecessaryOverridingMethod": {},
374
+ "unnecessary.UnnecessaryPackageReference": {},
375
+ "unnecessary.UnnecessaryParenthesesForMethodCallWithClosure": {},
376
+ "unnecessary.UnnecessaryPublicModifier": {},
377
+ "unnecessary.UnnecessaryReturnKeyword": {},
378
+ "unnecessary.UnnecessarySafeNavigationOperator": {},
379
+ "unnecessary.UnnecessarySelfAssignment": {},
380
+ "unnecessary.UnnecessarySemicolon": {},
381
+ "unnecessary.UnnecessarySetter": {},
382
+ "unnecessary.UnnecessaryStringInstantiation": {},
383
+ "unnecessary.UnnecessarySubstring": {},
384
+ "unnecessary.UnnecessaryTernaryExpression": {},
385
+ "unnecessary.UnnecessaryToString": {},
386
+ "unnecessary.UnnecessaryTransientModifier": {},
387
+ "unused.UnusedArray": {},
388
+ "unused.UnusedMethodParameter": {},
389
+ "unused.UnusedObject": {},
390
+ "unused.UnusedPrivateField": {},
391
+ "unused.UnusedPrivateMethod": {},
392
+ "unused.UnusedPrivateMethodParameter": {},
393
+ "unused.UnusedVariable": {}
394
+ }
395
+ }
@@ -10,7 +10,7 @@ const { NPM_GROOVY_LINT_CONSTANTS, loadConfig, getConfigFileName } = require("./
10
10
  const optionsDefinition = require("./options");
11
11
  const { computeStats, processOutput } = require("./output.js");
12
12
  const { recordAnonymousEvent } = require("./analytics.js");
13
- const { getSourceLines, isErrorInLogLevelScope } = require("./utils");
13
+ const { getNpmGroovyLintVersion, getSourceLines, isErrorInLogLevelScope } = require("./utils");
14
14
 
15
15
  class NpmGroovyLint {
16
16
  "use strict";
@@ -179,16 +179,7 @@ class NpmGroovyLint {
179
179
 
180
180
  // Show version
181
181
  if (this.options.version) {
182
- let v = process.env.npm_package_version;
183
- if (!v) {
184
- try {
185
- const FindPackageJson = require("find-package-json");
186
- const finder = FindPackageJson(__dirname);
187
- v = finder.next().value.version;
188
- } catch {
189
- v = "error";
190
- }
191
- }
182
+ const v = getNpmGroovyLintVersion();
192
183
 
193
184
  const codeNarcVersionLinter = await new NpmGroovyLint([process.execPath, "", "--codenarcargs", "-version"], {}).run();
194
185
  const codeNarcVersionLines = [(await getSourceLines(codeNarcVersionLinter.codeNarcStdOut))[0]];
package/lib/output.js CHANGED
@@ -3,7 +3,7 @@ const c = require("ansi-colors");
3
3
  const fse = require("fs-extra");
4
4
  const { SarifBuilder, SarifRunBuilder, SarifResultBuilder, SarifRuleBuilder } = require("node-sarif-builder");
5
5
  const path = require("path");
6
- const { isErrorInLogLevelScope } = require("./utils");
6
+ const { isErrorInLogLevelScope, getNpmGroovyLintVersion } = require("./utils");
7
7
 
8
8
  // Compute statistics for output
9
9
  function computeStats(lintResult) {
@@ -227,7 +227,8 @@ function buildSarifResult(lintResult) {
227
227
  const sarifBuilder = new SarifBuilder();
228
228
  // SARIF Run builder
229
229
  const sarifRunBuilder = new SarifRunBuilder().initSimple({
230
- name: "npm-groovy-lint",
230
+ toolDriverName: "npm-groovy-lint",
231
+ toolDriverVersion: getNpmGroovyLintVersion(),
231
232
  url: "https://nvuillam.github.io/npm-groovy-lint/"
232
233
  });
233
234
  // SARIF rules
@@ -253,7 +254,7 @@ function buildSarifResult(lintResult) {
253
254
  ? "file:///" + fileNm.replace(/\\/g, "/")
254
255
  : path.relative(process.cwd(), fileNm)
255
256
  };
256
- if (err.range) {
257
+ if (err && err.range && err.range.start && (err.range.start.line === 0 || err.range.start.line > 0)) {
257
258
  sarifResultInit.startLine = fixLine(err.range.start.line);
258
259
  sarifResultInit.startColumn = fixCol(err.range.start.character);
259
260
  sarifResultInit.endLine = fixLine(err.range.end.line);
@@ -0,0 +1,21 @@
1
+ // Too many methods in a class
2
+
3
+ const { getVariableRange } = require("../utils");
4
+
5
+ const rule = {
6
+ variables: [
7
+ {
8
+ name: "METHODNAME",
9
+ regex: /Method "(.*)" has a dynamic return type/,
10
+ regexPos: 1
11
+ }
12
+ ],
13
+ range: {
14
+ type: "function",
15
+ func: (errLine, errItem, evaluatedVars) => {
16
+ return getVariableRange(errLine, evaluatedVars, "METHODNAME", errItem);
17
+ }
18
+ }
19
+ };
20
+
21
+ module.exports = { rule };
@@ -1,6 +1,6 @@
1
1
  // Unused import
2
2
 
3
- const { getVariable } = require("../utils");
3
+ const { getVariable, getVariableRange } = require("../utils");
4
4
 
5
5
  const rule = {
6
6
  scope: "file",
@@ -12,6 +12,12 @@ const rule = {
12
12
  regexPos: 1
13
13
  }
14
14
  ],
15
+ range: {
16
+ type: "function",
17
+ func: (errLine, errItem, evaluatedVars) => {
18
+ return getVariableRange(errLine, evaluatedVars, "CLASSNAME", errItem);
19
+ }
20
+ },
15
21
  fix: {
16
22
  label: "Remove unused import",
17
23
  type: "function",
package/lib/utils.js CHANGED
@@ -394,6 +394,20 @@ function splitMulti(str, tokens) {
394
394
  return str;
395
395
  }
396
396
 
397
+ function getNpmGroovyLintVersion(){
398
+ let v = process.env.npm_package_version;
399
+ if (!v) {
400
+ try {
401
+ const FindPackageJson = require("find-package-json");
402
+ const finder = FindPackageJson(__dirname);
403
+ v = finder.next().value.version;
404
+ } catch {
405
+ v = "error";
406
+ }
407
+ }
408
+ return v ;
409
+ }
410
+
397
411
  module.exports = {
398
412
  addImport,
399
413
  addSpaceAfterChar,
@@ -405,6 +419,7 @@ module.exports = {
405
419
  findRangeBetweenStrings,
406
420
  getIndentLength,
407
421
  getLastStringRange,
422
+ getNpmGroovyLintVersion,
408
423
  getOutOfBracesStrings,
409
424
  getSourceLines,
410
425
  getStringRange,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "npm-groovy-lint",
3
- "version": "9.4.0",
3
+ "version": "9.4.1",
4
4
  "description": "Lint, format and auto-fix your Groovy / Jenkinsfile / Gradle files",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -58,7 +58,7 @@
58
58
  "import-fresh": "^3.2.1",
59
59
  "ip": "^1.1.5",
60
60
  "java-caller": "^2.2.4",
61
- "node-sarif-builder": "^1.0.0",
61
+ "node-sarif-builder": "^2.0.1",
62
62
  "optionator": "^0.8.3",
63
63
  "semver": "^7.1.3",
64
64
  "strip-json-comments": "^3.0.1",