Files
renovate/tools/lint/rules/no-number-constructor.spec.ts
Jamie Tanna 021612414c fix(lint): use parseInt over Number (#45472)
* fix(lint): use `parseInt` over `Number`

As a code review comment that comes up every so often, we can add a
linting rule to enforce this check.

This also fixes any existing usages.

As this could be breaking, we can release it as a `fix`.

Co-authored-by: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>

* fixup! fix(lint): use `parseInt` over `Number`

* fixup! fix(lint): use `parseInt` over `Number`

---------

Co-authored-by: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-08-26 13:02:26 +00:00

35 lines
879 B
TypeScript

import { RuleTester } from 'oxlint/plugins-dev';
import rule from './no-number-constructor.ts';
RuleTester.describe = describe;
RuleTester.it = it;
const ruleTester = new RuleTester({
languageOptions: { parserOptions: { lang: 'ts' } },
});
ruleTester.run('no-number-constructor', rule, {
valid: [
`parseInt('42', 10);`,
// other globals with a similar name are unaffected
`NumberFormat('42');`,
// member expression callee, e.g. Number.isNaN, Number.parseInt
`Number.isNaN(value);`,
`Number.parseInt('42', 10);`,
],
invalid: [
{
code: `Number('42');`,
errors: [{ messageId: 'noNumberConstructor' }],
},
{
code: `const x = Number(someString);`,
errors: [{ messageId: 'noNumberConstructor' }],
},
{
code: `new Number('42');`,
errors: [{ messageId: 'noNumberConstructor' }],
},
],
});