diff --git a/crates/oxc_linter/src/rules/eslint/no_unused_vars/options.rs b/crates/oxc_linter/src/rules/eslint/no_unused_vars/options.rs index 9217bee83c74b..18db404ac131f 100644 --- a/crates/oxc_linter/src/rules/eslint/no_unused_vars/options.rs +++ b/crates/oxc_linter/src/rules/eslint/no_unused_vars/options.rs @@ -5,7 +5,7 @@ use oxc_diagnostics::OxcDiagnostic; use schemars::JsonSchema; use serde_json::Value; -/// See [ESLint - no-unused-vars config schema](https://github.com/eslint/eslint/blob/53b1ff047948e36682fade502c949f4e371e53cd/lib/rules/no-unused-vars.js#L61) +// See [ESLint - no-unused-vars config schema](https://github.com/eslint/eslint/blob/53b1ff047948e36682fade502c949f4e371e53cd/lib/rules/no-unused-vars.js#L61) #[derive(Debug, Clone, JsonSchema)] #[serde(rename_all = "camelCase")] #[must_use] diff --git a/crates/oxc_linter/src/rules/import/max_dependencies.rs b/crates/oxc_linter/src/rules/import/max_dependencies.rs index 8444e52d8d8ec..94a2ad22fe77f 100644 --- a/crates/oxc_linter/src/rules/import/max_dependencies.rs +++ b/crates/oxc_linter/src/rules/import/max_dependencies.rs @@ -17,7 +17,7 @@ fn max_dependencies_diagnostic>>( .with_label(span) } -/// +// #[derive(Debug, Default, Clone)] pub struct MaxDependencies(Box); diff --git a/crates/oxc_linter/src/rules/import/named.rs b/crates/oxc_linter/src/rules/import/named.rs index e3d1f1f2505cb..d9f55c69fae98 100644 --- a/crates/oxc_linter/src/rules/import/named.rs +++ b/crates/oxc_linter/src/rules/import/named.rs @@ -14,7 +14,7 @@ fn named_diagnostic(imported_name: &str, module_name: &str, span: Span) -> OxcDi .with_label(span) } -/// +// #[derive(Debug, Default, Clone)] pub struct Named; diff --git a/crates/oxc_linter/src/rules/import/namespace.rs b/crates/oxc_linter/src/rules/import/namespace.rs index 6afe83c049c85..a4cd7957df7e6 100644 --- a/crates/oxc_linter/src/rules/import/namespace.rs +++ b/crates/oxc_linter/src/rules/import/namespace.rs @@ -47,7 +47,7 @@ fn assignment(span: Span, namespace_name: &str) -> OxcDiagnostic { .with_label(span) } -/// +// #[derive(Debug, Default, Clone, JsonSchema, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct Namespace { diff --git a/crates/oxc_linter/src/rules/import/no_absolute_path.rs b/crates/oxc_linter/src/rules/import/no_absolute_path.rs index 993d8d02de033..c87da4fe917ad 100644 --- a/crates/oxc_linter/src/rules/import/no_absolute_path.rs +++ b/crates/oxc_linter/src/rules/import/no_absolute_path.rs @@ -22,7 +22,7 @@ fn no_absolute_path_diagnostic(span: Span) -> OxcDiagnostic { OxcDiagnostic::warn("Do not import modules using an absolute path").with_label(span) } -/// +// #[derive(Debug, Clone, JsonSchema, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct NoAbsolutePath { diff --git a/crates/oxc_linter/src/rules/import/no_commonjs.rs b/crates/oxc_linter/src/rules/import/no_commonjs.rs index 18959973cfcc0..33201ad6a568f 100644 --- a/crates/oxc_linter/src/rules/import/no_commonjs.rs +++ b/crates/oxc_linter/src/rules/import/no_commonjs.rs @@ -126,6 +126,7 @@ fn is_conditional(parent_node: &AstNode, ctx: &LintContext) -> bool { } } } + /// impl Rule for NoCommonjs { fn from_configuration(value: serde_json::Value) -> Self { diff --git a/crates/oxc_linter/src/rules/import/no_cycle.rs b/crates/oxc_linter/src/rules/import/no_cycle.rs index 8fd48693933fd..6ce5239eaef4f 100644 --- a/crates/oxc_linter/src/rules/import/no_cycle.rs +++ b/crates/oxc_linter/src/rules/import/no_cycle.rs @@ -20,7 +20,7 @@ fn no_cycle_diagnostic(span: Span, paths: &str) -> OxcDiagnostic { .with_label(span) } -/// +// #[derive(Debug, Clone, JsonSchema, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct NoCycle { diff --git a/crates/oxc_linter/src/rules/import/no_duplicates.rs b/crates/oxc_linter/src/rules/import/no_duplicates.rs index 68d44638d032c..c60b2ab3f8ba6 100644 --- a/crates/oxc_linter/src/rules/import/no_duplicates.rs +++ b/crates/oxc_linter/src/rules/import/no_duplicates.rs @@ -37,7 +37,7 @@ where .with_help("Merge these imports into a single import statement") } -/// +// #[derive(Debug, Default, Clone, JsonSchema, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct NoDuplicates { diff --git a/crates/oxc_linter/src/rules/import/no_mutable_exports.rs b/crates/oxc_linter/src/rules/import/no_mutable_exports.rs index 27b09dd57011e..edf306d675967 100644 --- a/crates/oxc_linter/src/rules/import/no_mutable_exports.rs +++ b/crates/oxc_linter/src/rules/import/no_mutable_exports.rs @@ -17,7 +17,7 @@ fn no_mutable_exports_diagnostic(span: Span, kind: VariableDeclarationKind) -> O .with_label(span) } -/// +// #[derive(Debug, Default, Clone)] pub struct NoMutableExports; diff --git a/crates/oxc_linter/src/rules/import/no_named_as_default.rs b/crates/oxc_linter/src/rules/import/no_named_as_default.rs index 6156f32d8fb35..287d95c71c4eb 100644 --- a/crates/oxc_linter/src/rules/import/no_named_as_default.rs +++ b/crates/oxc_linter/src/rules/import/no_named_as_default.rs @@ -14,7 +14,7 @@ fn no_named_as_default_diagnostic( .with_label(span) } -/// +// #[derive(Debug, Default, Clone)] pub struct NoNamedAsDefault; diff --git a/crates/oxc_linter/src/rules/import/no_named_as_default_member.rs b/crates/oxc_linter/src/rules/import/no_named_as_default_member.rs index 3186f1c0d0d4d..737ec6d35364c 100644 --- a/crates/oxc_linter/src/rules/import/no_named_as_default_member.rs +++ b/crates/oxc_linter/src/rules/import/no_named_as_default_member.rs @@ -21,7 +21,7 @@ fn no_named_as_default_member_diagnostic( .with_label(span) } -/// +// #[derive(Debug, Default, Clone)] pub struct NoNamedAsDefaultMember; diff --git a/crates/oxc_linter/src/rules/jest/no_jasmine_globals.rs b/crates/oxc_linter/src/rules/jest/no_jasmine_globals.rs index 05bab6d6adc26..41c475a874e46 100644 --- a/crates/oxc_linter/src/rules/jest/no_jasmine_globals.rs +++ b/crates/oxc_linter/src/rules/jest/no_jasmine_globals.rs @@ -20,7 +20,7 @@ fn no_jasmine_globals_diagnostic( .with_label(span) } -/// +// #[derive(Debug, Default, Clone)] pub struct NoJasmineGlobals; diff --git a/crates/oxc_linter/src/rules/jest/no_mocks_import.rs b/crates/oxc_linter/src/rules/jest/no_mocks_import.rs index 7a388aedd4ade..939c0e8dfbf79 100644 --- a/crates/oxc_linter/src/rules/jest/no_mocks_import.rs +++ b/crates/oxc_linter/src/rules/jest/no_mocks_import.rs @@ -13,7 +13,7 @@ fn no_mocks_import_diagnostic(span: Span) -> OxcDiagnostic { .with_label(span) } -/// +// #[derive(Debug, Default, Clone)] pub struct NoMocksImport; diff --git a/crates/oxc_linter/src/rules/typescript/consistent_type_imports.rs b/crates/oxc_linter/src/rules/typescript/consistent_type_imports.rs index 25029da21f7cb..2218af043d8cf 100644 --- a/crates/oxc_linter/src/rules/typescript/consistent_type_imports.rs +++ b/crates/oxc_linter/src/rules/typescript/consistent_type_imports.rs @@ -49,7 +49,7 @@ impl Deref for ConsistentTypeImports { } } -/// +// #[derive(Debug, Clone, JsonSchema, Deserialize)] #[serde(rename_all = "camelCase", default)] pub struct ConsistentTypeImportsConfig { diff --git a/tasks/website_linter/src/rules/doc_page.rs b/tasks/website_linter/src/rules/doc_page.rs index 096a8afb5792d..646c700639762 100644 --- a/tasks/website_linter/src/rules/doc_page.rs +++ b/tasks/website_linter/src/rules/doc_page.rs @@ -117,8 +117,18 @@ const source = `{}`;{} // rule configuration if let Some(Schema::Object(schema)) = resolved { let config_section = self.rule_config(schema); + // Pull rule configuration description from the schema metadata, if present. + // The schemars `SchemaObject` may contain a `metadata` block with an + // optional `description` field. If present, include it above the + // configuration listing so readers see the intent for the config. + let section_description = schema + .metadata + .as_ref() + .and_then(|m| m.description.as_ref()) + .map(|desc| format!("\n{desc}\n")) + .unwrap_or_default(); if !config_section.trim().is_empty() { - writeln!(self.page, "\n## Configuration\n{config_section}")?; + writeln!(self.page, "\n## Configuration\n{section_description}{config_section}")?; } }