-
-
Notifications
You must be signed in to change notification settings - Fork 477
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
fix(linter): fix file name checking behavior of unicorn/filename-case
#6463
fix(linter): fix file name checking behavior of unicorn/filename-case
#6463
Conversation
Your org has enabled the Graphite merge queue for merging into mainAdd 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. |
This stack of pull requests is managed by Graphite. Learn more about stacking. Join @camchenry and the rest of your teammates on Graphite |
CodSpeed Performance ReportMerging #6463 will not alter performanceComparing Summary
|
9ce092a
to
e9b7776
Compare
Merge activity
|
…e` (#6463) - closes #6459 Currently, the `unicorn/filename-case` doesn't match the behavior of the original rule. There are several issues which this PR fixes: - The defaults cases were incorrect: only kebab case should be enabled by default, according to the original rule docs. - Setting a single case or multiple cases did not remove the default cases as it should. - Leading/trailing underscores were not ignored by default. - We did not provide a clear diagnostic message indicating which cases are allowed. - We did not try to parse out multiple file parts (separated by `.`). - TODO: We should also support multiple file part checking (which the original rule supports via a config option), for file names such as `someTest.fileName.js` I have also added many of the original test cases to ensure we are more closely compatible. This also improves the performance of just running the `unicorn/filename-case` alone by 4% (20ms total) on the `vscode` codebase: ``` Benchmark 1: ./oxlint-main -A all -W unicorn/filename-case --silent vscode Time (mean ± σ): 489.4 ms ± 24.0 ms [User: 2623.8 ms, System: 447.2 ms] Range (min … max): 474.7 ms … 622.9 ms 100 runs Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options. Benchmark 2: ./oxlint-new-filename-case -A all -W unicorn/filename-case --silent vscode Time (mean ± σ): 470.8 ms ± 22.9 ms [User: 2478.8 ms, System: 463.5 ms] Range (min … max): 455.6 ms … 599.3 ms 100 runs Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options. Summary ./oxlint-new-filename-case -A all -W unicorn/filename-case --silent vscode ran 1.04 ± 0.07 times faster than ./oxlint-main -A all -W unicorn/filename-case --silent vscode ``` Perplexingly, it seems like it might actually be even faster on the `vscode` repository, saving ~5% (70ms) with the default ruleset enabled as well. Maybe my laptop was just running a bit faster. ``` Benchmark 1: ./oxlint-main -W unicorn/filename-case --silent vscode Time (mean ± σ): 1.402 s ± 0.096 s [User: 8.863 s, System: 0.505 s] Range (min … max): 1.318 s … 1.920 s 100 runs Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options. Benchmark 2: ./oxlint-new-filename-case -W unicorn/filename-case --silent vscode Time (mean ± σ): 1.339 s ± 0.042 s [User: 8.582 s, System: 0.511 s] Range (min … max): 1.266 s … 1.506 s 100 runs Summary ./oxlint-new-filename-case -W unicorn/filename-case --silent vscode ran 1.05 ± 0.08 times faster than ./oxlint-main -W unicorn/filename-case --silent vscode ```
e9b7776
to
d6a0d2e
Compare
## [0.10.0] - 2024-10-18 - 7f6b219 editor/vscode: [**BREAKING**] Unify configuration logic (#6630) (DonIsaac) - 782f0a7 codegen: [**BREAKING**] Rename `print_char` method to `print_ascii_byte` (#6512) (overlookmotel) - 7645e5c codegen: [**BREAKING**] Remove CommentOptions API (#6451) (Boshen) - 5200960 oxc: [**BREAKING**] Remove passing `Trivias` around (#6446) (Boshen) - 80266d8 linter: [**BREAKING**] Support plugins in oxlint config files (#6088) (DonIsaac) ### Features - 6f22538 ecmascript: Add `ToBoolean`, `ToNumber`, `ToString` (#6502) (Boshen) - 1e7fab3 linter: Implement `no-callback-in-promise` (#6157) (dalaoshu) - c56343d linter: Promote `no_unsafe_optional_chaining` to correctness (#6491) (Boshen) - 454874a linter: Implement `react/iframe-missing-sandbox` (#6383) (Radu Baston) - c8174e2 linter: Add suggestions for `no-plusplus` (#6376) (camchenry) - 6e3224d linter: Configure by category in config files (#6120) (DonIsaac) - c5e66e1 linter/no-unused-vars: Report own type references within class, interface, and type alias declarations (#6557) (DonIsaac) - 8c78f97 linter/node: Implement no-new-require (#6165) (Jelle van der Waa) ### Bug Fixes - cf92730 editor: Use human-readable output channel names (#6629) (DonIsaac) - d9159a2 editor: Misaligned command prefixes (#6628) (DonIsaac) - b9c94bb editors/vscode: Temporarily solve oxc_language_server issue on windows (#6384) (dalaoshu) - e340424 linter: Support import type with namespaced import in `import/no-duplicates` (#6650) (Dmitry Zakharov) - a668397 linter: Panic in `no-else-return` (#6648) (dalaoshu) - 41dc8e3 linter: Stack overflow in `oxc/no-async-endpoint-handlers` (#6614) (DonIsaac) - d07a9b0 linter: Panic in `no-zero-fractions` (#6607) (dalaoshu) - d6a0d2e linter: Fix file name checking behavior of `unicorn/filename-case` (#6463) (camchenry) - 0784e74 linter: Error fixer of `switch-case-braces` (#6474) (dalaoshu) - e811812 linter: Error diagnostic message based on parameter length of valid-expect (#6455) (dalaoshu) - f71c91e linter: Move `eslint/sort-keys` to `style` category (#6377) (DonIsaac) - 2b86de9 linter/no-control-regex: False negative for flags in template literals (#6531) (DonIsaac) - 685a590 linter/no-control-regex: Better diagnostic messages (#6530) (DonIsaac) - 6d5a9f2 linter/no-control-regex: Allow capture group references (#6529) (DonIsaac) - ba53bc9 linter/no-unused-vars: False positives in TS type assertions (#6397) (DonIsaac) - d3e59c6 linter/no-unused-vars: False positive in some default export cases (#6395) (DonIsaac) - e08f956 linter/no-unused-vars: False positive for functions and classes in arrays (#6394) (DonIsaac) - b9d7c5f no-unused-vars: Consider functions within conditional expressions usable (#6553) (Brian Donovan) ### Performance - 0cbd4d0 linter: Avoid megamorphism in `RuleFixer` methods (#6606) (DonIsaac) - 725f9f6 linter: Get fewer parent nodes in `unicorn/prefer-dom-node-text-content` (#6467) (camchenry) - c00f669 linter: Use NonZeroUsize for pending module cache entries (#6439) (DonIsaac) - a1a2721 linter: Replace `ToString::to_string` with `CompactStr` in remaining rules (#6407) (camchenry) - c5c69d6 linter: Use `CompactStr` in `valid-title` (#6406) (camchenry) - d66e826 linter: Use `CompactStr` in `prefer-lowercase-title` (#6405) (camchenry) - 889400c linter: Use `CompactStr` for `get_node_name` in Jest rules (#6403) (camchenry) - 9906849 linter: Use `CompactStr` in `no-large-snapshots` (#6402) (camchenry) - c382ec4 linter: Use `CompactStr` in `no-hooks` (#6401) (camchenry) - 24a5d9b linter: Use `CompactStr` in `expect-expect` (#6400) (camchenry) - 71dbdad linter: Use `CompactStr` in `no-console` (#6399) (camchenry) - f5f00a1 linter: Use `CompactStr` in `no-bitwise` (#6398) (camchenry) - 62afaa9 linter/jsx-no-comment-textnodes: Remove regex for checking comment patterns (#6534) (camchenry) - b3d0cce linter/no-unescaped-entities: Add fast path to check if char should be replaced (#6594) (camchenry) - ee73f56 linter/no-unused-vars: Do not construct `Regex` for default ignore pattern (#6590) (camchenry) - 77ddab8 linter/numeric-separators-style: Replace regex with number parser (#6546) (camchenry) - 8f47cd0 linter/react: Remove regex patterns in `no-unknown-property` (#6536) (camchenry) ### Documentation - 557f941 linter: Add docs to no-unused-vars and Tester (#6558) (DonIsaac) ### Refactor - ecce5c5 linter: Improve recursive argument handling and diagnostics creation (#6513) (no-yan) - f960e9e linter: Add suggested file names for `unicorn/filename-case` (#6465) (camchenry) - 7240ee2 linter: Make advertised fix kinds consistent (#6461) (Alexander S.) - b48c368 linter: `no_global_assign` rule: reduce name lookups (#6460) (overlookmotel) - 2566ce7 linter: Remove OxlintOptions (#6098) (DonIsaac) - 002078a linter: Make Runtime's members private (#6440) (DonIsaac) - 6a0a533 linter: Move module cache logic out of Runtime (#6438) (DonIsaac) - c18c6e9 linter: Split service code into separate modules (#6437) (DonIsaac) - 5ea9ef7 linter: Improve labels and help message for `eslint/no-useless-constructor` (#6389) (DonIsaac) - 2c32dac linter/no-control-regex: Remove duplicate code (#6527) (DonIsaac) - 435a89c oxc: Remove useless `allocator.alloc(program)` calls (#6571) (Boshen) - f70e93b oxc: Ban index methods on std::str::Chars (#6075) (dalaoshu) ### Testing - a6cae98 linter: Make sure all auto-fixing rules have fixer test (#6378) (DonIsaac) - 06b09b2 linter/no-unused-vars: Enable now-passing tests (#6556) (DonIsaac) - badd11c linter/no-unused-vars: Ignored catch parameters (#6555) (DonIsaac) - 84aa2a2 linter/no-useless-constructor: Add cases for initializers in subclass constructors (#6390) (DonIsaac) --------- Co-authored-by: DonIsaac <22823424+DonIsaac@users.noreply.github.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
unicorn/filename-case
does not match behavior of original rule #6459Currently, the
unicorn/filename-case
doesn't match the behavior of the original rule. There are several issues which this PR fixes:.
).someTest.fileName.js
I have also added many of the original test cases to ensure we are more closely compatible.
This also improves the performance of just running the
unicorn/filename-case
alone by 4% (20ms total) on thevscode
codebase:Perplexingly, it seems like it might actually be even faster on the
vscode
repository, saving ~5% (70ms) with the default ruleset enabled as well. Maybe my laptop was just running a bit faster.