eslint-plugin-sonarjs 0.3.0-2 → 0.5.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/.eslintignore +1 -0
- package/README.md +14 -4
- package/lib/index.d.ts +3 -1
- package/lib/index.js +6 -1
- package/lib/index.js.map +1 -1
- package/lib/rules/cognitive-complexity.js +36 -4
- package/lib/rules/cognitive-complexity.js.map +1 -1
- package/lib/rules/max-switch-cases.js.map +1 -1
- package/lib/rules/no-all-duplicated-branches.js.map +1 -1
- package/lib/rules/no-collapsible-if.d.ts +3 -0
- package/lib/rules/no-collapsible-if.js +58 -0
- package/lib/rules/no-collapsible-if.js.map +1 -0
- package/lib/rules/no-collection-size-mischeck.d.ts +3 -0
- package/lib/rules/no-collection-size-mischeck.js +62 -0
- package/lib/rules/no-collection-size-mischeck.js.map +1 -0
- package/lib/rules/no-duplicate-string.js +8 -4
- package/lib/rules/no-duplicate-string.js.map +1 -1
- package/lib/rules/no-duplicated-branches.js +47 -23
- package/lib/rules/no-duplicated-branches.js.map +1 -1
- package/lib/rules/no-element-overwrite.js.map +1 -1
- package/lib/rules/no-extra-arguments.js.map +1 -1
- package/lib/rules/no-identical-conditions.js.map +1 -1
- package/lib/rules/no-identical-expressions.js.map +1 -1
- package/lib/rules/no-identical-functions.js.map +1 -1
- package/lib/rules/no-inverted-boolean-check.js.map +1 -1
- package/lib/rules/no-one-iteration-loop.js.map +1 -1
- package/lib/rules/no-redundant-boolean.js.map +1 -1
- package/lib/rules/no-redundant-jump.d.ts +3 -0
- package/lib/rules/no-redundant-jump.js +65 -0
- package/lib/rules/no-redundant-jump.js.map +1 -0
- package/lib/rules/no-same-line-conditional.d.ts +3 -0
- package/lib/rules/no-same-line-conditional.js +78 -0
- package/lib/rules/no-same-line-conditional.js.map +1 -0
- package/lib/rules/no-small-switch.js.map +1 -1
- package/lib/rules/no-unused-collection.d.ts +3 -0
- package/lib/rules/no-unused-collection.js +173 -0
- package/lib/rules/no-unused-collection.js.map +1 -0
- package/lib/rules/no-use-of-empty-return-value.js +8 -1
- package/lib/rules/no-use-of-empty-return-value.js.map +1 -1
- package/lib/rules/no-useless-catch.js +3 -1
- package/lib/rules/no-useless-catch.js.map +1 -1
- package/lib/rules/prefer-immediate-return.js.map +1 -1
- package/lib/rules/prefer-object-literal.js.map +1 -1
- package/lib/rules/prefer-single-boolean-return.js.map +1 -1
- package/lib/rules/prefer-while.js.map +1 -1
- package/lib/utils/collections.d.ts +2 -0
- package/lib/utils/collections.js +40 -0
- package/lib/utils/collections.js.map +1 -0
- package/lib/utils/conditions.js.map +1 -1
- package/lib/utils/equivalence.js.map +1 -1
- package/lib/utils/locations.d.ts +1 -0
- package/lib/utils/locations.js +20 -0
- package/lib/utils/locations.js.map +1 -1
- package/lib/utils/nodes.js.map +1 -1
- package/lib/utils/parser-services.d.ts +5 -0
- package/lib/utils/parser-services.js +7 -0
- package/lib/utils/parser-services.js.map +1 -0
- package/package.json +10 -8
package/.eslintignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
tests/resources
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# eslint-plugin-sonarjs [](https://badge.fury.io/js/eslint-plugin-sonarjs) [](https://travis-ci.org/SonarSource/eslint-plugin-sonarjs) [](https://sonarcloud.io/dashboard?id=eslint-plugin-sonarjs) [](https://sonarcloud.io/dashboard?id=eslint-plugin-sonarjs)
|
|
2
2
|
|
|
3
|
-
SonarJS rules for ESLint
|
|
3
|
+
SonarJS rules for ESLint to detect bugs and suspicious patterns in your code.
|
|
4
4
|
|
|
5
5
|
_[We also have a plugin for TSLint](https://github.com/SonarSource/SonarTS)_
|
|
6
6
|
|
|
@@ -8,7 +8,7 @@ _[We also have a plugin for TSLint](https://github.com/SonarSource/SonarTS)_
|
|
|
8
8
|
|
|
9
9
|
### Bug Detection :bug:
|
|
10
10
|
|
|
11
|
-
Rules in this category aim to find places in code which have a high chance
|
|
11
|
+
Rules in this category aim to find places in code which have a high chance of being bugs, i.e. don't work as intended.
|
|
12
12
|
|
|
13
13
|
* All branches in a conditional structure should not have exactly the same implementation ([`no-all-duplicated-branches`])
|
|
14
14
|
* Collection elements should not be replaced unconditionally ([`no-element-overwrite`])
|
|
@@ -24,12 +24,17 @@ Code Smells, or maintainability issues, are raised for places of code which migh
|
|
|
24
24
|
|
|
25
25
|
* Cognitive Complexity of functions should not be too high ([`cognitive-complexity`])
|
|
26
26
|
* "switch" statements should not have too many "case" clauses ([`max-switch-cases`])
|
|
27
|
+
* Collapsible "if" statements should be merged ([`no-collapsible-if`])
|
|
28
|
+
* Collection sizes and array length comparisons should make sense ([`no-collection-size-mischeck`])
|
|
27
29
|
* String literals should not be duplicated ([`no-duplicate-string`])
|
|
28
30
|
* Two branches in a conditional structure should not have exactly the same implementation ([`no-duplicated-branches`])
|
|
29
31
|
* Functions should not have identical implementations ([`no-identical-functions`])
|
|
30
32
|
* Boolean checks should not be inverted ([`no-inverted-boolean-check`])
|
|
31
33
|
* Boolean literals should not be redundant ([`no-redundant-boolean`])
|
|
34
|
+
* Jump statements should not be redundant ([`no-redundant-jump`])
|
|
35
|
+
* Conditionals should start on new lines ([`no-same-line-conditional`])
|
|
32
36
|
* "switch" statements should have at least 3 "case" clauses ([`no-small-switch`])
|
|
37
|
+
* Collection and array contents should be used ([`no-unused-collection`])
|
|
33
38
|
* "catch" clauses should do more than rethrow ([`no-useless-catch`])
|
|
34
39
|
* Local variables should not be declared and then immediately returned or thrown ([`prefer-immediate-return`]) (:wrench: *fixable*)
|
|
35
40
|
* Object literal syntax should be used ([`prefer-object-literal`])
|
|
@@ -39,6 +44,8 @@ Code Smells, or maintainability issues, are raised for places of code which migh
|
|
|
39
44
|
[`cognitive-complexity`]: ./docs/rules/cognitive-complexity.md
|
|
40
45
|
[`max-switch-cases`]: ./docs/rules/max-switch-cases.md
|
|
41
46
|
[`no-all-duplicated-branches`]: ./docs/rules/no-all-duplicated-branches.md
|
|
47
|
+
[`no-collapsible-if`]: ./docs/rules/no-collapsible-if.md
|
|
48
|
+
[`no-collection-size-mischeck`]: ./docs/rules/no-collection-size-mischeck.md
|
|
42
49
|
[`no-duplicate-string`]: ./docs/rules/no-duplicate-string.md
|
|
43
50
|
[`no-duplicated-branches`]: ./docs/rules/no-duplicated-branches.md
|
|
44
51
|
[`no-element-overwrite`]: ./docs/rules/no-element-overwrite.md
|
|
@@ -49,8 +56,11 @@ Code Smells, or maintainability issues, are raised for places of code which migh
|
|
|
49
56
|
[`no-inverted-boolean-check`]: ./docs/rules/no-inverted-boolean-check.md
|
|
50
57
|
[`no-one-iteration-loop`]: ./docs/rules/no-one-iteration-loop.md
|
|
51
58
|
[`no-redundant-boolean`]: ./docs/rules/no-redundant-boolean.md
|
|
59
|
+
[`no-redundant-jump`]: ./docs/rules/no-redundant-jump.md
|
|
60
|
+
[`no-same-line-conditional`]: ./docs/rules/no-same-line-conditional.md
|
|
52
61
|
[`no-small-switch`]: ./docs/rules/no-small-switch.md
|
|
53
62
|
[`no-use-of-empty-return-value`]: ./docs/rules/no-use-of-empty-return-value.md
|
|
63
|
+
[`no-unused-collection`]: ./docs/rules/no-unused-collection.md
|
|
54
64
|
[`no-useless-catch`]: ./docs/rules/no-useless-catch.md
|
|
55
65
|
[`prefer-immediate-return`]: ./docs/rules/prefer-immediate-return.md
|
|
56
66
|
[`prefer-object-literal`]: ./docs/rules/prefer-object-literal.md
|
|
@@ -63,7 +73,7 @@ Node.js (>=6.x).
|
|
|
63
73
|
|
|
64
74
|
## Usage
|
|
65
75
|
|
|
66
|
-
* If you don't have ESLint yet configured for your project follow [these instructions](https://github.com/eslint/eslint#installation-and-usage).
|
|
76
|
+
* If you don't have ESLint yet configured for your project, follow [these instructions](https://github.com/eslint/eslint#installation-and-usage).
|
|
67
77
|
* Install `eslint-plugin-sonarjs` using `npm` (or `yarn`) for you project or globally:
|
|
68
78
|
|
|
69
79
|
```sh
|
|
@@ -101,4 +111,4 @@ npm install eslint-plugin-sonarjs -g # or install globally
|
|
|
101
111
|
|
|
102
112
|
## Contributing
|
|
103
113
|
|
|
104
|
-
You want to participate
|
|
114
|
+
You want to participate in the development of the project? Have a look at our [contributing](./docs/CONTRIBUTING.md) guide!
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -4,6 +4,8 @@ var sonarjsRules = [
|
|
|
4
4
|
["cognitive-complexity", "error"],
|
|
5
5
|
["max-switch-cases", "error"],
|
|
6
6
|
["no-all-duplicated-branches", "error"],
|
|
7
|
+
["no-collapsible-if", "error"],
|
|
8
|
+
["no-collection-size-mischeck", "error"],
|
|
7
9
|
["no-duplicate-string", "error"],
|
|
8
10
|
["no-duplicated-branches", "error"],
|
|
9
11
|
["no-element-overwrite", "error"],
|
|
@@ -14,7 +16,10 @@ var sonarjsRules = [
|
|
|
14
16
|
["no-inverted-boolean-check", "error"],
|
|
15
17
|
["no-one-iteration-loop", "error"],
|
|
16
18
|
["no-redundant-boolean", "error"],
|
|
19
|
+
["no-redundant-jump", "error"],
|
|
20
|
+
["no-same-line-conditional", "error"],
|
|
17
21
|
["no-small-switch", "error"],
|
|
22
|
+
["no-unused-collection", "error"],
|
|
18
23
|
["no-use-of-empty-return-value", "error"],
|
|
19
24
|
["no-useless-catch", "error"],
|
|
20
25
|
["prefer-immediate-return", "error"],
|
|
@@ -25,7 +30,7 @@ var sonarjsRules = [
|
|
|
25
30
|
var sonarjsRuleModules = {};
|
|
26
31
|
exports.rules = sonarjsRuleModules;
|
|
27
32
|
var configs = {
|
|
28
|
-
recommended: { rules: {} },
|
|
33
|
+
recommended: { plugins: ["sonarjs"], rules: {} },
|
|
29
34
|
};
|
|
30
35
|
exports.configs = configs;
|
|
31
36
|
sonarjsRules.forEach(function (rule) { return (sonarjsRuleModules[rule[0]] = require("./rules/" + rule[0])); });
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAqBA,IAAM,YAAY,GAAiC;IACjD,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACjC,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC7B,CAAC,4BAA4B,EAAE,OAAO,CAAC;IACvC,CAAC,qBAAqB,EAAE,OAAO,CAAC;IAChC,CAAC,wBAAwB,EAAE,OAAO,CAAC;IACnC,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACjC,CAAC,oBAAoB,EAAE,OAAO,CAAC;IAC/B,CAAC,yBAAyB,EAAE,OAAO,CAAC;IACpC,CAAC,wBAAwB,EAAE,OAAO,CAAC;IACnC,CAAC,0BAA0B,EAAE,OAAO,CAAC;IACrC,CAAC,2BAA2B,EAAE,OAAO,CAAC;IACtC,CAAC,uBAAuB,EAAE,OAAO,CAAC;IAClC,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACjC,CAAC,iBAAiB,EAAE,OAAO,CAAC;IAC5B,CAAC,8BAA8B,EAAE,OAAO,CAAC;IACzC,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC7B,CAAC,yBAAyB,EAAE,OAAO,CAAC;IACpC,CAAC,uBAAuB,EAAE,OAAO,CAAC;IAClC,CAAC,8BAA8B,EAAE,OAAO,CAAC;IACzC,CAAC,cAAc,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,IAAM,kBAAkB,GAAQ,EAAE,CAAC;AASJ,mCAAK;AAPpC,IAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAqBA,IAAM,YAAY,GAAiC;IACjD,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACjC,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC7B,CAAC,4BAA4B,EAAE,OAAO,CAAC;IACvC,CAAC,mBAAmB,EAAE,OAAO,CAAC;IAC9B,CAAC,6BAA6B,EAAE,OAAO,CAAC;IACxC,CAAC,qBAAqB,EAAE,OAAO,CAAC;IAChC,CAAC,wBAAwB,EAAE,OAAO,CAAC;IACnC,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACjC,CAAC,oBAAoB,EAAE,OAAO,CAAC;IAC/B,CAAC,yBAAyB,EAAE,OAAO,CAAC;IACpC,CAAC,wBAAwB,EAAE,OAAO,CAAC;IACnC,CAAC,0BAA0B,EAAE,OAAO,CAAC;IACrC,CAAC,2BAA2B,EAAE,OAAO,CAAC;IACtC,CAAC,uBAAuB,EAAE,OAAO,CAAC;IAClC,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACjC,CAAC,mBAAmB,EAAE,OAAO,CAAC;IAC9B,CAAC,0BAA0B,EAAE,OAAO,CAAC;IACrC,CAAC,iBAAiB,EAAE,OAAO,CAAC;IAC5B,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACjC,CAAC,8BAA8B,EAAE,OAAO,CAAC;IACzC,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC7B,CAAC,yBAAyB,EAAE,OAAO,CAAC;IACpC,CAAC,uBAAuB,EAAE,OAAO,CAAC;IAClC,CAAC,8BAA8B,EAAE,OAAO,CAAC;IACzC,CAAC,cAAc,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,IAAM,kBAAkB,GAAQ,EAAE,CAAC;AASJ,mCAAK;AAPpC,IAAM,OAAO,GAA2D;IACtE,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;CACjD,CAAC;AAKoC,0BAAO;AAH7C,YAAY,CAAC,OAAO,CAAC,UAAA,IAAI,IAAI,OAAA,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,aAAW,IAAI,CAAC,CAAC,CAAG,CAAC,CAAC,EAA7D,CAA6D,CAAC,CAAC;AAC5F,YAAY,CAAC,OAAO,CAAC,UAAA,IAAI,IAAI,OAAA,CAAC,OAAO,CAAC,WAAW,CAAC,KAAM,CAAC,aAAW,IAAI,CAAC,CAAC,CAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAA5D,CAA4D,CAAC,CAAC"}
|
|
@@ -19,6 +19,13 @@
|
|
|
19
19
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
20
20
|
*/
|
|
21
21
|
// https://jira.sonarsource.com/browse/RSPEC-3776
|
|
22
|
+
var __spreadArrays = (this && this.__spreadArrays) || function () {
|
|
23
|
+
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
|
24
|
+
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
|
25
|
+
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
|
26
|
+
r[k] = a[j];
|
|
27
|
+
return r;
|
|
28
|
+
};
|
|
22
29
|
var nodes_1 = require("../utils/nodes");
|
|
23
30
|
var locations_1 = require("../utils/locations");
|
|
24
31
|
var DEFAULT_THRESHOLD = 15;
|
|
@@ -28,12 +35,15 @@ var rule = {
|
|
|
28
35
|
{ type: "integer", minimum: 0 },
|
|
29
36
|
{
|
|
30
37
|
// internal parameter
|
|
31
|
-
enum: ["sonar-runtime"],
|
|
38
|
+
enum: ["sonar-runtime", "metric"],
|
|
32
39
|
},
|
|
33
40
|
],
|
|
34
41
|
},
|
|
35
42
|
create: function (context) {
|
|
36
43
|
var threshold = context.options[0] !== undefined ? context.options[0] : DEFAULT_THRESHOLD;
|
|
44
|
+
var isFileComplexity = context.options.includes("metric");
|
|
45
|
+
/** Complexity of the file */
|
|
46
|
+
var fileComplexity = 0;
|
|
37
47
|
/** Complexity of the current function if it is *not* considered nested to the first level function */
|
|
38
48
|
var complexityIfNotNested = [];
|
|
39
49
|
/** Complexity of the current function if it is considered nested to the first level function */
|
|
@@ -69,6 +79,16 @@ var rule = {
|
|
|
69
79
|
nestingNodes.delete(node);
|
|
70
80
|
}
|
|
71
81
|
},
|
|
82
|
+
Program: function () {
|
|
83
|
+
fileComplexity = 0;
|
|
84
|
+
},
|
|
85
|
+
"Program:exit": function (node) {
|
|
86
|
+
if (isFileComplexity) {
|
|
87
|
+
// as issues are the only communication channel of a rule
|
|
88
|
+
// we pass data as serialized json as an issue message
|
|
89
|
+
context.report({ node: node, message: fileComplexity.toString() });
|
|
90
|
+
}
|
|
91
|
+
},
|
|
72
92
|
IfStatement: function (node) {
|
|
73
93
|
visitIfStatement(node);
|
|
74
94
|
},
|
|
@@ -221,14 +241,18 @@ var rule = {
|
|
|
221
241
|
function flattenLogicalExpression(node) {
|
|
222
242
|
if (nodes_1.isLogicalExpression(node)) {
|
|
223
243
|
consideredLogicalExpressions.add(node);
|
|
224
|
-
return flattenLogicalExpression(node.left)
|
|
244
|
+
return __spreadArrays(flattenLogicalExpression(node.left), [node], flattenLogicalExpression(node.right));
|
|
225
245
|
}
|
|
226
246
|
return [];
|
|
227
247
|
}
|
|
228
248
|
function addStructuralComplexity(location) {
|
|
229
249
|
var added = nesting + 1;
|
|
230
250
|
var complexityPoint = { complexity: added, location: location };
|
|
231
|
-
if (enclosingFunctions.length ===
|
|
251
|
+
if (enclosingFunctions.length === 0) {
|
|
252
|
+
// top level scope
|
|
253
|
+
fileComplexity += added;
|
|
254
|
+
}
|
|
255
|
+
else if (enclosingFunctions.length === 1) {
|
|
232
256
|
// top level function
|
|
233
257
|
topLevelHasStructuralComplexity = true;
|
|
234
258
|
topLevelOwnComplexity.push(complexityPoint);
|
|
@@ -241,7 +265,11 @@ var rule = {
|
|
|
241
265
|
}
|
|
242
266
|
function addComplexity(location) {
|
|
243
267
|
var complexityPoint = { complexity: 1, location: location };
|
|
244
|
-
if (enclosingFunctions.length ===
|
|
268
|
+
if (enclosingFunctions.length === 0) {
|
|
269
|
+
// top level scope
|
|
270
|
+
fileComplexity += 1;
|
|
271
|
+
}
|
|
272
|
+
else if (enclosingFunctions.length === 1) {
|
|
245
273
|
// top level function
|
|
246
274
|
topLevelOwnComplexity.push(complexityPoint);
|
|
247
275
|
}
|
|
@@ -254,6 +282,10 @@ var rule = {
|
|
|
254
282
|
function checkFunction(complexity, loc) {
|
|
255
283
|
if (complexity === void 0) { complexity = []; }
|
|
256
284
|
var complexityAmount = complexity.reduce(function (acc, cur) { return acc + cur.complexity; }, 0);
|
|
285
|
+
fileComplexity += complexityAmount;
|
|
286
|
+
if (isFileComplexity) {
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
257
289
|
if (complexityAmount > threshold) {
|
|
258
290
|
var secondaryLocations = complexity.map(function (complexityPoint) {
|
|
259
291
|
var complexity = complexityPoint.complexity, location = complexityPoint.location;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cognitive-complexity.js","sourceRoot":"","sources":["../../src/rules/cognitive-complexity.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,iDAAiD
|
|
1
|
+
{"version":3,"file":"cognitive-complexity.js","sourceRoot":"","sources":["../../src/rules/cognitive-complexity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"max-switch-cases.js","sourceRoot":"","sources":["../../src/rules/max-switch-cases.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,iDAAiD;AAKjD,IAAM,OAAO,GAAG,oGAAoG,CAAC;AAErH,IAAM,wBAAwB,GAAG,EAAE,CAAC;AACpC,IAAI,cAAc,GAAG,wBAAwB,CAAC;AAE9C,IAAM,IAAI,GAAoB;IAC5B,IAAI,EAAE;QACJ,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,CAAC;aACX;SACF;KACF;IACD,MAAM,
|
|
1
|
+
{"version":3,"file":"max-switch-cases.js","sourceRoot":"","sources":["../../src/rules/max-switch-cases.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,iDAAiD;AAKjD,IAAM,OAAO,GAAG,oGAAoG,CAAC;AAErH,IAAM,wBAAwB,GAAG,EAAE,CAAC;AACpC,IAAI,cAAc,GAAG,wBAAwB,CAAC;AAE9C,IAAM,IAAI,GAAoB;IAC5B,IAAI,EAAE;QACJ,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,CAAC;aACX;SACF;KACF;IACD,MAAM,EAAN,UAAO,OAAyB;QAC9B,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9B,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SACrC;QACD,OAAO,EAAE,eAAe,EAAE,UAAC,IAAU,IAAK,OAAA,oBAAoB,CAAC,IAAuB,EAAE,OAAO,CAAC,EAAtD,CAAsD,EAAE,CAAC;IACrG,CAAC;CACF,CAAC;AAEF,SAAS,oBAAoB,CAAC,eAAgC,EAAE,OAAyB;IACvF,IAAM,aAAa,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAChD,UAAA,UAAU,IAAI,OAAA,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAA9D,CAA8D,CAC7E,CAAC;IACF,IAAI,aAAa,CAAC,MAAM,GAAG,cAAc,EAAE;QACzC,IAAM,aAAa,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QAC7E,OAAO,CAAC,MAAM,CAAC;YACb,OAAO,EAAE,OAAO;YAChB,GAAG,EAAE,aAAc,CAAC,GAAG;YACvB,IAAI,EAAE,EAAE,cAAc,EAAE,aAAa,CAAC,MAAM,GAAG,EAAE,EAAE,cAAc,EAAE,cAAc,GAAG,EAAE,EAAE;SACzF,CAAC,CAAC;KACJ;AACH,CAAC;AAED,SAAS,aAAa,CAAC,UAAsB;IAC3C,OAAO,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC;AAClC,CAAC;AAED,iBAAS,IAAI,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-all-duplicated-branches.js","sourceRoot":"","sources":["../../src/rules/no-all-duplicated-branches.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,iDAAiD;AAIjD,wCAA0D;AAC1D,oDAAqD;AACrD,kDAA+E;AAE/E,IAAM,OAAO,GAAG,6FAA6F,CAAC;AAC9G,IAAM,8BAA8B,GAClC,+FAA+F,CAAC;AAElG,IAAM,IAAI,GAAoB;IAC5B,MAAM,
|
|
1
|
+
{"version":3,"file":"no-all-duplicated-branches.js","sourceRoot":"","sources":["../../src/rules/no-all-duplicated-branches.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,iDAAiD;AAIjD,wCAA0D;AAC1D,oDAAqD;AACrD,kDAA+E;AAE/E,IAAM,OAAO,GAAG,6FAA6F,CAAC;AAC9G,IAAM,8BAA8B,GAClC,+FAA+F,CAAC;AAElG,IAAM,IAAI,GAAoB;IAC5B,MAAM,EAAN,UAAO,OAAyB;QAC9B,OAAO;YACL,WAAW,EAAX,UAAY,IAAiB;gBAC3B,IAAM,MAAM,GAAG,IAA0B,CAAC;gBAE1C,mCAAmC;gBACnC,IAAM,MAAM,GAAG,iBAAS,CAAC,OAAO,CAAC,CAAC;gBAClC,IAAI,CAAC,qBAAa,CAAC,MAAM,CAAC,EAAE;oBACpB,IAAA,2CAAsD,EAApD,sBAAQ,EAAE,8BAA0C,CAAC;oBAC7D,IAAI,YAAY,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE;wBAC3C,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;qBACpD;iBACF;YACH,CAAC;YAED,eAAe,EAAf,UAAgB,IAAiB;gBAC/B,IAAM,UAAU,GAAG,IAA8B,CAAC;gBAC5C,IAAA,mDAAiE,EAA/D,sBAAQ,EAAE,oCAAqD,CAAC;gBACxE,IAAI,eAAe,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE;oBAC9C,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;iBACxD;YACH,CAAC;YAED,qBAAqB,EAArB,UAAsB,IAAiB;gBACrC,IAAM,WAAW,GAAG,IAAoC,CAAC;gBACzD,IAAM,QAAQ,GAAG,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;gBACjE,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE;oBAC3B,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;iBAChF;YACH,CAAC;SACF,CAAC;QAEF,SAAS,aAAa,CAAC,QAA4C;YACjE,OAAO,CACL,QAAQ,CAAC,MAAM,GAAG,CAAC;gBACnB,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAC,MAAM,EAAE,KAAK;oBACpC,OAAO,2BAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;gBACzE,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC;AAEF,iBAAS,IAAI,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* eslint-plugin-sonarjs
|
|
4
|
+
* Copyright (C) 2018 SonarSource SA
|
|
5
|
+
* mailto:info AT sonarsource DOT com
|
|
6
|
+
*
|
|
7
|
+
* This program is free software; you can redistribute it and/or
|
|
8
|
+
* modify it under the terms of the GNU Lesser General Public
|
|
9
|
+
* License as published by the Free Software Foundation; either
|
|
10
|
+
* version 3 of the License, or (at your option) any later version.
|
|
11
|
+
*
|
|
12
|
+
* This program is distributed in the hope that it will be useful,
|
|
13
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
14
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
15
|
+
* Lesser General Public License for more details.
|
|
16
|
+
*
|
|
17
|
+
* You should have received a copy of the GNU Lesser General Public License
|
|
18
|
+
* along with this program; if not, write to the Free Software Foundation,
|
|
19
|
+
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
20
|
+
*/
|
|
21
|
+
// https://jira.sonarsource.com/browse/RSPEC-1066
|
|
22
|
+
var nodes_1 = require("../utils/nodes");
|
|
23
|
+
var locations_1 = require("../utils/locations");
|
|
24
|
+
var rule = {
|
|
25
|
+
meta: {
|
|
26
|
+
schema: [
|
|
27
|
+
{
|
|
28
|
+
// internal parameter
|
|
29
|
+
enum: ["sonar-runtime"],
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
create: function (context) {
|
|
34
|
+
return {
|
|
35
|
+
IfStatement: function (node) {
|
|
36
|
+
var consequent = node.consequent;
|
|
37
|
+
if (nodes_1.isBlockStatement(consequent) && consequent.body.length === 1) {
|
|
38
|
+
consequent = consequent.body[0];
|
|
39
|
+
}
|
|
40
|
+
if (isIfStatementWithoutElse(node) && isIfStatementWithoutElse(consequent)) {
|
|
41
|
+
var ifKeyword = context.getSourceCode().getFirstToken(consequent);
|
|
42
|
+
var enclosingIfKeyword = context.getSourceCode().getFirstToken(node);
|
|
43
|
+
if (ifKeyword && enclosingIfKeyword) {
|
|
44
|
+
locations_1.report(context, {
|
|
45
|
+
message: "Merge this if statement with the nested one.",
|
|
46
|
+
loc: enclosingIfKeyword.loc,
|
|
47
|
+
}, [locations_1.issueLocation(ifKeyword.loc, ifKeyword.loc, "Nested \"if\" statement.")]);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
function isIfStatementWithoutElse(node) {
|
|
53
|
+
return nodes_1.isIfStatement(node) && !node.alternate;
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
module.exports = rule;
|
|
58
|
+
//# sourceMappingURL=no-collapsible-if.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-collapsible-if.js","sourceRoot":"","sources":["../../src/rules/no-collapsible-if.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,iDAAiD;AAIjD,wCAAiE;AACjE,gDAA2D;AAE3D,IAAM,IAAI,GAAoB;IAC5B,IAAI,EAAE;QACJ,MAAM,EAAE;YACN;gBACE,qBAAqB;gBACrB,IAAI,EAAE,CAAC,eAAe,CAAC;aACxB;SACF;KACF;IACD,MAAM,EAAN,UAAO,OAAyB;QAC9B,OAAO;YACL,WAAW,EAAX,UAAY,IAAiB;gBACrB,IAAA,4BAAU,CAAgC;gBAChD,IAAI,wBAAgB,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;oBAChE,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACjC;gBACD,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,wBAAwB,CAAC,UAAU,CAAC,EAAE;oBAC1E,IAAM,SAAS,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;oBACpE,IAAM,kBAAkB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;oBACvE,IAAI,SAAS,IAAI,kBAAkB,EAAE;wBACnC,kBAAM,CACJ,OAAO,EACP;4BACE,OAAO,EAAE,8CAA8C;4BACvD,GAAG,EAAE,kBAAkB,CAAC,GAAG;yBAC5B,EACD,CAAC,yBAAa,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,0BAAwB,CAAC,CAAC,CACxE,CAAC;qBACH;iBACF;YACH,CAAC;SACF,CAAC;QAEF,SAAS,wBAAwB,CAAC,IAAiB;YACjD,OAAO,qBAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QAChD,CAAC;IACH,CAAC;CACF,CAAC;AAEF,iBAAS,IAAI,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* eslint-plugin-sonarjs
|
|
4
|
+
* Copyright (C) 2018 SonarSource SA
|
|
5
|
+
* mailto:info AT sonarsource DOT com
|
|
6
|
+
*
|
|
7
|
+
* This program is free software; you can redistribute it and/or
|
|
8
|
+
* modify it under the terms of the GNU Lesser General Public
|
|
9
|
+
* License as published by the Free Software Foundation; either
|
|
10
|
+
* version 3 of the License, or (at your option) any later version.
|
|
11
|
+
*
|
|
12
|
+
* This program is distributed in the hope that it will be useful,
|
|
13
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
14
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
15
|
+
* Lesser General Public License for more details.
|
|
16
|
+
*
|
|
17
|
+
* You should have received a copy of the GNU Lesser General Public License
|
|
18
|
+
* along with this program; if not, write to the Free Software Foundation,
|
|
19
|
+
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
20
|
+
*/
|
|
21
|
+
// https://jira.sonarsource.com/browse/RSPEC-3981
|
|
22
|
+
var parser_services_1 = require("../utils/parser-services");
|
|
23
|
+
var CollectionLike = ["Array", "Map", "Set", "WeakMap", "WeakSet"];
|
|
24
|
+
var CollectionSizeLike = ["length", "size"];
|
|
25
|
+
var rule = {
|
|
26
|
+
create: function (context) {
|
|
27
|
+
var services = context.parserServices;
|
|
28
|
+
var isTypeCheckerAvailable = parser_services_1.isRequiredParserServices(services);
|
|
29
|
+
return {
|
|
30
|
+
BinaryExpression: function (node) {
|
|
31
|
+
var expr = node;
|
|
32
|
+
if (["<", ">="].includes(expr.operator)) {
|
|
33
|
+
var lhs = expr.left;
|
|
34
|
+
var rhs = expr.right;
|
|
35
|
+
if (isZeroLiteral(rhs) && lhs.type === "MemberExpression") {
|
|
36
|
+
var object = lhs.object, property = lhs.property;
|
|
37
|
+
if (property.type === "Identifier" &&
|
|
38
|
+
CollectionSizeLike.includes(property.name) &&
|
|
39
|
+
(!isTypeCheckerAvailable || isCollection(object, services))) {
|
|
40
|
+
context.report({
|
|
41
|
+
message: "Fix this expression; " + property.name + " of \"" + context
|
|
42
|
+
.getSourceCode()
|
|
43
|
+
.getText(object) + "\" is always greater or equal to zero.",
|
|
44
|
+
node: node,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
function isZeroLiteral(node) {
|
|
54
|
+
return node.type === "Literal" && node.value === 0;
|
|
55
|
+
}
|
|
56
|
+
function isCollection(node, services) {
|
|
57
|
+
var checker = services.program.getTypeChecker();
|
|
58
|
+
var tp = checker.getTypeAtLocation(services.esTreeNodeToTSNodeMap.get(node));
|
|
59
|
+
return !!tp.symbol && CollectionLike.includes(tp.symbol.name);
|
|
60
|
+
}
|
|
61
|
+
module.exports = rule;
|
|
62
|
+
//# sourceMappingURL=no-collection-size-mischeck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-collection-size-mischeck.js","sourceRoot":"","sources":["../../src/rules/no-collection-size-mischeck.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,iDAAiD;AAKjD,4DAA4F;AAE5F,IAAM,cAAc,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACrE,IAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAE9C,IAAM,IAAI,GAAoB;IAC5B,MAAM,EAAN,UAAO,OAAyB;QAC9B,IAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;QACxC,IAAM,sBAAsB,GAAG,0CAAwB,CAAC,QAAQ,CAAC,CAAC;QAClE,OAAO;YACL,gBAAgB,EAAE,UAAC,IAAiB;gBAClC,IAAM,IAAI,GAAG,IAA+B,CAAC;gBAC7C,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;oBACvC,IAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;oBACtB,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;oBACvB,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB,EAAE;wBACjD,IAAA,mBAAM,EAAE,uBAAQ,CAAS;wBACjC,IACE,QAAQ,CAAC,IAAI,KAAK,YAAY;4BAC9B,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;4BAC1C,CAAC,CAAC,sBAAsB,IAAI,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,EAC3D;4BACA,OAAO,CAAC,MAAM,CAAC;gCACb,OAAO,EAAE,0BAAwB,QAAQ,CAAC,IAAI,cAAQ,OAAO;qCAC1D,aAAa,EAAE;qCACf,OAAO,CAAC,MAAM,CAAC,2CAAuC;gCACzD,IAAI,MAAA;6BACL,CAAC,CAAC;yBACJ;qBACF;iBACF;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,SAAS,aAAa,CAAC,IAAiB;IACtC,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,YAAY,CAAC,IAAiB,EAAE,QAAgC;IACvE,IAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;IAClD,IAAM,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAqB,CAAC,CAAC,CAAC;IAChG,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAChE,CAAC;AAED,iBAAS,IAAI,CAAC"}
|
|
@@ -36,9 +36,10 @@ var rule = {
|
|
|
36
36
|
return {
|
|
37
37
|
Literal: function (node) {
|
|
38
38
|
var literal = node;
|
|
39
|
-
|
|
39
|
+
var parent = nodes_1.getParent(context);
|
|
40
|
+
if (typeof literal.value === "string" && (parent && parent.type !== "ExpressionStatement")) {
|
|
40
41
|
var stringContent = literal.value.trim();
|
|
41
|
-
if (!isExcludedByUsageContext(context) &&
|
|
42
|
+
if (!isExcludedByUsageContext(context, literal) &&
|
|
42
43
|
stringContent.length >= MIN_LENGTH &&
|
|
43
44
|
!stringContent.match(NO_SEPARATOR_REGEXP)) {
|
|
44
45
|
var sameStringLiterals = literalsByValue.get(stringContent) || [];
|
|
@@ -61,13 +62,16 @@ var rule = {
|
|
|
61
62
|
};
|
|
62
63
|
},
|
|
63
64
|
};
|
|
64
|
-
function isExcludedByUsageContext(context) {
|
|
65
|
+
function isExcludedByUsageContext(context, literal) {
|
|
65
66
|
var parent = nodes_1.getParent(context);
|
|
66
67
|
var parentType = parent.type;
|
|
67
|
-
return EXCLUDED_CONTEXTS.includes(parentType) || isRequireContext(parent, context);
|
|
68
|
+
return (EXCLUDED_CONTEXTS.includes(parentType) || isRequireContext(parent, context) || isObjectPropertyKey(parent, literal));
|
|
68
69
|
}
|
|
69
70
|
function isRequireContext(parent, context) {
|
|
70
71
|
return parent.type === "CallExpression" && context.getSourceCode().getText(parent.callee) === "require";
|
|
71
72
|
}
|
|
73
|
+
function isObjectPropertyKey(parent, literal) {
|
|
74
|
+
return parent.type === "Property" && parent.key === literal;
|
|
75
|
+
}
|
|
72
76
|
module.exports = rule;
|
|
73
77
|
//# sourceMappingURL=no-duplicate-string.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-duplicate-string.js","sourceRoot":"","sources":["../../src/rules/no-duplicate-string.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,iDAAiD;AAIjD,wCAA2C;AAE3C,mEAAmE;AACnE,IAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,IAAM,UAAU,GAAG,EAAE,CAAC;AACtB,IAAM,mBAAmB,GAAG,OAAO,CAAC;AACpC,IAAM,iBAAiB,GAAG,CAAC,mBAAmB,EAAE,cAAc,EAAE,sBAAsB,EAAE,wBAAwB,CAAC,CAAC;AAClH,IAAM,OAAO,GAAG,wEAAwE,CAAC;AAEzF,IAAM,IAAI,GAAoB;IAC5B,IAAI,EAAE;QACJ,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;KAC1C;IAED,MAAM,
|
|
1
|
+
{"version":3,"file":"no-duplicate-string.js","sourceRoot":"","sources":["../../src/rules/no-duplicate-string.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,11 +19,27 @@
|
|
|
19
19
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
20
20
|
*/
|
|
21
21
|
// https://jira.sonarsource.com/browse/RSPEC-1871
|
|
22
|
+
var __spreadArrays = (this && this.__spreadArrays) || function () {
|
|
23
|
+
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
|
24
|
+
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
|
25
|
+
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
|
26
|
+
r[k] = a[j];
|
|
27
|
+
return r;
|
|
28
|
+
};
|
|
22
29
|
var nodes_1 = require("../utils/nodes");
|
|
23
30
|
var equivalence_1 = require("../utils/equivalence");
|
|
24
31
|
var conditions_1 = require("../utils/conditions");
|
|
32
|
+
var locations_1 = require("../utils/locations");
|
|
25
33
|
var MESSAGE = "This {{type}}'s code block is the same as the block for the {{type}} on line {{line}}.";
|
|
26
34
|
var rule = {
|
|
35
|
+
meta: {
|
|
36
|
+
schema: [
|
|
37
|
+
{
|
|
38
|
+
// internal parameter
|
|
39
|
+
enum: ["sonar-runtime"],
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
},
|
|
27
43
|
create: function (context) {
|
|
28
44
|
return {
|
|
29
45
|
IfStatement: function (node) {
|
|
@@ -36,11 +52,15 @@ var rule = {
|
|
|
36
52
|
function visitIfStatement(ifStmt) {
|
|
37
53
|
var parent = nodes_1.getParent(context);
|
|
38
54
|
if (!nodes_1.isIfStatement(parent)) {
|
|
39
|
-
var
|
|
40
|
-
|
|
41
|
-
|
|
55
|
+
var _a = conditions_1.collectIfBranches(ifStmt), branches_1 = _a.branches, endsWithElse = _a.endsWithElse;
|
|
56
|
+
if (allEquivalentWithoutDefault(branches_1, endsWithElse)) {
|
|
57
|
+
branches_1.slice(1).forEach(function (branch, i) { return reportIssue(branch, branches_1[i], "branch"); });
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
for (var i = 1; i < branches_1.length; i++) {
|
|
61
|
+
if (hasRequiredSize([branches_1[i]])) {
|
|
42
62
|
for (var j = 0; j < i; j++) {
|
|
43
|
-
if (compareIfBranches(
|
|
63
|
+
if (compareIfBranches(branches_1[i], branches_1[j])) {
|
|
44
64
|
break;
|
|
45
65
|
}
|
|
46
66
|
}
|
|
@@ -48,22 +68,22 @@ var rule = {
|
|
|
48
68
|
}
|
|
49
69
|
}
|
|
50
70
|
}
|
|
51
|
-
function visitSwitchStatement(
|
|
52
|
-
var cases =
|
|
71
|
+
function visitSwitchStatement(switchStmt) {
|
|
72
|
+
var cases = switchStmt.cases;
|
|
73
|
+
var endsWithDefault = conditions_1.collectSwitchBranches(switchStmt).endsWithDefault;
|
|
74
|
+
var nonEmptyCases = cases.filter(function (c) { return conditions_1.takeWithoutBreak(expandSingleBlockStatement(c.consequent)).length > 0; });
|
|
75
|
+
var casesWithoutBreak = nonEmptyCases.map(function (c) { return conditions_1.takeWithoutBreak(expandSingleBlockStatement(c.consequent)); });
|
|
76
|
+
if (allEquivalentWithoutDefault(casesWithoutBreak, endsWithDefault)) {
|
|
77
|
+
nonEmptyCases.slice(1).forEach(function (caseStmt, i) { return reportIssue(caseStmt, nonEmptyCases[i], "case"); });
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
53
80
|
for (var i = 1; i < cases.length; i++) {
|
|
54
81
|
var firstClauseWithoutBreak = conditions_1.takeWithoutBreak(expandSingleBlockStatement(cases[i].consequent));
|
|
55
82
|
if (hasRequiredSize(firstClauseWithoutBreak)) {
|
|
56
83
|
for (var j = 0; j < i; j++) {
|
|
57
84
|
var secondClauseWithoutBreak = conditions_1.takeWithoutBreak(expandSingleBlockStatement(cases[j].consequent));
|
|
58
85
|
if (equivalence_1.areEquivalent(firstClauseWithoutBreak, secondClauseWithoutBreak, context.getSourceCode())) {
|
|
59
|
-
|
|
60
|
-
message: MESSAGE,
|
|
61
|
-
data: {
|
|
62
|
-
type: "case",
|
|
63
|
-
line: String(cases[j].loc.start.line),
|
|
64
|
-
},
|
|
65
|
-
node: cases[i],
|
|
66
|
-
});
|
|
86
|
+
reportIssue(cases[i], cases[j], "case");
|
|
67
87
|
break;
|
|
68
88
|
}
|
|
69
89
|
}
|
|
@@ -72,7 +92,7 @@ var rule = {
|
|
|
72
92
|
}
|
|
73
93
|
function hasRequiredSize(nodes) {
|
|
74
94
|
if (nodes.length > 0) {
|
|
75
|
-
var tokens = context.getSourceCode().getTokens(nodes[0])
|
|
95
|
+
var tokens = __spreadArrays(context.getSourceCode().getTokens(nodes[0]), context.getSourceCode().getTokens(nodes[nodes.length - 1])).filter(function (token) { return token.value !== "{" && token.value !== "}"; });
|
|
76
96
|
return tokens.length > 0 && tokens[tokens.length - 1].loc.end.line > tokens[0].loc.start.line;
|
|
77
97
|
}
|
|
78
98
|
return false;
|
|
@@ -80,14 +100,7 @@ var rule = {
|
|
|
80
100
|
function compareIfBranches(a, b) {
|
|
81
101
|
var equivalent = equivalence_1.areEquivalent(a, b, context.getSourceCode());
|
|
82
102
|
if (equivalent && b.loc) {
|
|
83
|
-
|
|
84
|
-
message: MESSAGE,
|
|
85
|
-
data: {
|
|
86
|
-
type: "branch",
|
|
87
|
-
line: String(b.loc.start.line),
|
|
88
|
-
},
|
|
89
|
-
node: a,
|
|
90
|
-
});
|
|
103
|
+
reportIssue(a, b, "branch");
|
|
91
104
|
}
|
|
92
105
|
return equivalent;
|
|
93
106
|
}
|
|
@@ -100,6 +113,17 @@ var rule = {
|
|
|
100
113
|
}
|
|
101
114
|
return nodes;
|
|
102
115
|
}
|
|
116
|
+
function allEquivalentWithoutDefault(branches, endsWithDefault) {
|
|
117
|
+
return (!endsWithDefault &&
|
|
118
|
+
branches.length > 1 &&
|
|
119
|
+
branches.slice(1).every(function (branch, index) { return equivalence_1.areEquivalent(branch, branches[index], context.getSourceCode()); }));
|
|
120
|
+
}
|
|
121
|
+
function reportIssue(node, equivalentNode, type) {
|
|
122
|
+
var equivalentNodeLoc = equivalentNode.loc;
|
|
123
|
+
locations_1.report(context, { message: MESSAGE, data: { type: type, line: String(equivalentNode.loc.start.line) }, node: node }, [
|
|
124
|
+
locations_1.issueLocation(equivalentNodeLoc, equivalentNodeLoc, "Original"),
|
|
125
|
+
]);
|
|
126
|
+
}
|
|
103
127
|
},
|
|
104
128
|
};
|
|
105
129
|
module.exports = rule;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-duplicated-branches.js","sourceRoot":"","sources":["../../src/rules/no-duplicated-branches.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,iDAAiD
|
|
1
|
+
{"version":3,"file":"no-duplicated-branches.js","sourceRoot":"","sources":["../../src/rules/no-duplicated-branches.ts"],"names":[],"mappings":"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"}
|