Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor(linter): Use parsed patterns in unicorn/prefer-string-starts-ends-with #5949

Conversation

camchenry
Copy link
Contributor

@camchenry camchenry commented Sep 21, 2024

This change enhances the accuracy of the prefer_string_starts_ends_with rule by using the parsed regex patterns for analysis. It allows for more precise detection of patterns that can be replaced with startsWith() and endsWith() methods, reducing false positives and improving the overall effectiveness of the linter.

What changed?

  • Replaced the simple string-based regex analysis with a more robust AST-based approach.
  • Removed the is_simple_string function as it's no longer needed.

Copy link

graphite-app bot commented Sep 21, 2024

Your org has enabled the Graphite merge queue for merging into main

Add the label “0-merge” to the PR and Graphite will automatically add it to the merge queue when it’s ready to merge. Or use the label “hotfix” to add to the merge queue as a hot fix.

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

Copy link
Contributor Author

camchenry commented Sep 21, 2024

Copy link

codspeed-hq bot commented Sep 21, 2024

CodSpeed Performance Report

Merging #5949 will not alter performance

Comparing 09-21-refactor_linter_use_parsed_patterns_in_unicorn_prefer-string-starts-ends-with_ (05f592b) with main (3273b64)

Summary

✅ 29 untouched benchmarks

@camc314 camc314 changed the base branch from linter/use-parsed-pattern-string-replace-all to graphite-base/5949 September 21, 2024 18:03
@camc314 camc314 force-pushed the 09-21-refactor_linter_use_parsed_patterns_in_unicorn_prefer-string-starts-ends-with_ branch from 546de83 to 76fdf5b Compare September 21, 2024 18:06
@camc314 camc314 changed the base branch from graphite-base/5949 to main September 21, 2024 18:07
@camc314 camc314 force-pushed the 09-21-refactor_linter_use_parsed_patterns_in_unicorn_prefer-string-starts-ends-with_ branch from 76fdf5b to 625686a Compare September 21, 2024 18:07
@camc314 camc314 added the 0-merge Merge with Graphite Merge Queue label Sep 21, 2024
Copy link

graphite-app bot commented Sep 21, 2024

Merge activity

  • Sep 21, 2:08 PM EDT: The merge label '0-merge' was detected. This PR will be added to the Graphite merge queue once it meets the requirements.
  • Sep 21, 2:14 PM EDT: camc314 added this pull request to the Graphite merge queue.
  • Sep 21, 2:18 PM EDT: camc314 merged this pull request with the Graphite merge queue.

…s-ends-with` (#5949)

- part of #5416

This change enhances the accuracy of the `prefer_string_starts_ends_with` rule by using the parsed regex patterns for analysis. It allows for more precise detection of patterns that can be replaced with `startsWith()` and `endsWith()` methods, reducing false positives and improving the overall effectiveness of the linter.

### What changed?

- Replaced the simple string-based regex analysis with a more robust AST-based approach.
- Removed the `is_simple_string` function as it's no longer needed.
@camc314 camc314 force-pushed the 09-21-refactor_linter_use_parsed_patterns_in_unicorn_prefer-string-starts-ends-with_ branch from 625686a to 05f592b Compare September 21, 2024 18:15
@graphite-app graphite-app bot merged commit 05f592b into main Sep 21, 2024
24 checks passed
@graphite-app graphite-app bot deleted the 09-21-refactor_linter_use_parsed_patterns_in_unicorn_prefer-string-starts-ends-with_ branch September 21, 2024 18:18
@oxc-bot oxc-bot mentioned this pull request Sep 23, 2024
Boshen added a commit that referenced this pull request Sep 23, 2024
## [0.9.7] - 2024-09-23

### Features

- d24985e linter: Add `oxc-security/api-keys` (#5906) (DonIsaac)
- f9b44c5 linter: Add unicode sets support to `no-useless-escape` rule
(#5974) (camchenry)
- 0f19848 linter: Implement `no-unexpected-multiline` rule (#5911)
(camchenry)
- 16fe383 linter: Implement `no-extend-native` rule (#5867) (Cam
McHenry)

### Bug Fixes

- eed9ac7 linter: Include actual span size in `no-regex-spaces`
diagnostic (#5957) (camchenry)
- 40c89c2 linter: Move `promise/avoid-new` to style category (#5961)
(DonIsaac)

### Performance

- 608d637 linter: Use `aho-corasick` instead of `regex` for string
matching in `jsx-a11y/img-redundant-alt` (#5892) (camchenry)
- 3148d4b linter: Check file path after checking node kind for
`nextjs/no-head-element` (#5868) (Cam McHenry)

### Refactor

- 0a5a4a9 linter: Use parsed patterns for `unicorn/no-hex-escape`
(#5985) (camchenry)
- 2cf2edd linter: Use parsed patterns in `no-empty-character-class` rule
(#5980) (camchenry)
- a9a8e2a linter: Use regex parser in `eslint/no-regex-spaces` (#5952)
(camchenry)
- 05f592b linter: Use parsed patterns in
`unicorn/prefer-string-starts-ends-with` (#5949) (camchenry)
- 3273b64 linter: Use parsed patterns for
`unicorn/prefer-string-replace-all` rule (#5943) (camchenry)
- ba7b01f linter: Add `LinterBuilder` (#5714) (DonIsaac)
- db4f16a semantic: Call `with_trivias` before `build_with_jsdoc`
(#5875) (Boshen)
- 3d13c6d semantic: Impl `IntoIterator` for `&AstNodes` (#5873)
(DonIsaac)

### Testing

- b681c9a linter: Import test cases for `no-empty-character-class`
(#5981) (camchenry)
- 767602b linter: Add regression test for #5227 (#5975) (camchenry)

---------

Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
0-merge Merge with Graphite Merge Queue A-linter Area - Linter
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants