From 487c88b66bb338e5197a03649c70436488737043 Mon Sep 17 00:00:00 2001 From: Matthew Congrove Date: Tue, 7 Nov 2023 18:07:21 -0600 Subject: [PATCH 1/2] Allows require-description to be turned off for specific rules --- docs/rules/require-description.md | 8 ++++++++ lib/rules/require-description.js | 14 ++++++++++++++ tests/lib/rules/require-description.js | 4 ++++ 3 files changed, 26 insertions(+) diff --git a/docs/rules/require-description.md b/docs/rules/require-description.md index b917e79..e371998 100644 --- a/docs/rules/require-description.md +++ b/docs/rules/require-description.md @@ -66,6 +66,14 @@ You can specify ignored directive-comments. - `"global"` - `"globals"` +You can specify rules that don't require directive-comments. + +```json +{ + "@eslint-community/eslint-comments/require-description": ["error", {"disableForRules": []}] +} +``` + ## Further Reading - [ESLint RFCs - Description in directive comments] diff --git a/lib/rules/require-description.js b/lib/rules/require-description.js index b751aef..f0154df 100644 --- a/lib/rules/require-description.js +++ b/lib/rules/require-description.js @@ -42,6 +42,14 @@ module.exports = { additionalItems: false, uniqueItems: true, }, + disableForRules: { + type: 'array', + items: { + type: 'string', + }, + additionalItems: false, + uniqueItems: true, + }, }, additionalProperties: false, }, @@ -54,6 +62,9 @@ module.exports = { const ignores = new Set( (context.options[0] && context.options[0].ignore) || [] ) + const disableForRules = new Set( + (context.options[0] && context.options[0].disableForRules) || [], + ); return { Program() { @@ -66,6 +77,9 @@ module.exports = { if (ignores.has(directiveComment.kind)) { continue } + if (disableForRules.has(directiveComment.ruleId)) { + continue; + } if (!directiveComment.description) { context.report({ loc: utils.toForceLocation(comment.loc), diff --git a/tests/lib/rules/require-description.js b/tests/lib/rules/require-description.js index f5f7325..68c12d3 100644 --- a/tests/lib/rules/require-description.js +++ b/tests/lib/rules/require-description.js @@ -74,6 +74,10 @@ tester.run("require-description", rule, { code: "/* globals */", options: [{ ignore: ["globals"] }], }, + { + code: "/* eslint-disable no-undef */", + options: [{ disableForRules: ["no-undef"] }], + }, ], invalid: [ { From c50c636082e8b172b769d4a13210c8d6dda11e1f Mon Sep 17 00:00:00 2001 From: Matthew Congrove Date: Fri, 10 Nov 2023 15:15:15 -0600 Subject: [PATCH 2/2] Use correct prop; match Prettier --- lib/rules/require-description.js | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/lib/rules/require-description.js b/lib/rules/require-description.js index f0154df..2662cdd 100644 --- a/lib/rules/require-description.js +++ b/lib/rules/require-description.js @@ -42,14 +42,14 @@ module.exports = { additionalItems: false, uniqueItems: true, }, - disableForRules: { - type: 'array', - items: { - type: 'string', - }, - additionalItems: false, - uniqueItems: true, - }, + disableForRules: { + type: "array", + items: { + type: "string", + }, + additionalItems: false, + uniqueItems: true, + }, }, additionalProperties: false, }, @@ -63,8 +63,8 @@ module.exports = { (context.options[0] && context.options[0].ignore) || [] ) const disableForRules = new Set( - (context.options[0] && context.options[0].disableForRules) || [], - ); + (context.options[0] && context.options[0].disableForRules) || [] + ) return { Program() { @@ -77,9 +77,9 @@ module.exports = { if (ignores.has(directiveComment.kind)) { continue } - if (disableForRules.has(directiveComment.ruleId)) { - continue; - } + if (disableForRules.has(directiveComment.value)) { + continue + } if (!directiveComment.description) { context.report({ loc: utils.toForceLocation(comment.loc),