Skip to content

Commit

Permalink
Update: Add automated suggestion to radix rule for parsing decimal …
Browse files Browse the repository at this point in the history
…numbers
  • Loading branch information
bmish committed Apr 2, 2021
1 parent a665b69 commit ef15628
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 9 deletions.
19 changes: 16 additions & 3 deletions lib/rules/radix.js
Expand Up @@ -82,7 +82,8 @@ module.exports = {
description: "enforce the consistent use of the radix argument when using `parseInt()`",
category: "Best Practices",
recommended: false,
url: "https://eslint.org/docs/rules/radix"
url: "https://eslint.org/docs/rules/radix",
suggestion: true
},

schema: [
Expand All @@ -95,7 +96,8 @@ module.exports = {
missingParameters: "Missing parameters.",
redundantRadix: "Redundant radix parameter.",
missingRadix: "Missing radix parameter.",
invalidRadix: "Invalid radix parameter, must be an integer between 2 and 36."
invalidRadix: "Invalid radix parameter, must be an integer between 2 and 36.",
addRadixParameter10: "Add radix parameter `10` for parsing decimal numbers."
}
},

Expand Down Expand Up @@ -123,7 +125,18 @@ module.exports = {
if (mode === MODE_ALWAYS) {
context.report({
node,
messageId: "missingRadix"
messageId: "missingRadix",
suggest: [
{
messageId: "addRadixParameter10",
fix(fixer) {
const sourceCode = context.getSourceCode();
const argText = sourceCode.getText(node.arguments[0]);

return fixer.replaceText(node.arguments[0], `${argText}, 10`);
}
}
]
});
}
break;
Expand Down
38 changes: 32 additions & 6 deletions tests/lib/rules/radix.js
Expand Up @@ -76,7 +76,8 @@ ruleTester.run("radix", rule, {
code: "parseInt(\"10\");",
errors: [{
messageId: "missingRadix",
type: "CallExpression"
type: "CallExpression",
suggestions: [{ messageId: "addRadixParameter10", output: "parseInt(\"10\", 10);" }]
}]
},
{
Expand Down Expand Up @@ -154,7 +155,8 @@ ruleTester.run("radix", rule, {
code: "Number.parseInt(\"10\");",
errors: [{
messageId: "missingRadix",
type: "CallExpression"
type: "CallExpression",
suggestions: [{ messageId: "addRadixParameter10", output: "Number.parseInt(\"10\", 10);" }]
}]
},
{
Expand Down Expand Up @@ -191,22 +193,46 @@ ruleTester.run("radix", rule, {
{
code: "parseInt?.(\"10\");",
parserOptions: { ecmaVersion: 2020 },
errors: [{ messageId: "missingRadix" }]
errors: [
{
messageId: "missingRadix",
type: "CallExpression",
suggestions: [{ messageId: "addRadixParameter10", output: "parseInt?.(\"10\", 10);" }]
}
]
},
{
code: "Number.parseInt?.(\"10\");",
parserOptions: { ecmaVersion: 2020 },
errors: [{ messageId: "missingRadix" }]
errors: [
{
messageId: "missingRadix",
type: "CallExpression",
suggestions: [{ messageId: "addRadixParameter10", output: "Number.parseInt?.(\"10\", 10);" }]
}
]
},
{
code: "Number?.parseInt(\"10\");",
parserOptions: { ecmaVersion: 2020 },
errors: [{ messageId: "missingRadix" }]
errors: [
{
messageId: "missingRadix",
type: "CallExpression",
suggestions: [{ messageId: "addRadixParameter10", output: "Number?.parseInt(\"10\", 10);" }]
}
]
},
{
code: "(Number?.parseInt)(\"10\");",
parserOptions: { ecmaVersion: 2020 },
errors: [{ messageId: "missingRadix" }]
errors: [
{
messageId: "missingRadix",
type: "CallExpression",
suggestions: [{ messageId: "addRadixParameter10", output: "(Number?.parseInt)(\"10\", 10);" }]
}
]
}
]
});

0 comments on commit ef15628

Please sign in to comment.