diff --git a/lib/rules/no-warning-comments.js b/lib/rules/no-warning-comments.js index d70bd5dd5c4..525b1d45941 100644 --- a/lib/rules/no-warning-comments.js +++ b/lib/rules/no-warning-comments.js @@ -42,7 +42,7 @@ module.exports = { ], messages: { - unexpectedComment: "Unexpected '{{matchedTerm}}' comment." + unexpectedComment: "Unexpected '{{type}}' comment: {{comment}}." } }, @@ -122,7 +122,7 @@ module.exports = { warningRegExps.forEach((regex, index) => { if (regex.test(comment)) { - matches.push(warningTerms[index]); + matches.push({ type: warningTerms[index], comment }); } }); @@ -141,12 +141,18 @@ module.exports = { const matches = commentContainsWarningTerm(node.value); - matches.forEach(matchedTerm => { + matches.forEach(({ type, comment }) => { + let commentToDisplay = comment.trim(); + + if (commentToDisplay.length >= 30) { + commentToDisplay = `${commentToDisplay.slice(0, 30)}..`; + } context.report({ node, messageId: "unexpectedComment", data: { - matchedTerm + type, + comment: `${commentToDisplay}` } }); }); diff --git a/tests/lib/rules/no-warning-comments.js b/tests/lib/rules/no-warning-comments.js index 0359b870673..77f792c79fa 100644 --- a/tests/lib/rules/no-warning-comments.js +++ b/tests/lib/rules/no-warning-comments.js @@ -43,165 +43,179 @@ ruleTester.run("no-warning-comments", rule, { { code: "// fixme", errors: [ - { messageId: "unexpectedComment", data: { matchedTerm: "fixme" } } + { messageId: "unexpectedComment", data: { type: "fixme", comment: "fixme" } } ] }, { code: "// any fixme", options: [{ location: "anywhere" }], errors: [ - { messageId: "unexpectedComment", data: { matchedTerm: "fixme" } } + { messageId: "unexpectedComment", data: { type: "fixme", comment: "any fixme" } } ] }, { code: "// any fixme", options: [{ terms: ["fixme"], location: "anywhere" }], errors: [ - { messageId: "unexpectedComment", data: { matchedTerm: "fixme" } } + { messageId: "unexpectedComment", data: { type: "fixme", comment: "any fixme" } } ] }, { code: "// any FIXME", options: [{ terms: ["fixme"], location: "anywhere" }], errors: [ - { messageId: "unexpectedComment", data: { matchedTerm: "fixme" } } + { messageId: "unexpectedComment", data: { type: "fixme", comment: "any FIXME" } } ] }, { code: "// any fIxMe", options: [{ terms: ["fixme"], location: "anywhere" }], errors: [ - { messageId: "unexpectedComment", data: { matchedTerm: "fixme" } } + { messageId: "unexpectedComment", data: { type: "fixme", comment: "any fIxMe" } } ] }, { code: "/* any fixme */", options: [{ terms: ["FIXME"], location: "anywhere" }], errors: [ - { messageId: "unexpectedComment", data: { matchedTerm: "FIXME" } } + { messageId: "unexpectedComment", data: { type: "FIXME", comment: "any fixme" } } ] }, { code: "/* any FIXME */", options: [{ terms: ["FIXME"], location: "anywhere" }], errors: [ - { messageId: "unexpectedComment", data: { matchedTerm: "FIXME" } } + { messageId: "unexpectedComment", data: { type: "FIXME", comment: "any FIXME" } } ] }, { code: "/* any fIxMe */", options: [{ terms: ["FIXME"], location: "anywhere" }], errors: [ - { messageId: "unexpectedComment", data: { matchedTerm: "FIXME" } } + { messageId: "unexpectedComment", data: { type: "FIXME", comment: "any fIxMe" } } ] }, { code: "// any fixme or todo", options: [{ terms: ["fixme", "todo"], location: "anywhere" }], errors: [ - { messageId: "unexpectedComment", data: { matchedTerm: "fixme" } }, - { messageId: "unexpectedComment", data: { matchedTerm: "todo" } } + { messageId: "unexpectedComment", data: { type: "fixme", comment: "any fixme or todo" } }, + { messageId: "unexpectedComment", data: { type: "todo", comment: "any fixme or todo" } } ] }, { code: "/* any fixme or todo */", options: [{ terms: ["fixme", "todo"], location: "anywhere" }], errors: [ - { messageId: "unexpectedComment", data: { matchedTerm: "fixme" } }, - { messageId: "unexpectedComment", data: { matchedTerm: "todo" } } + { messageId: "unexpectedComment", data: { type: "fixme", comment: "any fixme or todo" } }, + { messageId: "unexpectedComment", data: { type: "todo", comment: "any fixme or todo" } } ] }, { code: "/* any fixme or todo */", options: [{ location: "anywhere" }], errors: [ - { messageId: "unexpectedComment", data: { matchedTerm: "todo" } }, - { messageId: "unexpectedComment", data: { matchedTerm: "fixme" } } + { messageId: "unexpectedComment", data: { type: "todo", comment: "any fixme or todo" } }, + { messageId: "unexpectedComment", data: { type: "fixme", comment: "any fixme or todo" } } ] }, { code: "/* fixme and todo */", errors: [ - { messageId: "unexpectedComment", data: { matchedTerm: "fixme" } } + { messageId: "unexpectedComment", data: { type: "fixme", comment: "fixme and todo" } } ] }, { code: "/* fixme and todo */", options: [{ location: "anywhere" }], errors: [ - { messageId: "unexpectedComment", data: { matchedTerm: "todo" } }, - { messageId: "unexpectedComment", data: { matchedTerm: "fixme" } } + { messageId: "unexpectedComment", data: { type: "todo", comment: "fixme and todo" } }, + { messageId: "unexpectedComment", data: { type: "fixme", comment: "fixme and todo" } } ] }, { code: "/* any fixme */", options: [{ location: "anywhere" }], errors: [ - { messageId: "unexpectedComment", data: { matchedTerm: "fixme" } } + { messageId: "unexpectedComment", data: { type: "fixme", comment: "any fixme" } } ] }, { code: "/* fixme! */", options: [{ terms: ["fixme"] }], errors: [ - { messageId: "unexpectedComment", data: { matchedTerm: "fixme" } } + { messageId: "unexpectedComment", data: { type: "fixme", comment: "fixme!" } } ] }, { code: "// regex [litera|$]", options: [{ terms: ["[litera|$]"], location: "anywhere" }], errors: [ - { messageId: "unexpectedComment", data: { matchedTerm: "[litera|$]" } } + { messageId: "unexpectedComment", data: { type: "[litera|$]", comment: "regex [litera|$]" } } ] }, { code: "/* eslint one-var: 2 */", options: [{ terms: ["eslint"] }], errors: [ - { messageId: "unexpectedComment", data: { matchedTerm: "eslint" } } + { messageId: "unexpectedComment", data: { type: "eslint", comment: "eslint one-var: 2" } } ] }, { code: "/* eslint one-var: 2 */", options: [{ terms: ["one"], location: "anywhere" }], errors: [ - { messageId: "unexpectedComment", data: { matchedTerm: "one" } } + { messageId: "unexpectedComment", data: { type: "one", comment: "eslint one-var: 2" } } ] }, { code: "/* any block comment with TODO, FIXME or XXX */", options: [{ location: "anywhere" }], errors: [ - { messageId: "unexpectedComment", data: { matchedTerm: "todo" } }, - { messageId: "unexpectedComment", data: { matchedTerm: "fixme" } }, - { messageId: "unexpectedComment", data: { matchedTerm: "xxx" } } + { messageId: "unexpectedComment", data: { type: "todo", comment: "any block comment with TODO, F.." } }, + { messageId: "unexpectedComment", data: { type: "fixme", comment: "any block comment with TODO, F.." } }, + { messageId: "unexpectedComment", data: { type: "xxx", comment: "any block comment with TODO, F.." } } ] }, { code: "/* any block comment with (TODO, FIXME's or XXX!) */", options: [{ location: "anywhere" }], errors: [ - { messageId: "unexpectedComment", data: { matchedTerm: "todo" } }, - { messageId: "unexpectedComment", data: { matchedTerm: "fixme" } }, - { messageId: "unexpectedComment", data: { matchedTerm: "xxx" } } + { messageId: "unexpectedComment", data: { type: "todo", comment: "any block comment with (TODO, .." } }, + { messageId: "unexpectedComment", data: { type: "fixme", comment: "any block comment with (TODO, .." } }, + { messageId: "unexpectedComment", data: { type: "xxx", comment: "any block comment with (TODO, .." } } ] }, { code: "/** \n *any block comment \n*with (TODO, FIXME's or XXX!) **/", options: [{ location: "anywhere" }], errors: [ - { messageId: "unexpectedComment", data: { matchedTerm: "todo" } }, - { messageId: "unexpectedComment", data: { matchedTerm: "fixme" } }, - { messageId: "unexpectedComment", data: { matchedTerm: "xxx" } } + { messageId: "unexpectedComment", data: { type: "todo", comment: "* \n *any block comment \n*with .." } }, + { messageId: "unexpectedComment", data: { type: "fixme", comment: "* \n *any block comment \n*with .." } }, + { messageId: "unexpectedComment", data: { type: "xxx", comment: "* \n *any block comment \n*with .." } } ] }, { code: "// any comment with TODO, FIXME or XXX", options: [{ location: "anywhere" }], errors: [ - { messageId: "unexpectedComment", data: { matchedTerm: "todo" } }, - { messageId: "unexpectedComment", data: { matchedTerm: "fixme" } }, - { messageId: "unexpectedComment", data: { matchedTerm: "xxx" } } + { messageId: "unexpectedComment", data: { type: "todo", comment: "any comment with TODO, FIXME o.." } }, + { messageId: "unexpectedComment", data: { type: "fixme", comment: "any comment with TODO, FIXME o.." } }, + { messageId: "unexpectedComment", data: { type: "xxx", comment: "any comment with TODO, FIXME o.." } } + ] + }, + { + code: "// TODO: something small", + options: [{ location: "anywhere" }], + errors: [ + { messageId: "unexpectedComment", data: { type: "todo", comment: "TODO: something small" } } + ] + }, + { + code: "// TODO: something really longer than 30 characters", + options: [{ location: "anywhere" }], + errors: [ + { messageId: "unexpectedComment", data: { type: "todo", comment: "TODO: something really longer .." } } ] } ]