eslint-plugin-sonarjs 4.0.0 → 4.0.2
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 +269 -268
- package/cjs/S100/rule.js +7 -5
- package/cjs/S101/rule.js +2 -2
- package/cjs/S104/rule.js +2 -2
- package/cjs/S105/rule.js +2 -2
- package/cjs/S1066/rule.js +5 -4
- package/cjs/S1067/rule.js +8 -6
- package/cjs/S1110/rule.js +7 -5
- package/cjs/S1119/rule.js +85 -7
- package/cjs/S1121/rule.js +4 -3
- package/cjs/S1125/rule.js +9 -8
- package/cjs/S1126/rule.js +2 -2
- package/cjs/S1128/rule.js +8 -5
- package/cjs/S1134/rule.js +2 -2
- package/cjs/S1135/rule.js +2 -2
- package/cjs/S1154/rule.js +6 -4
- package/cjs/S117/rule.js +6 -5
- package/cjs/S1172/rule.js +2 -2
- package/cjs/S1192/rule.js +5 -4
- package/cjs/S1219/rule.js +4 -3
- package/cjs/S1226/rule.js +6 -4
- package/cjs/S124/rule.js +2 -2
- package/cjs/S125/rule.js +9 -7
- package/cjs/S126/rule.js +2 -2
- package/cjs/S1264/rule.js +2 -2
- package/cjs/S128/rule.js +4 -3
- package/cjs/S1291/rule.js +2 -2
- package/cjs/S1301/rule.js +2 -2
- package/cjs/S1313/rule.js +2 -2
- package/cjs/S134/rule.js +7 -5
- package/cjs/S135/rule.js +5 -4
- package/cjs/S138/rule.js +9 -6
- package/cjs/S1439/rule.js +2 -2
- package/cjs/S1444/rule.js +2 -2
- package/cjs/S1451/rule.js +2 -2
- package/cjs/S1472/rule.js +2 -2
- package/cjs/S1479/rule.js +2 -2
- package/cjs/S1481/rule.js +2 -2
- package/cjs/S1488/generated-meta.js +1 -1
- package/cjs/S1488/rule.js +11 -7
- package/cjs/S1515/rule.js +10 -8
- package/cjs/{helpers/aws/index.js → S1523/generated-meta.js} +34 -18
- package/cjs/S1523/index.js +21 -0
- package/cjs/S1523/meta.js +21 -0
- package/cjs/S1523/rule.js +143 -0
- package/cjs/S1526/rule.js +5 -4
- package/cjs/S1527/rule.js +2 -2
- package/cjs/S1528/rule.js +2 -2
- package/cjs/S1529/generated-meta.js +1 -1
- package/cjs/S1529/rule.js +4 -3
- package/cjs/S1530/rule.js +5 -3
- package/cjs/S1533/rule.js +2 -2
- package/cjs/S1535/rule.js +2 -2
- package/cjs/S1541/rule.js +10 -7
- package/cjs/S1607/rule.js +22 -20
- package/cjs/S1764/rule.js +10 -7
- package/cjs/S1821/rule.js +2 -2
- package/cjs/S1848/rule.js +10 -7
- package/cjs/S1854/rule.js +18 -14
- package/cjs/S1862/rule.js +10 -8
- package/cjs/S1871/rule.js +21 -16
- package/cjs/S1874/rule.js +4 -3
- package/cjs/S1940/rule.js +2 -2
- package/cjs/S1994/rule.js +10 -7
- package/cjs/S2004/rule.js +9 -7
- package/cjs/S2068/rule.js +75 -12
- package/cjs/S2077/generated-meta.js +1 -1
- package/cjs/S2077/rule.js +10 -6
- package/cjs/S2092/rule.js +2 -2
- package/cjs/S2123/rule.js +2 -2
- package/cjs/S2137/rule.js +2 -2
- package/cjs/S2138/rule.js +4 -3
- package/cjs/S2187/rule.js +2 -2
- package/cjs/S2201/rule.js +47 -5
- package/cjs/S2208/rule.js +2 -2
- package/cjs/S2234/rule.js +58 -11
- package/cjs/S2245/rule.js +4 -3
- package/cjs/S2251/rule.js +5 -4
- package/cjs/S2255/rule.js +6 -5
- package/cjs/S2259/rule.js +14 -9
- package/cjs/S2301/rule.js +14 -9
- package/cjs/S2310/rule.js +80 -9
- package/cjs/S2392/rule.js +7 -5
- package/cjs/S2424/rule.js +2 -2
- package/cjs/S2428/rule.js +8 -6
- package/cjs/S2486/rule.js +4 -3
- package/cjs/S2589/rule.js +12 -10
- package/cjs/S2598/rule.js +17 -14
- package/cjs/S2612/generated-meta.js +1 -1
- package/cjs/S2612/rule.js +8 -6
- package/cjs/S2639/rule.js +2 -2
- package/cjs/S2681/rule.js +2 -2
- package/cjs/S2692/rule.js +6 -4
- package/cjs/S2699/generated-meta.js +1 -1
- package/cjs/S2699/rule.js +40 -31
- package/cjs/S2703/rule.js +2 -2
- package/cjs/S2737/rule.js +6 -4
- package/cjs/S2755/rule.js +9 -6
- package/cjs/S2757/rule.js +2 -2
- package/cjs/S2817/rule.js +10 -7
- package/cjs/S2819/rule.js +16 -12
- package/cjs/S2870/rule.js +8 -5
- package/cjs/S2871/rule.js +12 -9
- package/cjs/S2970/rule.js +9 -8
- package/cjs/S2990/rule.js +2 -2
- package/cjs/S2999/rule.js +10 -7
- package/cjs/S3001/rule.js +2 -2
- package/cjs/S3003/rule.js +10 -7
- package/cjs/S3317/rule.js +4 -3
- package/cjs/S3330/rule.js +2 -2
- package/cjs/S3358/rule.js +2 -2
- package/cjs/S3402/rule.js +14 -10
- package/cjs/S3403/rule.js +10 -7
- package/cjs/S3415/rule.js +16 -13
- package/cjs/S3499/rule.js +5 -4
- package/cjs/S3500/rule.js +5 -4
- package/cjs/S3513/rule.js +5 -4
- package/cjs/S3514/rule.js +10 -7
- package/cjs/S3516/rule.js +10 -7
- package/cjs/S3524/rule.js +2 -2
- package/cjs/S3525/rule.js +6 -4
- package/cjs/S3531/rule.js +5 -3
- package/cjs/S3533/rule.js +8 -7
- package/cjs/S3579/rule.js +6 -4
- package/cjs/S3616/rule.js +6 -4
- package/cjs/S3626/rule.js +4 -3
- package/cjs/S3686/rule.js +7 -5
- package/cjs/S3699/rule.js +4 -3
- package/cjs/S3735/rule.js +8 -5
- package/cjs/S3757/rule.js +8 -6
- package/cjs/S3758/rule.js +9 -7
- package/cjs/S3760/rule.js +24 -21
- package/cjs/S3776/rule.js +26 -22
- package/cjs/S3782/rule.js +6 -4
- package/cjs/S3785/rule.js +9 -6
- package/cjs/S3796/rule.js +12 -8
- package/cjs/S3798/rule.js +4 -3
- package/cjs/S3800/rule.js +22 -11
- package/cjs/S3801/generated-meta.js +1 -1
- package/cjs/S3801/rule.js +15 -11
- package/cjs/S3827/rule.js +9 -6
- package/cjs/S3923/rule.js +9 -6
- package/cjs/S3972/rule.js +5 -4
- package/cjs/S3973/rule.js +7 -5
- package/cjs/S3981/rule.js +4 -3
- package/cjs/S3984/rule.js +4 -3
- package/cjs/S4030/rule.js +10 -7
- package/cjs/S4036/rule.js +7 -5
- package/cjs/S4043/rule.js +12 -8
- package/cjs/S4139/rule.js +7 -5
- package/cjs/S4143/rule.js +12 -9
- package/cjs/S4144/rule.js +12 -9
- package/cjs/S4158/rule.js +11 -8
- package/cjs/S4165/rule.js +14 -12
- package/cjs/S4322/rule.js +8 -5
- package/cjs/S4323/rule.js +4 -3
- package/cjs/S4324/rule.js +7 -5
- package/cjs/S4328/rule.js +2 -2
- package/cjs/S4335/rule.js +6 -4
- package/cjs/S4423/rule.js +4 -3
- package/cjs/S4423/rule.lib.js +8 -7
- package/cjs/S4426/rule.js +11 -10
- package/cjs/S4502/rule.js +16 -13
- package/cjs/S4507/rule.js +8 -6
- package/cjs/S4524/rule.js +2 -2
- package/cjs/S4619/rule.js +6 -4
- package/cjs/S4621/rule.js +5 -4
- package/cjs/S4622/rule.js +5 -3
- package/cjs/S4623/rule.js +8 -5
- package/cjs/S4624/rule.js +6 -4
- package/cjs/S4634/rule.js +4 -3
- package/cjs/S4721/rule.js +7 -5
- package/cjs/S4782/rule.js +7 -5
- package/cjs/S4784/rule.js +5 -4
- package/cjs/S4787/rule.js +9 -7
- package/cjs/S4790/rule.js +7 -5
- package/cjs/S4798/rule.js +2 -2
- package/cjs/S4817/rule.js +10 -8
- package/cjs/S4818/rule.js +4 -3
- package/cjs/S4822/rule.js +13 -9
- package/cjs/S4823/rule.js +4 -3
- package/cjs/S4829/rule.js +4 -3
- package/cjs/S4830/rule.js +11 -8
- package/cjs/S5042/rule.js +9 -7
- package/cjs/S5122/rule.js +40 -36
- package/cjs/S5148/rule.js +9 -8
- package/cjs/S5247/rule.js +22 -18
- package/cjs/S5256/rule.js +5 -4
- package/cjs/S5257/rule.js +4 -3
- package/cjs/S5260/rule.js +4 -3
- package/cjs/S5264/rule.js +4 -3
- package/cjs/S5332/rule.js +4 -3
- package/cjs/S5332/rule.lib.js +19 -17
- package/cjs/S5443/rule.js +2 -2
- package/cjs/S5527/rule.js +18 -14
- package/cjs/S5542/rule.js +6 -4
- package/cjs/S5547/rule.js +6 -4
- package/cjs/S5604/rule.js +15 -14
- package/cjs/S5659/rule.js +15 -12
- package/cjs/S5689/rule.js +11 -8
- package/cjs/S5691/rule.js +7 -5
- package/cjs/S5693/rule.js +14 -12
- package/cjs/S5725/rule.js +9 -6
- package/cjs/S5728/rule.js +7 -4
- package/cjs/S5730/rule.js +9 -6
- package/cjs/S5732/rule.js +8 -5
- package/cjs/S5734/rule.js +7 -4
- package/cjs/S5736/rule.js +8 -5
- package/cjs/S5739/rule.js +11 -8
- package/cjs/S5742/rule.js +7 -4
- package/cjs/S5743/rule.js +8 -6
- package/cjs/S5757/rule.js +13 -10
- package/cjs/S5759/rule.js +10 -7
- package/cjs/S5842/rule.js +2 -2
- package/cjs/S5843/rule.js +22 -19
- package/cjs/S5850/rule.js +4 -3
- package/cjs/S5852/rule.js +2 -2
- package/cjs/S5856/rule.js +10 -7
- package/cjs/S5860/rule.js +30 -26
- package/cjs/S5863/rule.js +15 -11
- package/cjs/S5867/rule.js +8 -7
- package/cjs/S5868/rule.js +7 -5
- package/cjs/S5869/rule.js +6 -5
- package/cjs/S5876/rule.js +12 -8
- package/cjs/S5958/rule.js +12 -9
- package/cjs/S5973/rule.js +10 -7
- package/cjs/S6019/rule.js +4 -3
- package/cjs/S6035/rule.js +2 -2
- package/cjs/S6079/rule.js +9 -6
- package/cjs/S6080/rule.js +13 -10
- package/cjs/S6092/rule.js +9 -7
- package/cjs/S6245/rule.js +14 -9
- package/cjs/S6249/rule.js +7 -5
- package/cjs/S6252/rule.js +12 -8
- package/cjs/S6265/rule.js +27 -20
- package/cjs/S6268/rule.js +5 -4
- package/cjs/S6270/rule.js +12 -9
- package/cjs/S6275/rule.js +2 -2
- package/cjs/S6281/rule.js +22 -17
- package/cjs/S6299/rule.js +2 -2
- package/cjs/S6302/rule.js +6 -5
- package/cjs/S6303/rule.js +12 -10
- package/cjs/S6304/rule.js +6 -5
- package/cjs/S6308/rule.js +7 -5
- package/cjs/S6317/rule.js +5 -4
- package/cjs/S6319/rule.js +2 -2
- package/cjs/S6321/rule.js +25 -23
- package/cjs/S6323/rule.js +4 -3
- package/cjs/S6324/rule.js +2 -2
- package/cjs/S6326/rule.js +2 -2
- package/cjs/S6327/rule.js +2 -2
- package/cjs/S6328/rule.js +4 -3
- package/cjs/S6329/rule.js +7 -5
- package/cjs/S6330/rule.js +2 -2
- package/cjs/S6332/rule.js +2 -2
- package/cjs/S6333/rule.js +8 -6
- package/cjs/S6351/rule.js +22 -19
- package/cjs/S6353/rule.js +2 -2
- package/cjs/S6397/rule.js +2 -2
- package/cjs/S6418/config.js +1 -1
- package/cjs/S6418/rule.js +9 -24
- package/cjs/S6426/rule.js +5 -4
- package/cjs/S6437/rule.js +10 -7
- package/cjs/S6439/rule.js +9 -7
- package/cjs/S6442/rule.js +11 -8
- package/cjs/S6443/rule.js +9 -7
- package/cjs/S6486/rule.js +5 -4
- package/cjs/S6564/rule.js +4 -3
- package/cjs/S6594/rule.js +12 -8
- package/cjs/S6627/rule.js +6 -4
- package/cjs/S6759/rule.js +10 -6
- package/cjs/S6958/rule.js +2 -2
- package/cjs/S6959/rule.js +9 -6
- package/cjs/S7059/generated-meta.js +1 -1
- package/cjs/S7059/rule.js +8 -5
- package/cjs/S7639/generated-meta.js +1 -1
- package/cjs/S7639/rule.js +5 -4
- package/cjs/S7790/generated-meta.js +1 -1
- package/cjs/S7790/rule.js +7 -5
- package/cjs/S8441/generated-meta.js +1 -1
- package/cjs/S8441/rule.js +13 -9
- package/cjs/S881/rule.js +2 -2
- package/cjs/S888/rule.js +4 -3
- package/cjs/S930/rule.js +14 -12
- package/cjs/helpers/ast.js +11 -8
- package/cjs/helpers/aws/s3.js +9 -6
- package/cjs/helpers/chai.js +41 -43
- package/cjs/helpers/configs.js +92 -0
- package/cjs/helpers/cookie-flag-check.js +19 -17
- package/cjs/helpers/{decorators/index.js → entropy.js} +16 -17
- package/cjs/helpers/express.js +127 -128
- package/cjs/helpers/find-up/all-in-parent-dirs.js +0 -16
- package/cjs/helpers/mocha.js +50 -54
- package/cjs/helpers/regex/ast.js +7 -6
- package/cjs/helpers/regex/extract.js +11 -11
- package/cjs/helpers/regex/group.js +2 -2
- package/cjs/helpers/regex/location.js +2 -2
- package/cjs/helpers/regex/range.js +5 -4
- package/cjs/helpers/regex/rule-template.js +4 -3
- package/cjs/helpers/sinon.js +33 -36
- package/cjs/helpers/supertest.js +34 -37
- package/cjs/helpers/vitest.js +29 -32
- package/cjs/plugin-rules.js +452 -450
- package/docs/assertions-in-tests.md +2 -0
- package/docs/bitwise-operators.md +2 -0
- package/docs/code-eval.md +7 -0
- package/docs/file-permissions.md +1 -1
- package/docs/no-async-constructor.md +2 -0
- package/docs/no-inconsistent-returns.md +2 -0
- package/docs/prefer-immediate-return.md +2 -0
- package/docs/sql-queries.md +2 -0
- package/package.json +39 -1
- package/types/S1067/rule.d.ts +1 -1
- package/types/S1110/rule.d.ts +1 -1
- package/types/S1128/rule.d.ts +1 -1
- package/types/S1172/rule.d.ts +1 -1
- package/types/S1226/rule.d.ts +1 -1
- package/types/S134/rule.d.ts +1 -1
- package/types/S1472/rule.d.ts +1 -1
- package/types/S1481/rule.d.ts +1 -1
- package/types/S1488/generated-meta.d.ts +1 -1
- package/types/S1515/rule.d.ts +1 -1
- package/types/S1523/generated-meta.d.ts +17 -0
- package/types/S1523/index.d.ts +1 -0
- package/types/S1523/meta.d.ts +2 -0
- package/types/S1523/rule.d.ts +2 -0
- package/types/S1527/rule.d.ts +1 -1
- package/types/S1529/generated-meta.d.ts +1 -1
- package/types/S1541/rule.d.ts +1 -1
- package/types/S1862/rule.d.ts +1 -1
- package/types/S2077/generated-meta.d.ts +1 -1
- package/types/S2123/rule.d.ts +1 -1
- package/types/S2259/rule.d.ts +1 -1
- package/types/S2428/rule.d.ts +1 -1
- package/types/S2589/rule.d.ts +1 -1
- package/types/S2598/rule.d.ts +1 -1
- package/types/S2699/generated-meta.d.ts +1 -1
- package/types/S2699/rule.d.ts +1 -1
- package/types/S2737/rule.d.ts +1 -1
- package/types/S2757/rule.d.ts +1 -1
- package/types/S2819/rule.d.ts +1 -1
- package/types/S3001/rule.d.ts +1 -1
- package/types/S3317/rule.d.ts +1 -1
- package/types/S3500/rule.d.ts +1 -1
- package/types/S3513/rule.d.ts +1 -1
- package/types/S3686/rule.d.ts +1 -1
- package/types/S3801/generated-meta.d.ts +1 -1
- package/types/S3972/rule.d.ts +1 -1
- package/types/S3973/rule.d.ts +1 -1
- package/types/S4030/rule.d.ts +1 -1
- package/types/S4143/rule.d.ts +1 -1
- package/types/S4158/rule.d.ts +1 -1
- package/types/S4621/rule.d.ts +1 -1
- package/types/S4782/rule.d.ts +1 -1
- package/types/S5693/rule.d.ts +1 -1
- package/types/S5725/rule.d.ts +1 -1
- package/types/S5860/rule.d.ts +1 -1
- package/types/S5868/rule.d.ts +1 -1
- package/types/S5869/rule.d.ts +1 -1
- package/types/S6079/rule.d.ts +1 -1
- package/types/S6326/rule.d.ts +1 -1
- package/types/S6351/rule.d.ts +1 -1
- package/types/S6418/config.d.ts +1 -1
- package/types/S6443/rule.d.ts +1 -1
- package/types/S7059/generated-meta.d.ts +1 -1
- package/types/S7639/generated-meta.d.ts +1 -1
- package/types/S7790/generated-meta.d.ts +1 -1
- package/types/S8441/generated-meta.d.ts +1 -1
- package/types/S930/rule.d.ts +1 -1
- package/types/helpers/ancestor.d.ts +3 -3
- package/types/helpers/ast.d.ts +1 -1
- package/types/helpers/aws/iam.d.ts +2 -2
- package/types/helpers/aws/s3.d.ts +1 -1
- package/types/helpers/chai.d.ts +3 -5
- package/types/helpers/configs.d.ts +39 -1
- package/types/helpers/entropy.d.ts +1 -0
- package/types/helpers/equivalence.d.ts +1 -1
- package/types/helpers/express.d.ts +38 -43
- package/types/helpers/find-up/all-in-parent-dirs.d.ts +1 -1
- package/types/helpers/find-up/closest.d.ts +1 -1
- package/types/helpers/find-up/find-minimatch.d.ts +1 -1
- package/types/helpers/generate-meta.d.ts +1 -1
- package/types/helpers/mocha.d.ts +19 -21
- package/types/helpers/module.d.ts +1 -1
- package/types/helpers/package-jsons/all-in-parent-dirs.d.ts +1 -1
- package/types/helpers/package-jsons/dependencies.d.ts +1 -1
- package/types/helpers/recognizers/CodeRecognizer.d.ts +1 -1
- package/types/helpers/recognizers/JavaScriptFootPrint.d.ts +2 -2
- package/types/helpers/recognizers/LanguageFootprint.d.ts +1 -1
- package/types/helpers/regex/alternation.d.ts +1 -1
- package/types/helpers/regex/ast.d.ts +1 -1
- package/types/helpers/regex/location.d.ts +2 -2
- package/types/helpers/regex/range.d.ts +2 -2
- package/types/helpers/regex/rule-template.d.ts +1 -1
- package/types/helpers/result.d.ts +1 -1
- package/types/helpers/sinon.d.ts +4 -6
- package/types/helpers/sonar-runtime.d.ts +1 -1
- package/types/helpers/supertest.d.ts +4 -6
- package/types/helpers/type.d.ts +1 -1
- package/types/helpers/vitest.d.ts +4 -6
- package/types/plugin-rules.d.ts +1 -0
- package/cjs/helpers/decorators/interceptor.js +0 -88
- package/cjs/helpers/index.js +0 -60
- package/cjs/helpers/recognizers/index.js +0 -37
- package/cjs/helpers/rule-detect-react.js +0 -29
- package/cjs/helpers/validate-version.js +0 -94
- package/types/helpers/aws/index.d.ts +0 -3
- package/types/helpers/decorators/index.d.ts +0 -2
- package/types/helpers/decorators/interceptor.d.ts +0 -16
- package/types/helpers/index.d.ts +0 -28
- package/types/helpers/recognizers/index.d.ts +0 -2
- package/types/helpers/rule-detect-react.d.ts +0 -2
- package/types/helpers/validate-version.d.ts +0 -13
package/cjs/S1226/rule.js
CHANGED
|
@@ -51,10 +51,12 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
51
51
|
})();
|
|
52
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
53
|
exports.rule = void 0;
|
|
54
|
-
const
|
|
54
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
55
|
+
const ancestor_js_1 = require("../helpers/ancestor.js");
|
|
56
|
+
const ast_js_1 = require("../helpers/ast.js");
|
|
55
57
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
58
|
exports.rule = {
|
|
57
|
-
meta: (0,
|
|
59
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, {
|
|
58
60
|
messages: {
|
|
59
61
|
noReassignment: 'Introduce a new variable or use its initial value before reassigning "{{reference}}".',
|
|
60
62
|
},
|
|
@@ -141,7 +143,7 @@ exports.rule = {
|
|
|
141
143
|
}
|
|
142
144
|
},
|
|
143
145
|
onCodePathSegmentLoop(_fromSegment, _toSegment, node) {
|
|
144
|
-
const parent = (0,
|
|
146
|
+
const parent = (0, ancestor_js_1.getParent)(context, node);
|
|
145
147
|
if (!isForEachLoopStart(node, parent)) {
|
|
146
148
|
return;
|
|
147
149
|
}
|
|
@@ -153,7 +155,7 @@ exports.rule = {
|
|
|
153
155
|
}
|
|
154
156
|
}
|
|
155
157
|
// In case of array or object pattern expression, the left hand side are not declared variables but simply identifiers
|
|
156
|
-
for (const name of (0,
|
|
158
|
+
for (const name of (0, ast_js_1.resolveIdentifiers)(parent.left, true).map(identifier => identifier.name)) {
|
|
157
159
|
variablesToCheck.add(name);
|
|
158
160
|
variablesToCheckInCurrentScope.add(name);
|
|
159
161
|
}
|
package/cjs/S124/rule.js
CHANGED
|
@@ -51,10 +51,10 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
51
51
|
})();
|
|
52
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
53
|
exports.rule = void 0;
|
|
54
|
-
const
|
|
54
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
55
55
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
56
|
exports.rule = {
|
|
57
|
-
meta: (0,
|
|
57
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta),
|
|
58
58
|
create(context) {
|
|
59
59
|
const options = context.options[0] || {};
|
|
60
60
|
const flags = options.flags || '';
|
package/cjs/S125/rule.js
CHANGED
|
@@ -54,17 +54,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
54
54
|
};
|
|
55
55
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
56
56
|
exports.rule = void 0;
|
|
57
|
-
const
|
|
57
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
58
|
+
const collection_js_1 = require("../helpers/collection.js");
|
|
58
59
|
const meta = __importStar(require("./generated-meta.js"));
|
|
59
|
-
const
|
|
60
|
+
const CodeRecognizer_js_1 = require("../helpers/recognizers/CodeRecognizer.js");
|
|
61
|
+
const JavaScriptFootPrint_js_1 = require("../helpers/recognizers/JavaScriptFootPrint.js");
|
|
60
62
|
const node_path_1 = __importDefault(require("node:path"));
|
|
61
63
|
const EXCLUDED_STATEMENTS = new Set(['BreakStatement', 'LabeledStatement', 'ContinueStatement']);
|
|
62
64
|
// Cheap prefilter: any meaningful JS statement must contain at least one of these characters,
|
|
63
65
|
// or be an import/export with a string literal (side-effect imports have no punctuation)
|
|
64
66
|
const CODE_CHAR_PATTERN = /[;{}()=<>]|\bimport\s+['"]|\bexport\s/;
|
|
65
|
-
const recognizer = new
|
|
67
|
+
const recognizer = new CodeRecognizer_js_1.CodeRecognizer(0.9, new JavaScriptFootPrint_js_1.JavaScriptFootPrint());
|
|
66
68
|
exports.rule = {
|
|
67
|
-
meta: (0,
|
|
69
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, {
|
|
68
70
|
messages: {
|
|
69
71
|
commentedCode: 'Remove this commented out code.',
|
|
70
72
|
commentedCodeFix: 'Remove this commented out code',
|
|
@@ -80,7 +82,7 @@ exports.rule = {
|
|
|
80
82
|
groupedComments.push({ value: comment.value, nodes: [comment] });
|
|
81
83
|
}
|
|
82
84
|
else if (currentGroup.length === 0 ||
|
|
83
|
-
areAdjacentLineComments((0,
|
|
85
|
+
areAdjacentLineComments((0, collection_js_1.last)(currentGroup), comment)) {
|
|
84
86
|
currentGroup.push(comment);
|
|
85
87
|
}
|
|
86
88
|
else {
|
|
@@ -122,7 +124,7 @@ exports.rule = {
|
|
|
122
124
|
messageId: 'commentedCodeFix',
|
|
123
125
|
fix(fixer) {
|
|
124
126
|
const start = groupComment.nodes[0].range[0];
|
|
125
|
-
const end = (0,
|
|
127
|
+
const end = (0, collection_js_1.last)(groupComment.nodes).range[1];
|
|
126
128
|
return fixer.removeRange([start, end]);
|
|
127
129
|
},
|
|
128
130
|
},
|
|
@@ -208,7 +210,7 @@ function injectMissingBraces(value) {
|
|
|
208
210
|
function getCommentLocation(nodes) {
|
|
209
211
|
return {
|
|
210
212
|
start: nodes[0].loc.start,
|
|
211
|
-
end: (0,
|
|
213
|
+
end: (0, collection_js_1.last)(nodes).loc.end,
|
|
212
214
|
};
|
|
213
215
|
}
|
|
214
216
|
function isReturnThrowExclusion(statement) {
|
package/cjs/S126/rule.js
CHANGED
|
@@ -51,10 +51,10 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
51
51
|
})();
|
|
52
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
53
|
exports.rule = void 0;
|
|
54
|
-
const
|
|
54
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
55
55
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
56
|
exports.rule = {
|
|
57
|
-
meta: (0,
|
|
57
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, {
|
|
58
58
|
messages: {
|
|
59
59
|
addMissingElseClause: 'Add the missing "else" clause.',
|
|
60
60
|
},
|
package/cjs/S1264/rule.js
CHANGED
|
@@ -51,10 +51,10 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
51
51
|
})();
|
|
52
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
53
|
exports.rule = void 0;
|
|
54
|
-
const
|
|
54
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
55
55
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
56
|
exports.rule = {
|
|
57
|
-
meta: (0,
|
|
57
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, {
|
|
58
58
|
messages: {
|
|
59
59
|
replaceForWithWhileLoop: 'Replace this "for" loop with a "while" loop.',
|
|
60
60
|
},
|
package/cjs/S128/rule.js
CHANGED
|
@@ -51,10 +51,11 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
51
51
|
})();
|
|
52
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
53
|
exports.rule = void 0;
|
|
54
|
-
const
|
|
54
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
55
|
+
const ancestor_js_1 = require("../helpers/ancestor.js");
|
|
55
56
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
57
|
exports.rule = {
|
|
57
|
-
meta: (0,
|
|
58
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, {
|
|
58
59
|
messages: {
|
|
59
60
|
switchEnd: 'End this switch case with an unconditional break, continue, return or throw statement.',
|
|
60
61
|
},
|
|
@@ -127,7 +128,7 @@ exports.rule = {
|
|
|
127
128
|
const switchCase = node;
|
|
128
129
|
const initialSegment = initialSegmentBySwitchCase.get(switchCase);
|
|
129
130
|
const isReachable = Array.from(currentSegments).some(s => s.reachable && !isAfterProcessExitCall(s, initialSegment));
|
|
130
|
-
const { cases } = (0,
|
|
131
|
+
const { cases } = (0, ancestor_js_1.getParent)(context, node);
|
|
131
132
|
if (isReachable &&
|
|
132
133
|
switchCase.consequent.length > 0 &&
|
|
133
134
|
cases.at(-1) !== node &&
|
package/cjs/S1291/rule.js
CHANGED
|
@@ -51,11 +51,11 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
51
51
|
})();
|
|
52
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
53
|
exports.rule = void 0;
|
|
54
|
-
const
|
|
54
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
55
55
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
56
|
const NOSONAR = 'NOSONAR';
|
|
57
57
|
exports.rule = {
|
|
58
|
-
meta: (0,
|
|
58
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, {
|
|
59
59
|
messages: {
|
|
60
60
|
noSonar: '"NOSONAR" comments should not be used.',
|
|
61
61
|
},
|
package/cjs/S1301/rule.js
CHANGED
|
@@ -51,10 +51,10 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
51
51
|
})();
|
|
52
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
53
|
exports.rule = void 0;
|
|
54
|
-
const
|
|
54
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
55
55
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
56
|
exports.rule = {
|
|
57
|
-
meta: (0,
|
|
57
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, {
|
|
58
58
|
messages: {
|
|
59
59
|
replaceSwitch: 'Replace this "switch" statement by "if" statements to increase readability.',
|
|
60
60
|
},
|
package/cjs/S1313/rule.js
CHANGED
|
@@ -52,7 +52,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
52
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
53
|
exports.rule = void 0;
|
|
54
54
|
const node_net_1 = require("node:net");
|
|
55
|
-
const
|
|
55
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
56
56
|
const meta = __importStar(require("./generated-meta.js"));
|
|
57
57
|
const netMaskRegex = /(^[^/]+)\/\d{1,3}$/;
|
|
58
58
|
const acceptedIpAddresses = new Set([
|
|
@@ -79,7 +79,7 @@ const acceptedIpV4Starts = [
|
|
|
79
79
|
'203.0.113.',
|
|
80
80
|
];
|
|
81
81
|
exports.rule = {
|
|
82
|
-
meta: (0,
|
|
82
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, {
|
|
83
83
|
messages: {
|
|
84
84
|
checkIP: 'Make sure using a hardcoded IP address {{ip}} is safe here.',
|
|
85
85
|
},
|
package/cjs/S134/rule.js
CHANGED
|
@@ -51,11 +51,13 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
51
51
|
})();
|
|
52
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
53
|
exports.rule = void 0;
|
|
54
|
-
const
|
|
54
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
55
|
+
const collection_js_1 = require("../helpers/collection.js");
|
|
56
|
+
const location_js_1 = require("../helpers/location.js");
|
|
55
57
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
58
|
const DEFAULT_MAXIMUM_NESTING_LEVEL = 3;
|
|
57
59
|
exports.rule = {
|
|
58
|
-
meta: (0,
|
|
60
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta),
|
|
59
61
|
create(context) {
|
|
60
62
|
const sourceCode = context.sourceCode;
|
|
61
63
|
const threshold = context.options[0]?.maximumNestingLevel ??
|
|
@@ -69,14 +71,14 @@ exports.rule = {
|
|
|
69
71
|
}
|
|
70
72
|
function check(node) {
|
|
71
73
|
if (nodeStack.length === threshold) {
|
|
72
|
-
(0,
|
|
74
|
+
(0, location_js_1.report)(context, {
|
|
73
75
|
message: `Refactor this code to not nest more than ${threshold} if/for/while/switch/try statements.`,
|
|
74
76
|
loc: sourceCode.getFirstToken(node).loc,
|
|
75
|
-
}, nodeStack.map(n => (0,
|
|
77
|
+
}, nodeStack.map(n => (0, location_js_1.toSecondaryLocation)(n, '+1')));
|
|
76
78
|
}
|
|
77
79
|
}
|
|
78
80
|
function isElseIf(node) {
|
|
79
|
-
const parent = (0,
|
|
81
|
+
const parent = (0, collection_js_1.last)(context.sourceCode.getAncestors(node));
|
|
80
82
|
return (node.type === 'IfStatement' && parent.type === 'IfStatement' && node === parent.alternate);
|
|
81
83
|
}
|
|
82
84
|
const controlFlowNodes = [
|
package/cjs/S135/rule.js
CHANGED
|
@@ -51,10 +51,11 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
51
51
|
})();
|
|
52
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
53
|
exports.rule = void 0;
|
|
54
|
-
const
|
|
54
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
55
|
+
const location_js_1 = require("../helpers/location.js");
|
|
55
56
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
57
|
exports.rule = {
|
|
57
|
-
meta: (0,
|
|
58
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta),
|
|
58
59
|
create(context) {
|
|
59
60
|
let jumpTargets = [];
|
|
60
61
|
function enterScope() {
|
|
@@ -76,10 +77,10 @@ exports.rule = {
|
|
|
76
77
|
if (jumps && jumps.length > 1) {
|
|
77
78
|
const sourceCode = context.sourceCode;
|
|
78
79
|
const firstToken = sourceCode.getFirstToken(node);
|
|
79
|
-
(0,
|
|
80
|
+
(0, location_js_1.report)(context, {
|
|
80
81
|
loc: firstToken.loc,
|
|
81
82
|
message: 'Reduce the total number of "break" and "continue" statements in this loop to use one at most.',
|
|
82
|
-
}, jumps.map(jmp => (0,
|
|
83
|
+
}, jumps.map(jmp => (0, location_js_1.toSecondaryLocation)(jmp, jmp.type === 'BreakStatement' ? '"break" statement.' : '"continue" statement.')));
|
|
83
84
|
}
|
|
84
85
|
}
|
|
85
86
|
return {
|
package/cjs/S138/rule.js
CHANGED
|
@@ -54,14 +54,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
54
54
|
exports.rule = void 0;
|
|
55
55
|
exports.getLocsNumber = getLocsNumber;
|
|
56
56
|
exports.getCommentLineNumbers = getCommentLineNumbers;
|
|
57
|
-
const
|
|
57
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
58
|
+
const location_js_1 = require("../helpers/location.js");
|
|
59
|
+
const ancestor_js_1 = require("../helpers/ancestor.js");
|
|
60
|
+
const collection_js_1 = require("../helpers/collection.js");
|
|
58
61
|
const meta = __importStar(require("./generated-meta.js"));
|
|
59
62
|
const DEFAULT = 200;
|
|
60
63
|
const messages = {
|
|
61
64
|
functionMaxLine: 'This function has {{lineCount}} lines, which is greater than the {{threshold}} lines authorized. Split it into smaller functions.',
|
|
62
65
|
};
|
|
63
66
|
exports.rule = {
|
|
64
|
-
meta: (0,
|
|
67
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, { messages }),
|
|
65
68
|
create(context) {
|
|
66
69
|
const threshold = context.options[0]?.maximum ?? DEFAULT;
|
|
67
70
|
const sourceCode = context.sourceCode;
|
|
@@ -72,7 +75,7 @@ exports.rule = {
|
|
|
72
75
|
return {
|
|
73
76
|
'FunctionDeclaration, FunctionExpression, ArrowFunctionExpression': (node) => {
|
|
74
77
|
functionStack.push(node);
|
|
75
|
-
const parent = (0,
|
|
78
|
+
const parent = (0, ancestor_js_1.getParent)(context, node);
|
|
76
79
|
if (!node.loc || isIIFE(node, parent)) {
|
|
77
80
|
return;
|
|
78
81
|
}
|
|
@@ -82,7 +85,7 @@ exports.rule = {
|
|
|
82
85
|
},
|
|
83
86
|
ReturnStatement: (node) => {
|
|
84
87
|
const returnStatement = node;
|
|
85
|
-
const knowledge = functionKnowledge.get((0,
|
|
88
|
+
const knowledge = functionKnowledge.get((0, collection_js_1.last)(functionStack));
|
|
86
89
|
if (knowledge &&
|
|
87
90
|
returnStatement.argument &&
|
|
88
91
|
returnStatement.argument.type.startsWith('JSX')) {
|
|
@@ -109,7 +112,7 @@ exports.rule = {
|
|
|
109
112
|
lineCount: lineCount.toString(),
|
|
110
113
|
threshold: `${threshold}`,
|
|
111
114
|
},
|
|
112
|
-
loc: (0,
|
|
115
|
+
loc: (0, location_js_1.getMainFunctionTokenLocation)(functionLike, functionLike.parent, context),
|
|
113
116
|
});
|
|
114
117
|
}
|
|
115
118
|
}
|
|
@@ -175,7 +178,7 @@ function nameStartsWithCapital(node) {
|
|
|
175
178
|
if (node.type !== 'ArrowFunctionExpression') {
|
|
176
179
|
return null;
|
|
177
180
|
}
|
|
178
|
-
const parent = (0,
|
|
181
|
+
const parent = (0, ancestor_js_1.getNodeParent)(node);
|
|
179
182
|
if (!parent) {
|
|
180
183
|
return null;
|
|
181
184
|
}
|
package/cjs/S1439/rule.js
CHANGED
|
@@ -51,10 +51,10 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
51
51
|
})();
|
|
52
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
53
|
exports.rule = void 0;
|
|
54
|
-
const
|
|
54
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
55
55
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
56
|
exports.rule = {
|
|
57
|
-
meta: (0,
|
|
57
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, {
|
|
58
58
|
messages: {
|
|
59
59
|
removeLabel: 'Remove this "{{label}}" label.',
|
|
60
60
|
},
|
package/cjs/S1444/rule.js
CHANGED
|
@@ -51,10 +51,10 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
51
51
|
})();
|
|
52
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
53
|
exports.rule = void 0;
|
|
54
|
-
const
|
|
54
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
55
55
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
56
|
exports.rule = {
|
|
57
|
-
meta: (0,
|
|
57
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, {
|
|
58
58
|
hasSuggestions: true,
|
|
59
59
|
messages: {
|
|
60
60
|
message: `Make this public static property readonly.`,
|
package/cjs/S1451/rule.js
CHANGED
|
@@ -51,7 +51,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
51
51
|
})();
|
|
52
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
53
|
exports.rule = void 0;
|
|
54
|
-
const
|
|
54
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
55
55
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
56
|
let cached;
|
|
57
57
|
const DEFAULT_OPTIONS = {
|
|
@@ -62,7 +62,7 @@ const messages = {
|
|
|
62
62
|
fixHeader: 'Add or update the header of this file.',
|
|
63
63
|
};
|
|
64
64
|
exports.rule = {
|
|
65
|
-
meta: (0,
|
|
65
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, { messages }),
|
|
66
66
|
create(context) {
|
|
67
67
|
updateCache(context.options);
|
|
68
68
|
if (cached.failedToCompile) {
|
package/cjs/S1472/rule.js
CHANGED
|
@@ -51,10 +51,10 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
51
51
|
})();
|
|
52
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
53
|
exports.rule = void 0;
|
|
54
|
-
const
|
|
54
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
55
55
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
56
|
exports.rule = {
|
|
57
|
-
meta: (0,
|
|
57
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, {
|
|
58
58
|
messages: {
|
|
59
59
|
moveArguments: 'Make those call arguments start on line {{line}}.',
|
|
60
60
|
moveTemplateLiteral: 'Make this template literal start on line {{line}}.',
|
package/cjs/S1479/rule.js
CHANGED
|
@@ -51,11 +51,11 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
51
51
|
})();
|
|
52
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
53
|
exports.rule = void 0;
|
|
54
|
-
const
|
|
54
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
55
55
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
56
|
const DEFAULT_MAX_SWITCH_CASES = 30;
|
|
57
57
|
exports.rule = {
|
|
58
|
-
meta: (0,
|
|
58
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, {
|
|
59
59
|
messages: {
|
|
60
60
|
reduceNumberOfNonEmptySwitchCases: 'Reduce the number of non-empty switch cases from {{numSwitchCases}} to at most {{maxSwitchCases}}.',
|
|
61
61
|
},
|
package/cjs/S1481/rule.js
CHANGED
|
@@ -51,10 +51,10 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
51
51
|
})();
|
|
52
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
53
|
exports.rule = void 0;
|
|
54
|
-
const
|
|
54
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
55
55
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
56
|
exports.rule = {
|
|
57
|
-
meta: (0,
|
|
57
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, {
|
|
58
58
|
messages: {
|
|
59
59
|
unusedFunction: `Remove unused function '{{symbol}}'.`,
|
|
60
60
|
unusedVariable: `Remove the declaration of the unused '{{symbol}}' variable.`,
|
|
@@ -39,7 +39,7 @@ exports.meta = {
|
|
|
39
39
|
description: 'Local variables should not be declared and then immediately returned or thrown',
|
|
40
40
|
recommended: false,
|
|
41
41
|
url: 'https://sonarsource.github.io/rspec/#/rspec/S1488/javascript',
|
|
42
|
-
requiresTypeChecking:
|
|
42
|
+
requiresTypeChecking: true,
|
|
43
43
|
},
|
|
44
44
|
fixable: 'code',
|
|
45
45
|
deprecated: false,
|
package/cjs/S1488/rule.js
CHANGED
|
@@ -51,11 +51,15 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
51
51
|
})();
|
|
52
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
53
|
exports.rule = void 0;
|
|
54
|
-
const
|
|
54
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
55
|
+
const type_js_1 = require("../helpers/type.js");
|
|
56
|
+
const ast_js_1 = require("../helpers/ast.js");
|
|
57
|
+
const parser_services_js_1 = require("../helpers/parser-services.js");
|
|
58
|
+
const collection_js_1 = require("../helpers/collection.js");
|
|
55
59
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
60
|
const typescript_1 = require("typescript");
|
|
57
61
|
exports.rule = {
|
|
58
|
-
meta: (0,
|
|
62
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta, {
|
|
59
63
|
messages: {
|
|
60
64
|
doImmediateAction: 'Immediately {{action}} this expression instead of assigning it to the temporary variable "{{variable}}".',
|
|
61
65
|
},
|
|
@@ -72,7 +76,7 @@ exports.rule = {
|
|
|
72
76
|
};
|
|
73
77
|
function processStatements(node, statements) {
|
|
74
78
|
if (statements.length > 1) {
|
|
75
|
-
const lastStatement = (0,
|
|
79
|
+
const lastStatement = (0, collection_js_1.last)(statements);
|
|
76
80
|
const returnedIdentifier = getOnlyReturnedVariable(lastStatement);
|
|
77
81
|
const lastButOne = statements.at(-2);
|
|
78
82
|
const declaredIdentifier = getOnlyDeclaredVariable(lastButOne);
|
|
@@ -116,24 +120,24 @@ exports.rule = {
|
|
|
116
120
|
}
|
|
117
121
|
function hasJSDoc(node) {
|
|
118
122
|
const services = context.sourceCode.parserServices;
|
|
119
|
-
if (!(0,
|
|
123
|
+
if (!(0, parser_services_js_1.isRequiredParserServices)(services)) {
|
|
120
124
|
return false;
|
|
121
125
|
}
|
|
122
126
|
return !!(0, typescript_1.getJSDocType)(services.esTreeNodeToTSNodeMap.get(node));
|
|
123
127
|
}
|
|
124
128
|
function isNamedFunctionExpression(node) {
|
|
125
129
|
const services = context.sourceCode.parserServices;
|
|
126
|
-
if (!(0,
|
|
130
|
+
if (!(0, parser_services_js_1.isRequiredParserServices)(services)) {
|
|
127
131
|
return false;
|
|
128
132
|
}
|
|
129
|
-
return (0,
|
|
133
|
+
return (0, type_js_1.isFunction)(node, services);
|
|
130
134
|
}
|
|
131
135
|
},
|
|
132
136
|
};
|
|
133
137
|
function getOnlyReturnedVariable(node) {
|
|
134
138
|
return (node.type === 'ReturnStatement' || node.type === 'ThrowStatement') &&
|
|
135
139
|
node.argument &&
|
|
136
|
-
(0,
|
|
140
|
+
(0, ast_js_1.isIdentifier)(node.argument)
|
|
137
141
|
? node.argument
|
|
138
142
|
: undefined;
|
|
139
143
|
}
|
package/cjs/S1515/rule.js
CHANGED
|
@@ -51,7 +51,9 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
51
51
|
})();
|
|
52
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
53
|
exports.rule = void 0;
|
|
54
|
-
const
|
|
54
|
+
const ancestor_js_1 = require("../helpers/ancestor.js");
|
|
55
|
+
const generate_meta_js_1 = require("../helpers/generate-meta.js");
|
|
56
|
+
const location_js_1 = require("../helpers/location.js");
|
|
55
57
|
const meta = __importStar(require("./generated-meta.js"));
|
|
56
58
|
const message = 'Make sure this function is not called after the loop completes.';
|
|
57
59
|
const loopLike = 'WhileStatement,DoWhileStatement,ForStatement,ForOfStatement,ForInStatement';
|
|
@@ -71,7 +73,7 @@ const allowedCallbacks = new Set([
|
|
|
71
73
|
'each',
|
|
72
74
|
]);
|
|
73
75
|
exports.rule = {
|
|
74
|
-
meta: (0,
|
|
76
|
+
meta: (0, generate_meta_js_1.generateMeta)(meta),
|
|
75
77
|
create(context) {
|
|
76
78
|
return {
|
|
77
79
|
[functionLike]: (node) => {
|
|
@@ -80,26 +82,26 @@ exports.rule = {
|
|
|
80
82
|
!isIIFE(node, context) &&
|
|
81
83
|
!isAllowedCallbacks(context, node) &&
|
|
82
84
|
context.sourceCode.getScope(node).through.some(ref => !isSafe(ref, loopNode))) {
|
|
83
|
-
(0,
|
|
85
|
+
(0, location_js_1.report)(context, {
|
|
84
86
|
message,
|
|
85
|
-
loc: (0,
|
|
86
|
-
}, [(0,
|
|
87
|
+
loc: (0, location_js_1.getMainFunctionTokenLocation)(node, (0, ancestor_js_1.getParent)(context, node), context),
|
|
88
|
+
}, [(0, location_js_1.toSecondaryLocation)(getMainLoopToken(loopNode, context))]);
|
|
87
89
|
}
|
|
88
90
|
},
|
|
89
91
|
};
|
|
90
92
|
},
|
|
91
93
|
};
|
|
92
94
|
function getLocalEnclosingLoop(node) {
|
|
93
|
-
return (0,
|
|
95
|
+
return (0, ancestor_js_1.findFirstMatchingAncestor)(node, n => loopLike.includes(n.type));
|
|
94
96
|
}
|
|
95
97
|
function isIIFE(node, context) {
|
|
96
|
-
const parent = (0,
|
|
98
|
+
const parent = (0, ancestor_js_1.getParent)(context, node);
|
|
97
99
|
return (parent &&
|
|
98
100
|
((parent.type === 'CallExpression' && parent.callee === node) ||
|
|
99
101
|
(parent.type === 'MemberExpression' && parent.object === node)));
|
|
100
102
|
}
|
|
101
103
|
function isAllowedCallbacks(context, node) {
|
|
102
|
-
const parent = (0,
|
|
104
|
+
const parent = (0, ancestor_js_1.getParent)(context, node);
|
|
103
105
|
if (parent?.type === 'CallExpression') {
|
|
104
106
|
const callee = parent.callee;
|
|
105
107
|
if (callee.type === 'MemberExpression') {
|
|
@@ -1,19 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
2
|
/*
|
|
18
3
|
* SonarQube JavaScript Plugin
|
|
19
4
|
* Copyright (C) 2011-2025 SonarSource Sàrl
|
|
@@ -30,6 +15,37 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
30
15
|
* You should have received a copy of the Sonar Source-Available License
|
|
31
16
|
* along with this program; if not, see https://sonarsource.com/license/ssal/
|
|
32
17
|
*/
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
18
|
+
// https://sonarsource.github.io/rspec/#/rspec/S1523/javascript
|
|
19
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
20
|
+
if (k2 === undefined) k2 = k;
|
|
21
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
22
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
23
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
24
|
+
}
|
|
25
|
+
Object.defineProperty(o, k2, desc);
|
|
26
|
+
}) : (function(o, m, k, k2) {
|
|
27
|
+
if (k2 === undefined) k2 = k;
|
|
28
|
+
o[k2] = m[k];
|
|
29
|
+
}));
|
|
30
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
31
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
32
|
+
};
|
|
33
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
|
+
exports.requiredDependency = exports.languages = exports.scope = exports.sonarKey = exports.meta = void 0;
|
|
35
|
+
__exportStar(require("./meta.js"), exports);
|
|
36
|
+
exports.meta = {
|
|
37
|
+
type: 'problem',
|
|
38
|
+
docs: {
|
|
39
|
+
description: 'Dynamically executing code is security-sensitive',
|
|
40
|
+
recommended: true,
|
|
41
|
+
url: 'https://sonarsource.github.io/rspec/#/rspec/S1523/javascript',
|
|
42
|
+
requiresTypeChecking: false,
|
|
43
|
+
},
|
|
44
|
+
fixable: undefined,
|
|
45
|
+
deprecated: false,
|
|
46
|
+
defaultOptions: [],
|
|
47
|
+
};
|
|
48
|
+
exports.sonarKey = 'S1523';
|
|
49
|
+
exports.scope = 'Main';
|
|
50
|
+
exports.languages = ['js', 'ts'];
|
|
51
|
+
exports.requiredDependency = [];
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.rule = void 0;
|
|
4
|
+
/*
|
|
5
|
+
* SonarQube JavaScript Plugin
|
|
6
|
+
* Copyright (C) 2011-2025 SonarSource Sàrl
|
|
7
|
+
* mailto:info AT sonarsource DOT com
|
|
8
|
+
*
|
|
9
|
+
* This program is free software; you can redistribute it and/or
|
|
10
|
+
* modify it under the terms of the Sonar Source-Available License Version 1, as published by SonarSource SA.
|
|
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.
|
|
15
|
+
* See the Sonar Source-Available License for more details.
|
|
16
|
+
*
|
|
17
|
+
* You should have received a copy of the Sonar Source-Available License
|
|
18
|
+
* along with this program; if not, see https://sonarsource.com/license/ssal/
|
|
19
|
+
*/
|
|
20
|
+
var rule_js_1 = require("./rule.js");
|
|
21
|
+
Object.defineProperty(exports, "rule", { enumerable: true, get: function () { return rule_js_1.rule; } });
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.eslintId = exports.implementation = void 0;
|
|
4
|
+
/*
|
|
5
|
+
* SonarQube JavaScript Plugin
|
|
6
|
+
* Copyright (C) 2011-2025 SonarSource Sàrl
|
|
7
|
+
* mailto:info AT sonarsource DOT com
|
|
8
|
+
*
|
|
9
|
+
* This program is free software; you can redistribute it and/or
|
|
10
|
+
* modify it under the terms of the Sonar Source-Available License Version 1, as published by SonarSource SA.
|
|
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.
|
|
15
|
+
* See the Sonar Source-Available License for more details.
|
|
16
|
+
*
|
|
17
|
+
* You should have received a copy of the Sonar Source-Available License
|
|
18
|
+
* along with this program; if not, see https://sonarsource.com/license/ssal/
|
|
19
|
+
*/
|
|
20
|
+
exports.implementation = 'original';
|
|
21
|
+
exports.eslintId = 'code-eval';
|