/** * @author Yosuke Ota * See LICENSE file in root directory for full license. */ "use strict" const { getAllDirectiveComments, } = require("../internal/get-all-directive-comments") const utils = require("../internal/utils") module.exports = { meta: { docs: { description: "require include descriptions in ESLint directive-comments", category: "Stylistic Issues", recommended: false, url: "https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/require-description.html", }, fixable: null, messages: { missingDescription: "Unexpected undescribed directive comment. Include descriptions to explain why the comment is necessary.", }, schema: [ { type: "object", properties: { ignore: { type: "array", items: { enum: [ "eslint", "eslint-disable", "eslint-disable-line", "eslint-disable-next-line", "eslint-enable", "eslint-env", "exported", "global", "globals", ], }, additionalItems: false, uniqueItems: true, }, }, additionalProperties: false, }, ], type: "suggestion", }, create(context) { const ignores = new Set( (context.options[0] && context.options[0].ignore) || [] ) for (const directiveComment of getAllDirectiveComments(context)) { if (ignores.has(directiveComment.kind)) { continue } if (!directiveComment.description) { context.report({ loc: utils.toForceLocation(directiveComment.loc), messageId: "missingDescription", }) } } return {} }, }