Skip to content

Comments

feat(linter): add oxc/no-redundant-constructor-init#9299

Merged
Boshen merged 5 commits intooxc-project:mainfrom
BenShelton:no-redundant-constructor-init
Feb 24, 2025
Merged

feat(linter): add oxc/no-redundant-constructor-init#9299
Boshen merged 5 commits intooxc-project:mainfrom
BenShelton:no-redundant-constructor-init

Conversation

@BenShelton
Copy link
Contributor

closes #9267

I'm unsure whether the rule naming is correct, I believe this is a rule that doesn't exist elsewhere so came up with the name no_redundant_constructor_init, if that needs to be changed or if the rule should be moved elsewhere then happy to do so.

@graphite-app
Copy link
Contributor

graphite-app bot commented Feb 23, 2025

How to use the Graphite Merge Queue

Add either label to this PR to merge it via the merge queue:

  • 0-merge - adds this PR to the back of the merge queue
  • hotfix - for urgent hot fixes, skip the queue and merge this PR next

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

@github-actions github-actions bot added A-linter Area - Linter C-enhancement Category - New feature or request labels Feb 23, 2025
@BenShelton BenShelton force-pushed the no-redundant-constructor-init branch from dbc91d2 to d71bce9 Compare February 23, 2025 13:11
@Boshen
Copy link
Member

Boshen commented Feb 23, 2025

Thank you so much for working on this! Here are some results from running this rule in https://github.com/oxc-project/oxlint-ecosystem-ci

Kibana

...

  × eslint(no-redundant-constructor-init): Explicit initialization of public members is redundant
    ╭─[src/plugins/data/common/search/aggs/utils/date_interval_utils/invalid_es_calendar_interval_error.ts:29:5]
 28 │     this.unit = unit;
 29 │     this.type = type;
    ·     ─────────────────
 30 │
    ╰────
  help: Remove the explicit initialization

  × eslint(no-redundant-constructor-init): Explicit initialization of public members is redundant
    ╭─[packages/kbn-apm-synthtrace-client/src/lib/entity.ts:15:5]
 14 │   constructor(public readonly fields: TFields) {
 15 │     this.fields = fields;
    ·     ─────────────────────
 16 │   }
    ╰────
  help: Remove the explicit initialization

Found 0 warnings and 9 errors.

vscode:

...

  × eslint(no-redundant-constructor-init): Explicit initialization of public members is redundant
    ╭─[src/vs/editor/common/services/modelService.ts:41:3]
 40 │     ) {
 41 │         this.model = model;
    ·         ───────────────────
 42 │         this._modelEventListeners.add(model.onWillDispose(() => onWillDispose(model)));
    ╰────
  help: Remove the explicit initialization

  × eslint(no-redundant-constructor-init): Explicit initialization of public members is redundant
    ╭─[src/vs/workbench/contrib/testing/browser/testResultsView/testResultsSubject.ts:53:3]
 52 │         const messages = test.tasks[taskIndex].messages;
 53 │         this.messageIndex = messageIndex;
    ·         ─────────────────────────────────
 54 │
    ╰────
  help: Remove the explicit initialization

Found 0 warnings and 5 errors.

@codspeed-hq
Copy link

codspeed-hq bot commented Feb 23, 2025

CodSpeed Performance Report

Merging #9299 will not alter performance

Comparing BenShelton:no-redundant-constructor-init (793bf21) with main (3031845)

Summary

✅ 33 untouched benchmarks

@Boshen Boshen changed the title feat(linter): add no_redundant_constructor_init feat(linter): add oxc/no-redundant-constructor-init Feb 23, 2025
@github-actions github-actions bot added the A-cli Area - CLI label Feb 23, 2025
@BenShelton
Copy link
Contributor Author

Tests were failing because a load of snapshots had a line similar to the following where the number of rules increased by 1:

- Finished in <variable>ms on 1 file with 99 rules using 1 threads.
+ Finished in <variable>ms on 1 file with 100 rules using 1 threads.

I've updated and committed all those snapshots, hopefully that is correct.

Copy link
Contributor

@camc314 camc314 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💪

@Boshen Boshen merged commit 4ad328b into oxc-project:main Feb 24, 2025
26 checks passed
Boshen pushed a commit that referenced this pull request Feb 27, 2025
)

