From 73f6f9eabb1fe5baf14119a1c1d7c9179269bc94 Mon Sep 17 00:00:00 2001 From: "weiran.zsd" Date: Sat, 19 Jan 2019 00:07:55 +0800 Subject: [PATCH] Chore: use messages in some rules (refs #9870) --- lib/rules/no-func-assign.js | 7 +++++-- lib/rules/no-global-assign.js | 7 +++++-- lib/rules/no-implicit-coercion.js | 5 ++++- lib/rules/no-implied-eval.js | 7 +++++-- lib/rules/no-inner-declarations.js | 7 +++++-- lib/rules/object-curly-newline.js | 16 +++++++++++----- lib/rules/require-await.js | 7 +++++-- lib/rules/semi-spacing.js | 16 +++++++++++----- lib/rules/semi-style.js | 11 +++++------ lib/rules/semi.js | 12 ++++++++---- lib/rules/sort-imports.js | 11 ++++++++--- lib/rules/sort-vars.js | 5 ++++- lib/rules/space-before-blocks.js | 10 +++++++--- lib/rules/space-before-function-paren.js | 10 +++++++--- lib/rules/space-in-parens.js | 20 ++++++++++---------- lib/rules/space-infix-ops.js | 7 +++++-- lib/rules/spaced-comment.js | 5 ++++- 17 files changed, 109 insertions(+), 54 deletions(-) diff --git a/lib/rules/no-func-assign.js b/lib/rules/no-func-assign.js index ae96ab01f43..2e480cb396c 100644 --- a/lib/rules/no-func-assign.js +++ b/lib/rules/no-func-assign.js @@ -22,7 +22,10 @@ module.exports = { url: "https://eslint.org/docs/rules/no-func-assign" }, - schema: [] + schema: [], + messages: { + unexpected: "'{{name}}' is a function." + } }, create(context) { @@ -34,7 +37,7 @@ module.exports = { */ function checkReference(references) { astUtils.getModifyingReferences(references).forEach(reference => { - context.report({ node: reference.identifier, message: "'{{name}}' is a function.", data: { name: reference.identifier.name } }); + context.report({ node: reference.identifier, messageId: "unexpected", data: { name: reference.identifier.name } }); }); } diff --git a/lib/rules/no-global-assign.js b/lib/rules/no-global-assign.js index 73f36b25e47..a4ec505bd6b 100644 --- a/lib/rules/no-global-assign.js +++ b/lib/rules/no-global-assign.js @@ -32,7 +32,10 @@ module.exports = { }, additionalProperties: false } - ] + ], + messages: { + unexpected: "Read-only global '{{name}}' should not be modified." + } }, create(context) { @@ -60,7 +63,7 @@ module.exports = { ) { context.report({ node: identifier, - message: "Read-only global '{{name}}' should not be modified.", + messageId: "unexpected", data: identifier }); } diff --git a/lib/rules/no-implicit-coercion.js b/lib/rules/no-implicit-coercion.js index 6483af0229f..ec928e6172a 100644 --- a/lib/rules/no-implicit-coercion.js +++ b/lib/rules/no-implicit-coercion.js @@ -187,7 +187,10 @@ module.exports = { } }, additionalProperties: false - }] + }], + messages: { + unexpected: "use `{{recommendation}}` instead." + } }, create(context) { diff --git a/lib/rules/no-implied-eval.js b/lib/rules/no-implied-eval.js index f2f6f9cea4f..937128550dd 100644 --- a/lib/rules/no-implied-eval.js +++ b/lib/rules/no-implied-eval.js @@ -20,7 +20,10 @@ module.exports = { url: "https://eslint.org/docs/rules/no-implied-eval" }, - schema: [] + schema: [], + messages: { + unexpected: "Implied eval. Consider passing a function instead of a string." + } }, create(context) { @@ -108,7 +111,7 @@ module.exports = { // remove the entire substack, to avoid duplicate reports const substack = impliedEvalAncestorsStack.pop(); - context.report({ node: substack[0], message: "Implied eval. Consider passing a function instead of a string." }); + context.report({ node: substack[0], messageId: "unexpected" }); } } diff --git a/lib/rules/no-inner-declarations.js b/lib/rules/no-inner-declarations.js index 60508d3e864..3dd5f338061 100644 --- a/lib/rules/no-inner-declarations.js +++ b/lib/rules/no-inner-declarations.js @@ -24,7 +24,10 @@ module.exports = { { enum: ["functions", "both"] } - ] + ], + messages: { + unexpected: "Move {{type}} declaration to {{body}} root." + } }, create(context) { @@ -68,7 +71,7 @@ module.exports = { if (!valid) { context.report({ node, - message: "Move {{type}} declaration to {{body}} root.", + messageId: "unexpected", data: { type: (node.type === "FunctionDeclaration" ? "function" : "variable"), body: (body.type === "Program" ? "program" : "function body") diff --git a/lib/rules/object-curly-newline.js b/lib/rules/object-curly-newline.js index d1a6bc20f63..d0937353dd1 100644 --- a/lib/rules/object-curly-newline.js +++ b/lib/rules/object-curly-newline.js @@ -162,7 +162,13 @@ module.exports = { } ] } - ] + ], + messages: { + expectedBeforeClosing: "Expected a line break before this closing brace.", + expectedAfterOpening: "Expected a line break after this opening brace.", + unexpectedBeforeClosing: "Unexpected line break before this closing brace.", + unexpectedAfterOpening: "Unexpected line break after this opening brace." + } }, create(context) { @@ -218,7 +224,7 @@ module.exports = { if (needsLineBreaks) { if (astUtils.isTokenOnSameLine(openBrace, first)) { context.report({ - message: "Expected a line break after this opening brace.", + messageId: "expectedAfterOpening", node, loc: openBrace.loc.start, fix(fixer) { @@ -232,7 +238,7 @@ module.exports = { } if (astUtils.isTokenOnSameLine(last, closeBrace)) { context.report({ - message: "Expected a line break before this closing brace.", + messageId: "expectedBeforeClosing", node, loc: closeBrace.loc.start, fix(fixer) { @@ -254,7 +260,7 @@ module.exports = { (consistent && hasLineBreakBetweenOpenBraceAndFirst && !hasLineBreakBetweenCloseBraceAndLast) ) { context.report({ - message: "Unexpected line break after this opening brace.", + messageId: "unexpectedAfterOpening", node, loc: openBrace.loc.start, fix(fixer) { @@ -274,7 +280,7 @@ module.exports = { (consistent && !hasLineBreakBetweenOpenBraceAndFirst && hasLineBreakBetweenCloseBraceAndLast) ) { context.report({ - message: "Unexpected line break before this closing brace.", + messageId: "unexpectedBeforeClosing", node, loc: closeBrace.loc.start, fix(fixer) { diff --git a/lib/rules/require-await.js b/lib/rules/require-await.js index 5e614c50251..1f7d41f11ca 100644 --- a/lib/rules/require-await.js +++ b/lib/rules/require-await.js @@ -40,7 +40,10 @@ module.exports = { url: "https://eslint.org/docs/rules/require-await" }, - schema: [] + schema: [], + messages: { + expected: "{{name}} has no 'await' expression." + } }, create(context) { @@ -71,7 +74,7 @@ module.exports = { context.report({ node, loc: astUtils.getFunctionHeadLoc(node, sourceCode), - message: "{{name}} has no 'await' expression.", + messageId: "expected", data: { name: capitalizeFirstLetter( astUtils.getFunctionNameWithKind(node) diff --git a/lib/rules/semi-spacing.js b/lib/rules/semi-spacing.js index 3a6d8a052a3..49321c5e71b 100644 --- a/lib/rules/semi-spacing.js +++ b/lib/rules/semi-spacing.js @@ -39,7 +39,13 @@ module.exports = { }, additionalProperties: false } - ] + ], + messages: { + missingBefore: "Missing whitespace before semicolon.", + missingAfter: "Missing whitespace after semicolon.", + unexpectedBefore: "Unexpected whitespace before semicolon.", + unexpectedAfter: "Unexpected whitespace after semicolon." + } }, create(context) { @@ -124,7 +130,7 @@ module.exports = { context.report({ node, loc: location, - message: "Unexpected whitespace before semicolon.", + messageId: "unexpectedBefore", fix(fixer) { const tokenBefore = sourceCode.getTokenBefore(token); @@ -137,7 +143,7 @@ module.exports = { context.report({ node, loc: location, - message: "Missing whitespace before semicolon.", + messageId: "missingBefore", fix(fixer) { return fixer.insertTextBefore(token, " "); } @@ -151,7 +157,7 @@ module.exports = { context.report({ node, loc: location, - message: "Unexpected whitespace after semicolon.", + messageId: "unexpectedAfter", fix(fixer) { const tokenAfter = sourceCode.getTokenAfter(token); @@ -164,7 +170,7 @@ module.exports = { context.report({ node, loc: location, - message: "Missing whitespace after semicolon.", + messageId: "missingAfter", fix(fixer) { return fixer.insertTextAfter(token, " "); } diff --git a/lib/rules/semi-style.js b/lib/rules/semi-style.js index dd76b68f82b..18f0c752568 100644 --- a/lib/rules/semi-style.js +++ b/lib/rules/semi-style.js @@ -75,6 +75,10 @@ module.exports = { }, schema: [{ enum: ["last", "first"] }], + messages: { + expectedBeginning: "Expected this semicolon to be at the beginning of the next line.", + expectedEnd: "Expected this semicolon to be at the end of the previous line." + }, fixable: "whitespace" }, @@ -97,12 +101,7 @@ module.exports = { if ((expected === "last" && !prevIsSameLine) || (expected === "first" && !nextIsSameLine)) { context.report({ loc: semiToken.loc, - message: "Expected this semicolon to be at {{pos}}.", - data: { - pos: (expected === "last") - ? "the end of the previous line" - : "the beginning of the next line" - }, + messageId: expected === "last" ? "expectedEnd" : "expectedBeginning", fix(fixer) { if (prevToken && nextToken && sourceCode.commentsExistBetween(prevToken, nextToken)) { return null; diff --git a/lib/rules/semi.js b/lib/rules/semi.js index 3a6df39c771..da1b347ed2f 100644 --- a/lib/rules/semi.js +++ b/lib/rules/semi.js @@ -67,6 +67,10 @@ module.exports = { maxItems: 2 } ] + }, + messages: { + missing: "Missing semicolon.", + unexpected: "Extra semicolon." } }, @@ -91,18 +95,18 @@ module.exports = { */ function report(node, missing) { const lastToken = sourceCode.getLastToken(node); - let message, + let messageId, fix, loc = lastToken.loc; if (!missing) { - message = "Missing semicolon."; + messageId = "missing"; loc = loc.end; fix = function(fixer) { return fixer.insertTextAfter(lastToken, ";"); }; } else { - message = "Extra semicolon."; + messageId = "unexpected"; loc = loc.start; fix = function(fixer) { @@ -120,7 +124,7 @@ module.exports = { context.report({ node, loc, - message, + messageId, fix }); diff --git a/lib/rules/sort-imports.js b/lib/rules/sort-imports.js index 05e643ca061..37c6c8d5dec 100644 --- a/lib/rules/sort-imports.js +++ b/lib/rules/sort-imports.js @@ -49,6 +49,11 @@ module.exports = { additionalProperties: false } ], + messages: { + unsortedSyntax: "Expected '{{syntaxA}}' syntax before '{{syntaxB}}' syntax.", + unsortedImports: "Imports should be sorted alphabetically.", + unsortedMember: "Member '{{memberName}}' of the import declaration should be sorted alphabetically." + }, fixable: "code" }, @@ -133,7 +138,7 @@ module.exports = { if (currentMemberSyntaxGroupIndex < previousMemberSyntaxGroupIndex) { context.report({ node, - message: "Expected '{{syntaxA}}' syntax before '{{syntaxB}}' syntax.", + messageId: "unsortedSyntax", data: { syntaxA: memberSyntaxSortOrder[currentMemberSyntaxGroupIndex], syntaxB: memberSyntaxSortOrder[previousMemberSyntaxGroupIndex] @@ -147,7 +152,7 @@ module.exports = { ) { context.report({ node, - message: "Imports should be sorted alphabetically." + messageId: "unsortedImports" }); } } @@ -164,7 +169,7 @@ module.exports = { if (firstUnsortedIndex !== -1) { context.report({ node: importSpecifiers[firstUnsortedIndex], - message: "Member '{{memberName}}' of the import declaration should be sorted alphabetically.", + messageId: "unsortedMember", data: { memberName: importSpecifiers[firstUnsortedIndex].local.name }, fix(fixer) { if (importSpecifiers.some(specifier => diff --git a/lib/rules/sort-vars.js b/lib/rules/sort-vars.js index e85c6534e3a..9813aaf136d 100644 --- a/lib/rules/sort-vars.js +++ b/lib/rules/sort-vars.js @@ -32,6 +32,9 @@ module.exports = { additionalProperties: false } ], + messages: { + unsorted: "Variables within the same declaration block should be sorted alphabetically." + }, fixable: "code" }, @@ -56,7 +59,7 @@ module.exports = { if (currentVariableName < lastVariableName) { context.report({ node: decl, - message: "Variables within the same declaration block should be sorted alphabetically.", + messageId: "unsorted", fix(fixer) { if (unfixable || fixed) { return null; diff --git a/lib/rules/space-before-blocks.js b/lib/rules/space-before-blocks.js index 872338effc2..61cf7894a69 100644 --- a/lib/rules/space-before-blocks.js +++ b/lib/rules/space-before-blocks.js @@ -47,7 +47,11 @@ module.exports = { } ] } - ] + ], + messages: { + missing: "Missing space before opening brace.", + unexpected: "Unexpected space before opening brace." + } }, create(context) { @@ -115,7 +119,7 @@ module.exports = { if (requireSpace && !hasSpace) { context.report({ node, - message: "Missing space before opening brace.", + messageId: "missing", fix(fixer) { return fixer.insertTextBefore(node, " "); } @@ -123,7 +127,7 @@ module.exports = { } else if (requireNoSpace && hasSpace) { context.report({ node, - message: "Unexpected space before opening brace.", + messageId: "unexpected", fix(fixer) { return fixer.removeRange([precedingToken.range[1], node.range[0]]); } diff --git a/lib/rules/space-before-function-paren.js b/lib/rules/space-before-function-paren.js index 64ba72bf9ea..cb3b76195e2 100644 --- a/lib/rules/space-before-function-paren.js +++ b/lib/rules/space-before-function-paren.js @@ -50,7 +50,11 @@ module.exports = { } ] } - ] + ], + messages: { + missing: "Missing space before function parentheses.", + unexpected: "Unexpected space before function parentheses." + } }, create(context) { @@ -123,14 +127,14 @@ module.exports = { context.report({ node, loc: leftToken.loc.end, - message: "Unexpected space before function parentheses.", + messageId: "unexpected", fix: fixer => fixer.removeRange([leftToken.range[1], rightToken.range[0]]) }); } else if (!hasSpacing && functionConfig === "always") { context.report({ node, loc: leftToken.loc.end, - message: "Missing space before function parentheses.", + messageId: "missing", fix: fixer => fixer.insertTextAfter(leftToken, " ") }); } diff --git a/lib/rules/space-in-parens.js b/lib/rules/space-in-parens.js index 30686626321..1e87a165bac 100644 --- a/lib/rules/space-in-parens.js +++ b/lib/rules/space-in-parens.js @@ -40,14 +40,16 @@ module.exports = { }, additionalProperties: false } - ] + ], + messages: { + missingSpace: "There must be a space inside this paren.", + rejectedSpace: "There should be no spaces inside this paren." + } }, create(context) { - const MISSING_SPACE_MESSAGE = "There must be a space inside this paren.", - REJECTED_SPACE_MESSAGE = "There should be no spaces inside this paren.", - ALWAYS = context.options[0] === "always", + const ALWAYS = context.options[0] === "always", exceptionsArrayOptions = (context.options[1] && context.options[1].exceptions) || [], options = {}; let exceptions; @@ -233,7 +235,7 @@ module.exports = { context.report({ node, loc: token.loc.start, - message: MISSING_SPACE_MESSAGE, + messageId: "missingSpace", fix(fixer) { return fixer.insertTextAfter(token, " "); } @@ -242,18 +244,16 @@ module.exports = { context.report({ node, loc: token.loc.start, - message: REJECTED_SPACE_MESSAGE, + messageId: "rejectedSpace", fix(fixer) { return fixer.removeRange([token.range[1], nextToken.range[0]]); } }); } else if (token.value === ")" && shouldCloserHaveSpace(prevToken, token)) { - - // context.report(node, token.loc.start, MISSING_SPACE_MESSAGE); context.report({ node, loc: token.loc.start, - message: MISSING_SPACE_MESSAGE, + messageId: "missingSpace", fix(fixer) { return fixer.insertTextBefore(token, " "); } @@ -262,7 +262,7 @@ module.exports = { context.report({ node, loc: token.loc.start, - message: REJECTED_SPACE_MESSAGE, + messageId: "rejectedSpace", fix(fixer) { return fixer.removeRange([prevToken.range[1], token.range[0]]); } diff --git a/lib/rules/space-infix-ops.js b/lib/rules/space-infix-ops.js index 8d1d172c669..efa4c83c92d 100644 --- a/lib/rules/space-infix-ops.js +++ b/lib/rules/space-infix-ops.js @@ -32,7 +32,10 @@ module.exports = { }, additionalProperties: false } - ] + ], + messages: { + required: "Operator '{{operator}}' must be spaced." + } }, create(context) { @@ -70,7 +73,7 @@ module.exports = { context.report({ node: mainNode, loc: culpritToken.loc.start, - message: "Operator '{{operator}}' must be spaced.", + messageId: "required", data: { operator: culpritToken.value }, diff --git a/lib/rules/spaced-comment.js b/lib/rules/spaced-comment.js index 6e469ef9403..db730fad4e6 100644 --- a/lib/rules/spaced-comment.js +++ b/lib/rules/spaced-comment.js @@ -224,7 +224,10 @@ module.exports = { }, additionalProperties: false } - ] + ], + messages: { + + } }, create(context) {