npm-groovy-lint 14.6.0 → 14.6.1-beta202408252305.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.
- package/README.md +13 -0
- package/lib/codenarc-caller.js +54 -53
- package/lib/codenarc-factory.js +41 -50
- package/lib/config.js +22 -19
- package/lib/filter.js +8 -15
- package/lib/groovy-lint-fix.js +32 -34
- package/lib/groovy-lint-rules.js +12 -12
- package/lib/groovy-lint.js +40 -41
- package/lib/index.js +3 -3
- package/lib/java/{CodeNarc-3.4.0-alpha+3346775f.jar → CodeNarc-3.5.0.jar} +0 -0
- package/lib/java/CodeNarcServer.jar +0 -0
- package/lib/options.js +45 -54
- package/lib/output.js +23 -23
- package/lib/rules/AssignmentInConditional.js +7 -7
- package/lib/rules/BlankLineBeforePackage.js +11 -11
- package/lib/rules/BlockEndsWithBlankLine.js +6 -6
- package/lib/rules/BlockStartsWithBlankLine.js +6 -6
- package/lib/rules/BracesForClass.js +8 -8
- package/lib/rules/BracesForForLoop.js +9 -9
- package/lib/rules/BracesForIfElse.js +9 -9
- package/lib/rules/BracesForMethod.js +11 -11
- package/lib/rules/BracesForTryCatchFinally.js +7 -7
- package/lib/rules/CatchException.js +4 -4
- package/lib/rules/ClassEndsWithBlankLine.js +6 -6
- package/lib/rules/ClassStartsWithBlankLine.js +6 -6
- package/lib/rules/ClosingBraceNotAlone.js +8 -8
- package/lib/rules/ConsecutiveBlankLines.js +7 -7
- package/lib/rules/DuplicateImport.js +6 -6
- package/lib/rules/DuplicateNumberLiteral.js +6 -6
- package/lib/rules/DuplicateStringLiteral.js +6 -6
- package/lib/rules/ElseBlockBraces.js +10 -10
- package/lib/rules/ExplicitArrayListInstantiation.js +7 -7
- package/lib/rules/ExplicitLinkedListInstantiation.js +7 -7
- package/lib/rules/FileEndsWithoutNewline.js +7 -7
- package/lib/rules/GStringExpressionWithinString.js +7 -7
- package/lib/rules/IfStatementBraces.js +10 -10
- package/lib/rules/Indentation.js +14 -14
- package/lib/rules/IndentationClosingBraces.js +8 -8
- package/lib/rules/IndentationComments.js +6 -6
- package/lib/rules/InsecureRandom.js +14 -14
- package/lib/rules/JavaIoPackageAccess.js +6 -6
- package/lib/rules/MethodCount.js +6 -6
- package/lib/rules/MethodParameterTypeRequired.js +6 -6
- package/lib/rules/MethodReturnTypeRequired.js +6 -6
- package/lib/rules/MisorderedStaticImports.js +14 -14
- package/lib/rules/MissingBlankLineAfterImports.js +6 -6
- package/lib/rules/MissingBlankLineAfterPackage.js +6 -6
- package/lib/rules/NoDef.js +4 -4
- package/lib/rules/NoJavaUtilDate.js +4 -4
- package/lib/rules/NoTabCharacter.js +7 -7
- package/lib/rules/SimpleDateFormatMissingLocale.js +4 -4
- package/lib/rules/SpaceAfterCatch.js +7 -7
- package/lib/rules/SpaceAfterComma.js +9 -9
- package/lib/rules/SpaceAfterFor.js +8 -8
- package/lib/rules/SpaceAfterIf.js +10 -10
- package/lib/rules/SpaceAfterMethodCallName.js +7 -7
- package/lib/rules/SpaceAfterOpeningBrace.js +9 -9
- package/lib/rules/SpaceAfterSemicolon.js +8 -8
- package/lib/rules/SpaceAfterSwitch.js +8 -8
- package/lib/rules/SpaceAfterWhile.js +7 -7
- package/lib/rules/SpaceAroundOperator.js +14 -14
- package/lib/rules/SpaceBeforeClosingBrace.js +8 -8
- package/lib/rules/SpaceBeforeOpeningBrace.js +9 -9
- package/lib/rules/SpaceInsideParentheses.js +17 -17
- package/lib/rules/SystemExit.js +4 -4
- package/lib/rules/TrailingWhitespace.js +8 -8
- package/lib/rules/UnnecessaryDefInFieldDeclaration.js +8 -8
- package/lib/rules/UnnecessaryDefInMethodDeclaration.js +7 -7
- package/lib/rules/UnnecessaryDefInVariableDeclaration.js +9 -9
- package/lib/rules/UnnecessaryDotClass.js +7 -7
- package/lib/rules/UnnecessaryFinalOnPrivateMethod.js +7 -7
- package/lib/rules/UnnecessaryGString.js +14 -14
- package/lib/rules/UnnecessaryGroovyImport.js +6 -6
- package/lib/rules/UnnecessaryPackageReference.js +9 -9
- package/lib/rules/UnnecessaryParenthesesForMethodCallWithClosure.js +9 -9
- package/lib/rules/UnnecessaryPublicModifier.js +4 -4
- package/lib/rules/UnnecessarySemicolon.js +10 -13
- package/lib/rules/UnnecessaryToString.js +8 -8
- package/lib/rules/UnusedImport.js +10 -10
- package/lib/rules/UnusedMethodParameter.js +6 -6
- package/lib/rules/UnusedVariable.js +6 -6
- package/lib/rules/VariableName.js +11 -11
- package/lib/rules/VariableTypeRequired.js +11 -11
- package/lib/utils.js +62 -43
- package/package.json +22 -19
|
@@ -7,16 +7,16 @@ const rule = {
|
|
|
7
7
|
const diff = errLine.length - errLine.trimEnd().length;
|
|
8
8
|
return {
|
|
9
9
|
start: { line: errItem.line, character: errLine.length - diff },
|
|
10
|
-
end: { line: errItem.line, character: errLine.length }
|
|
10
|
+
end: { line: errItem.line, character: errLine.length },
|
|
11
11
|
};
|
|
12
|
-
}
|
|
12
|
+
},
|
|
13
13
|
},
|
|
14
14
|
fix: {
|
|
15
15
|
label: "Remove trailing whitespace",
|
|
16
16
|
type: "function",
|
|
17
|
-
func: line => {
|
|
17
|
+
func: (line) => {
|
|
18
18
|
return line.trimEnd();
|
|
19
|
-
}
|
|
19
|
+
},
|
|
20
20
|
},
|
|
21
21
|
tests: [
|
|
22
22
|
{
|
|
@@ -25,9 +25,9 @@ const rule = {
|
|
|
25
25
|
`,
|
|
26
26
|
sourceAfter: `
|
|
27
27
|
def str = "lelamanul"
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
]
|
|
28
|
+
`,
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
31
|
};
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
export { rule };
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
// Unnecessary def in field declaration (static def)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { getStringRange } from "../utils.js";
|
|
4
4
|
|
|
5
5
|
const rule = {
|
|
6
6
|
range: {
|
|
7
7
|
type: "function",
|
|
8
8
|
func: (errLine, errItem) => {
|
|
9
9
|
return getStringRange(errLine, "def", errItem);
|
|
10
|
-
}
|
|
10
|
+
},
|
|
11
11
|
},
|
|
12
12
|
fix: {
|
|
13
13
|
label: "Remove def",
|
|
14
14
|
type: "replaceString",
|
|
15
15
|
before: "def ",
|
|
16
|
-
after: ""
|
|
16
|
+
after: "",
|
|
17
17
|
},
|
|
18
18
|
tests: [
|
|
19
19
|
{
|
|
@@ -26,7 +26,7 @@ class lelamanul {
|
|
|
26
26
|
class lelamanul {
|
|
27
27
|
private str = "lelamanul"
|
|
28
28
|
}
|
|
29
|
-
|
|
29
|
+
`,
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
32
|
sourceBefore: `
|
|
@@ -38,9 +38,9 @@ class lelamanul {
|
|
|
38
38
|
class lelamanul {
|
|
39
39
|
public str = "lelamanul"
|
|
40
40
|
}
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
]
|
|
41
|
+
`,
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
44
|
};
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
export { rule };
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
// Unnecessary def in field declaration (static def)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { getStringRange } from "../utils.js";
|
|
4
4
|
|
|
5
5
|
const rule = {
|
|
6
6
|
range: {
|
|
7
7
|
type: "function",
|
|
8
8
|
func: (errLine, errItem) => {
|
|
9
9
|
return getStringRange(errLine, "def", errItem);
|
|
10
|
-
}
|
|
10
|
+
},
|
|
11
11
|
},
|
|
12
12
|
fix: {
|
|
13
13
|
label: "Remove def",
|
|
14
14
|
type: "replaceString",
|
|
15
15
|
before: "def ",
|
|
16
|
-
after: ""
|
|
16
|
+
after: "",
|
|
17
17
|
},
|
|
18
18
|
tests: [
|
|
19
19
|
{
|
|
@@ -26,9 +26,9 @@ static def getCommandLogAsObj(String command) {
|
|
|
26
26
|
static getCommandLogAsObj(String command) {
|
|
27
27
|
return Utils.fromJsonLogString(getCommandLog(command))
|
|
28
28
|
}
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
]
|
|
29
|
+
`,
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
32
|
};
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
export { rule };
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
// Unnecessary def in variable declaration
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { getStringRange } from "../utils.js";
|
|
4
4
|
|
|
5
5
|
const rule = {
|
|
6
6
|
range: {
|
|
7
7
|
type: "function",
|
|
8
8
|
func: (errLine, errItem) => {
|
|
9
9
|
return getStringRange(errLine, "def", errItem);
|
|
10
|
-
}
|
|
10
|
+
},
|
|
11
11
|
},
|
|
12
12
|
fix: {
|
|
13
13
|
label: "Remove def",
|
|
14
14
|
type: "replaceString",
|
|
15
15
|
before: "def ",
|
|
16
|
-
after: ""
|
|
16
|
+
after: "",
|
|
17
17
|
},
|
|
18
18
|
tests: [
|
|
19
19
|
{
|
|
@@ -22,7 +22,7 @@ const rule = {
|
|
|
22
22
|
`,
|
|
23
23
|
sourceAfter: `
|
|
24
24
|
private string1 = 'example'
|
|
25
|
-
|
|
25
|
+
`,
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
sourceBefore: `
|
|
@@ -30,7 +30,7 @@ const rule = {
|
|
|
30
30
|
`,
|
|
31
31
|
sourceAfter: `
|
|
32
32
|
final string5 = 'example'
|
|
33
|
-
|
|
33
|
+
`,
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
36
|
sourceBefore: `
|
|
@@ -38,9 +38,9 @@ const rule = {
|
|
|
38
38
|
`,
|
|
39
39
|
sourceAfter: `
|
|
40
40
|
String string6 = 'example'
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
]
|
|
41
|
+
`,
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
44
|
};
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
export { rule };
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
// Unnecessary dot class
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { getStringRange } from "../utils.js";
|
|
4
4
|
|
|
5
5
|
const rule = {
|
|
6
6
|
range: {
|
|
7
7
|
type: "function",
|
|
8
8
|
func: (errLine, errItem) => {
|
|
9
9
|
return getStringRange(errLine, ".class", errItem);
|
|
10
|
-
}
|
|
10
|
+
},
|
|
11
11
|
},
|
|
12
12
|
fix: {
|
|
13
13
|
label: "Remove .class",
|
|
14
14
|
type: "replaceString",
|
|
15
15
|
before: ".class",
|
|
16
|
-
after: ""
|
|
16
|
+
after: "",
|
|
17
17
|
},
|
|
18
18
|
tests: [
|
|
19
19
|
{
|
|
@@ -22,9 +22,9 @@ const rule = {
|
|
|
22
22
|
`,
|
|
23
23
|
sourceAfter: `
|
|
24
24
|
def x = String
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
]
|
|
25
|
+
`,
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
28
|
};
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
export { rule };
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
// Unnecessary private on final method
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { getStringRange } from "../utils.js";
|
|
4
4
|
|
|
5
5
|
const rule = {
|
|
6
6
|
range: {
|
|
7
7
|
type: "function",
|
|
8
8
|
func: (errLine, errItem) => {
|
|
9
9
|
return getStringRange(errLine, "final", errItem);
|
|
10
|
-
}
|
|
10
|
+
},
|
|
11
11
|
},
|
|
12
12
|
fix: {
|
|
13
13
|
label: "Remove private",
|
|
14
14
|
type: "replaceString",
|
|
15
15
|
before: "final ",
|
|
16
|
-
after: ""
|
|
16
|
+
after: "",
|
|
17
17
|
},
|
|
18
18
|
tests: [
|
|
19
19
|
{
|
|
@@ -26,9 +26,9 @@ const rule = {
|
|
|
26
26
|
private methodName() {
|
|
27
27
|
|
|
28
28
|
}
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
]
|
|
29
|
+
`,
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
32
|
};
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
export { rule };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Unnecessary Groovy String
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { getVariable, getVariableRange, findRangeBetweenStrings } from "../utils.js";
|
|
4
4
|
|
|
5
5
|
const rule = {
|
|
6
6
|
scope: "file",
|
|
@@ -8,8 +8,8 @@ const rule = {
|
|
|
8
8
|
variables: [
|
|
9
9
|
{
|
|
10
10
|
name: "STRING",
|
|
11
|
-
regex: /The String '([\s\S]*)' can be wrapped in single quotes instead of double quotes
|
|
12
|
-
}
|
|
11
|
+
regex: /The String '([\s\S]*)' can be wrapped in single quotes instead of double quotes/,
|
|
12
|
+
},
|
|
13
13
|
],
|
|
14
14
|
range: {
|
|
15
15
|
type: "function",
|
|
@@ -21,7 +21,7 @@ const rule = {
|
|
|
21
21
|
} else {
|
|
22
22
|
return findRangeBetweenStrings(allLines, errItem, '"""', '"""');
|
|
23
23
|
}
|
|
24
|
-
}
|
|
24
|
+
},
|
|
25
25
|
},
|
|
26
26
|
fix: {
|
|
27
27
|
label: "Replace double quotes by single quotes",
|
|
@@ -40,7 +40,7 @@ const rule = {
|
|
|
40
40
|
allLines[range.end.line - 1] = allLines[range.end.line - 1].replace(`"""`, `'''`);
|
|
41
41
|
}
|
|
42
42
|
return allLines;
|
|
43
|
-
}
|
|
43
|
+
},
|
|
44
44
|
},
|
|
45
45
|
tests: [
|
|
46
46
|
{
|
|
@@ -49,7 +49,7 @@ String str = "lelamanul"
|
|
|
49
49
|
`,
|
|
50
50
|
sourceAfter: `
|
|
51
51
|
String str = 'lelamanul'
|
|
52
|
-
|
|
52
|
+
`,
|
|
53
53
|
},
|
|
54
54
|
{
|
|
55
55
|
sourceBefore: `
|
|
@@ -57,7 +57,7 @@ String str = 'lelamanul' + "\\n"
|
|
|
57
57
|
`,
|
|
58
58
|
sourceAfter: `
|
|
59
59
|
String str = 'lelamanul' + '\\n'
|
|
60
|
-
|
|
60
|
+
`,
|
|
61
61
|
},
|
|
62
62
|
{
|
|
63
63
|
sourceBefore: `
|
|
@@ -65,7 +65,7 @@ String str = 'lelamanul' + "\\n\\r"
|
|
|
65
65
|
`,
|
|
66
66
|
sourceAfter: `
|
|
67
67
|
String str = 'lelamanul' + '\\n\\r'
|
|
68
|
-
|
|
68
|
+
`,
|
|
69
69
|
},
|
|
70
70
|
{
|
|
71
71
|
sourceBefore: `
|
|
@@ -73,7 +73,7 @@ String str = 'lelamanul' + "\\n\\r\\n" + "titi\\n" + "\\n\\r" + "lelamanul\\nwes
|
|
|
73
73
|
`,
|
|
74
74
|
sourceAfter: `
|
|
75
75
|
String str = 'lelamanul' + '\\n\\r\\n' + 'titi\\n' + '\\n\\r' + 'lelamanul\\nwesh'
|
|
76
|
-
|
|
76
|
+
`,
|
|
77
77
|
},
|
|
78
78
|
{
|
|
79
79
|
sourceBefore: `
|
|
@@ -85,7 +85,7 @@ I am a string
|
|
|
85
85
|
def b = '''
|
|
86
86
|
I am a string
|
|
87
87
|
'''
|
|
88
|
-
|
|
88
|
+
`,
|
|
89
89
|
},
|
|
90
90
|
{
|
|
91
91
|
sourceBefore: `
|
|
@@ -95,9 +95,9 @@ I am a string"""
|
|
|
95
95
|
sourceAfter: `
|
|
96
96
|
def b = '''
|
|
97
97
|
I am a string'''
|
|
98
|
-
|
|
99
|
-
}
|
|
100
|
-
]
|
|
98
|
+
`,
|
|
99
|
+
},
|
|
100
|
+
],
|
|
101
101
|
};
|
|
102
102
|
|
|
103
|
-
|
|
103
|
+
export { rule };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Unnecessary Groovy Import
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { getVariable } from "../utils.js";
|
|
4
4
|
|
|
5
5
|
const rule = {
|
|
6
6
|
scope: "file",
|
|
@@ -14,7 +14,7 @@ const rule = {
|
|
|
14
14
|
allLines.splice(lineNumber + 1, 1);
|
|
15
15
|
}
|
|
16
16
|
return allLines;
|
|
17
|
-
}
|
|
17
|
+
},
|
|
18
18
|
},
|
|
19
19
|
|
|
20
20
|
tests: [
|
|
@@ -33,9 +33,9 @@ import java.io.InputStream
|
|
|
33
33
|
class ABC {
|
|
34
34
|
InputStream input
|
|
35
35
|
}
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
]
|
|
36
|
+
`,
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
39
|
};
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
export { rule };
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
// Unnecessary package reference
|
|
2
|
-
|
|
2
|
+
import { getVariable, getVariableRange } from "../utils.js";
|
|
3
3
|
|
|
4
4
|
const rule = {
|
|
5
5
|
variables: [
|
|
6
6
|
{
|
|
7
7
|
name: "CLASS_WITH_PACKAGE",
|
|
8
|
-
regex: /The (.*) (.*) was explicitly imported, so specifying the package name is not necessary
|
|
9
|
-
}
|
|
8
|
+
regex: /The (.*) (.*) was explicitly imported, so specifying the package name is not necessary/,
|
|
9
|
+
},
|
|
10
10
|
],
|
|
11
11
|
range: {
|
|
12
12
|
type: "function",
|
|
13
13
|
func: (errLine, errItem, evaluatedVars) => {
|
|
14
14
|
return getVariableRange(errLine, evaluatedVars, "CLASS_WITH_PACKAGE", errItem);
|
|
15
|
-
}
|
|
15
|
+
},
|
|
16
16
|
},
|
|
17
17
|
fix: {
|
|
18
18
|
label: "Use short name",
|
|
@@ -21,7 +21,7 @@ const rule = {
|
|
|
21
21
|
const packageName = getVariable(evaluatedVars, "CLASS_WITH_PACKAGE", { mandatory: true, htmlToString: true, line: line });
|
|
22
22
|
const packageShortName = packageName.split(".").pop();
|
|
23
23
|
return line.replace(packageName, packageShortName);
|
|
24
|
-
}
|
|
24
|
+
},
|
|
25
25
|
},
|
|
26
26
|
tests: [
|
|
27
27
|
{
|
|
@@ -34,9 +34,9 @@ def body = groovy.json.JsonOutput.toJson(value)
|
|
|
34
34
|
import groovy.json.JsonOutput
|
|
35
35
|
|
|
36
36
|
def body = JsonOutput.toJson(value)
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
]
|
|
37
|
+
`,
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
40
|
};
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
export { rule };
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
// Unnecessary Parenthesis for method call with closure
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { getVariableRange } from "../utils.js";
|
|
4
4
|
|
|
5
5
|
const rule = {
|
|
6
6
|
variables: [
|
|
7
7
|
{
|
|
8
8
|
name: "METHOD",
|
|
9
9
|
regex: /Violation in (.*). Parentheses in the '(.*)' method call are unnecessary and can be removed./,
|
|
10
|
-
regexPos: 2
|
|
11
|
-
}
|
|
10
|
+
regexPos: 2,
|
|
11
|
+
},
|
|
12
12
|
],
|
|
13
13
|
range: {
|
|
14
14
|
type: "function",
|
|
15
15
|
func: (errLine, errItem, evaluatedVars) => {
|
|
16
16
|
return getVariableRange(errLine, evaluatedVars, "METHOD", errItem);
|
|
17
|
-
}
|
|
17
|
+
},
|
|
18
18
|
},
|
|
19
19
|
fix: {
|
|
20
20
|
label: "Remove unnecessary parenthesis",
|
|
21
21
|
type: "replaceString",
|
|
22
22
|
before: "{{METHOD}}()",
|
|
23
|
-
after: "{{METHOD}}"
|
|
23
|
+
after: "{{METHOD}}",
|
|
24
24
|
},
|
|
25
25
|
tests: [
|
|
26
26
|
{
|
|
@@ -33,9 +33,9 @@ dirFile.eachFile() {
|
|
|
33
33
|
dirFile.eachFile {
|
|
34
34
|
dirs << it
|
|
35
35
|
}
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
]
|
|
36
|
+
`,
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
39
|
};
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
export { rule };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// Variable type required
|
|
2
|
-
|
|
2
|
+
import { getStringRange } from "../utils.js";
|
|
3
3
|
|
|
4
4
|
const rule = {
|
|
5
5
|
range: {
|
|
6
6
|
type: "function",
|
|
7
7
|
func: (errLine, errItem) => {
|
|
8
8
|
return getStringRange(errLine, "public", errItem);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
9
|
+
},
|
|
10
|
+
},
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
export { rule };
|
|
@@ -1,26 +1,23 @@
|
|
|
1
1
|
// Unnecessary semi colon at the end of a line
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { getLastStringRange } from "../utils.js";
|
|
4
4
|
|
|
5
5
|
const rule = {
|
|
6
6
|
range: {
|
|
7
7
|
type: "function",
|
|
8
8
|
func: (errLine, errItem) => {
|
|
9
9
|
return getLastStringRange(errLine, ";", errItem);
|
|
10
|
-
}
|
|
10
|
+
},
|
|
11
11
|
},
|
|
12
12
|
fix: {
|
|
13
13
|
label: "Remove unnecessary semicolon",
|
|
14
14
|
type: "function",
|
|
15
|
-
func: line => {
|
|
15
|
+
func: (line) => {
|
|
16
16
|
if ((line.match(/;/g) || []).length === 1) {
|
|
17
|
-
line = line
|
|
18
|
-
.split(";")
|
|
19
|
-
.join("")
|
|
20
|
-
.trimRight();
|
|
17
|
+
line = line.split(";").join("").trimRight();
|
|
21
18
|
}
|
|
22
19
|
return line;
|
|
23
|
-
}
|
|
20
|
+
},
|
|
24
21
|
},
|
|
25
22
|
tests: [
|
|
26
23
|
{
|
|
@@ -29,7 +26,7 @@ String str = 'lelamanul';
|
|
|
29
26
|
`,
|
|
30
27
|
sourceAfter: `
|
|
31
28
|
String str = 'lelamanul'
|
|
32
|
-
|
|
29
|
+
`,
|
|
33
30
|
},
|
|
34
31
|
{
|
|
35
32
|
sourceBefore: `
|
|
@@ -41,9 +38,9 @@ println("test");
|
|
|
41
38
|
package my.company.server
|
|
42
39
|
import java.lang.String
|
|
43
40
|
println("test")
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
]
|
|
41
|
+
`,
|
|
42
|
+
},
|
|
43
|
+
],
|
|
47
44
|
};
|
|
48
45
|
|
|
49
|
-
|
|
46
|
+
export { rule };
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
// Unnecessary toString()
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { getStringRange } from "../utils.js";
|
|
4
4
|
|
|
5
5
|
const rule = {
|
|
6
6
|
range: {
|
|
7
7
|
type: "function",
|
|
8
8
|
func: (errLine, errItem) => {
|
|
9
9
|
return getStringRange(errLine, ".toString()", errItem);
|
|
10
|
-
}
|
|
10
|
+
},
|
|
11
11
|
},
|
|
12
12
|
fix: {
|
|
13
13
|
label: "Remove unnecessary toString()",
|
|
14
14
|
type: "function",
|
|
15
|
-
func: line => {
|
|
15
|
+
func: (line) => {
|
|
16
16
|
return line.replace(".toString()", "");
|
|
17
|
-
}
|
|
17
|
+
},
|
|
18
18
|
},
|
|
19
19
|
tests: [
|
|
20
20
|
{
|
|
@@ -25,9 +25,9 @@ String str2 = str.toString()
|
|
|
25
25
|
sourceAfter: `
|
|
26
26
|
String str = 'lelamanul'
|
|
27
27
|
String str2 = str
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
]
|
|
28
|
+
`,
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
31
|
};
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
export { rule };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Unused import
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { getVariable, getVariableRange } from "../utils.js";
|
|
4
4
|
|
|
5
5
|
const rule = {
|
|
6
6
|
scope: "file",
|
|
@@ -9,14 +9,14 @@ const rule = {
|
|
|
9
9
|
{
|
|
10
10
|
name: "CLASSNAME",
|
|
11
11
|
regex: /The \[(.*)\] import is never referenced/,
|
|
12
|
-
regexPos: 1
|
|
13
|
-
}
|
|
12
|
+
regexPos: 1,
|
|
13
|
+
},
|
|
14
14
|
],
|
|
15
15
|
range: {
|
|
16
16
|
type: "function",
|
|
17
17
|
func: (errLine, errItem, evaluatedVars) => {
|
|
18
18
|
return getVariableRange(errLine, evaluatedVars, "CLASSNAME", errItem);
|
|
19
|
-
}
|
|
19
|
+
},
|
|
20
20
|
},
|
|
21
21
|
fix: {
|
|
22
22
|
label: "Remove unused import",
|
|
@@ -27,11 +27,11 @@ const rule = {
|
|
|
27
27
|
if (allLines[lineNumber].includes(className)) {
|
|
28
28
|
allLines.splice(lineNumber, 1);
|
|
29
29
|
} else {
|
|
30
|
-
const itemIndex = allLines.findIndex(line => line.includes(className));
|
|
30
|
+
const itemIndex = allLines.findIndex((line) => line.includes(className));
|
|
31
31
|
throw new Error(`FIX ERROR: UnusedImport was expecting ${className} at position ${lineNumber} but it is at position ${itemIndex} `);
|
|
32
32
|
}
|
|
33
33
|
return allLines;
|
|
34
|
-
}
|
|
34
|
+
},
|
|
35
35
|
},
|
|
36
36
|
|
|
37
37
|
tests: [
|
|
@@ -64,9 +64,9 @@ class Wesh {
|
|
|
64
64
|
class Gros {
|
|
65
65
|
JFileChooser inputX
|
|
66
66
|
}
|
|
67
|
-
|
|
68
|
-
}
|
|
69
|
-
]
|
|
67
|
+
`,
|
|
68
|
+
},
|
|
69
|
+
],
|
|
70
70
|
};
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
export { rule };
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
// Unused method parameter
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { getVariableRange } from "../utils.js";
|
|
4
4
|
|
|
5
5
|
const rule = {
|
|
6
6
|
variables: [
|
|
7
7
|
{
|
|
8
8
|
name: "PARAMNAME",
|
|
9
9
|
regex: /Method parameter \[(.*)\] is never referenced in the method (.*) of class (.*)/,
|
|
10
|
-
regexPos: 1
|
|
11
|
-
}
|
|
10
|
+
regexPos: 1,
|
|
11
|
+
},
|
|
12
12
|
],
|
|
13
13
|
range: {
|
|
14
14
|
type: "function",
|
|
15
15
|
func: (errLine, errItem, evaluatedVars) => {
|
|
16
16
|
return getVariableRange(errLine, evaluatedVars, "PARAMNAME", errItem);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
19
|
};
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
export { rule };
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
// Unused variable
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { getVariableRange } from "../utils.js";
|
|
4
4
|
|
|
5
5
|
const rule = {
|
|
6
6
|
variables: [
|
|
7
7
|
{
|
|
8
8
|
name: "VARNAME",
|
|
9
|
-
regex: /The variable \[(.*)\] in (.*) is not used
|
|
10
|
-
}
|
|
9
|
+
regex: /The variable \[(.*)\] in (.*) is not used/,
|
|
10
|
+
},
|
|
11
11
|
],
|
|
12
12
|
range: {
|
|
13
13
|
type: "function",
|
|
14
14
|
func: (errLine, errItem, evaluatedVars) => {
|
|
15
15
|
return getVariableRange(errLine, evaluatedVars, "VARNAME", errItem);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
export { rule };
|