Skip to content

Releases: SonarSource/SonarJS

10.7.0

28 Sep 09:27
31754d5
Compare
Choose a tag to compare

What's Changed

  • Add rule S6746 (react/no-direct-mutation-state): In React this.state should not be mutated directly by @alexander-kamushkin-sonarsource in #4145
  • Add rule S6747 (no-unknown-property): JSX elements should not use unknown properties and attributes by @yassin-kammoun-sonarsource in #4146
  • Add rule S6749 (jsx-no-useless-fragment): Redundant React fragments should be removed by @yassin-kammoun-sonarsource in #4147
  • Create rule S6748 (react/no-children-prop): React children should not be passed as prop by @alexander-kamushkin-sonarsource in #4149
  • Add rule S6750 (no-render-return-value): The return value of "ReactDOM.render" should not be used by @yassin-kammoun-sonarsource in #4148
  • Add rule S6756 (no-access-state-in-setstate): "setState" should use a callback when referencing the previous state by @yassin-kammoun-sonarsource in #4154
  • Add rule S6754 (hook-use-state): The return value of "useState" should be destructured and named symmetrically by @yassin-kammoun-sonarsource in #4152
  • Create rule S6757 (react/no-this-in-sfc​​): this should not be used in functional components by @alexander-kamushkin-sonarsource in #4155
  • Add rule S6759 (prefer-read-only-props): React props should be read-only by @yassin-kammoun-sonarsource in #4157
  • Add rule S6763 (no-redundant-should-component-update): "shouldComponentUpdate" should not be defined when extending "React.PureComponent" by @yassin-kammoun-sonarsource in #4160
  • Add rule S6761 (react/no-danger-with-children​): children and dangerouslySetInnerHTML should not be used together by @alexander-kamushkin-sonarsource in #4163
  • Add rule S6767 (no-unused-prop-types): Unused React typed props should be removed by @yassin-kammoun-sonarsource in #4165
  • Add rule S6766 (react/no-unescaped-entities​): JSX special characters should be escaped by @alexander-kamushkin-sonarsource in #4166
  • Add rule S6770 (jsx-pascal-case): User-defined JSX components should use Pascal case by @yassin-kammoun-sonarsource in #4169
  • Add rule S6772 (react/jsx-child-element-spacing​): Spacing between inline elements should be explicit by @alexander-kamushkin-sonarsource in #4171
  • Add rule S6775 (react/default-props-match-prop-types​): All defaultProps should have non-required PropType by @alexander-kamushkin-sonarsource in #4176
  • Add rule S6774 (prop-types): React components should validate prop types by @yassin-kammoun-sonarsource in #4174
  • Fix FP S6766 (react/no-unescaped-entities​): Remove ' and " from the list of forbidden entitiles by @alexander-kamushkin-sonarsource in #4181
  • Fix FP S6759 (prefer-read-only-props): Restrict the scope to functional components by @yassin-kammoun-sonarsource in #4182
  • Fix windows build issues by @alexander-kamushkin-sonarsource in #4189
  • [MMF-2861] Embed Node.js runtime in analyzer by @saberduck in #4150
  • Fix FP S6749 (jsx-no-useless-fragment): Ignore empty React fragments by @yassin-kammoun-sonarsource in #4193
  • Bundled Node.js runtime: add MacOS x64 support by @ilia-kebets-sonarsource in #4194

New Contributors

This release will be part of SonarQube 10.3

Full Changelog: 10.6.0.22520...10.7.0.22914

10.6.0

01 Sep 13:29
c164782
Compare
Choose a tag to compare

What's Changed

Full Changelog: 10.5.1.22382...10.6.0.22520

Part of SonarQube 10.3

10.5.1

23 Aug 15:18
aee0b6e
Compare
Choose a tag to compare

Small fix release, because we forgot to include the eslint-plugin-sonarjs update in 10.5.0

milestone: https://github.com/SonarSource/SonarJS/milestone/78?closed=1

This release will be part of SonarQube 10.2

10.5.0

23 Aug 13:28
9b387ed
Compare
Choose a tag to compare

milestone: https://github.com/SonarSource/SonarJS/milestone/76?closed=1

This release will be part of SonarQube 10.2

10.4.0

04 Aug 14:56
29853cc
Compare
Choose a tag to compare

