diff --git a/packages/eslint-plugin/docs/rules/member-naming.md b/packages/eslint-plugin/docs/rules/member-naming.md index 04c9e882c10..0d66a9f466c 100644 --- a/packages/eslint-plugin/docs/rules/member-naming.md +++ b/packages/eslint-plugin/docs/rules/member-naming.md @@ -4,7 +4,9 @@ It can be helpful to enforce naming conventions for `private` (and sometimes `pr ## Rule Details -This rule allows you to enforce conventions for class property names by their visibility. By default, it enforces nothing. +This rule allows you to enforce conventions for class property and method names by their visibility. By default, it enforces nothing. + +> Note: constructors are explicitly ignored regardless of the the regular expression options provided ## Options diff --git a/packages/eslint-plugin/src/rules/member-naming.ts b/packages/eslint-plugin/src/rules/member-naming.ts index 2efdf6ea307..1e6fcdd226e 100644 --- a/packages/eslint-plugin/src/rules/member-naming.ts +++ b/packages/eslint-plugin/src/rules/member-naming.ts @@ -75,6 +75,9 @@ export default util.createRule({ const accessibility: Modifiers = node.accessibility || 'public'; const convention = conventions[accessibility]; + const method = node as TSESTree.MethodDefinition; + if (method.kind === 'constructor') return; + if (!convention || convention.test(name)) return; context.report({ diff --git a/packages/eslint-plugin/tests/rules/member-naming.test.ts b/packages/eslint-plugin/tests/rules/member-naming.test.ts index c826600714b..96ec4b104f3 100644 --- a/packages/eslint-plugin/tests/rules/member-naming.test.ts +++ b/packages/eslint-plugin/tests/rules/member-naming.test.ts @@ -11,6 +11,14 @@ ruleTester.run('member-naming', rule, { code: `class Class { _fooBar() {} }`, options: [{ public: '^_' }], }, + { + code: `class Class { private constructor(); _fooBar() {} }`, + options: [{ private: '^_' }], + }, + { + code: `class Class { constructor() {}; _fooBar() {} }`, + options: [{ public: '^_' }], + }, { code: `class Class { public _fooBar() {} }`, options: [{ public: '^_' }],