eslint-plugin-sonarjs 0.11.0 → 0.14.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 CHANGED
@@ -17,7 +17,7 @@ Rules in this category aim to find places in code which have a high chance of be
17
17
  * Return values from functions without side effects should not be ignored ([`no-ignored-return`]) (*uses-types*)
18
18
  * Loops with at most one iteration should be refactored ([`no-one-iteration-loop`])
19
19
  * The output of functions that don't return anything should not be used ([`no-use-of-empty-return-value`])
20
- * Non-existent operators '=+', '=-' and '=!' should not be used ([`non-existent-operator`])
20
+ * Non-existent operators '=+', '=-' and '=!' should not be used ([`non-existent-operator`]) (:wrench: *fixable*)
21
21
 
22
22
  ### Code Smell Detection :pig:
23
23
 
@@ -27,23 +27,23 @@ Code Smells, or maintainability issues, are raised for places of code which migh
27
27
  * "if ... else if" constructs should end with "else" clauses ([`elseif-without-else`]) (*disabled*)
28
28
  * "switch" statements should not have too many "case" clauses ([`max-switch-cases`])
29
29
  * Collapsible "if" statements should be merged ([`no-collapsible-if`])
30
- * Collection sizes and array length comparisons should make sense ([`no-collection-size-mischeck`]) (*uses-types*)
30
+ * Collection sizes and array length comparisons should make sense ([`no-collection-size-mischeck`]) (:wrench: *fixable*, *uses-types*)
31
31
  * String literals should not be duplicated ([`no-duplicate-string`])
32
32
  * Two branches in a conditional structure should not have exactly the same implementation ([`no-duplicated-branches`])
33
33
  * Boolean expressions should not be gratuitous ([`no-gratuitous-expressions`])
34
34
  * Functions should not have identical implementations ([`no-identical-functions`])
35
- * Boolean checks should not be inverted ([`no-inverted-boolean-check`]) (:wrench: *fixable*)
35
+ * Boolean checks should not be inverted ([`no-inverted-boolean-check`]) (:wrench: *fixable*, *disabled*)
36
36
  * "switch" statements should not be nested ([`no-nested-switch`])
37
37
  * Template literals should not be nested ([`no-nested-template-literals`])
38
38
  * Boolean literals should not be redundant ([`no-redundant-boolean`])
39
- * Jump statements should not be redundant ([`no-redundant-jump`])
40
- * Conditionals should start on new lines ([`no-same-line-conditional`])
39
+ * Jump statements should not be redundant ([`no-redundant-jump`]) (:wrench: *fixable*)
40
+ * Conditionals should start on new lines ([`no-same-line-conditional`]) (:wrench: *fixable*)
41
41
  * "switch" statements should have at least 3 "case" clauses ([`no-small-switch`])
42
42
  * Collection and array contents should be used ([`no-unused-collection`])
43
43
  * "catch" clauses should do more than rethrow ([`no-useless-catch`])
44
44
  * Local variables should not be declared and then immediately returned or thrown ([`prefer-immediate-return`]) (:wrench: *fixable*)
45
45
  * Object literal syntax should be used ([`prefer-object-literal`])
46
- * Return of boolean expressions should not be wrapped into an "if-then-else" statement ([`prefer-single-boolean-return`])
46
+ * Return of boolean expressions should not be wrapped into an "if-then-else" statement ([`prefer-single-boolean-return`]) (:wrench: *fixable*)
47
47
  * A "while" loop should be used instead of a "for" loop ([`prefer-while`]) (:wrench: *fixable*)
48
48
 
49
49
  [`cognitive-complexity`]: ./docs/rules/cognitive-complexity.md
@@ -126,6 +126,13 @@ npm install eslint-plugin-sonarjs -g # or install globally
126
126
  ## Available Configurations
127
127
 
128
128
  This plugin provides only `recommended` configuration. Almost all rules are activated in this profile with a few exceptions (check `disabled` tag in the rules list). `recommended` configuration activates rules with `error` severity.