What's Changed

  • Prepare next development iteration by @saberduck in #4023
  • Add rule S6653 (prefer-object-has-own): Use Object.hasOwn static method instead of hasOwnProperty by @alexander-kamushkin-sonarsource in #4018
  • Add rule S6660 (no-lonely-if): If statements should not be the only statement in else blocks by @alexander-kamushkin-sonarsource in #4022
  • Upgrade sonar-lits-plugin to 0.11.0.2659 by @Godin in #4017
  • Add rule S6661 (prefer-object-spread): Object spread syntax should be used instead of Object.assign by @alexander-kamushkin-sonarsource in #4024
  • Update ruling results formatting due to sonar-lits-plugin change by @alexander-kamushkin-sonarsource in #4026
  • Add rule S6666 (prefer-spread): Spread syntax should be used instead of apply() by @alexander-kamushkin-sonarsource in #4029
  • Add rule S6671 (prefer-promise-reject-errors): Literals should not be used for promise rejection by @alexander-kamushkin-sonarsource in #4030
  • Add rule S1199 (no-lone-block): Nested code blocks should not be used by @alexander-kamushkin-sonarsource in #4032
  • Add rule S6676 (no-useless-call): Calls to .call() and .apply() methods should not be redundant by @alexander-kamushkin-sonarsource in #4033
  • Add rule S1068 (no-unused-private-class-members): Unused private class members should be removed by @alexander-kamushkin-sonarsource in #4034
  • Update "submit review" and "request review" actions to work for projectsV2 by @ilia-kebets-sonarsource in #4012
  • Update S1523 (code-eval): merge ESLint no-script-url by @alexander-kamushkin-sonarsource in #4037
  • Add rule S6679 (no-self-compare): Number.isNaN() should be used to check for NaN value by @alexander-kamushkin-sonarsource in #4040
  • Update rule descriptions after migration to LAYC by @victor-diez-sonarsource in #4041
  • Actions point to production branch by @ilia-kebets-sonarsource in #4039
  • Update S1192 (no-duplicate-string): Add ignoreStrings rule property by @yassin-kammoun-sonarsource in #3959
  • Update rule metadata by @yassin-kammoun-sonarsource in #4044

Full Changelog: 10.3.2.22047...10.4.0.22160

Part of SonarQube 10.2

10.3.2

12 Jul 16:13
91aa346
Compare
Choose a tag to compare

Bugfix release to fix performance regression on projects with many tsconfig.json files.

10.3.1

13 Jun 13:09
f95f3d1
Compare
Choose a tag to compare

10.3.0

12 Jun 10:02
9c62289
Compare
Choose a tag to compare

milestone: https://github.com/SonarSource/SonarJS/milestone/72?closed=1

This brings 5 new and 7 improved rules for core JavaScript and TypeScript features.
Also, analysis now works with all TypeScript 5 code and compiler options.

The updates are available in SonarCloud, and will be included in SonarQube 10.1, and in the next release of SonarLint.

New rules

  1. S6643: Prototypes of builtin objects should not be modified
  2. S6638 (no-constant-binary-expression) Binary expressions should not always return the same value
  3. S6637 (no-extra-bind): Unnecessary calls to .bind() should not be used
  4. S6635 (no-constructor-return) Constructors should not return values
  5. S2430 (new-cap) Constructor names should start with an uppercase letter

Improved rules

  1. S3796 (array-callback-without-return): cover new array functions, typed arrays and bracket notation
  2. S1528 (array-constructor): add quickfix
  3. S4043 (no-misleading-array-reverse) to suggest using toReversed or toSorted
  4. S4622 (max-union-size): Ignore unions used with utility types
  5. S1128 (unused-import): Support usage in JSDoc comments
  6. S1128 (unused-import): Ignore imported symbols used as Vue.js directives
  7. S6544 (no-misused-promises): Don't flag Promise-returning function provided to attribute where a void return was expected in JSX attributes. Also do not flag not awaited, resolved or error-handled promises.

Rule descriptions

300+ small fixes to rule descriptions where there were small inconsistencies in casing, titles, etc.

10.2.0

28 Apr 14:04
2007aa0
Compare
Choose a tag to compare

https://github.com/SonarSource/SonarJS/milestone/71?closed=1

This will be released in SonarQube 10.1

New rules

  1. Add rule S6606: Nullish coalescing should be preferred
  2. Add rule S6598: Function types should be preferred
  3. Add rule S6594: "RegExp.exec()" should be preferred over "String.match()"
  4. Add rule S6583: Enum members should not mix value types
  5. Add rule S6590: "as const" assertions should be preferred
  6. Add rule S6582: Optional chaining should be preferred
  7. Add rule S6578: Enum values should be unique
  8. Add rule S6572: Enum member values should be either all initialized or none
  9. Add rule S6571 (no-redundant-type-constituents): Redundant types should not be used
  10. Add rule S2094 (no-empty-class-check): Classes should not be empty
  11. Add rule S6565: prefer-return-this-type
  12. Add rule S6569: Unnecessary type constraints should be removed
  13. Add rule S6568 (no-confusing-non-null-assertion)
  14. Add rule S6564: Redundant type aliases should not be used
  15. Add rule S6551 (no-base-to-string): Objects and classes converted or coerced to strings should define a "toString()" method
  16. Add rule S6557: Ends of strings should be checked with "startsWith()" and "endsWith()"
  17. Add rule S6550 (prefer-literal-enum-member): All enum members should be literals

Improved rules

  1. Update S3402 (no-incorrect-string-concat): Consider the addition assignment operator
  2. Update rule S6544: add TypeScript/eslint's no-floating-promises rule
  3. Update rule S6544: add no-misused-promises cases
  4. Update S2871 (no-alphabetical-sort): Cover cases from require-array-sort-compare
  5. Update S4139 (no-for-in-array): Cover cases from TypeScript ESLint implementation
  6. Fix FP S131 (switch-without-default): Ignore exhaustive switches on unions and enums

10.1.0

24 Mar 11:00
5e1c02b
Compare
Choose a tag to compare

What's Changed

This release brings more advanced support for JavaScript built-ins with 8 new rules and 14 improved rules.

Milestone: https://github.com/SonarSource/SonarJS/milestone/69?closed=1

Part of SonarQube 10.0