Samisdat/not-fs

View on GitHub

Showing 135 of 135 total issues

Function read has 6 arguments (exceeds 4 allowed). Consider refactoring.
Open

unrealFs.read = function(fd, buffer, offset, length, position, callback){
Severity: Minor
Found in lib/unreal-methods.js - About 45 mins to fix

    Function readSync has 5 arguments (exceeds 4 allowed). Consider refactoring.
    Open

    unrealFs.readSync = function(fd, buffer, offset, length, position){
    Severity: Minor
    Found in lib/unreal-methods.js - About 35 mins to fix

      Function createMissingDirs has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
      Open

      Tree.prototype.createMissingDirs = function(dirPath){
      
          var parts = dirPath.split(path.sep);
      
          for (var i = 0, x = parts.length; i <= x; i += 1){
      Severity: Minor
      Found in lib/unreal-filesystem/tree.js - About 35 mins to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Function rename has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
      Open

      Tree.prototype.rename = function(oldPath, newPath, addMissingDirs){
      
          addMissingDirs = (undefined === addMissingDirs) ? false : addMissingDirs;
      
          addMissingDirs = true;
      Severity: Minor
      Found in lib/unreal-filesystem/tree.js - About 35 mins to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Avoid too many return statements within this function.
      Open

          return false;
      Severity: Major
      Found in lib/unreal-filesystem/permission.js - About 30 mins to fix

        Avoid too many return statements within this function.
        Open

            return false;
        Severity: Major
        Found in lib/unreal-filesystem/permission.js - About 30 mins to fix

          Avoid too many return statements within this function.
          Open

              return false;
          Severity: Major
          Found in lib/unreal-filesystem/permission.js - About 30 mins to fix

            Function addDir has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
            Open

            Tree.prototype.addDir = function(dirPath, addMissingDirs){
            
                if ('' === dirPath.trim()){
                    throw new Error('dirPath may not be empty');
                }
            Severity: Minor
            Found in lib/unreal-filesystem/tree.js - About 25 mins to fix

            Cognitive Complexity

            Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

            A method's cognitive complexity is based on a few simple rules:

            • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
            • Code is considered more complex for each "break in the linear flow of the code"
            • Code is considered more complex when "flow breaking structures are nested"

            Further reading

            Function getPathByInodeNumber has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
            Open

            Tree.prototype.getPathByInodeNumber = function(checkInodeNumber) {
            
                var parts = [];
            
                var tree = this;
            Severity: Minor
            Found in lib/unreal-filesystem/tree.js - About 25 mins to fix

            Cognitive Complexity

            Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

            A method's cognitive complexity is based on a few simple rules:

            • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
            • Code is considered more complex for each "break in the linear flow of the code"
            • Code is considered more complex when "flow breaking structures are nested"

            Further reading

            Function getInodeNumberByPath has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
            Open

            Tree.prototype.getInodeNumberByPath = function(pathName){
            
                var parsePath = path.parse(pathName);
            
                if (parsePath.root === parsePath.dir && pathName === parsePath.dir){
            Severity: Minor
            Found in lib/unreal-filesystem/tree.js - About 25 mins to fix

            Cognitive Complexity

            Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

            A method's cognitive complexity is based on a few simple rules:

            • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
            • Code is considered more complex for each "break in the linear flow of the code"
            • Code is considered more complex when "flow breaking structures are nested"

            Further reading

            Use the global form of 'use strict'.
            Open

            var stats = {
            Severity: Minor
            Found in defaults.js by eslint

            require or disallow strict mode directives (strict)

            A strict mode directive is a "use strict" literal at the beginning of a script or function body. It enables strict mode semantics.

            When a directive occurs in global scope, strict mode applies to the entire script:

            "use strict";
            
            // strict mode
            
            function foo() {
                // strict mode
            }

            When a directive occurs at the beginning of a function body, strict mode applies only to that function, including all contained functions:

            function foo() {
                "use strict";
                // strict mode
            }
            
            function foo2() {
                // not strict mode
            };
            
            (function() {
                "use strict";
                function bar() {
                    // strict mode
                }
            }());

            In the CommonJS module system, a hidden function wraps each module and limits the scope of a "global" strict mode directive.

            In ECMAScript modules, which always have strict mode semantics, the directives are unnecessary.

            Rule Details

            This rule requires or disallows strict mode directives.

            This rule disallows strict mode directives, no matter which option is specified, if ESLint configuration specifies either of the following as [parser options](../user-guide/configuring#specifying-parser-options):

            • "sourceType": "module" that is, files are ECMAScript modules
            • "impliedStrict": true property in the ecmaFeatures object

            This rule disallows strict mode directives, no matter which option is specified, in functions with non-simple parameter lists (for example, parameter lists with default parameter values) because that is a syntax error in ECMAScript 2016 and later. See the examples of the function option.

            Options

            This rule has a string option:

            • "safe" (default) corresponds either of the following options:
              • "global" if ESLint considers a file to be a CommonJS module
              • "function" otherwise
            • "global" requires one strict mode directive in the global scope (and disallows any other strict mode directives)
            • "function" requires one strict mode directive in each top-level function declaration or expression (and disallows any other strict mode directives)
            • "never" disallows strict mode directives

            safe

            The "safe" option corresponds to the "global" option if ESLint considers a file to be a Node.js or CommonJS module because the configuration specifies either of the following:

            • node or commonjs [environments](../user-guide/configuring#specifying-environments)
            • "globalReturn": true property in the ecmaFeatures object of [parser options](../user-guide/configuring#specifying-parser-options)

            Otherwise the "safe" option corresponds to the "function" option.

            global

            Examples of incorrect code for this rule with the "global" option:

            /*eslint strict: ["error", "global"]*/
            
            function foo() {
            }
            /*eslint strict: ["error", "global"]*/
            
            function foo() {
                "use strict";
            }
            /*eslint strict: ["error", "global"]*/
            
            "use strict";
            
            function foo() {
                "use strict";
            }

            Examples of correct code for this rule with the "global" option:

            /*eslint strict: ["error", "global"]*/
            
            "use strict";
            
            function foo() {
            }

            function

            This option ensures that all function bodies are strict mode code, while global code is not. Particularly if a build step concatenates multiple scripts, a strict mode directive in global code of one script could unintentionally enable strict mode in another script that was not intended to be strict code.

            Examples of incorrect code for this rule with the "function" option:

            /*eslint strict: ["error", "function"]*/
            
            "use strict";
            
            function foo() {
            }
            /*eslint strict: ["error", "function"]*/
            
            function foo() {
            }
            
            (function() {
                function bar() {
                    "use strict";
                }
            }());
            /*eslint strict: ["error", "function"]*/
            /*eslint-env es6*/
            
            // Illegal "use strict" directive in function with non-simple parameter list.
            // This is a syntax error since ES2016.
            function foo(a = 1) {
                "use strict";
            }
            
            // We cannot write "use strict" directive in this function.
            // So we have to wrap this function with a function with "use strict" directive.
            function foo(a = 1) {
            }

            Examples of correct code for this rule with the "function" option:

            /*eslint strict: ["error", "function"]*/
            
            function foo() {
                "use strict";
            }
            
            (function() {
                "use strict";
            
                function bar() {
                }
            
                function baz(a = 1) {
                }
            }());
            
            var foo = (function() {
                "use strict";
            
                return function foo(a = 1) {
                };
            }());

            never

            Examples of incorrect code for this rule with the "never" option:

            /*eslint strict: ["error", "never"]*/
            
            "use strict";
            
            function foo() {
            }
            /*eslint strict: ["error", "never"]*/
            
            function foo() {
                "use strict";
            }

            Examples of correct code for this rule with the "never" option:

            /*eslint strict: ["error", "never"]*/
            
            function foo() {
            }

            earlier default (removed)

            (removed) The default option (that is, no string option specified) for this rule was removed in ESLint v1.0. The "function" option is most similar to the removed option.

            This option ensures that all functions are executed in strict mode. A strict mode directive must be present in global code or in every top-level function declaration or expression. It does not concern itself with unnecessary strict mode directives in nested functions that are already strict, nor with multiple strict mode directives at the same level.

            Examples of incorrect code for this rule with the earlier default option which has been removed:

            // "strict": "error"
            
            function foo() {
            }
            // "strict": "error"
            
            (function() {
                function bar() {
                    "use strict";
                }
            }());

            Examples of correct code for this rule with the earlier default option which has been removed:

            // "strict": "error"
            
            "use strict";
            
            function foo() {
            }
            // "strict": "error"
            
            function foo() {
                "use strict";
            }
            // "strict": "error"
            
            (function() {
                "use strict";
                function bar() {
                    "use strict";
                }
            }());

            When Not To Use It

            In a codebase that has both strict and non-strict code, either turn this rule off, or selectively disable it where necessary. For example, functions referencing arguments.callee are invalid in strict mode. A full list of strict mode differences is available on MDN. Source: http://eslint.org/docs/rules/

            Expected indentation of 4 spaces but found 2.
            Open

              blksize: 4096
            Severity: Minor
            Found in defaults.js by eslint

            enforce consistent indentation (indent)

            There are several common guidelines which require specific indentation of nested blocks and statements, like:

            function hello(indentSize, type) {
                if (indentSize === 4 && type !== 'tab') {
                    console.log('Each next indentation will increase on 4 spaces');
                }
            }

            These are the most common scenarios recommended in different style guides:

            • Two spaces, not longer and no tabs: Google, npm, Node.js, Idiomatic, Felix
            • Tabs: jQuery
            • Four spaces: Crockford

            Rule Details

            This rule enforces a consistent indentation style. The default style is 4 spaces.

            Options

            This rule has a mixed option:

            For example, for 2-space indentation:

            {
                "indent": ["error", 2]
            }

            Or for tabbed indentation:

            {
                "indent": ["error", "tab"]
            }

            Examples of incorrect code for this rule with the default options:

            /*eslint indent: "error"*/
            
            if (a) {
              b=c;
              function foo(d) {
                e=f;
              }
            }

            Examples of correct code for this rule with the default options:

            /*eslint indent: "error"*/
            
            if (a) {
                b=c;
                function foo(d) {
                    e=f;
                }
            }

            This rule has an object option:

            • "SwitchCase" (default: 0) enforces indentation level for case clauses in switch statements
            • "VariableDeclarator" (default: 1) enforces indentation level for var declarators; can also take an object to define separate rules for var, let and const declarations.
            • "outerIIFEBody" (default: 1) enforces indentation level for file-level IIFEs.
            • "MemberExpression" (off by default) enforces indentation level for multi-line property chains (except in variable declarations and assignments)
            • "FunctionDeclaration" takes an object to define rules for function declarations.
              • parameters (off by default) enforces indentation level for parameters in a function declaration. This can either be a number indicating indentation level, or the string "first" indicating that all parameters of the declaration must be aligned with the first parameter.
              • body (default: 1) enforces indentation level for the body of a function declaration.
            • "FunctionExpression" takes an object to define rules for function expressions.
              • parameters (off by default) enforces indentation level for parameters in a function expression. This can either be a number indicating indentation level, or the string "first" indicating that all parameters of the expression must be aligned with the first parameter.
              • body (default: 1) enforces indentation level for the body of a function expression.
            • "CallExpression" takes an object to define rules for function call expressions.
              • arguments (off by default) enforces indentation level for arguments in a call expression. This can either be a number indicating indentation level, or the string "first" indicating that all arguments of the expression must be aligned with the first argument.
            • "ArrayExpression" (default: 1) enforces indentation level for elements in arrays. It can also be set to the string "first", indicating that all the elements in the array should be aligned with the first element.
            • "ObjectExpression" (default: 1) enforces indentation level for properties in objects. It can be set to the string "first", indicating that all properties in the object should be aligned with the first property.

            Level of indentation denotes the multiple of the indent specified. Example:

            • Indent of 4 spaces with VariableDeclarator set to 2 will indent the multi-line variable declarations with 8 spaces.
            • Indent of 2 spaces with VariableDeclarator set to 2 will indent the multi-line variable declarations with 4 spaces.
            • Indent of 2 spaces with VariableDeclarator set to {"var": 2, "let": 2, "const": 3} will indent the multi-line variable declarations with 4 spaces for var and let, 6 spaces for const statements.
            • Indent of tab with VariableDeclarator set to 2 will indent the multi-line variable declarations with 2 tabs.
            • Indent of 2 spaces with SwitchCase set to 0 will not indent case clauses with respect to switch statements.
            • Indent of 2 spaces with SwitchCase set to 1 will indent case clauses with 2 spaces with respect to switch statements.
            • Indent of 2 spaces with SwitchCase set to 2 will indent case clauses with 4 spaces with respect to switch statements.
            • Indent of tab with SwitchCase set to 2 will indent case clauses with 2 tabs with respect to switch statements.
            • Indent of 2 spaces with MemberExpression set to 0 will indent the multi-line property chains with 0 spaces.
            • Indent of 2 spaces with MemberExpression set to 1 will indent the multi-line property chains with 2 spaces.
            • Indent of 2 spaces with MemberExpression set to 2 will indent the multi-line property chains with 4 spaces.
            • Indent of 4 spaces with MemberExpression set to 0 will indent the multi-line property chains with 0 spaces.
            • Indent of 4 spaces with MemberExpression set to 1 will indent the multi-line property chains with 4 spaces.
            • Indent of 4 spaces with MemberExpression set to 2 will indent the multi-line property chains with 8 spaces.

            tab

            Examples of incorrect code for this rule with the "tab" option:

            /*eslint indent: ["error", "tab"]*/
            
            if (a) {
                 b=c;
            function foo(d) {
                       e=f;
             }
            }

            Examples of correct code for this rule with the "tab" option:

            /*eslint indent: ["error", "tab"]*/
            
            if (a) {
            /*tab*/b=c;
            /*tab*/function foo(d) {
            /*tab*//*tab*/e=f;
            /*tab*/}
            }

            SwitchCase

            Examples of incorrect code for this rule with the 2, { "SwitchCase": 1 } options:

            /*eslint indent: ["error", 2, { "SwitchCase": 1 }]*/
            
            switch(a){
            case "a":
                break;
            case "b":
                break;
            }

            Examples of correct code for this rule with the 2, { "SwitchCase": 1 } option:

            /*eslint indent: ["error", 2, { "SwitchCase": 1 }]*/
            
            switch(a){
              case "a":
                break;
              case "b":
                break;
            }

            VariableDeclarator

            Examples of incorrect code for this rule with the 2, { "VariableDeclarator": 1 } options:

            /*eslint indent: ["error", 2, { "VariableDeclarator": 1 }]*/
            /*eslint-env es6*/
            
            var a,
                b,
                c;
            let a,
                b,
                c;
            const a = 1,
                b = 2,
                c = 3;

            Examples of correct code for this rule with the 2, { "VariableDeclarator": 1 } options:

            /*eslint indent: ["error", 2, { "VariableDeclarator": 1 }]*/
            /*eslint-env es6*/
            
            var a,
              b,
              c;
            let a,
              b,
              c;
            const a = 1,
              b = 2,
              c = 3;

            Examples of correct code for this rule with the 2, { "VariableDeclarator": 2 } options:

            /*eslint indent: ["error", 2, { "VariableDeclarator": 2 }]*/
            /*eslint-env es6*/
            
            var a,
                b,
                c;
            let a,
                b,
                c;
            const a = 1,
                b = 2,
                c = 3;

            Examples of correct code for this rule with the 2, { "VariableDeclarator": { "var": 2, "let": 2, "const": 3 } } options:

            /*eslint indent: ["error", 2, { "VariableDeclarator": { "var": 2, "let": 2, "const": 3 } }]*/
            /*eslint-env es6*/
            
            var a,
                b,
                c;
            let a,
                b,
                c;
            const a = 1,
                  b = 2,
                  c = 3;

            outerIIFEBody

            Examples of incorrect code for this rule with the options 2, { "outerIIFEBody": 0 }:

            /*eslint indent: ["error", 2, { "outerIIFEBody": 0 }]*/
            
            (function() {
            
              function foo(x) {
                return x + 1;
              }
            
            })();
            
            
            if(y) {
            console.log('foo');
            }

            Examples of correct code for this rule with the options 2, {"outerIIFEBody": 0}:

            /*eslint indent: ["error", 2, { "outerIIFEBody": 0 }]*/
            
            (function() {
            
            function foo(x) {
              return x + 1;
            }
            
            })();
            
            
            if(y) {
               console.log('foo');
            }

            MemberExpression

            Examples of incorrect code for this rule with the 2, { "MemberExpression": 1 } options:

            /*eslint indent: ["error", 2, { "MemberExpression": 1 }]*/
            
            foo
            .bar
            .baz()

            Examples of correct code for this rule with the 2, { "MemberExpression": 1 } option:

            /*eslint indent: ["error", 2, { "MemberExpression": 1 }]*/
            
            foo
              .bar
              .baz();
            
            // Any indentation is permitted in variable declarations and assignments.
            var bip = aardvark.badger
                              .coyote;

            FunctionDeclaration

            Examples of incorrect code for this rule with the 2, { "FunctionDeclaration": {"body": 1, "parameters": 2} } option:

            /*eslint indent: ["error", 2, { "FunctionDeclaration": {"body": 1, "parameters": 2} }]*/
            
            function foo(bar,
              baz,
              qux) {
                qux();
            }

            Examples of correct code for this rule with the 2, { "FunctionDeclaration": {"body": 1, "parameters": 2} } option:

            /*eslint indent: ["error", 2, { "FunctionDeclaration": {"body": 1, "parameters": 2} }]*/
            
            function foo(bar,
                baz,
                qux) {
              qux();
            }

            Examples of incorrect code for this rule with the 2, { "FunctionDeclaration": {"parameters": "first"} } option:

            /*eslint indent: ["error", 2, {"FunctionDeclaration": {"parameters": "first"}}]*/
            
            function foo(bar, baz,
              qux, boop) {
              qux();
            }

            Examples of correct code for this rule with the 2, { "FunctionDeclaration": {"parameters": "first"} } option:

            /*eslint indent: ["error", 2, {"FunctionDeclaration": {"parameters": "first"}}]*/
            
            function foo(bar, baz,
                         qux, boop) {
              qux();
            }

            FunctionExpression

            Examples of incorrect code for this rule with the 2, { "FunctionExpression": {"body": 1, "parameters": 2} } option:

            /*eslint indent: ["error", 2, { "FunctionExpression": {"body": 1, "parameters": 2} }]*/
            
            var foo = function(bar,
              baz,
              qux) {
                qux();
            }

            Examples of correct code for this rule with the 2, { "FunctionExpression": {"body": 1, "parameters": 2} } option:

            /*eslint indent: ["error", 2, { "FunctionExpression": {"body": 1, "parameters": 2} }]*/
            
            var foo = function(bar,
                baz,
                qux) {
              qux();
            }

            Examples of incorrect code for this rule with the 2, { "FunctionExpression": {"parameters": "first"} } option:

            /*eslint indent: ["error", 2, {"FunctionExpression": {"parameters": "first"}}]*/
            
            var foo = function(bar, baz,
              qux, boop) {
              qux();
            }

            Examples of correct code for this rule with the 2, { "FunctionExpression": {"parameters": "first"} } option:

            /*eslint indent: ["error", 2, {"FunctionExpression": {"parameters": "first"}}]*/
            
            var foo = function(bar, baz,
                               qux, boop) {
              qux();
            }

            CallExpression

            Examples of incorrect code for this rule with the 2, { "CallExpression": {"arguments": 1} } option:

            /*eslint indent: ["error", 2, { "CallExpression": {"arguments": 1} }]*/
            
            foo(bar,
                baz,
                  qux
            );

            Examples of correct code for this rule with the 2, { "CallExpression": {"arguments": 1} } option:

            /*eslint indent: ["error", 2, { "CallExpression": {"arguments": 1} }]*/
            
            foo(bar,
              baz,
              qux
            );

            Examples of incorrect code for this rule with the 2, { "CallExpression": {"arguments": "first"} } option:

            /*eslint indent: ["error", 2, {"CallExpression": {"arguments": "first"}}]*/
            
            foo(bar, baz,
              baz, boop, beep);

            Examples of correct code for this rule with the 2, { "CallExpression": {"arguments": "first"} } option:

            /*eslint indent: ["error", 2, {"CallExpression": {"arguments": "first"}}]*/
            
            foo(bar, baz,
                baz, boop, beep);

            ArrayExpression

            Examples of incorrect code for this rule with the 2, { "ArrayExpression": 1 } option:

            /*eslint indent: ["error", 2, { "ArrayExpression": 1 }]*/
            
            var foo = [
                bar,
            baz,
                  qux
            ];

            Examples of correct code for this rule with the 2, { "ArrayExpression": 1 } option:

            /*eslint indent: ["error", 2, { "ArrayExpression": 1 }]*/
            
            var foo = [
              bar,
              baz,
              qux
            ];

            Examples of incorrect code for this rule with the 2, { "ArrayExpression": "first" } option:

            /*eslint indent: ["error", 2, {"ArrayExpression": "first"}]*/
            
            var foo = [bar,
              baz,
              qux
            ];

            Examples of correct code for this rule with the 2, { "ArrayExpression": "first" } option:

            /*eslint indent: ["error", 2, {"ArrayExpression": "first"}]*/
            
            var foo = [bar,
                       baz,
                       qux
            ];

            ObjectExpression

            Examples of incorrect code for this rule with the 2, { "ObjectExpression": 1 } option:

            /*eslint indent: ["error", 2, { "ObjectExpression": 1 }]*/
            
            var foo = {
                bar: 1,
            baz: 2,
                  qux: 3
            };

            Examples of correct code for this rule with the 2, { "ObjectExpression": 1 } option:

            /*eslint indent: ["error", 2, { "ObjectExpression": 1 }]*/
            
            var foo = {
              bar: 1,
              baz: 2,
              qux: 3
            };

            Examples of incorrect code for this rule with the 2, { "ObjectExpression": "first" } option:

            /*eslint indent: ["error", 2, {"ObjectExpression": "first"}]*/
            
            var foo = { bar: 1,
              baz: 2 };

            Examples of correct code for this rule with the 2, { "ObjectExpression": "first" } option:

            /*eslint indent: ["error", 2, {"ObjectExpression": "first"}]*/
            
            var foo = { bar: 1,
                        baz: 2 };

            Compatibility

            Missing semicolon.
            Open

                        stats.rdev = rdev
            Severity: Minor
            Found in lib/unreal-filesystem/stats.js by eslint

            require or disallow semicolons instead of ASI (semi)

            JavaScript is unique amongst the C-like languages in that it doesn't require semicolons at the end of each statement. In many cases, the JavaScript engine can determine that a semicolon should be in a certain spot and will automatically add it. This feature is known as automatic semicolon insertion (ASI) and is considered one of the more controversial features of JavaScript. For example, the following lines are both valid:

            var name = "ESLint"
            var website = "eslint.org";

            On the first line, the JavaScript engine will automatically insert a semicolon, so this is not considered a syntax error. The JavaScript engine still knows how to interpret the line and knows that the line end indicates the end of the statement.

            In the debate over ASI, there are generally two schools of thought. The first is that we should treat ASI as if it didn't exist and always include semicolons manually. The rationale is that it's easier to always include semicolons than to try to remember when they are or are not required, and thus decreases the possibility of introducing an error.

            However, the ASI mechanism can sometimes be tricky to people who are using semicolons. For example, consider this code:

            return
            {
                name: "ESLint"
            };

            This may look like a return statement that returns an object literal, however, the JavaScript engine will interpret this code as:

            return;
            {
                name: "ESLint";
            }

            Effectively, a semicolon is inserted after the return statement, causing the code below it (a labeled literal inside a block) to be unreachable. This rule and the [no-unreachable](no-unreachable.md) rule will protect your code from such cases.

            On the other side of the argument are those who says that since semicolons are inserted automatically, they are optional and do not need to be inserted manually. However, the ASI mechanism can also be tricky to people who don't use semicolons. For example, consider this code:

            var globalCounter = { }
            
            (function () {
                var n = 0
                globalCounter.increment = function () {
                    return ++n
                }
            })()

            In this example, a semicolon will not be inserted after the first line, causing a run-time error (because an empty object is called as if it's a function). The [no-unexpected-multiline](no-unexpected-multiline.md) rule can protect your code from such cases.

            Although ASI allows for more freedom over your coding style, it can also make your code behave in an unexpected way, whether you use semicolons or not. Therefore, it is best to know when ASI takes place and when it does not, and have ESLint protect your code from these potentially unexpected cases. In short, as once described by Isaac Schlueter, a \n character always ends a statement (just like a semicolon) unless one of the following is true:

            1. The statement has an unclosed paren, array literal, or object literal or ends in some other way that is not a valid way to end a statement. (For instance, ending with . or ,.)
            2. The line is -- or ++ (in which case it will decrement/increment the next token.)
            3. It is a for(), while(), do, if(), or else, and there is no {
            4. The next line starts with [, (, +, *, /, -, ,, ., or some other binary operator that can only be found between two tokens in a single expression.

            Rule Details

            This rule enforces consistent use of semicolons.

            Options

            This rule has two options, a string option and an object option.

            String option:

            • "always" (default) requires semicolons at the end of statements
            • "never" disallows semicolons as the end of statements (except to disambiguate statements beginning with [, (, /, +, or -)

            Object option:

            • "omitLastInOneLineBlock": true ignores the last semicolon in a block in which its braces (and therefore the content of the block) are in the same line

            always

            Examples of incorrect code for this rule with the default "always" option:

            /*eslint semi: ["error", "always"]*/
            
            var name = "ESLint"
            
            object.method = function() {
                // ...
            }

            Examples of correct code for this rule with the default "always" option:

            /*eslint semi: "error"*/
            
            var name = "ESLint";
            
            object.method = function() {
                // ...
            };

            never

            Examples of incorrect code for this rule with the "never" option:

            /*eslint semi: ["error", "never"]*/
            
            var name = "ESLint";
            
            object.method = function() {
                // ...
            };

            Examples of correct code for this rule with the "never" option:

            /*eslint semi: ["error", "never"]*/
            
            var name = "ESLint"
            
            object.method = function() {
                // ...
            }
            
            var name = "ESLint"
            
            ;(function() {
                // ...
            })()

            omitLastInOneLineBlock

            Examples of additional correct code for this rule with the "always", { "omitLastInOneLineBlock": true } options:

            /*eslint semi: ["error", "always", { "omitLastInOneLineBlock": true}] */
            
            if (foo) { bar() }
            
            if (foo) { bar(); baz() }

            When Not To Use It

            If you do not want to enforce semicolon usage (or omission) in any particular way, then you can turn this rule off.

            Further Reading

            Related Rules

            • [no-extra-semi](no-extra-semi.md)
            • [no-unexpected-multiline](no-unexpected-multiline.md)
            • [semi-spacing](semi-spacing.md) Source: http://eslint.org/docs/rules/

            'mtime' is defined but never used.
            Open

            unrealFs.futimesSync = function(fd, atime, mtime){
            Severity: Minor
            Found in lib/unreal-methods.js by eslint

            Disallow Unused Variables (no-unused-vars)

            Variables that are declared and not used anywhere in the code are most likely an error due to incomplete refactoring. Such variables take up space in the code and can lead to confusion by readers.

            Rule Details

            This rule is aimed at eliminating unused variables, functions, and parameters of functions.

            A variable is considered to be used if any of the following are true:

            • It represents a function that is called (doSomething())
            • It is read (var y = x)
            • It is passed into a function as an argument (doSomething(x))
            • It is read inside of a function that is passed to another function (doSomething(function() { foo(); }))

            A variable is not considered to be used if it is only ever assigned to (var x = 5) or declared.

            Examples of incorrect code for this rule:

            /*eslint no-unused-vars: "error"*/
            /*global some_unused_var*/
            
            // It checks variables you have defined as global
            some_unused_var = 42;
            
            var x;
            
            // Write-only variables are not considered as used.
            var y = 10;
            y = 5;
            
            // A read for a modification of itself is not considered as used.
            var z = 0;
            z = z + 1;
            
            // By default, unused arguments cause warnings.
            (function(foo) {
                return 5;
            })();
            
            // Unused recursive functions also cause warnings.
            function fact(n) {
                if (n < 2) return 1;
                return n * fact(n - 1);
            }
            
            // When a function definition destructures an array, unused entries from the array also cause warnings.
            function getY([x, y]) {
                return y;
            }

            Examples of correct code for this rule:

            /*eslint no-unused-vars: "error"*/
            
            var x = 10;
            alert(x);
            
            // foo is considered used here
            myFunc(function foo() {
                // ...
            }.bind(this));
            
            (function(foo) {
                return foo;
            })();
            
            var myFunc;
            myFunc = setTimeout(function() {
                // myFunc is considered used
                myFunc();
            }, 50);
            
            // Only the second argument from the descructured array is used.
            function getY([, y]) {
                return y;
            }

            exported

            In environments outside of CommonJS or ECMAScript modules, you may use var to create a global variable that may be used by other scripts. You can use the /* exported variableName */ comment block to indicate that this variable is being exported and therefore should not be considered unused.

            Note that /* exported */ has no effect for any of the following:

            • when the environment is node or commonjs
            • when parserOptions.sourceType is module
            • when ecmaFeatures.globalReturn is true

            The line comment // exported variableName will not work as exported is not line-specific.

            Examples of correct code for /* exported variableName */ operation:

            /* exported global_var */
            
            var global_var = 42;

            Options

            This rule takes one argument which can be a string or an object. The string settings are the same as those of the vars property (explained below).

            By default this rule is enabled with all option for variables and after-used for arguments.

            {
                "rules": {
                    "no-unused-vars": ["error", { "vars": "all", "args": "after-used", "ignoreRestSiblings": false }]
                }
            }

            vars

            The vars option has two settings:

            • all checks all variables for usage, including those in the global scope. This is the default setting.
            • local checks only that locally-declared variables are used but will allow global variables to be unused.

            vars: local

            Examples of correct code for the { "vars": "local" } option:

            /*eslint no-unused-vars: ["error", { "vars": "local" }]*/
            /*global some_unused_var */
            
            some_unused_var = 42;

            varsIgnorePattern

            The varsIgnorePattern option specifies exceptions not to check for usage: variables whose names match a regexp pattern. For example, variables whose names contain ignored or Ignored.

            Examples of correct code for the { "varsIgnorePattern": "[iI]gnored" } option:

            /*eslint no-unused-vars: ["error", { "varsIgnorePattern": "[iI]gnored" }]*/
            
            var firstVarIgnored = 1;
            var secondVar = 2;
            console.log(secondVar);

            args

            The args option has three settings:

            • after-used - only the last argument must be used. This allows you, for instance, to have two named parameters to a function and as long as you use the second argument, ESLint will not warn you about the first. This is the default setting.
            • all - all named arguments must be used.
            • none - do not check arguments.

            args: after-used

            Examples of incorrect code for the default { "args": "after-used" } option:

            /*eslint no-unused-vars: ["error", { "args": "after-used" }]*/
            
            // 1 error
            // "baz" is defined but never used
            (function(foo, bar, baz) {
                return bar;
            })();

            Examples of correct code for the default { "args": "after-used" } option:

            /*eslint no-unused-vars: ["error", {"args": "after-used"}]*/
            
            (function(foo, bar, baz) {
                return baz;
            })();

            args: all

            Examples of incorrect code for the { "args": "all" } option:

            /*eslint no-unused-vars: ["error", { "args": "all" }]*/
            
            // 2 errors
            // "foo" is defined but never used
            // "baz" is defined but never used
            (function(foo, bar, baz) {
                return bar;
            })();

            args: none

            Examples of correct code for the { "args": "none" } option:

            /*eslint no-unused-vars: ["error", { "args": "none" }]*/
            
            (function(foo, bar, baz) {
                return bar;
            })();

            ignoreRestSiblings

            The ignoreRestSiblings option is a boolean (default: false). Using a Rest Property it is possible to "omit" properties from an object, but by default the sibling properties are marked as "unused". With this option enabled the rest property's siblings are ignored.

            Examples of correct code for the { "ignoreRestSiblings": true } option:

            /*eslint no-unused-vars: ["error", { "ignoreRestSiblings": true }]*/
            // 'type' is ignored because it has a rest property sibling.
            var { type, ...coords } = data;

            argsIgnorePattern

            The argsIgnorePattern option specifies exceptions not to check for usage: arguments whose names match a regexp pattern. For example, variables whose names begin with an underscore.

            Examples of correct code for the { "argsIgnorePattern": "^_" } option:

            /*eslint no-unused-vars: ["error", { "argsIgnorePattern": "^_" }]*/
            
            function foo(x, _y) {
                return x + 1;
            }
            foo();

            caughtErrors

            The caughtErrors option is used for catch block arguments validation.

            It has two settings:

            • none - do not check error objects. This is the default setting.
            • all - all named arguments must be used.

            caughtErrors: none

            Not specifying this rule is equivalent of assigning it to none.

            Examples of correct code for the { "caughtErrors": "none" } option:

            /*eslint no-unused-vars: ["error", { "caughtErrors": "none" }]*/
            
            try {
                //...
            } catch (err) {
                console.error("errors");
            }

            caughtErrors: all

            Examples of incorrect code for the { "caughtErrors": "all" } option:

            /*eslint no-unused-vars: ["error", { "caughtErrors": "all" }]*/
            
            // 1 error
            // "err" is defined but never used
            try {
                //...
            } catch (err) {
                console.error("errors");
            }

            caughtErrorsIgnorePattern

            The caughtErrorsIgnorePattern option specifies exceptions not to check for usage: catch arguments whose names match a regexp pattern. For example, variables whose names begin with a string 'ignore'.

            Examples of correct code for the { "caughtErrorsIgnorePattern": "^ignore" } option:

            /*eslint no-unused-vars: ["error", { "caughtErrorsIgnorePattern": "^ignore" }]*/
            
            try {
                //...
            } catch (ignoreErr) {
                console.error("errors");
            }

            When Not To Use It

            If you don't want to be notified about unused variables or function arguments, you can safely turn this rule off. Source: http://eslint.org/docs/rules/

            'callback' is defined but never used.
            Open

            unrealFs.lchown = function(path, uid, gid, callback){
            Severity: Minor
            Found in lib/unreal-methods.js by eslint

            Disallow Unused Variables (no-unused-vars)

            Variables that are declared and not used anywhere in the code are most likely an error due to incomplete refactoring. Such variables take up space in the code and can lead to confusion by readers.

            Rule Details

            This rule is aimed at eliminating unused variables, functions, and parameters of functions.

            A variable is considered to be used if any of the following are true:

            • It represents a function that is called (doSomething())
            • It is read (var y = x)
            • It is passed into a function as an argument (doSomething(x))
            • It is read inside of a function that is passed to another function (doSomething(function() { foo(); }))

            A variable is not considered to be used if it is only ever assigned to (var x = 5) or declared.

            Examples of incorrect code for this rule:

            /*eslint no-unused-vars: "error"*/
            /*global some_unused_var*/
            
            // It checks variables you have defined as global
            some_unused_var = 42;
            
            var x;
            
            // Write-only variables are not considered as used.
            var y = 10;
            y = 5;
            
            // A read for a modification of itself is not considered as used.
            var z = 0;
            z = z + 1;
            
            // By default, unused arguments cause warnings.
            (function(foo) {
                return 5;
            })();
            
            // Unused recursive functions also cause warnings.
            function fact(n) {
                if (n < 2) return 1;
                return n * fact(n - 1);
            }
            
            // When a function definition destructures an array, unused entries from the array also cause warnings.
            function getY([x, y]) {
                return y;
            }

            Examples of correct code for this rule:

            /*eslint no-unused-vars: "error"*/
            
            var x = 10;
            alert(x);
            
            // foo is considered used here
            myFunc(function foo() {
                // ...
            }.bind(this));
            
            (function(foo) {
                return foo;
            })();
            
            var myFunc;
            myFunc = setTimeout(function() {
                // myFunc is considered used
                myFunc();
            }, 50);
            
            // Only the second argument from the descructured array is used.
            function getY([, y]) {
                return y;
            }

            exported

            In environments outside of CommonJS or ECMAScript modules, you may use var to create a global variable that may be used by other scripts. You can use the /* exported variableName */ comment block to indicate that this variable is being exported and therefore should not be considered unused.

            Note that /* exported */ has no effect for any of the following:

            • when the environment is node or commonjs
            • when parserOptions.sourceType is module
            • when ecmaFeatures.globalReturn is true

            The line comment // exported variableName will not work as exported is not line-specific.

            Examples of correct code for /* exported variableName */ operation:

            /* exported global_var */
            
            var global_var = 42;

            Options

            This rule takes one argument which can be a string or an object. The string settings are the same as those of the vars property (explained below).

            By default this rule is enabled with all option for variables and after-used for arguments.

            {
                "rules": {
                    "no-unused-vars": ["error", { "vars": "all", "args": "after-used", "ignoreRestSiblings": false }]
                }
            }

            vars

            The vars option has two settings:

            • all checks all variables for usage, including those in the global scope. This is the default setting.
            • local checks only that locally-declared variables are used but will allow global variables to be unused.

            vars: local

            Examples of correct code for the { "vars": "local" } option:

            /*eslint no-unused-vars: ["error", { "vars": "local" }]*/
            /*global some_unused_var */
            
            some_unused_var = 42;

            varsIgnorePattern

            The varsIgnorePattern option specifies exceptions not to check for usage: variables whose names match a regexp pattern. For example, variables whose names contain ignored or Ignored.

            Examples of correct code for the { "varsIgnorePattern": "[iI]gnored" } option:

            /*eslint no-unused-vars: ["error", { "varsIgnorePattern": "[iI]gnored" }]*/
            
            var firstVarIgnored = 1;
            var secondVar = 2;
            console.log(secondVar);

            args

            The args option has three settings:

            • after-used - only the last argument must be used. This allows you, for instance, to have two named parameters to a function and as long as you use the second argument, ESLint will not warn you about the first. This is the default setting.
            • all - all named arguments must be used.
            • none - do not check arguments.

            args: after-used

            Examples of incorrect code for the default { "args": "after-used" } option:

            /*eslint no-unused-vars: ["error", { "args": "after-used" }]*/
            
            // 1 error
            // "baz" is defined but never used
            (function(foo, bar, baz) {
                return bar;
            })();

            Examples of correct code for the default { "args": "after-used" } option:

            /*eslint no-unused-vars: ["error", {"args": "after-used"}]*/
            
            (function(foo, bar, baz) {
                return baz;
            })();

            args: all

            Examples of incorrect code for the { "args": "all" } option:

            /*eslint no-unused-vars: ["error", { "args": "all" }]*/
            
            // 2 errors
            // "foo" is defined but never used
            // "baz" is defined but never used
            (function(foo, bar, baz) {
                return bar;
            })();

            args: none

            Examples of correct code for the { "args": "none" } option:

            /*eslint no-unused-vars: ["error", { "args": "none" }]*/
            
            (function(foo, bar, baz) {
                return bar;
            })();

            ignoreRestSiblings

            The ignoreRestSiblings option is a boolean (default: false). Using a Rest Property it is possible to "omit" properties from an object, but by default the sibling properties are marked as "unused". With this option enabled the rest property's siblings are ignored.

            Examples of correct code for the { "ignoreRestSiblings": true } option:

            /*eslint no-unused-vars: ["error", { "ignoreRestSiblings": true }]*/
            // 'type' is ignored because it has a rest property sibling.
            var { type, ...coords } = data;

            argsIgnorePattern

            The argsIgnorePattern option specifies exceptions not to check for usage: arguments whose names match a regexp pattern. For example, variables whose names begin with an underscore.

            Examples of correct code for the { "argsIgnorePattern": "^_" } option:

            /*eslint no-unused-vars: ["error", { "argsIgnorePattern": "^_" }]*/
            
            function foo(x, _y) {
                return x + 1;
            }
            foo();

            caughtErrors

            The caughtErrors option is used for catch block arguments validation.

            It has two settings:

            • none - do not check error objects. This is the default setting.
            • all - all named arguments must be used.

            caughtErrors: none

            Not specifying this rule is equivalent of assigning it to none.

            Examples of correct code for the { "caughtErrors": "none" } option:

            /*eslint no-unused-vars: ["error", { "caughtErrors": "none" }]*/
            
            try {
                //...
            } catch (err) {
                console.error("errors");
            }

            caughtErrors: all

            Examples of incorrect code for the { "caughtErrors": "all" } option:

            /*eslint no-unused-vars: ["error", { "caughtErrors": "all" }]*/
            
            // 1 error
            // "err" is defined but never used
            try {
                //...
            } catch (err) {
                console.error("errors");
            }

            caughtErrorsIgnorePattern

            The caughtErrorsIgnorePattern option specifies exceptions not to check for usage: catch arguments whose names match a regexp pattern. For example, variables whose names begin with a string 'ignore'.

            Examples of correct code for the { "caughtErrorsIgnorePattern": "^ignore" } option:

            /*eslint no-unused-vars: ["error", { "caughtErrorsIgnorePattern": "^ignore" }]*/
            
            try {
                //...
            } catch (ignoreErr) {
                console.error("errors");
            }

            When Not To Use It

            If you don't want to be notified about unused variables or function arguments, you can safely turn this rule off. Source: http://eslint.org/docs/rules/

            'callback' is defined but never used.
            Open

            unrealFs.fstat = function(fd, callback){
            Severity: Minor
            Found in lib/unreal-methods.js by eslint

            Disallow Unused Variables (no-unused-vars)

            Variables that are declared and not used anywhere in the code are most likely an error due to incomplete refactoring. Such variables take up space in the code and can lead to confusion by readers.

            Rule Details

            This rule is aimed at eliminating unused variables, functions, and parameters of functions.

            A variable is considered to be used if any of the following are true:

            • It represents a function that is called (doSomething())
            • It is read (var y = x)
            • It is passed into a function as an argument (doSomething(x))
            • It is read inside of a function that is passed to another function (doSomething(function() { foo(); }))

            A variable is not considered to be used if it is only ever assigned to (var x = 5) or declared.

            Examples of incorrect code for this rule:

            /*eslint no-unused-vars: "error"*/
            /*global some_unused_var*/
            
            // It checks variables you have defined as global
            some_unused_var = 42;
            
            var x;
            
            // Write-only variables are not considered as used.
            var y = 10;
            y = 5;
            
            // A read for a modification of itself is not considered as used.
            var z = 0;
            z = z + 1;
            
            // By default, unused arguments cause warnings.
            (function(foo) {
                return 5;
            })();
            
            // Unused recursive functions also cause warnings.
            function fact(n) {
                if (n < 2) return 1;
                return n * fact(n - 1);
            }
            
            // When a function definition destructures an array, unused entries from the array also cause warnings.
            function getY([x, y]) {
                return y;
            }

            Examples of correct code for this rule:

            /*eslint no-unused-vars: "error"*/
            
            var x = 10;
            alert(x);
            
            // foo is considered used here
            myFunc(function foo() {
                // ...
            }.bind(this));
            
            (function(foo) {
                return foo;
            })();
            
            var myFunc;
            myFunc = setTimeout(function() {
                // myFunc is considered used
                myFunc();
            }, 50);
            
            // Only the second argument from the descructured array is used.
            function getY([, y]) {
                return y;
            }

            exported

            In environments outside of CommonJS or ECMAScript modules, you may use var to create a global variable that may be used by other scripts. You can use the /* exported variableName */ comment block to indicate that this variable is being exported and therefore should not be considered unused.

            Note that /* exported */ has no effect for any of the following:

            • when the environment is node or commonjs
            • when parserOptions.sourceType is module
            • when ecmaFeatures.globalReturn is true

            The line comment // exported variableName will not work as exported is not line-specific.

            Examples of correct code for /* exported variableName */ operation:

            /* exported global_var */
            
            var global_var = 42;

            Options

            This rule takes one argument which can be a string or an object. The string settings are the same as those of the vars property (explained below).

            By default this rule is enabled with all option for variables and after-used for arguments.

            {
                "rules": {
                    "no-unused-vars": ["error", { "vars": "all", "args": "after-used", "ignoreRestSiblings": false }]
                }
            }

            vars

            The vars option has two settings:

            • all checks all variables for usage, including those in the global scope. This is the default setting.
            • local checks only that locally-declared variables are used but will allow global variables to be unused.

            vars: local

            Examples of correct code for the { "vars": "local" } option:

            /*eslint no-unused-vars: ["error", { "vars": "local" }]*/
            /*global some_unused_var */
            
            some_unused_var = 42;

            varsIgnorePattern

            The varsIgnorePattern option specifies exceptions not to check for usage: variables whose names match a regexp pattern. For example, variables whose names contain ignored or Ignored.

            Examples of correct code for the { "varsIgnorePattern": "[iI]gnored" } option:

            /*eslint no-unused-vars: ["error", { "varsIgnorePattern": "[iI]gnored" }]*/
            
            var firstVarIgnored = 1;
            var secondVar = 2;
            console.log(secondVar);

            args

            The args option has three settings:

            • after-used - only the last argument must be used. This allows you, for instance, to have two named parameters to a function and as long as you use the second argument, ESLint will not warn you about the first. This is the default setting.
            • all - all named arguments must be used.
            • none - do not check arguments.

            args: after-used

            Examples of incorrect code for the default { "args": "after-used" } option:

            /*eslint no-unused-vars: ["error", { "args": "after-used" }]*/
            
            // 1 error
            // "baz" is defined but never used
            (function(foo, bar, baz) {
                return bar;
            })();

            Examples of correct code for the default { "args": "after-used" } option:

            /*eslint no-unused-vars: ["error", {"args": "after-used"}]*/
            
            (function(foo, bar, baz) {
                return baz;
            })();

            args: all

            Examples of incorrect code for the { "args": "all" } option:

            /*eslint no-unused-vars: ["error", { "args": "all" }]*/
            
            // 2 errors
            // "foo" is defined but never used
            // "baz" is defined but never used
            (function(foo, bar, baz) {
                return bar;
            })();

            args: none

            Examples of correct code for the { "args": "none" } option:

            /*eslint no-unused-vars: ["error", { "args": "none" }]*/
            
            (function(foo, bar, baz) {
                return bar;
            })();

            ignoreRestSiblings

            The ignoreRestSiblings option is a boolean (default: false). Using a Rest Property it is possible to "omit" properties from an object, but by default the sibling properties are marked as "unused". With this option enabled the rest property's siblings are ignored.

            Examples of correct code for the { "ignoreRestSiblings": true } option:

            /*eslint no-unused-vars: ["error", { "ignoreRestSiblings": true }]*/
            // 'type' is ignored because it has a rest property sibling.
            var { type, ...coords } = data;

            argsIgnorePattern

            The argsIgnorePattern option specifies exceptions not to check for usage: arguments whose names match a regexp pattern. For example, variables whose names begin with an underscore.

            Examples of correct code for the { "argsIgnorePattern": "^_" } option:

            /*eslint no-unused-vars: ["error", { "argsIgnorePattern": "^_" }]*/
            
            function foo(x, _y) {
                return x + 1;
            }
            foo();

            caughtErrors

            The caughtErrors option is used for catch block arguments validation.

            It has two settings:

            • none - do not check error objects. This is the default setting.
            • all - all named arguments must be used.

            caughtErrors: none

            Not specifying this rule is equivalent of assigning it to none.

            Examples of correct code for the { "caughtErrors": "none" } option:

            /*eslint no-unused-vars: ["error", { "caughtErrors": "none" }]*/
            
            try {
                //...
            } catch (err) {
                console.error("errors");
            }

            caughtErrors: all

            Examples of incorrect code for the { "caughtErrors": "all" } option:

            /*eslint no-unused-vars: ["error", { "caughtErrors": "all" }]*/
            
            // 1 error
            // "err" is defined but never used
            try {
                //...
            } catch (err) {
                console.error("errors");
            }

            caughtErrorsIgnorePattern

            The caughtErrorsIgnorePattern option specifies exceptions not to check for usage: catch arguments whose names match a regexp pattern. For example, variables whose names begin with a string 'ignore'.

            Examples of correct code for the { "caughtErrorsIgnorePattern": "^ignore" } option:

            /*eslint no-unused-vars: ["error", { "caughtErrorsIgnorePattern": "^ignore" }]*/
            
            try {
                //...
            } catch (ignoreErr) {
                console.error("errors");
            }

            When Not To Use It

            If you don't want to be notified about unused variables or function arguments, you can safely turn this rule off. Source: http://eslint.org/docs/rules/

            'gid' is defined but never used.
            Open

            unrealFs.lchownSync = function(path, uid, gid){
            Severity: Minor
            Found in lib/unreal-methods.js by eslint

            Disallow Unused Variables (no-unused-vars)

            Variables that are declared and not used anywhere in the code are most likely an error due to incomplete refactoring. Such variables take up space in the code and can lead to confusion by readers.

            Rule Details

            This rule is aimed at eliminating unused variables, functions, and parameters of functions.

            A variable is considered to be used if any of the following are true:

            • It represents a function that is called (doSomething())
            • It is read (var y = x)
            • It is passed into a function as an argument (doSomething(x))
            • It is read inside of a function that is passed to another function (doSomething(function() { foo(); }))

            A variable is not considered to be used if it is only ever assigned to (var x = 5) or declared.

            Examples of incorrect code for this rule:

            /*eslint no-unused-vars: "error"*/
            /*global some_unused_var*/
            
            // It checks variables you have defined as global
            some_unused_var = 42;
            
            var x;
            
            // Write-only variables are not considered as used.
            var y = 10;
            y = 5;
            
            // A read for a modification of itself is not considered as used.
            var z = 0;
            z = z + 1;
            
            // By default, unused arguments cause warnings.
            (function(foo) {
                return 5;
            })();
            
            // Unused recursive functions also cause warnings.
            function fact(n) {
                if (n < 2) return 1;
                return n * fact(n - 1);
            }
            
            // When a function definition destructures an array, unused entries from the array also cause warnings.
            function getY([x, y]) {
                return y;
            }

            Examples of correct code for this rule:

            /*eslint no-unused-vars: "error"*/
            
            var x = 10;
            alert(x);
            
            // foo is considered used here
            myFunc(function foo() {
                // ...
            }.bind(this));
            
            (function(foo) {
                return foo;
            })();
            
            var myFunc;
            myFunc = setTimeout(function() {
                // myFunc is considered used
                myFunc();
            }, 50);
            
            // Only the second argument from the descructured array is used.
            function getY([, y]) {
                return y;
            }

            exported

            In environments outside of CommonJS or ECMAScript modules, you may use var to create a global variable that may be used by other scripts. You can use the /* exported variableName */ comment block to indicate that this variable is being exported and therefore should not be considered unused.

            Note that /* exported */ has no effect for any of the following:

            • when the environment is node or commonjs
            • when parserOptions.sourceType is module
            • when ecmaFeatures.globalReturn is true

            The line comment // exported variableName will not work as exported is not line-specific.

            Examples of correct code for /* exported variableName */ operation:

            /* exported global_var */
            
            var global_var = 42;

            Options

            This rule takes one argument which can be a string or an object. The string settings are the same as those of the vars property (explained below).

            By default this rule is enabled with all option for variables and after-used for arguments.

            {
                "rules": {
                    "no-unused-vars": ["error", { "vars": "all", "args": "after-used", "ignoreRestSiblings": false }]
                }
            }

            vars

            The vars option has two settings:

            • all checks all variables for usage, including those in the global scope. This is the default setting.
            • local checks only that locally-declared variables are used but will allow global variables to be unused.

            vars: local

            Examples of correct code for the { "vars": "local" } option:

            /*eslint no-unused-vars: ["error", { "vars": "local" }]*/
            /*global some_unused_var */
            
            some_unused_var = 42;

            varsIgnorePattern

            The varsIgnorePattern option specifies exceptions not to check for usage: variables whose names match a regexp pattern. For example, variables whose names contain ignored or Ignored.

            Examples of correct code for the { "varsIgnorePattern": "[iI]gnored" } option:

            /*eslint no-unused-vars: ["error", { "varsIgnorePattern": "[iI]gnored" }]*/
            
            var firstVarIgnored = 1;
            var secondVar = 2;
            console.log(secondVar);

            args

            The args option has three settings:

            • after-used - only the last argument must be used. This allows you, for instance, to have two named parameters to a function and as long as you use the second argument, ESLint will not warn you about the first. This is the default setting.
            • all - all named arguments must be used.
            • none - do not check arguments.

            args: after-used

            Examples of incorrect code for the default { "args": "after-used" } option:

            /*eslint no-unused-vars: ["error", { "args": "after-used" }]*/
            
            // 1 error
            // "baz" is defined but never used
            (function(foo, bar, baz) {
                return bar;
            })();

            Examples of correct code for the default { "args": "after-used" } option:

            /*eslint no-unused-vars: ["error", {"args": "after-used"}]*/
            
            (function(foo, bar, baz) {
                return baz;
            })();

            args: all

            Examples of incorrect code for the { "args": "all" } option:

            /*eslint no-unused-vars: ["error", { "args": "all" }]*/
            
            // 2 errors
            // "foo" is defined but never used
            // "baz" is defined but never used
            (function(foo, bar, baz) {
                return bar;
            })();

            args: none

            Examples of correct code for the { "args": "none" } option:

            /*eslint no-unused-vars: ["error", { "args": "none" }]*/
            
            (function(foo, bar, baz) {
                return bar;
            })();

            ignoreRestSiblings

            The ignoreRestSiblings option is a boolean (default: false). Using a Rest Property it is possible to "omit" properties from an object, but by default the sibling properties are marked as "unused". With this option enabled the rest property's siblings are ignored.

            Examples of correct code for the { "ignoreRestSiblings": true } option:

            /*eslint no-unused-vars: ["error", { "ignoreRestSiblings": true }]*/
            // 'type' is ignored because it has a rest property sibling.
            var { type, ...coords } = data;

            argsIgnorePattern

            The argsIgnorePattern option specifies exceptions not to check for usage: arguments whose names match a regexp pattern. For example, variables whose names begin with an underscore.

            Examples of correct code for the { "argsIgnorePattern": "^_" } option:

            /*eslint no-unused-vars: ["error", { "argsIgnorePattern": "^_" }]*/
            
            function foo(x, _y) {
                return x + 1;
            }
            foo();

            caughtErrors

            The caughtErrors option is used for catch block arguments validation.

            It has two settings:

            • none - do not check error objects. This is the default setting.
            • all - all named arguments must be used.

            caughtErrors: none

            Not specifying this rule is equivalent of assigning it to none.

            Examples of correct code for the { "caughtErrors": "none" } option:

            /*eslint no-unused-vars: ["error", { "caughtErrors": "none" }]*/
            
            try {
                //...
            } catch (err) {
                console.error("errors");
            }

            caughtErrors: all

            Examples of incorrect code for the { "caughtErrors": "all" } option:

            /*eslint no-unused-vars: ["error", { "caughtErrors": "all" }]*/
            
            // 1 error
            // "err" is defined but never used
            try {
                //...
            } catch (err) {
                console.error("errors");
            }

            caughtErrorsIgnorePattern

            The caughtErrorsIgnorePattern option specifies exceptions not to check for usage: catch arguments whose names match a regexp pattern. For example, variables whose names begin with a string 'ignore'.

            Examples of correct code for the { "caughtErrorsIgnorePattern": "^ignore" } option:

            /*eslint no-unused-vars: ["error", { "caughtErrorsIgnorePattern": "^ignore" }]*/
            
            try {
                //...
            } catch (ignoreErr) {
                console.error("errors");
            }

            When Not To Use It

            If you don't want to be notified about unused variables or function arguments, you can safely turn this rule off. Source: http://eslint.org/docs/rules/

            'mode' is defined but never used.
            Open

            unrealFs.lchmodSync = function(path, mode){
            Severity: Minor
            Found in lib/unreal-methods.js by eslint

            Disallow Unused Variables (no-unused-vars)

            Variables that are declared and not used anywhere in the code are most likely an error due to incomplete refactoring. Such variables take up space in the code and can lead to confusion by readers.

            Rule Details

            This rule is aimed at eliminating unused variables, functions, and parameters of functions.

            A variable is considered to be used if any of the following are true:

            • It represents a function that is called (doSomething())
            • It is read (var y = x)
            • It is passed into a function as an argument (doSomething(x))
            • It is read inside of a function that is passed to another function (doSomething(function() { foo(); }))

            A variable is not considered to be used if it is only ever assigned to (var x = 5) or declared.

            Examples of incorrect code for this rule:

            /*eslint no-unused-vars: "error"*/
            /*global some_unused_var*/
            
            // It checks variables you have defined as global
            some_unused_var = 42;
            
            var x;
            
            // Write-only variables are not considered as used.
            var y = 10;
            y = 5;
            
            // A read for a modification of itself is not considered as used.
            var z = 0;
            z = z + 1;
            
            // By default, unused arguments cause warnings.
            (function(foo) {
                return 5;
            })();
            
            // Unused recursive functions also cause warnings.
            function fact(n) {
                if (n < 2) return 1;
                return n * fact(n - 1);
            }
            
            // When a function definition destructures an array, unused entries from the array also cause warnings.
            function getY([x, y]) {
                return y;
            }

            Examples of correct code for this rule:

            /*eslint no-unused-vars: "error"*/
            
            var x = 10;
            alert(x);
            
            // foo is considered used here
            myFunc(function foo() {
                // ...
            }.bind(this));
            
            (function(foo) {
                return foo;
            })();
            
            var myFunc;
            myFunc = setTimeout(function() {
                // myFunc is considered used
                myFunc();
            }, 50);
            
            // Only the second argument from the descructured array is used.
            function getY([, y]) {
                return y;
            }

            exported

            In environments outside of CommonJS or ECMAScript modules, you may use var to create a global variable that may be used by other scripts. You can use the /* exported variableName */ comment block to indicate that this variable is being exported and therefore should not be considered unused.

            Note that /* exported */ has no effect for any of the following:

            • when the environment is node or commonjs
            • when parserOptions.sourceType is module
            • when ecmaFeatures.globalReturn is true

            The line comment // exported variableName will not work as exported is not line-specific.

            Examples of correct code for /* exported variableName */ operation:

            /* exported global_var */
            
            var global_var = 42;

            Options

            This rule takes one argument which can be a string or an object. The string settings are the same as those of the vars property (explained below).

            By default this rule is enabled with all option for variables and after-used for arguments.

            {
                "rules": {
                    "no-unused-vars": ["error", { "vars": "all", "args": "after-used", "ignoreRestSiblings": false }]
                }
            }

            vars

            The vars option has two settings:

            • all checks all variables for usage, including those in the global scope. This is the default setting.
            • local checks only that locally-declared variables are used but will allow global variables to be unused.

            vars: local

            Examples of correct code for the { "vars": "local" } option:

            /*eslint no-unused-vars: ["error", { "vars": "local" }]*/
            /*global some_unused_var */
            
            some_unused_var = 42;

            varsIgnorePattern

            The varsIgnorePattern option specifies exceptions not to check for usage: variables whose names match a regexp pattern. For example, variables whose names contain ignored or Ignored.

            Examples of correct code for the { "varsIgnorePattern": "[iI]gnored" } option:

            /*eslint no-unused-vars: ["error", { "varsIgnorePattern": "[iI]gnored" }]*/
            
            var firstVarIgnored = 1;
            var secondVar = 2;
            console.log(secondVar);

            args

            The args option has three settings:

            • after-used - only the last argument must be used. This allows you, for instance, to have two named parameters to a function and as long as you use the second argument, ESLint will not warn you about the first. This is the default setting.
            • all - all named arguments must be used.
            • none - do not check arguments.

            args: after-used

            Examples of incorrect code for the default { "args": "after-used" } option:

            /*eslint no-unused-vars: ["error", { "args": "after-used" }]*/
            
            // 1 error
            // "baz" is defined but never used
            (function(foo, bar, baz) {
                return bar;
            })();

            Examples of correct code for the default { "args": "after-used" } option:

            /*eslint no-unused-vars: ["error", {"args": "after-used"}]*/
            
            (function(foo, bar, baz) {
                return baz;
            })();

            args: all

            Examples of incorrect code for the { "args": "all" } option:

            /*eslint no-unused-vars: ["error", { "args": "all" }]*/
            
            // 2 errors
            // "foo" is defined but never used
            // "baz" is defined but never used
            (function(foo, bar, baz) {
                return bar;
            })();

            args: none

            Examples of correct code for the { "args": "none" } option:

            /*eslint no-unused-vars: ["error", { "args": "none" }]*/
            
            (function(foo, bar, baz) {
                return bar;
            })();

            ignoreRestSiblings

            The ignoreRestSiblings option is a boolean (default: false). Using a Rest Property it is possible to "omit" properties from an object, but by default the sibling properties are marked as "unused". With this option enabled the rest property's siblings are ignored.

            Examples of correct code for the { "ignoreRestSiblings": true } option:

            /*eslint no-unused-vars: ["error", { "ignoreRestSiblings": true }]*/
            // 'type' is ignored because it has a rest property sibling.
            var { type, ...coords } = data;

            argsIgnorePattern

            The argsIgnorePattern option specifies exceptions not to check for usage: arguments whose names match a regexp pattern. For example, variables whose names begin with an underscore.

            Examples of correct code for the { "argsIgnorePattern": "^_" } option:

            /*eslint no-unused-vars: ["error", { "argsIgnorePattern": "^_" }]*/
            
            function foo(x, _y) {
                return x + 1;
            }
            foo();

            caughtErrors

            The caughtErrors option is used for catch block arguments validation.

            It has two settings:

            • none - do not check error objects. This is the default setting.
            • all - all named arguments must be used.

            caughtErrors: none

            Not specifying this rule is equivalent of assigning it to none.

            Examples of correct code for the { "caughtErrors": "none" } option:

            /*eslint no-unused-vars: ["error", { "caughtErrors": "none" }]*/
            
            try {
                //...
            } catch (err) {
                console.error("errors");
            }

            caughtErrors: all

            Examples of incorrect code for the { "caughtErrors": "all" } option:

            /*eslint no-unused-vars: ["error", { "caughtErrors": "all" }]*/
            
            // 1 error
            // "err" is defined but never used
            try {
                //...
            } catch (err) {
                console.error("errors");
            }

            caughtErrorsIgnorePattern

            The caughtErrorsIgnorePattern option specifies exceptions not to check for usage: catch arguments whose names match a regexp pattern. For example, variables whose names begin with a string 'ignore'.

            Examples of correct code for the { "caughtErrorsIgnorePattern": "^ignore" } option:

            /*eslint no-unused-vars: ["error", { "caughtErrorsIgnorePattern": "^ignore" }]*/
            
            try {
                //...
            } catch (ignoreErr) {
                console.error("errors");
            }

            When Not To Use It

            If you don't want to be notified about unused variables or function arguments, you can safely turn this rule off. Source: http://eslint.org/docs/rules/

            'callback' is defined but never used.
            Open

            unrealFs.rmdir = function(path, callback){
            Severity: Minor
            Found in lib/unreal-methods.js by eslint

            Disallow Unused Variables (no-unused-vars)

            Variables that are declared and not used anywhere in the code are most likely an error due to incomplete refactoring. Such variables take up space in the code and can lead to confusion by readers.

            Rule Details

            This rule is aimed at eliminating unused variables, functions, and parameters of functions.

            A variable is considered to be used if any of the following are true:

            • It represents a function that is called (doSomething())
            • It is read (var y = x)
            • It is passed into a function as an argument (doSomething(x))
            • It is read inside of a function that is passed to another function (doSomething(function() { foo(); }))

            A variable is not considered to be used if it is only ever assigned to (var x = 5) or declared.

            Examples of incorrect code for this rule:

            /*eslint no-unused-vars: "error"*/
            /*global some_unused_var*/
            
            // It checks variables you have defined as global
            some_unused_var = 42;
            
            var x;
            
            // Write-only variables are not considered as used.
            var y = 10;
            y = 5;
            
            // A read for a modification of itself is not considered as used.
            var z = 0;
            z = z + 1;
            
            // By default, unused arguments cause warnings.
            (function(foo) {
                return 5;
            })();
            
            // Unused recursive functions also cause warnings.
            function fact(n) {
                if (n < 2) return 1;
                return n * fact(n - 1);
            }
            
            // When a function definition destructures an array, unused entries from the array also cause warnings.
            function getY([x, y]) {
                return y;
            }

            Examples of correct code for this rule:

            /*eslint no-unused-vars: "error"*/
            
            var x = 10;
            alert(x);
            
            // foo is considered used here
            myFunc(function foo() {
                // ...
            }.bind(this));
            
            (function(foo) {
                return foo;
            })();
            
            var myFunc;
            myFunc = setTimeout(function() {
                // myFunc is considered used
                myFunc();
            }, 50);
            
            // Only the second argument from the descructured array is used.
            function getY([, y]) {
                return y;
            }

            exported

            In environments outside of CommonJS or ECMAScript modules, you may use var to create a global variable that may be used by other scripts. You can use the /* exported variableName */ comment block to indicate that this variable is being exported and therefore should not be considered unused.

            Note that /* exported */ has no effect for any of the following:

            • when the environment is node or commonjs
            • when parserOptions.sourceType is module
            • when ecmaFeatures.globalReturn is true

            The line comment // exported variableName will not work as exported is not line-specific.

            Examples of correct code for /* exported variableName */ operation:

            /* exported global_var */
            
            var global_var = 42;

            Options

            This rule takes one argument which can be a string or an object. The string settings are the same as those of the vars property (explained below).

            By default this rule is enabled with all option for variables and after-used for arguments.

            {
                "rules": {
                    "no-unused-vars": ["error", { "vars": "all", "args": "after-used", "ignoreRestSiblings": false }]
                }
            }

            vars

            The vars option has two settings:

            • all checks all variables for usage, including those in the global scope. This is the default setting.
            • local checks only that locally-declared variables are used but will allow global variables to be unused.

            vars: local

            Examples of correct code for the { "vars": "local" } option:

            /*eslint no-unused-vars: ["error", { "vars": "local" }]*/
            /*global some_unused_var */
            
            some_unused_var = 42;

            varsIgnorePattern

            The varsIgnorePattern option specifies exceptions not to check for usage: variables whose names match a regexp pattern. For example, variables whose names contain ignored or Ignored.

            Examples of correct code for the { "varsIgnorePattern": "[iI]gnored" } option:

            /*eslint no-unused-vars: ["error", { "varsIgnorePattern": "[iI]gnored" }]*/
            
            var firstVarIgnored = 1;
            var secondVar = 2;
            console.log(secondVar);

            args

            The args option has three settings:

            • after-used - only the last argument must be used. This allows you, for instance, to have two named parameters to a function and as long as you use the second argument, ESLint will not warn you about the first. This is the default setting.
            • all - all named arguments must be used.
            • none - do not check arguments.

            args: after-used

            Examples of incorrect code for the default { "args": "after-used" } option:

            /*eslint no-unused-vars: ["error", { "args": "after-used" }]*/
            
            // 1 error
            // "baz" is defined but never used
            (function(foo, bar, baz) {
                return bar;
            })();

            Examples of correct code for the default { "args": "after-used" } option:

            /*eslint no-unused-vars: ["error", {"args": "after-used"}]*/
            
            (function(foo, bar, baz) {
                return baz;
            })();

            args: all

            Examples of incorrect code for the { "args": "all" } option:

            /*eslint no-unused-vars: ["error", { "args": "all" }]*/
            
            // 2 errors
            // "foo" is defined but never used
            // "baz" is defined but never used
            (function(foo, bar, baz) {
                return bar;
            })();

            args: none

            Examples of correct code for the { "args": "none" } option:

            /*eslint no-unused-vars: ["error", { "args": "none" }]*/
            
            (function(foo, bar, baz) {
                return bar;
            })();

            ignoreRestSiblings

            The ignoreRestSiblings option is a boolean (default: false). Using a Rest Property it is possible to "omit" properties from an object, but by default the sibling properties are marked as "unused". With this option enabled the rest property's siblings are ignored.

            Examples of correct code for the { "ignoreRestSiblings": true } option:

            /*eslint no-unused-vars: ["error", { "ignoreRestSiblings": true }]*/
            // 'type' is ignored because it has a rest property sibling.
            var { type, ...coords } = data;

            argsIgnorePattern

            The argsIgnorePattern option specifies exceptions not to check for usage: arguments whose names match a regexp pattern. For example, variables whose names begin with an underscore.

            Examples of correct code for the { "argsIgnorePattern": "^_" } option:

            /*eslint no-unused-vars: ["error", { "argsIgnorePattern": "^_" }]*/
            
            function foo(x, _y) {
                return x + 1;
            }
            foo();

            caughtErrors

            The caughtErrors option is used for catch block arguments validation.

            It has two settings:

            • none - do not check error objects. This is the default setting.
            • all - all named arguments must be used.

            caughtErrors: none

            Not specifying this rule is equivalent of assigning it to none.

            Examples of correct code for the { "caughtErrors": "none" } option:

            /*eslint no-unused-vars: ["error", { "caughtErrors": "none" }]*/
            
            try {
                //...
            } catch (err) {
                console.error("errors");
            }

            caughtErrors: all

            Examples of incorrect code for the { "caughtErrors": "all" } option:

            /*eslint no-unused-vars: ["error", { "caughtErrors": "all" }]*/
            
            // 1 error
            // "err" is defined but never used
            try {
                //...
            } catch (err) {
                console.error("errors");
            }

            caughtErrorsIgnorePattern

            The caughtErrorsIgnorePattern option specifies exceptions not to check for usage: catch arguments whose names match a regexp pattern. For example, variables whose names begin with a string 'ignore'.

            Examples of correct code for the { "caughtErrorsIgnorePattern": "^ignore" } option:

            /*eslint no-unused-vars: ["error", { "caughtErrorsIgnorePattern": "^ignore" }]*/
            
            try {
                //...
            } catch (ignoreErr) {
                console.error("errors");
            }

            When Not To Use It

            If you don't want to be notified about unused variables or function arguments, you can safely turn this rule off. Source: http://eslint.org/docs/rules/

            'callback' is defined but never used.
            Open

            unrealFs.read = function(fd, buffer, offset, length, position, callback){
            Severity: Minor
            Found in lib/unreal-methods.js by eslint

            Disallow Unused Variables (no-unused-vars)

            Variables that are declared and not used anywhere in the code are most likely an error due to incomplete refactoring. Such variables take up space in the code and can lead to confusion by readers.

            Rule Details

            This rule is aimed at eliminating unused variables, functions, and parameters of functions.

            A variable is considered to be used if any of the following are true:

            • It represents a function that is called (doSomething())
            • It is read (var y = x)
            • It is passed into a function as an argument (doSomething(x))
            • It is read inside of a function that is passed to another function (doSomething(function() { foo(); }))

            A variable is not considered to be used if it is only ever assigned to (var x = 5) or declared.

            Examples of incorrect code for this rule:

            /*eslint no-unused-vars: "error"*/
            /*global some_unused_var*/
            
            // It checks variables you have defined as global
            some_unused_var = 42;
            
            var x;
            
            // Write-only variables are not considered as used.
            var y = 10;
            y = 5;
            
            // A read for a modification of itself is not considered as used.
            var z = 0;
            z = z + 1;
            
            // By default, unused arguments cause warnings.
            (function(foo) {
                return 5;
            })();
            
            // Unused recursive functions also cause warnings.
            function fact(n) {
                if (n < 2) return 1;
                return n * fact(n - 1);
            }
            
            // When a function definition destructures an array, unused entries from the array also cause warnings.
            function getY([x, y]) {
                return y;
            }

            Examples of correct code for this rule:

            /*eslint no-unused-vars: "error"*/
            
            var x = 10;
            alert(x);
            
            // foo is considered used here
            myFunc(function foo() {
                // ...
            }.bind(this));
            
            (function(foo) {
                return foo;
            })();
            
            var myFunc;
            myFunc = setTimeout(function() {
                // myFunc is considered used
                myFunc();
            }, 50);
            
            // Only the second argument from the descructured array is used.
            function getY([, y]) {
                return y;
            }

            exported

            In environments outside of CommonJS or ECMAScript modules, you may use var to create a global variable that may be used by other scripts. You can use the /* exported variableName */ comment block to indicate that this variable is being exported and therefore should not be considered unused.

            Note that /* exported */ has no effect for any of the following:

            • when the environment is node or commonjs
            • when parserOptions.sourceType is module
            • when ecmaFeatures.globalReturn is true

            The line comment // exported variableName will not work as exported is not line-specific.

            Examples of correct code for /* exported variableName */ operation:

            /* exported global_var */
            
            var global_var = 42;

            Options

            This rule takes one argument which can be a string or an object. The string settings are the same as those of the vars property (explained below).

            By default this rule is enabled with all option for variables and after-used for arguments.

            {
                "rules": {
                    "no-unused-vars": ["error", { "vars": "all", "args": "after-used", "ignoreRestSiblings": false }]
                }
            }

            vars

            The vars option has two settings:

            • all checks all variables for usage, including those in the global scope. This is the default setting.
            • local checks only that locally-declared variables are used but will allow global variables to be unused.

            vars: local

            Examples of correct code for the { "vars": "local" } option:

            /*eslint no-unused-vars: ["error", { "vars": "local" }]*/
            /*global some_unused_var */
            
            some_unused_var = 42;

            varsIgnorePattern

            The varsIgnorePattern option specifies exceptions not to check for usage: variables whose names match a regexp pattern. For example, variables whose names contain ignored or Ignored.

            Examples of correct code for the { "varsIgnorePattern": "[iI]gnored" } option:

            /*eslint no-unused-vars: ["error", { "varsIgnorePattern": "[iI]gnored" }]*/
            
            var firstVarIgnored = 1;
            var secondVar = 2;
            console.log(secondVar);

            args

            The args option has three settings:

            • after-used - only the last argument must be used. This allows you, for instance, to have two named parameters to a function and as long as you use the second argument, ESLint will not warn you about the first. This is the default setting.
            • all - all named arguments must be used.
            • none - do not check arguments.

            args: after-used

            Examples of incorrect code for the default { "args": "after-used" } option:

            /*eslint no-unused-vars: ["error", { "args": "after-used" }]*/
            
            // 1 error
            // "baz" is defined but never used
            (function(foo, bar, baz) {
                return bar;
            })();

            Examples of correct code for the default { "args": "after-used" } option:

            /*eslint no-unused-vars: ["error", {"args": "after-used"}]*/
            
            (function(foo, bar, baz) {
                return baz;
            })();

            args: all

            Examples of incorrect code for the { "args": "all" } option:

            /*eslint no-unused-vars: ["error", { "args": "all" }]*/
            
            // 2 errors
            // "foo" is defined but never used
            // "baz" is defined but never used
            (function(foo, bar, baz) {
                return bar;
            })();

            args: none

            Examples of correct code for the { "args": "none" } option:

            /*eslint no-unused-vars: ["error", { "args": "none" }]*/
            
            (function(foo, bar, baz) {
                return bar;
            })();

            ignoreRestSiblings

            The ignoreRestSiblings option is a boolean (default: false). Using a Rest Property it is possible to "omit" properties from an object, but by default the sibling properties are marked as "unused". With this option enabled the rest property's siblings are ignored.

            Examples of correct code for the { "ignoreRestSiblings": true } option:

            /*eslint no-unused-vars: ["error", { "ignoreRestSiblings": true }]*/
            // 'type' is ignored because it has a rest property sibling.
            var { type, ...coords } = data;

            argsIgnorePattern

            The argsIgnorePattern option specifies exceptions not to check for usage: arguments whose names match a regexp pattern. For example, variables whose names begin with an underscore.

            Examples of correct code for the { "argsIgnorePattern": "^_" } option:

            /*eslint no-unused-vars: ["error", { "argsIgnorePattern": "^_" }]*/
            
            function foo(x, _y) {
                return x + 1;
            }
            foo();

            caughtErrors

            The caughtErrors option is used for catch block arguments validation.

            It has two settings:

            • none - do not check error objects. This is the default setting.
            • all - all named arguments must be used.

            caughtErrors: none

            Not specifying this rule is equivalent of assigning it to none.

            Examples of correct code for the { "caughtErrors": "none" } option:

            /*eslint no-unused-vars: ["error", { "caughtErrors": "none" }]*/
            
            try {
                //...
            } catch (err) {
                console.error("errors");
            }

            caughtErrors: all

            Examples of incorrect code for the { "caughtErrors": "all" } option:

            /*eslint no-unused-vars: ["error", { "caughtErrors": "all" }]*/
            
            // 1 error
            // "err" is defined but never used
            try {
                //...
            } catch (err) {
                console.error("errors");
            }

            caughtErrorsIgnorePattern

            The caughtErrorsIgnorePattern option specifies exceptions not to check for usage: catch arguments whose names match a regexp pattern. For example, variables whose names begin with a string 'ignore'.

            Examples of correct code for the { "caughtErrorsIgnorePattern": "^ignore" } option:

            /*eslint no-unused-vars: ["error", { "caughtErrorsIgnorePattern": "^ignore" }]*/
            
            try {
                //...
            } catch (ignoreErr) {
                console.error("errors");
            }

            When Not To Use It

            If you don't want to be notified about unused variables or function arguments, you can safely turn this rule off. Source: http://eslint.org/docs/rules/

            Severity
            Category
            Status
            Source
            Language