129
+
130
+ ## ESLint and Sonar
131
+
132
+ This plugin exposes to ESLint users a subset of JS/TS rules from Sonar-* products (aka [SonarJS](https://github.com/SonarSource/SonarJS)). We extracted the rules which are not available in ESLint core or other ESLint plugins to be beneficial for ESLint community.
133
+
134
+ If you are a [SonarQube](https://www.sonarqube.org) or [SonarCloud](https://sonarcloud.io) user, to lint your code locally, we suggest to use [SonarLint](https://www.sonarlint.org) IDE extension (available for VSCode, JetBrains IDEs and Eclipse). You can connect SonarLint to your SonarQube/SonarCloud project to synchronize rules configuration, issue statuses, etc.
135
+
129
136
  ## Contributing
130
137
 
131
138
  You want to participate in the development of the project? Have a look at our [contributing](./docs/CONTRIBUTING.md) guide!
@@ -27,9 +27,11 @@ const rule = {
27
27
  meta: {
28
28
  messages: {
29
29
  fixCollectionSizeCheck: 'Fix this expression; {{propertyName}} of "{{objectName}}" is always greater or equal to zero.',
30
+ suggestFixedSizeCheck: 'Use "{{operator}}" for {{operation}} check',
30
31
  },
31
32
  schema: [],
32
33
  type: 'problem',
34
+ hasSuggestions: true,
33
35
  docs: {
34
36
  description: 'Collection sizes and array length comparisons should make sense',
35
37
  recommended: 'error',
@@ -57,6 +59,7 @@ const rule = {
57
59
  objectName: context.getSourceCode().getText(object),
58
60
  },
59
61
  node,
62
+ suggest: getSuggestion(expr, property.name, context),
60
63
  });
61
64
  }
62
65
  }
@@ -73,5 +76,22 @@ function isCollection(node, services) {
73
76
  const tp = checker.getTypeAtLocation(services.esTreeNodeToTSNodeMap.get(node));
74
77
  return !!tp.symbol && CollectionLike.includes(tp.symbol.name);
75
78
  }
79
+ function getSuggestion(expr, operation, context) {
80
+ const { left, operator } = expr;
81
+ const operatorToken = context
82
+ .getSourceCode()
83
+ .getTokenAfter(left, token => token.value === operator);
84
+ const fixedOperator = operator === '<' ? '==' : '>';
85
+ return [
86
+ {
87
+ messageId: 'suggestFixedSizeCheck',
88
+ data: {
89
+ operation,
90
+ operator: fixedOperator,
91
+ },
92
+ fix: fixer => fixer.replaceText(operatorToken, fixedOperator),
93
+ },
94
+ ];
95
+ }
76
96
  module.exports = rule;
77
97
  //# sourceMappingURL=no-collection-size-mischeck.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-collection-size-mischeck.js","sourceRoot":"","sources":["../../src/rules/no-collection-size-mischeck.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,oDAAoD;AAGpD,8DAA4F;AAC5F,gDAAwC;AAExC,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACrE,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAE9C,MAAM,IAAI,GAA0C;IAClD,IAAI,EAAE;QACJ,QAAQ,EAAE;YACR,sBAAsB,EACpB,+FAA+F;SAClG;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,iEAAiE;YAC9E,WAAW,EAAE,OAAO;YACpB,GAAG,EAAE,IAAA,kBAAO,EAAC,UAAU,CAAC;SACzB;KACF;IACD,MAAM,CAAC,OAAO;QACZ,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;QACxC,MAAM,sBAAsB,GAAG,IAAA,0CAAwB,EAAC,QAAQ,CAAC,CAAC;QAClE,OAAO;YACL,gBAAgB,EAAE,CAAC,IAAmB,EAAE,EAAE;gBACxC,MAAM,IAAI,GAAG,IAAiC,CAAC;gBAC/C,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;oBACvC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;oBACtB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;oBACvB,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB,EAAE;wBACzD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;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,QAAS,CAAC,CAAC,EAC5D;4BACA,OAAO,CAAC,MAAM,CAAC;gCACb,SAAS,EAAE,wBAAwB;gCACnC,IAAI,EAAE;oCACJ,YAAY,EAAE,QAAQ,CAAC,IAAI;oCAC3B,UAAU,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;iCACpD;gCACD,IAAI;6BACL,CAAC,CAAC;yBACJ;qBACF;iBACF;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,SAAS,aAAa,CAAC,IAAmB;IACxC,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,YAAY,CAAC,IAAmB,EAAE,QAAgC;IACzE,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;IAClD,MAAM,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/E,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAChE,CAAC;AAED,iBAAS,IAAI,CAAC"}
1
+ {"version":3,"file":"no-collection-size-mischeck.js","sourceRoot":"","sources":["../../src/rules/no-collection-size-mischeck.ts"],"names":[],"mappings":"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"}
@@ -45,6 +45,10 @@ const rule = {
45
45
  create(context) {
46
46
  const truthyMap = new Map();
47
47
  const falsyMap = new Map();
48
+ function isInsideJSX() {
49
+ const ancestors = context.getAncestors();
50
+ return !!ancestors.find(ancestor => ancestor.type === 'JSXExpressionContainer');
51
+ }
48
52
  return {
49
53
  IfStatement: (node) => {
50
54
  const { test } = node;
@@ -76,7 +80,7 @@ const rule = {
76
80
  const id = node;
77
81
  const symbol = getSymbol(id, context.getScope());
78
82
  const { parent } = node;
79
- if (!symbol || !parent) {
83
+ if (!symbol || !parent || (isInsideJSX() && isLogicalAndRhs(id, parent))) {
80
84
  return;
81
85
  }
82
86
  if (!isLogicalAnd(parent) &&
@@ -136,6 +140,13 @@ function isLogicalOrLhs(id, expression) {
136
140
  expression.operator === '||' &&
137
141
  expression.left === id);
138
142
  }
143
+ function isLogicalAndRhs(id, expression) {
144
+ var _a;
145
+ return (((_a = expression.parent) === null || _a === void 0 ? void 0 : _a.type) !== 'LogicalExpression' &&
146
+ expression.type === 'LogicalExpression' &&
147
+ expression.operator === '&&' &&
148
+ expression.right === id);
149
+ }
139
150
  function isLogicalNegation(expression) {
140
151
  return expression.type === 'UnaryExpression' && expression.operator === '!';
141
152
  }
@@ -1 +1 @@
1
- {"version":3,"file":"no-gratuitous-expressions.js","sourceRoot":"","sources":["../../src/rules/no-gratuitous-expressions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"no-gratuitous-expressions.js","sourceRoot":"","sources":["../../src/rules/no-gratuitous-expressions.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,oDAAoD;AAGpD,kDAA4C;AAC5C,0CAA6D;AAC7D,gDAAwC;AAExC,MAAM,OAAO,GAAG,qEAAqE,CAAC;AAEtF,MAAM,IAAI,GAA0C;IAClD,IAAI,EAAE;QACJ,QAAQ,EAAE;YACR,yBAAyB,EAAE,OAAO;YAClC,YAAY,EAAE,sBAAsB;SACrC;QACD,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,WAAW,EAAE,8CAA8C;YAC3D,WAAW,EAAE,OAAO;YACpB,GAAG,EAAE,IAAA,kBAAO,EAAC,UAAU,CAAC;SACzB;QACD,MAAM,EAAE;YACN;gBACE,0DAA0D;gBAC1D,IAAI,EAAE,CAAC,eAAe,CAAC;aACxB;SACF;KACF;IACD,MAAM,CAAC,OAAO;QACZ,MAAM,SAAS,GAAwD,IAAI,GAAG,EAAE,CAAC;QACjF,MAAM,QAAQ,GAAwD,IAAI,GAAG,EAAE,CAAC;QAEhF,SAAS,WAAW;YAClB,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;YACzC,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,wBAAwB,CAAC,CAAC;QAClF,CAAC;QAED,OAAO;YACL,WAAW,EAAE,CAAC,IAAmB,EAAE,EAAE;gBACnC,MAAM,EAAE,IAAI,EAAE,GAAG,IAA4B,CAAC;gBAC9C,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;oBAC9D,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;iBACnD;YACH,CAAC;YAED,YAAY,EAAE,CAAC,IAAmB,EAAE,EAAE;gBACpC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;gBACxB,IAAI,IAAA,qBAAa,EAAC,MAAM,CAAC,EAAE;oBACzB,6GAA6G;oBAC7G,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;oBAExC,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI,EAAE;wBAC9B,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;wBAC/D,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,kBAAkB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;wBAC3E,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,kBAAkB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;qBAC1E;yBAAM,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,IAAI,IAAA,oBAAY,EAAC,MAAM,CAAC,IAAI,CAAC,EAAE;wBACjE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;qBACjF;iBACF;YACH,CAAC;YAED,iBAAiB,EAAE,CAAC,IAAmB,EAAE,EAAE;gBACzC,MAAM,IAAI,GAAG,IAA0B,CAAC;gBACxC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACvB,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;YAED,UAAU,EAAE,CAAC,IAAmB,EAAE,EAAE;gBAClC,MAAM,EAAE,GAAG,IAA2B,CAAC;gBACvC,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACjD,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;gBACxB,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,IAAI,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE;oBACxE,OAAO;iBACR;gBACD,IACE,CAAC,YAAY,CAAC,MAAM,CAAC;oBACrB,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC;oBAC3B,CAAC,IAAA,qBAAa,EAAC,MAAM,CAAC;oBACtB,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAC1B;oBACA,OAAO;iBACR;gBAED,MAAM,qBAAqB,GAAG,CAC5B,GAAwD,EACxD,MAAe,EACf,EAAE;oBACF,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;wBACvB,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;wBAC5D,IAAI,GAAG,EAAE;4BACP,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;yBACvC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC;gBAEF,qBAAqB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBACvC,qBAAqB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACzC,CAAC;YAED,OAAO,EAAE,GAAG,EAAE;gBACZ,SAAS,CAAC,KAAK,EAAE,CAAC;gBAClB,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,SAAS,uBAAuB,CAAC,UAA+B;IAC9D,MAAM,MAAM,GAA0B,EAAE,CAAC;IACzC,MAAM,KAAK,GAA0B,EAAE,CAAC;IAExC,MAAM,SAAS,GAAG,CAAC,IAAyB,EAAE,EAAE;QAC9C,IAAI,IAAA,oBAAY,EAAC,IAAI,CAAC,EAAE;YACtB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACnB;aAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE;YAClC,IAAI,IAAA,oBAAY,EAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAC/B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC3B;iBAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAA,oBAAY,EAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBACnF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;aACrC;SACF;IACH,CAAC,CAAC;IAEF,IAAI,OAAO,GAAG,UAAU,CAAC;IACzB,SAAS,CAAC,OAAO,CAAC,CAAC;IACnB,OAAO,YAAY,CAAC,OAAO,CAAC,EAAE;QAC5B,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzB,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;KACxB;IACD,SAAS,CAAC,OAAO,CAAC,CAAC;IAEnB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,YAAY,CAAC,UAAyB;IAC7C,OAAO,UAAU,CAAC,IAAI,KAAK,mBAAmB,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,CAAC;AACjF,CAAC;AAED,SAAS,cAAc,CACrB,EAAuB,EACvB,UAAyB;IAEzB,OAAO,CACL,UAAU,CAAC,IAAI,KAAK,mBAAmB;QACvC,UAAU,CAAC,QAAQ,KAAK,IAAI;QAC5B,UAAU,CAAC,IAAI,KAAK,EAAE,CACvB,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,EAAuB,EACvB,UAAyB;;IAEzB,OAAO,CACL,CAAA,MAAA,UAAU,CAAC,MAAM,0CAAE,IAAI,MAAK,mBAAmB;QAC/C,UAAU,CAAC,IAAI,KAAK,mBAAmB;QACvC,UAAU,CAAC,QAAQ,KAAK,IAAI;QAC5B,UAAU,CAAC,KAAK,KAAK,EAAE,CACxB,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,UAAyB;IAClD,OAAO,UAAU,CAAC,IAAI,KAAK,iBAAiB,IAAI,UAAU,CAAC,QAAQ,KAAK,GAAG,CAAC;AAC9E,CAAC;AAED,SAAS,SAAS,CAAI,CAAuB;IAC3C,OAAO,CAAC,IAAI,IAAI,CAAC;AACnB,CAAC;AAED,SAAS,SAAS,CAAC,EAAuB,EAAE,KAA2B;IACrE,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC;IAC5D,IAAI,GAAG,EAAE;QACP,OAAO,GAAG,CAAC,QAAQ,CAAC;KACrB;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,KAA2B;IACnD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE;QAC7B,OAAO,KAAK,CAAC;KACd;SAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;QACvB,OAAO,IAAI,CAAC;KACb;IACD,OAAO,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,cAAc,CAAC,MAA+B,EAAE,YAAkC;IACzF,OAAO,MAAM,CAAC,UAAU;SACrB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SAC5B,IAAI,CAAC,GAAG,CAAC,EAAE;QACV,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;QAE1B,IAAI,GAAG,GAAgC,QAAQ,CAAC;QAChD,OAAO,GAAG,EAAE;YACV,IAAI,GAAG,KAAK,YAAY,EAAE;gBACxB,OAAO,IAAI,CAAC;aACb;YACD,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC;SACjB;QAED,MAAM,WAAW,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC3C,OAAO,OAAO,KAAK,WAAW,CAAC;IACjC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,kBAAkB,CAAC,GAA0B,EAAE,YAAkC;IACxF,OAAO,GAAG;SACP,GAAG,CAAC,EAAE,CAAC,EAAE,WAAC,OAAA,MAAA,YAAY,CAAC,KAAK,0CAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,EAAE,CAAC,CAAA,EAAA,CAAC;SACxE,MAAM,CAAC,SAAS,CAAC;SACjB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SACtC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,QAAS,EAAE,YAAY,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,WAAW,CAClB,EAAiB,EACjB,GAAyC,EACzC,OAA+C,EAC/C,MAAe;IAEf,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1C,IAAA,kBAAM,EACJ,OAAO,EACP;QACE,SAAS,EAAE,2BAA2B;QACtC,IAAI,EAAE;YACJ,KAAK;SACN;QACD,IAAI,EAAE,EAAE;KACT,EACD,qBAAqB,CAAC,GAAG,EAAE,KAAK,CAAC,EACjC,OAAO,CACR,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,GAAyC,EAAE,MAAc;IACtF,IAAI,GAAG,EAAE;QACP,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,GAAI,CAAC;QACnC,OAAO;YACL;gBACE,OAAO,EAAE,wBAAwB,MAAM,EAAE;gBACzC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI;gBACvB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;gBAC3B,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI;gBACxB,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM;aAC7B;SACF,CAAC;KACH;SAAM;QACL,OAAO,EAAE,CAAC;KACX;AACH,CAAC;AAED,iBAAS,IAAI,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import type { TSESLint } from '@typescript-eslint/experimental-utils';
2
- declare const rule: TSESLint.RuleModule<string, string[]>;
2
+ declare type Options = (number | 'sonar-runtime')[];
3
+ declare const rule: TSESLint.RuleModule<string, Options>;
3
4
  export = rule;
@@ -22,6 +22,7 @@
22
22
  const equivalence_1 = require("../utils/equivalence");
23
23
  const locations_1 = require("../utils/locations");
24
24
  const docs_url_1 = require("../utils/docs-url");
25
+ const DEFAULT_MIN_LINES = 3;
25
26
  const message = 'Update this function so that its implementation is not identical to the one on line {{line}}.';
26
27
  const rule = {
27
28
  meta: {
@@ -36,6 +37,7 @@ const rule = {
36
37
  url: (0, docs_url_1.default)(__filename),
37
38
  },
38
39
  schema: [
40
+ { type: 'integer', minimum: 3 },
39
41
  {
40
42
  enum: ['sonar-runtime'],
41
43
  },
@@ -43,6 +45,7 @@ const rule = {
43
45
  },
44
46
  create(context) {
45
47
  const functions = [];
48
+ const minLines = typeof context.options[0] === 'number' ? context.options[0] : DEFAULT_MIN_LINES;
46
49
  return {
47
50
  FunctionDeclaration(node) {
48
51
  visitFunction(node);
@@ -97,7 +100,7 @@ const rule = {
97
100
  if (tokens.length > 0) {
98
101
  const firstLine = tokens[0].loc.start.line;
99
102
  const lastLine = tokens[tokens.length - 1].loc.end.line;
100
- return lastLine - firstLine > 1;
103
+ return lastLine - firstLine + 1 >= minLines;
101
104
  }
102
105
  return false;
103
106
  }
@@ -1 +1 @@
1
- {"version":3,"file":"no-identical-functions.js","sourceRoot":"","sources":["../../src/rules/no-identical-functions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"no-identical-functions.js","sourceRoot":"","sources":["../../src/rules/no-identical-functions.ts"],"names":[],"mappings":"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"}
@@ -35,14 +35,16 @@ const rule = {
35
35
  meta: {
36
36
  messages: {
37
37
  useOppositeOperator: 'Use the opposite operator ({{invertedOperator}}) instead.',
38
+ suggestOperationInversion: 'Invert inner operation (apply if NaN is not expected)',
38
39
  },
39
40
  schema: [],
40
41
  type: 'suggestion',
41
42
  docs: {
42
43
  description: 'Boolean checks should not be inverted',
43
- recommended: 'error',
44
+ recommended: false,
44
45
  url: (0, docs_url_1.default)(__filename),
45
46
  },
47
+ hasSuggestions: true,
46
48
  fixable: 'code',
47
49
  },
48
50
  create(context) {
@@ -62,9 +64,14 @@ function visitUnaryExpression(unaryExpression, context) {
62
64
  const [start, end] = ((_a = unaryExpression.parent) === null || _a === void 0 ? void 0 : _a.type) === 'UnaryExpression' ? ['(', ')'] : ['', ''];
63
65
  context.report({
64
66
  messageId: 'useOppositeOperator',
67
+ suggest: [
68
+ {
69
+ messageId: 'suggestOperationInversion',
70
+ fix: fixer => fixer.replaceText(unaryExpression, `${start}${left} ${invertedOperator} ${right}${end}`),
71
+ },
72
+ ],
65
73
  data: { invertedOperator },
66
74
  node: unaryExpression,
67
- fix: fixer => fixer.replaceText(unaryExpression, `${start}${left} ${invertedOperator} ${right}${end}`),
68
75
  });
69
76
  }
70
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"no-inverted-boolean-check.js","sourceRoot":"","sources":["../../src/rules/no-inverted-boolean-check.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,oDAAoD;AAGpD,0CAAoD;AACpD,gDAAwC;AAExC,MAAM,iBAAiB,GAAmC;IACxD,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;CACV,CAAC;AAEF,MAAM,IAAI,GAA0C;IAClD,IAAI,EAAE;QACJ,QAAQ,EAAE;YACR,mBAAmB,EAAE,2DAA2D;SACjF;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,WAAW,EAAE,uCAAuC;YACpD,WAAW,EAAE,OAAO;YACpB,GAAG,EAAE,IAAA,kBAAO,EAAC,UAAU,CAAC;SACzB;QACD,OAAO,EAAE,MAAM;KAChB;IACD,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,eAAe,EAAE,CAAC,IAAmB,EAAE,EAAE,CACvC,oBAAoB,CAAC,IAAgC,EAAE,OAAO,CAAC;SAClE,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,SAAS,oBAAoB,CAC3B,eAAyC,EACzC,OAA+C;;IAE/C,IAAI,eAAe,CAAC,QAAQ,KAAK,GAAG,IAAI,IAAA,0BAAkB,EAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;QACpF,MAAM,SAAS,GAA8B,eAAe,CAAC,QAAQ,CAAC;QACtE,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC/D,IAAI,gBAAgB,EAAE;YACpB,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC7D,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC/D,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAChB,CAAA,MAAA,eAAe,CAAC,MAAM,0CAAE,IAAI,MAAK,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7E,OAAO,CAAC,MAAM,CAAC;gBACb,SAAS,EAAE,qBAAqB;gBAChC,IAAI,EAAE,EAAE,gBAAgB,EAAE;gBAC1B,IAAI,EAAE,eAAe;gBACrB,GAAG,EAAE,KAAK,CAAC,EAAE,CACX,KAAK,CAAC,WAAW,CAAC,eAAe,EAAE,GAAG,KAAK,GAAG,IAAI,IAAI,gBAAgB,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;aAC3F,CAAC,CAAC;SACJ;KACF;AACH,CAAC;AAED,iBAAS,IAAI,CAAC"}
1
+ {"version":3,"file":"no-inverted-boolean-check.js","sourceRoot":"","sources":["../../src/rules/no-inverted-boolean-check.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,oDAAoD;AAGpD,0CAAoD;AACpD,gDAAwC;AAExC,MAAM,iBAAiB,GAAmC;IACxD,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;CACV,CAAC;AAEF,MAAM,IAAI,GAA0C;IAClD,IAAI,EAAE;QACJ,QAAQ,EAAE;YACR,mBAAmB,EAAE,2DAA2D;YAChF,yBAAyB,EAAE,uDAAuD;SACnF;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,WAAW,EAAE,uCAAuC;YACpD,WAAW,EAAE,KAAK;YAClB,GAAG,EAAE,IAAA,kBAAO,EAAC,UAAU,CAAC;SACzB;QACD,cAAc,EAAE,IAAI;QACpB,OAAO,EAAE,MAAM;KAChB;IACD,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,eAAe,EAAE,CAAC,IAAmB,EAAE,EAAE,CACvC,oBAAoB,CAAC,IAAgC,EAAE,OAAO,CAAC;SAClE,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,SAAS,oBAAoB,CAC3B,eAAyC,EACzC,OAA+C;;IAE/C,IAAI,eAAe,CAAC,QAAQ,KAAK,GAAG,IAAI,IAAA,0BAAkB,EAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;QACpF,MAAM,SAAS,GAA8B,eAAe,CAAC,QAAQ,CAAC;QACtE,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC/D,IAAI,gBAAgB,EAAE;YACpB,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC7D,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC/D,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAChB,CAAA,MAAA,eAAe,CAAC,MAAM,0CAAE,IAAI,MAAK,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7E,OAAO,CAAC,MAAM,CAAC;gBACb,SAAS,EAAE,qBAAqB;gBAChC,OAAO,EAAE;oBACP;wBACE,SAAS,EAAE,2BAA2B;wBACtC,GAAG,EAAE,KAAK,CAAC,EAAE,CACX,KAAK,CAAC,WAAW,CACf,eAAe,EACf,GAAG,KAAK,GAAG,IAAI,IAAI,gBAAgB,IAAI,KAAK,GAAG,GAAG,EAAE,CACrD;qBACJ;iBACF;gBACD,IAAI,EAAE,EAAE,gBAAgB,EAAE;gBAC1B,IAAI,EAAE,eAAe;aACtB,CAAC,CAAC;SACJ;KACF;AACH,CAAC;AAED,iBAAS,IAAI,CAAC"}
@@ -19,6 +19,7 @@
19
19
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
20
  */
21
21
  // https://sonarsource.github.io/rspec/#/rspec/S4624
22
+ const utils_1 = require("../utils");
22
23
  const docs_url_1 = require("../utils/docs-url");
23
24
  const rule = {
24
25
  meta: {
@@ -36,10 +37,16 @@ const rule = {
36
37
  create(context) {
37
38
  return {
38
39
  'TemplateLiteral TemplateLiteral': (node) => {
39
- context.report({
40
- messageId: 'nestedTemplateLiterals',
41
- node,
42
- });
40
+ const ancestors = (0, utils_1.ancestorsChain)(node, new Set(['TemplateLiteral']));
41
+ const nestingTemplate = ancestors[ancestors.length - 1];
42
+ const { start: nestingStart, end: nestingEnd } = nestingTemplate.loc;
43
+ const { start: nestedStart, end: nestedEnd } = node.loc;
44
+ if (nestedStart.line === nestingStart.line || nestedEnd.line === nestingEnd.line) {
45
+ context.report({
46
+ messageId: 'nestedTemplateLiterals',
47
+ node,
48
+ });
49
+ }
43
50
  },
44
51
  };
45
52
  },
@@ -1 +1 @@
1
- {"version":3,"file":"no-nested-template-literals.js","sourceRoot":"","sources":["../../src/rules/no-nested-template-literals.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,oDAAoD;AAGpD,gDAAwC;AAExC,MAAM,IAAI,GAA0C;IAClD,IAAI,EAAE;QACJ,QAAQ,EAAE;YACR,sBAAsB,EAAE,yDAAyD;SAClF;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,WAAW,EAAE,wCAAwC;YACrD,WAAW,EAAE,OAAO;YACpB,GAAG,EAAE,IAAA,kBAAO,EAAC,UAAU,CAAC;SACzB;KACF;IACD,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,iCAAiC,EAAE,CAAC,IAAmB,EAAE,EAAE;gBACzD,OAAO,CAAC,MAAM,CAAC;oBACb,SAAS,EAAE,wBAAwB;oBACnC,IAAI;iBACL,CAAC,CAAC;YACL,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,iBAAS,IAAI,CAAC"}
1
+ {"version":3,"file":"no-nested-template-literals.js","sourceRoot":"","sources":["../../src/rules/no-nested-template-literals.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,oDAAoD;AAGpD,oCAA0C;AAC1C,gDAAwC;AAExC,MAAM,IAAI,GAA0C;IAClD,IAAI,EAAE;QACJ,QAAQ,EAAE;YACR,sBAAsB,EAAE,yDAAyD;SAClF;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,WAAW,EAAE,wCAAwC;YACrD,WAAW,EAAE,OAAO;YACpB,GAAG,EAAE,IAAA,kBAAO,EAAC,UAAU,CAAC;SACzB;KACF;IACD,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,iCAAiC,EAAE,CAAC,IAAmB,EAAE,EAAE;gBACzD,MAAM,SAAS,GAAG,IAAA,sBAAc,EAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBACrE,MAAM,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAExD,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC;gBACrE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;gBAExD,IAAI,WAAW,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,EAAE;oBAChF,OAAO,CAAC,MAAM,CAAC;wBACb,SAAS,EAAE,wBAAwB;wBACnC,IAAI;qBACL,CAAC,CAAC;iBACJ;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,iBAAS,IAAI,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"no-redundant-boolean.js","sourceRoot":"","sources":["../../src/rules/no-redundant-boolean.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,oDAAoD;AAGpD,0CAA0F;AAC1F,gDAAwC;AAExC,MAAM,IAAI,GAA0C;IAClD,IAAI,EAAE;QACJ,QAAQ,EAAE;YACR,wBAAwB,EAAE,yCAAyC;SACpE;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,WAAW,EAAE,0CAA0C;YACvD,WAAW,EAAE,OAAO;YACpB,GAAG,EAAE,IAAA,kBAAO,EAAC,UAAU,CAAC;SACzB;KACF;IACD,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,gBAAgB,CAAC,IAAmB;gBAClC,MAAM,UAAU,GAAG,IAAiC,CAAC;gBACrD,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,EAAE;oBAChE,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBACrC,mBAAmB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;iBACvC;YACH,CAAC;YAED,iBAAiB,CAAC,IAAmB;gBACnC,MAAM,UAAU,GAAG,IAAkC,CAAC;gBACtD,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAErC,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,EAAE;oBAChC,mBAAmB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;iBACvC;gBAED,yGAAyG;gBACzG,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;gBACxB,IACE,UAAU,CAAC,QAAQ,KAAK,IAAI;oBAC5B,CAAC,CAAC,IAAA,+BAAuB,EAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,IAAA,qBAAa,EAAC,MAAM,CAAC,CAAC,EAC1F;oBACA,mBAAmB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;iBACvC;YACH,CAAC;YAED,eAAe,CAAC,IAAmB;gBACjC,MAAM,eAAe,GAAG,IAAgC,CAAC;gBACzD,IAAI,eAAe,CAAC,QAAQ,KAAK,GAAG,EAAE;oBACpC,mBAAmB,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;iBAC/C;YACH,CAAC;SACF,CAAC;QAEF,SAAS,mBAAmB,CAAC,UAA+B;YAC1D,IAAI,IAAA,wBAAgB,EAAC,UAAU,CAAC,EAAE;gBAChC,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,0BAA0B,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;aAC7E;QACH,CAAC;IACH,CAAC;CACF,CAAC;AAEF,iBAAS,IAAI,CAAC"}
1
+ {"version":3,"file":"no-redundant-boolean.js","sourceRoot":"","sources":["../../src/rules/no-redundant-boolean.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,oDAAoD;AAGpD,0CAA0F;AAC1F,gDAAwC;AAExC,MAAM,IAAI,GAA0C;IAClD,IAAI,EAAE;QACJ,QAAQ,EAAE;YACR,wBAAwB,EAAE,yCAAyC;SACpE;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,WAAW,EAAE,0CAA0C;YACvD,WAAW,EAAE,OAAO;YACpB,GAAG,EAAE,IAAA,kBAAO,EAAC,UAAU,CAAC;SACzB;KACF;IACD,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,gBAAgB,CAAC,IAAmB;gBAClC,MAAM,UAAU,GAAG,IAAiC,CAAC;gBACrD,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,EAAE;oBAChE,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBACrC,mBAAmB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;iBACvC;YACH,CAAC;YAED,iBAAiB,CAAC,IAAmB;gBACnC,MAAM,UAAU,GAAG,IAAkC,CAAC;gBACtD,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAErC,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,EAAE;oBAChC,mBAAmB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;iBACvC;gBAED,yGAAyG;gBACzG,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;gBACxB,IACE,UAAU,CAAC,QAAQ,KAAK,IAAI;oBAC5B,CAAC,CAAC,IAAA,+BAAuB,EAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,IAAA,qBAAa,EAAC,MAAM,CAAC,CAAC,EAC1F;oBACA,mBAAmB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;iBACvC;YACH,CAAC;YAED,eAAe,CAAC,IAAmB;gBACjC,MAAM,eAAe,GAAG,IAAgC,CAAC;gBACzD,IAAI,eAAe,CAAC,QAAQ,KAAK,GAAG,EAAE;oBACpC,mBAAmB,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;iBAC/C;YACH,CAAC;SACF,CAAC;QAEF,SAAS,mBAAmB,CAAC,UAA4D;YACvF,IAAI,IAAA,wBAAgB,EAAC,UAAU,CAAC,EAAE;gBAChC,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,0BAA0B,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;aAC7E;QACH,CAAC;IACH,CAAC;CACF,CAAC;AAEF,iBAAS,IAAI,CAAC"}
@@ -25,9 +25,11 @@ const rule = {
25
25
  meta: {
26
26
  messages: {
27
27
  removeRedundantJump: 'Remove this redundant jump.',
28
+ suggestJumpRemoval: 'Remove this redundant jump',
28
29
  },
29
30
  schema: [],
30
31
  type: 'suggestion',
32
+ hasSuggestions: true,
31
33
  docs: {
32
34
  description: 'Jump statements should not be redundant',
33
35
  recommended: 'error',
@@ -40,9 +42,19 @@ const rule = {
40
42
  if (!withArgument) {
41
43
  const block = node.parent;
42
44
  if (block.body[block.body.length - 1] === node && block.body.length > 1) {
45
+ const previousComments = context.getSourceCode().getCommentsBefore(node);
46
+ const previousToken = previousComments.length === 0
47
+ ? context.getSourceCode().getTokenBefore(node)
48
+ : previousComments[previousComments.length - 1];
43
49
  context.report({
44
50
  messageId: 'removeRedundantJump',
45
51
  node,
52
+ suggest: [
53
+ {
54
+ messageId: 'suggestJumpRemoval',
55
+ fix: fixer => fixer.removeRange([previousToken.range[1], node.range[1]]),
56
+ },
57
+ ],
46
58
  });
47
59
  }
48
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"no-redundant-jump.js","sourceRoot":"","sources":["../../src/rules/no-redundant-jump.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,oDAAoD;AAGpD,gDAAwC;AAExC,MAAM,KAAK,GAAG,gFAAgF,CAAC;AAE/F,MAAM,IAAI,GAA0C;IAClD,IAAI,EAAE;QACJ,QAAQ,EAAE;YACR,mBAAmB,EAAE,6BAA6B;SACnD;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,WAAW,EAAE,yCAAyC;YACtD,WAAW,EAAE,OAAO;YACpB,GAAG,EAAE,IAAA,kBAAO,EAAC,UAAU,CAAC;SACzB;KACF;IACD,MAAM,CAAC,OAAO;QACZ,SAAS,qBAAqB,CAAC,IAA2D;YACxF,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;YACxF,IAAI,CAAC,YAAY,EAAE;gBACjB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAiC,CAAC;gBACrD,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;oBACvE,OAAO,CAAC,MAAM,CAAC;wBACb,SAAS,EAAE,qBAAqB;wBAChC,IAAI;qBACL,CAAC,CAAC;iBACJ;aACF;QACH,CAAC;QAED,SAAS,6BAA6B,CACpC,IAA2D;YAE3D,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;YACzC,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACpD,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAA4B,CAAC;YAC9E,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,WAAW,EAAE;gBAC/D,qBAAqB,CAAC,IAAI,CAAC,CAAC;aAC7B;QACH,CAAC;QAED,OAAO;YACL,CAAC,YAAY,KAAK,wCAAwC,CAAC,EAAE,CAAC,IAAmB,EAAE,EAAE;gBACnF,qBAAqB,CAAC,IAAkC,CAAC,CAAC;YAC5D,CAAC;YAED,CAAC,YAAY,KAAK,uEAAuE,CAAC,EAAE,CAC1F,IAAmB,EACnB,EAAE;gBACF,6BAA6B,CAAC,IAAkC,CAAC,CAAC;YACpE,CAAC;YAED,8CAA8C,EAAE,CAAC,IAAmB,EAAE,EAAE;gBACtE,qBAAqB,CAAC,IAAgC,CAAC,CAAC;YAC1D,CAAC;YAED,6EAA6E,EAAE,CAC7E,IAAmB,EACnB,EAAE;gBACF,6BAA6B,CAAC,IAAgC,CAAC,CAAC;YAClE,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,iBAAS,IAAI,CAAC"}
1
+ {"version":3,"file":"no-redundant-jump.js","sourceRoot":"","sources":["../../src/rules/no-redundant-jump.ts"],"names":[],"mappings":"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"}
@@ -27,8 +27,11 @@ const rule = {
27
27
  messages: {
28
28
  sameLineCondition: message,
29
29
  sonarRuntime: '{{sonarRuntimeData}}',
30
+ suggestAddingElse: 'Add "else" keyword',
31
+ suggestAddingNewline: 'Move this "if" to a new line',
30
32
  },
31
33
  type: 'problem',
34
+ hasSuggestions: true,
32
35
  docs: {
33
36
  description: 'Conditionals should start on new lines',
34
37
  recommended: 'error',
@@ -57,6 +60,16 @@ const rule = {
57
60
  (0, locations_1.report)(context, {
58
61
  messageId: 'sameLineCondition',
59
62
  loc: followingIfToken.loc,
63
+ suggest: [
64
+ {
65
+ messageId: 'suggestAddingElse',
66
+ fix: fixer => fixer.insertTextBefore(followingIfToken, 'else '),
67
+ },
68
+ {
69
+ messageId: 'suggestAddingNewline',
70
+ fix: fixer => fixer.replaceTextRange([precedingIf.range[1], followingIf.range[0]], '\n' + ' '.repeat(precedingIf.loc.start.column)),
71
+ },
72
+ ],
60
73
  }, [(0, locations_1.issueLocation)(precedingIfLastToken.loc)], message);
61
74
  }
62
75
  });
@@ -1 +1 @@
1
- {"version":3,"file":"no-same-line-conditional.js","sourceRoot":"","sources":["../../src/rules/no-same-line-conditional.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,oDAAoD;AAGpD,gDAAwC;AACxC,kDAA2D;AAE3D,MAAM,OAAO,GAAG,yDAAyD,CAAC;AAO1E,MAAM,IAAI,GAA0C;IAClD,IAAI,EAAE;QACJ,QAAQ,EAAE;YACR,iBAAiB,EAAE,OAAO;YAC1B,YAAY,EAAE,sBAAsB;SACrC;QACD,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,wCAAwC;YACrD,WAAW,EAAE,OAAO;YACpB,GAAG,EAAE,IAAA,kBAAO,EAAC,UAAU,CAAC;SACzB;QACD,MAAM,EAAE;YACN;gBACE,qBAAqB;gBACrB,IAAI,EAAE,CAAC,eAAe,CAAC;aACxB;SACF;KACF;IACD,MAAM,CAAC,OAAO;QACZ,SAAS,eAAe,CAAC,UAA2B;YAClD,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;YAC3C,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;YAE/D,mBAAmB,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE;gBAC/C,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC;gBAC7C,MAAM,WAAW,GAAG,kBAAkB,CAAC,SAAS,CAAC;gBACjD,IACE,CAAC,CAAC,WAAW,CAAC,GAAG;oBACjB,CAAC,CAAC,WAAW,CAAC,GAAG;oBACjB,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI;oBACvD,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EACvD;oBACA,MAAM,oBAAoB,GAAG,UAAU,CAAC,YAAY,CAAC,WAAW,CAAuB,CAAC;oBACxF,MAAM,gBAAgB,GAAG,UAAU,CAAC,aAAa,CAAC,WAAW,CAAuB,CAAC;oBACrF,IAAA,kBAAM,EACJ,OAAO,EACP;wBACE,SAAS,EAAE,mBAAmB;wBAC9B,GAAG,EAAE,gBAAgB,CAAC,GAAG;qBAC1B,EACD,CAAC,IAAA,yBAAa,EAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,EACzC,OAAO,CACR,CAAC;iBACH;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,IAAmB,EAAE,EAAE,CAAC,eAAe,CAAE,IAAyB,CAAC,IAAI,CAAC;YAClF,cAAc,EAAE,CAAC,IAAmB,EAAE,EAAE,CACtC,eAAe,CAAE,IAAgC,CAAC,IAAI,CAAC;YACzD,UAAU,EAAE,CAAC,IAAmB,EAAE,EAAE,CAClC,eAAe,CAAE,IAA4B,CAAC,UAAU,CAAC;SAC5D,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,SAAS,sBAAsB,CAAC,UAA2B;IACzD,OAAO,UAAU,CAAC,MAAM,CAAuB,CAAC,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE;QACxF,MAAM,iBAAiB,GAAG,UAAU,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QACvD,IACE,SAAS,CAAC,IAAI,KAAK,aAAa;YAChC,CAAC,CAAC,iBAAiB;YACnB,iBAAiB,CAAC,IAAI,KAAK,aAAa,EACxC;YACA,OAAO,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,GAAG,aAAa,CAAC,CAAC;SAC/E;QACD,OAAO,aAAa,CAAC;IACvB,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AAED,iBAAS,IAAI,CAAC"}
1
+ {"version":3,"file":"no-same-line-conditional.js","sourceRoot":"","sources":["../../src/rules/no-same-line-conditional.ts"],"names":[],"mappings":"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"}
@@ -24,9 +24,11 @@ const rule = {
24
24
  meta: {
25
25
  messages: {
26
26
  useExistingOperator: 'Was "{{operator}}=" meant instead?',
27
+ suggestExistingOperator: 'Replace with "{{operator}}" operator',
27
28
  },
28
29
  schema: [],
29
30
  type: 'problem',
31
+ hasSuggestions: true,
30
32
  docs: {
31
33
  description: 'Non-existent operators "=+", "=-" and "=!" should not be used',
32
34
  recommended: 'error',
@@ -49,6 +51,7 @@ const rule = {
49
51
  },
50
52
  };
51
53
  function checkOperator(context, unaryNode) {
54
+ var _a;
52
55
  if (unaryNode &&
53
56
  unaryNode.type === 'UnaryExpression' &&
54
57
  isUnaryOperatorOfInterest(unaryNode.operator)) {
@@ -61,12 +64,28 @@ function checkOperator(context, unaryNode) {
61
64
  expressionFirstToken != null &&
62
65
  areAdjacent(assignmentOperatorToken, unaryOperatorToken) &&
63
66
  !areAdjacent(unaryOperatorToken, expressionFirstToken)) {
67
+ const suggest = [];
68
+ if (((_a = unaryNode.parent) === null || _a === void 0 ? void 0 : _a.type) === 'AssignmentExpression') {
69
+ const range = [
70
+ assignmentOperatorToken.range[0],
71
+ unaryOperatorToken.range[1],
72
+ ];
73
+ const invertedOperators = unaryOperatorToken.value + assignmentOperatorToken.value;
74
+ suggest.push({
75
+ messageId: 'suggestExistingOperator',
76
+ data: {
77
+ operator: invertedOperators,
78
+ },
79
+ fix: fixer => fixer.replaceTextRange(range, invertedOperators),
80
+ });
81
+ }
64
82
  context.report({
65
83
  messageId: 'useExistingOperator',
66
84
  data: {
67
85
  operator: unaryNode.operator,
68
86
  },
69
87
  loc: { start: assignmentOperatorToken.loc.start, end: unaryOperatorToken.loc.end },
88
+ suggest,
70
89
  });
71
90
  }
72
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"non-existent-operator.js","sourceRoot":"","sources":["../../src/rules/non-existent-operator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,oDAAoD;AAGpD,gDAAwC;AAExC,MAAM,IAAI,GAA0C;IAClD,IAAI,EAAE;QACJ,QAAQ,EAAE;YACR,mBAAmB,EAAE,oCAAoC;SAC1D;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,+DAA+D;YAC5E,WAAW,EAAE,OAAO;YACpB,GAAG,EAAE,IAAA,kBAAO,EAAC,UAAU,CAAC;SACzB;KACF;IACD,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,oBAAoB,CAAC,IAAmB;gBACtC,MAAM,oBAAoB,GAAG,IAAqC,CAAC;gBACnE,IAAI,oBAAoB,CAAC,QAAQ,KAAK,GAAG,EAAE;oBACzC,aAAa,CAAC,OAAO,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC;iBACpD;YACH,CAAC;YACD,kBAAkB,CAAC,IAAmB;gBACpC,MAAM,kBAAkB,GAAG,IAAmC,CAAC;gBAC/D,aAAa,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAClD,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,SAAS,aAAa,CACpB,OAA+C,EAC/C,SAAsC;IAEtC,IACE,SAAS;QACT,SAAS,CAAC,IAAI,KAAK,iBAAiB;QACpC,yBAAyB,CAAC,SAAS,CAAC,QAAQ,CAAC,EAC7C;QACA,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;QAC3C,MAAM,uBAAuB,GAAG,UAAU,CAAC,cAAc,CACvD,SAAS,EACT,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,CAC7B,CAAC;QACF,MAAM,kBAAkB,GAAG,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC/D,MAAM,oBAAoB,GAAG,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAE1E,IACE,uBAAuB,IAAI,IAAI;YAC/B,kBAAkB,IAAI,IAAI;YAC1B,oBAAoB,IAAI,IAAI;YAC5B,WAAW,CAAC,uBAAuB,EAAE,kBAAkB,CAAC;YACxD,CAAC,WAAW,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,EACtD;YACA,OAAO,CAAC,MAAM,CAAC;gBACb,SAAS,EAAE,qBAAqB;gBAChC,IAAI,EAAE;oBACJ,QAAQ,EAAE,SAAS,CAAC,QAAQ;iBAC7B;gBACD,GAAG,EAAE,EAAE,KAAK,EAAE,uBAAuB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE;aACnF,CAAC,CAAC;SACJ;KACF;AACH,CAAC;AAED,SAAS,yBAAyB,CAAC,QAA8C;IAC/E,OAAO,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,CAAC;AAClE,CAAC;AAED,SAAS,WAAW,CAAC,KAAyB,EAAE,MAA0B;IACxE,OAAO,CACL,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CACjG,CAAC;AACJ,CAAC;AAED,iBAAS,IAAI,CAAC"}
1
+ {"version":3,"file":"non-existent-operator.js","sourceRoot":"","sources":["../../src/rules/non-existent-operator.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,14 @@ const docs_url_1 = require("../utils/docs-url");
4
4
  const rule = {
5
5
  meta: {
6
6
  messages: {
7
- replaceIfThenElseByReturn: 'Replace this if-then-else statement by a single return statement.',
7
+ replaceIfThenElseByReturn: 'Replace this if-then-else flow by a single return statement.',
8
+ suggest: 'Replace with single return statement',
9
+ suggestCast: 'Replace with single return statement using "!!" cast',
10
+ suggestBoolean: 'Replace with single return statement without cast (condition should be boolean!)',
8
11
  },
9
12
  schema: [],
10
13
  type: 'suggestion',
14
+ hasSuggestions: true,
11
15
  docs: {
12
16
  description: 'Return of boolean expressions should not be wrapped into an "if-then-else" statement',
13
17
  recommended: 'error',
@@ -17,20 +21,30 @@ const rule = {
17
21
  create(context) {
18
22
  return {
19
23
  IfStatement(node) {
20
- const ifStmt = node;
21
24
  if (
22
25
  // ignore `else if`
23
- !(0, nodes_1.isIfStatement)(ifStmt.parent) &&
24
- // `ifStmt.alternate` can be `null`, replace it with `undefined` in this case
25
- returnsBoolean(ifStmt.alternate || undefined) &&
26
- returnsBoolean(ifStmt.consequent)) {
26
+ !(0, nodes_1.isIfStatement)(node.parent) &&
27
+ returnsBoolean(node.consequent) &&
28
+ alternateReturnsBoolean(node)) {
27
29
  context.report({
28
30
  messageId: 'replaceIfThenElseByReturn',
29
- node: ifStmt,
31
+ node,
32
+ suggest: getSuggestion(node),
30
33
  });
31
34
  }
32
35
  },
33
36
  };
37
+ function alternateReturnsBoolean(node) {
38
+ if (node.alternate) {
39
+ return returnsBoolean(node.alternate);
40
+ }
41
+ const { parent } = node;
42
+ if ((parent === null || parent === void 0 ? void 0 : parent.type) === 'BlockStatement') {
43
+ const ifStmtIndex = parent.body.findIndex(stmt => stmt === node);
44
+ return isSimpleReturnBooleanLiteral(parent.body[ifStmtIndex + 1]);
45
+ }
46
+ return false;
47
+ }
34
48
  function returnsBoolean(statement) {
35
49
  return (statement !== undefined &&
36
50
  (isBlockReturningBooleanLiteral(statement) || isSimpleReturnBooleanLiteral(statement)));
@@ -44,6 +58,46 @@ const rule = {
44
58
  // `statement.argument` can be `null`, replace it with `undefined` in this case
45
59
  return (0, nodes_1.isReturnStatement)(statement) && (0, nodes_1.isBooleanLiteral)(statement.argument || undefined);
46
60
  }
61
+ function getSuggestion(ifStmt) {
62
+ const getFix = (condition) => {
63
+ return (fixer) => {
64
+ const singleReturn = `return ${condition};`;
65
+ if (ifStmt.alternate) {
66
+ return fixer.replaceText(ifStmt, singleReturn);
67
+ }
68
+ else {
69
+ const parent = ifStmt.parent;
70
+ const ifStmtIndex = parent.body.findIndex(stmt => stmt === ifStmt);
71
+ const returnStmt = parent.body[ifStmtIndex + 1];
72
+ const range = [ifStmt.range[0], returnStmt.range[1]];
73
+ return fixer.replaceTextRange(range, singleReturn);
74
+ }
75
+ };
76
+ };
77
+ const shouldNegate = isReturningFalse(ifStmt.consequent);
78
+ const shouldCast = !isBooleanExpression(ifStmt.test);
79
+ const testText = context.getSourceCode().getText(ifStmt.test);
80
+ if (shouldNegate) {
81
+ return [{ messageId: 'suggest', fix: getFix(`!(${testText})`) }];
82
+ }
83
+ else if (!shouldCast) {
84
+ return [{ messageId: 'suggest', fix: getFix(testText) }];
85
+ }
86
+ else {
87
+ return [
88
+ { messageId: 'suggestCast', fix: getFix(`!!(${testText})`) },
89
+ { messageId: 'suggestBoolean', fix: getFix(testText) },
90
+ ];
91
+ }
92
+ }
93
+ function isReturningFalse(stmt) {
94
+ const returnStmt = (stmt.type === 'BlockStatement' ? stmt.body[0] : stmt);
95
+ return returnStmt.argument.value === false;
96
+ }
97
+ function isBooleanExpression(expr) {
98
+ return ((expr.type === 'UnaryExpression' || expr.type === 'BinaryExpression') &&
99
+ ['!', '==', '===', '!=', '!==', '<', '<=', '>', '>=', 'in', 'instanceof'].includes(expr.operator));
100
+ }
47
101
  },
48
102
  };
49
103
  module.exports = rule;
@@ -1 +1 @@
1
- {"version":3,"file":"prefer-single-boolean-return.js","sourceRoot":"","sources":["../../src/rules/prefer-single-boolean-return.ts"],"names":[],"mappings":";AAqBA,0CAKwB;AACxB,gDAAwC;AAExC,MAAM,IAAI,GAA0C;IAClD,IAAI,EAAE;QACJ,QAAQ,EAAE;YACR,yBAAyB,EACvB,mEAAmE;SACtE;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,WAAW,EACT,sFAAsF;YACxF,WAAW,EAAE,OAAO;YACpB,GAAG,EAAE,IAAA,kBAAO,EAAC,UAAU,CAAC;SACzB;KACF;IACD,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,WAAW,CAAC,IAAmB;gBAC7B,MAAM,MAAM,GAAG,IAA4B,CAAC;gBAC5C;gBACE,mBAAmB;gBACnB,CAAC,IAAA,qBAAa,EAAC,MAAM,CAAC,MAAM,CAAC;oBAC7B,6EAA6E;oBAC7E,cAAc,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC;oBAC7C,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,EACjC;oBACA,OAAO,CAAC,MAAM,CAAC;wBACb,SAAS,EAAE,2BAA2B;wBACtC,IAAI,EAAE,MAAM;qBACb,CAAC,CAAC;iBACJ;YACH,CAAC;SACF,CAAC;QAEF,SAAS,cAAc,CAAC,SAAyC;YAC/D,OAAO,CACL,SAAS,KAAK,SAAS;gBACvB,CAAC,8BAA8B,CAAC,SAAS,CAAC,IAAI,4BAA4B,CAAC,SAAS,CAAC,CAAC,CACvF,CAAC;QACJ,CAAC;QAED,SAAS,8BAA8B,CAAC,SAA6B;YACnE,OAAO,CACL,IAAA,wBAAgB,EAAC,SAAS,CAAC;gBAC3B,SAAS,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;gBAC3B,4BAA4B,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAChD,CAAC;QACJ,CAAC;QAED,SAAS,4BAA4B,CAAC,SAA6B;YACjE,+EAA+E;YAC/E,OAAO,IAAA,yBAAiB,EAAC,SAAS,CAAC,IAAI,IAAA,wBAAgB,EAAC,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;CACF,CAAC;AAEF,iBAAS,IAAI,CAAC"}
1
+ {"version":3,"file":"prefer-single-boolean-return.js","sourceRoot":"","sources":["../../src/rules/prefer-single-boolean-return.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,11 @@
20
20
  */
21
21
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
22
22
  if (k2 === undefined) k2 = k;
23
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
23
+ var desc = Object.getOwnPropertyDescriptor(m, k);
24
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
25
+ desc = { enumerable: true, get: function() { return m[k]; } };
26
+ }
27
+ Object.defineProperty(o, k2, desc);
24
28
  }) : (function(o, m, k, k2) {
25
29
  if (k2 === undefined) k2 = k;
26
30
  o[k2] = m[k];
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;;;;;;;;;;AAEH,8CAA4B;AAC5B,qDAAmC;AACnC,iDAA+B;AAC/B,+CAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;;;;;;;;;;;;;;AAEH,8CAA4B;AAC5B,qDAAmC;AACnC,iDAA+B;AAC/B,+CAA6B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-sonarjs",
3
- "version": "0.11.0",
3
+ "version": "0.14.0",
4
4
  "description": "SonarJS rules for ESLint",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -30,32 +30,38 @@
30
30
  "check-format": "prettier --list-different \"{src,tests}/**/*.ts\""
31
31
  },
32
32
  "peerDependencies": {
33
- "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0|| ^8.0.0"
33
+ "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0"
34
34
  },
35
35
  "devDependencies": {
36
- "@types/eslint": "7.29.0",
37
- "@types/jest": "27.0.2",
38
- "@types/lodash": "4.14.106",
39
- "@types/minimist": "1.2.0",
40
- "@types/node": "14.14.25",
41
- "@typescript-eslint/experimental-utils": "5.3.1",
42
- "@typescript-eslint/parser": "5.3.1",
43
- "babel-eslint": "8.2.2",
44
- "eslint": "8.1.0",
45
- "eslint-config-prettier": "2.9.0",
46
- "eslint-plugin-import": "2.25.2",
47
- "eslint-plugin-notice": "0.6.7",
48
- "eslint-plugin-sonarjs": "0.10.0",
49
- "jest": "27.3.1",
36
+ "@babel/core": "7.18.9",
37
+ "@babel/eslint-parser": "7.18.9",
38
+ "@babel/plugin-proposal-export-default-from": "^7.18.9",
39
+ "@babel/plugin-proposal-function-bind": "^7.18.9",
40
+ "@babel/preset-env": "7.18.9",
41
+ "@babel/preset-flow": "7.18.6",
42
+ "@babel/preset-react": "7.18.6",
43
+ "@types/eslint": "8.4.5",
44
+ "@types/jest": "28.1.6",
45
+ "@types/lodash": "4.14.182",
46
+ "@types/minimist": "1.2.2",
47
+ "@types/node": "14.14.31",
48
+ "@typescript-eslint/experimental-utils": "5.30.7",
49
+ "@typescript-eslint/parser": "5.30.7",
50
+ "eslint": "8.20.0",
51
+ "eslint-config-prettier": "8.5.0",
52
+ "eslint-plugin-import": "2.26.0",
53
+ "eslint-plugin-notice": "0.9.10",
54
+ "eslint-plugin-sonarjs": "0.14.0-570",
55
+ "jest": "28.1.3",
50
56
  "jest-sonar-reporter": "2.0.0",
51
- "lint-staged": "12.1.2",
57
+ "lint-staged": "13.0.3",
52
58
  "lodash": "4.17.21",
53
- "minimist": "1.2.3",
54
- "prettier": "2.3.0",
55
- "rimraf": "2.6.2",
56
- "ts-jest": "27.0.7",
57
- "ts-node": "9.1.1",
58
- "typescript": "4.5.2"
59
+ "minimist": "1.2.6",
60
+ "prettier": "2.7.1",
61
+ "rimraf": "3.0.2",
62
+ "ts-jest": "28.0.7",
63
+ "ts-node": "10.9.1",
64
+ "typescript": "4.7.4"
59
65
  },
60
66
  "prettier": {
61
67
  "printWidth": 100,
@@ -1,8 +0,0 @@
1
- version: 1
2
- type: npm
3
- resolver:
4
- repo: npm
5
- serverId: repox
6
- deployer:
7
- repo: sonarsource-npm-public-qa
8
- serverId: repox
@@ -1,20 +0,0 @@
1
- # WhiteSource documentation https://whitesource.atlassian.net/wiki/spaces/WD/pages/1544880156/Unified+Agent+Configuration+Parameters
2
-
3
- excludes=ruling/**
4
- fileSystemScan=False
5
- resolveAllDependencies=False
6
-
7
- maven.aggregateModules=True
8
- maven.downloadMissingDependencies=False
9
- maven.m2RepositoryPath=.m2/repository
10
- maven.resolveDependencies=True
11
- maven.runPreStep=False
12
-
13
- npm.includeDevDependencies=True
14
- npm.resolveDependencies=True
15
-
16
- wss.url=https://saas-eu.whitesourcesoftware.com/agent
17
-
18
- forceUpdate=true
19
- checkPolicies=true
20
- forceUpdate.failBuildOnPolicyViolation=true