no-duplicate-disable.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /**
  2. * @author Toru Nagashima <https://github.com/mysticatea>
  3. * See LICENSE file in root directory for full license.
  4. */
  5. "use strict"
  6. const DisabledArea = require("../internal/disabled-area")
  7. const utils = require("../internal/utils")
  8. module.exports = {
  9. meta: {
  10. docs: {
  11. description: "disallow duplicate `eslint-disable` comments",
  12. category: "Best Practices",
  13. recommended: true,
  14. url:
  15. "https://mysticatea.github.io/eslint-plugin-eslint-comments/rules/no-duplicate-disable.html",
  16. },
  17. fixable: null,
  18. schema: [],
  19. type: "problem",
  20. },
  21. create(context) {
  22. const sourceCode = context.getSourceCode()
  23. const disabledArea = DisabledArea.get(sourceCode)
  24. return {
  25. Program() {
  26. for (const item of disabledArea.duplicateDisableDirectives) {
  27. context.report({
  28. loc: utils.toRuleIdLocation(item.comment, item.ruleId),
  29. message: item.ruleId
  30. ? "'{{ruleId}}' rule has been disabled already."
  31. : "ESLint rules have been disabled already.",
  32. data: item,
  33. })
  34. }
  35. },
  36. }
  37. },
  38. }