From c6f6bbfa35f8360a417e70ade014a1be08e47b08 Mon Sep 17 00:00:00 2001 From: Cam McHenry Date: Tue, 21 Oct 2025 23:11:40 -0400 Subject: [PATCH] perf(linter): small optimizations for file path checking --- .../oxc_linter/src/rules/jsdoc/check_tag_names.rs | 2 +- .../src/rules/react/only_export_components.rs | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/crates/oxc_linter/src/rules/jsdoc/check_tag_names.rs b/crates/oxc_linter/src/rules/jsdoc/check_tag_names.rs index 42147102dd089..1fae8db3a0fd8 100644 --- a/crates/oxc_linter/src/rules/jsdoc/check_tag_names.rs +++ b/crates/oxc_linter/src/rules/jsdoc/check_tag_names.rs @@ -237,7 +237,7 @@ impl Rule for CheckTagNames { let config = &self.0; let user_defined_tags = settings.list_user_defined_tag_names(); - let is_dts = ctx.file_path().to_str().is_some_and(|p| p.ends_with(".d.ts")); + let is_dts = ctx.source_type().is_typescript_definition(); // NOTE: The original rule seems to check `declare` context by visiting AST nodes. // https://github.com/gajus/eslint-plugin-jsdoc/blob/e343ab5b1efaa59b07c600138aee070b4083857e/src/rules/checkTagNames.js#L121 // But... diff --git a/crates/oxc_linter/src/rules/react/only_export_components.rs b/crates/oxc_linter/src/rules/react/only_export_components.rs index ba337d31e6c2c..8d7762f1a384f 100644 --- a/crates/oxc_linter/src/rules/react/only_export_components.rs +++ b/crates/oxc_linter/src/rules/react/only_export_components.rs @@ -255,22 +255,26 @@ impl Rule for OnlyExportComponents { } fn should_run(&self, ctx: &crate::context::ContextHost) -> bool { - let Some(filename) = ctx.file_path().file_name().and_then(|s| s.to_str()) else { - return false; - }; - let should_scan = { let ext = ctx.file_extension(); matches!(ext, Some(e) if e.eq_ignore_ascii_case("tsx") || e.eq_ignore_ascii_case("jsx")) || (self.check_js && matches!(ext, Some(e) if e.eq_ignore_ascii_case("js"))) }; + if !should_scan { + return false; + } + + let Some(filename) = ctx.file_path().file_name().and_then(|s| s.to_str()) else { + return false; + }; + let should_skip = filename.contains(".test.") || filename.contains(".spec.") || filename.contains(".cy.") || filename.contains(".stories."); - should_scan && !should_skip + !should_skip } fn run_once(&self, ctx: &LintContext<'_>) {