Follow-up from #9299

As pointed out in discussions there, the initial implementation doesn't
handle assignments nested in blocks as only the body's statements were
being checked.

This instead checks for any references to each public param, checks it
is a read (which it would be in the right-side of an assignment) and
then if it's part of an assignment to `this`.

Adds tests for these new cases, previous tests still pass.
Boshen added a commit that referenced this pull request Mar 4, 2025
## [0.15.13] - 2025-03-04

### Features

- 7bb0121 linter: Add `react/no-namespace` (#9404) (Mikhail Baev)
- 0a7ca20 linter: Support allowable method diagnostic for
eslint/no-console (#9454) (Boshen)
- d99bc51 linter: Add import/no-absolute-path rule (#9415) (yefan)
- 8c71590 linter: Add import/no-mutable-exports rule (#9434) (yefan)
- b65f8a5 linter: Add `promise/no-nesting` (#9345) (Tom)
- d38e6de linter: Add `eslint/no-spaced-func` (#9360) (Tom)
- 25392de linter: Add eslint/operator-assignment rule (#9208) (yefan)
- bf77167 linter: Add `curly` rule (#8123) (Yuichiro Yamashita)
- e3b6eeb linter: Add `unicorn/consistent-date-clone` (#9346) (Amol
Bhave)
- 5ee2cab linter: Improve no_invalid_fetch_options (#9347)
(Brooooooklyn)
- 4ad328b linter: Add oxc/no-redundant-constructor-init (#9299) (Ben
Jones)

### Bug Fixes

- c4624a6 linter: Fix panic in `import/no-absolute-path` (#9500)
(camc314)
- 4b0327b linter: False positive in `eslint/curly` (#9471) (Kevin Deng
三咲智子)
- 8804555 linter: Skip `no-absolute-path` tests on windows (#9435)
(Cameron)
- 06fe76d linter: Rule `no-restricted-imports` use right span for
exports statements (#9442) (Sysix)
- 3da3565 linter: Rule `unicorn/no-invalid-fetch-options` (#9416) (Tom)
- 85fbe8c linter: Rule `eslint/radix` look into globals config (#9407)
(Sysix)
- 1113e3b linter: Rule `eslint/no-object-constructor` look into globals
config (#9406) (Sysix)
- 0217ebb linter: Support more cases for no_redundant_constructor_init
(#9364) (Ben Jones)

### Documentation

- 24850e7 linter: Add example of how configure rule (#9469) (Cédric
DIRAND)
- acb1e2c linter: Add end code tag on rule doc (#9470) (Cédric DIRAND)
- d43b456 linter: Add full documentation to rule `no-restricted-imports`
(#9440) (Sysix)

### Refactor

- ffec3f6 linter: Improve `eslint/no-new` (#9423) (Tom)
- 7c27f10 linter: Move rule `no-restricted-imports` to category
`restriction` (#9443) (Sysix)
- 7e118a3 linter: Improve `typescript/explicit-function-return-type`
(#9439) (Tom)
- 5318cf2 linter: Improve `eslint/no-spaced-func` (#9419) (shulaoda)
- 802f00e linter: Use the `javascript-globals` crate (#9412) (Boshen)
- bff83c9 linter: Improve `eslint/no-unsafe-negation` (#9362) (dalaoshu)
- 228bf99 linter: Improve `unicorn/empty-brace-spaces` (#9341)
(dalaoshu)
- 55d071b linter: Improve `unicorn/consistent-existence-index-check`
(#9339) (dalaoshu)
- 17acece linter: Improve `eslint/no-template-curly-in-string` (#9090)
(dalaoshu)

Co-authored-by: Boshen <[email protected]>
Boshen pushed a commit that referenced this pull request Mar 17, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-cli Area - CLI A-linter Area - Linter C-enhancement Category - New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

linter: new rule - redundant initialization in class constructor

5 participants