Skip to content

Sonar bulk: auto-fixable code style smells (~1,200 issues) #43

@sirdeggen

Description

@sirdeggen

Tracking issue for #38.

The following Sonar rules are mechanical / auto-fixable. Most can be addressed by a codemod or ESLint autofix pass. Total: ~1,200 issues.

Rule Count Description
typescript:S7735 347 Negated conditions should be avoided when an else clause is present
typescript:S1128 97 Unnecessary imports should be removed
typescript:S7767 94 Bitwise operators should not be used to round numbers
typescript:S4325 90 Redundant casts and non-null assertions should be avoided
typescript:S7773 86 Number static methods and properties should be preferred over global equivalents
typescript:S6582 74 Optional chaining should be preferred
typescript:S6606 70 Nullish coalescing should be preferred
typescript:S7741 56 typeof should not be used to check for undefined
typescript:S7755 46 Complex index access patterns should be replaced with .at() method
typescript:S7772 38 Node.js built-in modules should be imported using the node: protocol
typescript:S2933 46 Fields that are only assigned in the constructor should be readonly
typescript:S6759 24 Mark React props as read-only
typescript:S6564 29 Redundant type aliases
typescript:S6660 21 if-else-if should end with else
typescript:S1940 24 Boolean expressions should not be inverted
typescript:S101 20 Class names should comply with naming convention
typescript:S107 18 Functions should not have too many parameters
typescript:S7778 73 Multiple consecutive method calls should be combined
typescript:S7786 111 Generic Error should be TypeError when thrown after type checking
typescript:S6571 76 Type constituents of unions and intersections should not be redundant

Suggested approach

  1. Run ESLint with @typescript-eslint/unicorn rules enabled on a feature branch - many of these have autofixers (S1128, S6582, S6606, S7741, S7773, S7772, S2933).
  2. For S7735 (~347) and S7755 (~46), write a small jscodeshift transform.
  3. For S7786 (~111 - TypeError for type-checked throws), case-by-case but mostly mechanical.
  4. Land per-rule PRs to keep diffs reviewable.

Refs: #38

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions