Skip to content

Froguard/eslint-plugin-no-methods

Repository files navigation

eslint-plugin-no-methods

Disallow using the method methods

version  Build Status  GitHub issues  license

Installation

You'll first need to install ESLint:

$ npm i eslint --save-dev

Next, install eslint-plugin-no-methods:

$ npm install eslint-plugin-no-methods --save-dev

Note: If you installed ESLint globally (using the -g flag) then you must also install eslint-plugin-no-methods globally.

Usage

Add no-methods to the plugins section of your .eslintrc configuration file. You can omit the eslint-plugin- prefix:

{
    "plugins": [
        "no-methods"
    ]
}

Then configure the rules you want to use under the rules section.

{
  "rules": {
    "no-methods/no-includes": [
      "error", 
      {
        "ignore": ["_", "lodash", "underscore"], 
        "errMsg": "Except for _.includes, Array|String.includes is not supported!"
      }
    ],
    "no-methods/no-entries": [
      "error", 
      {"limit": ["Object"], "errMsg": "Object.entries is not supported!"}
    ],
    "no-methods/no-assign": [
      "error", 
      {"limit": ["Object"], "errMsg": "Object.assign is not supported!"}
    ],
    "no-methods/no-methods": [
      "error", 
      {
        "methods": [
          {
            "name": "method0", 
            "ignore": ["ignoreCallerName"], 
            "errMsg": "Except for ignoreCallerName.method0, method0 is not supported!"
          },
          {
            "name": "method1", 
            "ignore": ["ignoreCallerName"], 
            "errMsg": "Except for ignoreCallerName.method1, method1 is not supported!"
          },
          {
            "name": "method2", 
            "limit": ["myObj"], 
            "errMsg": "Only myObj.method2 is not supported!"
          }
        ]
      }
    ]
  }
}

ignore: none was allowed but some in ignores

limit: only some limits were disallowed, and others were allowed

You can use only one of ignore and limit in configuration.

Build-in rules

See build-in rules in doc/build-in.md

Attention

The function call expression like methodName.call(ctx, args), wasnot resolved in eslint-plugin-no-method.

The reason why plugin doesnt provide support (resolve this invoke way) is that you can always find a way to avoid this limitation。 such as

let a = {
    doSth(...args){
        console.log(args);
        //...
    }
};

let diyInvoke = (obj, methodName, ctx, ...args) => obj[methodName].apply(ctx, args);

diyInvoke(a, 'doSth', this, 1, 2, 3); 
// Correct! Even if u`ve configured 'forbidden a.doSth()' in eslint-plugin-no-methods  

Created by yeoman tool.

About

Disallow using some specical methods

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published