eslint 0.22.0 → 0.24.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -20
- package/README.md +111 -95
- package/bin/eslint.js +41 -41
- package/conf/environments.js +87 -81
- package/conf/eslint.json +186 -179
- package/lib/api.js +13 -12
- package/lib/cli-engine.js +441 -451
- package/lib/cli.js +196 -196
- package/lib/config-initializer.js +145 -145
- package/lib/config-validator.js +110 -110
- package/lib/config.js +428 -416
- package/lib/eslint.js +1072 -1073
- package/lib/file-finder.js +167 -167
- package/lib/formatters/checkstyle.js +68 -68
- package/lib/formatters/compact.js +53 -53
- package/lib/formatters/jslint-xml.js +40 -40
- package/lib/formatters/junit.js +63 -63
- package/lib/formatters/stylish.js +90 -90
- package/lib/formatters/tap.js +86 -86
- package/lib/ignored-paths.js +137 -137
- package/lib/load-rules.js +39 -39
- package/lib/options.js +132 -126
- package/lib/rule-context.js +107 -107
- package/lib/rules/accessor-pairs.js +65 -65
- package/lib/rules/array-bracket-spacing.js +180 -0
- package/lib/rules/block-scoped-var.js +339 -320
- package/lib/rules/brace-style.js +228 -228
- package/lib/rules/camelcase.js +111 -111
- package/lib/rules/comma-dangle.js +67 -64
- package/lib/rules/comma-spacing.js +191 -191
- package/lib/rules/comma-style.js +195 -195
- package/lib/rules/complexity.js +94 -94
- package/lib/rules/computed-property-spacing.js +144 -0
- package/lib/rules/consistent-return.js +75 -75
- package/lib/rules/consistent-this.js +119 -119
- package/lib/rules/constructor-super.js +108 -0
- package/lib/rules/curly.js +109 -109
- package/lib/rules/default-case.js +66 -66
- package/lib/rules/dot-location.js +63 -63
- package/lib/rules/dot-notation.js +119 -119
- package/lib/rules/eol-last.js +38 -38
- package/lib/rules/eqeqeq.js +96 -96
- package/lib/rules/func-names.js +45 -45
- package/lib/rules/func-style.js +49 -49
- package/lib/rules/generator-star-spacing.js +104 -87
- package/lib/rules/generator-star.js +76 -76
- package/lib/rules/global-strict.js +49 -49
- package/lib/rules/guard-for-in.js +32 -32
- package/lib/rules/handle-callback-err.js +81 -124
- package/lib/rules/indent.js +486 -486
- package/lib/rules/key-spacing.js +325 -325
- package/lib/rules/linebreak-style.js +44 -44
- package/lib/rules/lines-around-comment.js +228 -160
- package/lib/rules/max-depth.js +89 -89
- package/lib/rules/max-len.js +76 -76
- package/lib/rules/max-nested-callbacks.js +73 -73
- package/lib/rules/max-params.js +45 -45
- package/lib/rules/max-statements.js +61 -61
- package/lib/rules/new-cap.js +224 -224
- package/lib/rules/new-parens.js +29 -29
- package/lib/rules/newline-after-var.js +127 -127
- package/lib/rules/no-alert.js +153 -153
- package/lib/rules/no-array-constructor.js +31 -31
- package/lib/rules/no-bitwise.js +57 -57
- package/lib/rules/no-caller.js +29 -29
- package/lib/rules/no-catch-shadow.js +52 -52
- package/lib/rules/no-comma-dangle.js +45 -45
- package/lib/rules/no-cond-assign.js +123 -123
- package/lib/rules/no-console.js +27 -27
- package/lib/rules/no-constant-condition.js +73 -73
- package/lib/rules/no-continue.js +23 -23
- package/lib/rules/no-control-regex.js +58 -58
- package/lib/rules/no-debugger.js +22 -22
- package/lib/rules/no-delete-var.js +25 -25
- package/lib/rules/no-div-regex.js +27 -27
- package/lib/rules/no-dupe-args.js +89 -85
- package/lib/rules/no-dupe-keys.js +43 -43
- package/lib/rules/no-duplicate-case.js +67 -67
- package/lib/rules/no-else-return.js +125 -125
- package/lib/rules/no-empty-character-class.js +43 -43
- package/lib/rules/no-empty-class.js +45 -45
- package/lib/rules/no-empty-label.js +27 -27
- package/lib/rules/no-empty.js +49 -49
- package/lib/rules/no-eq-null.js +29 -29
- package/lib/rules/no-eval.js +26 -26
- package/lib/rules/no-ex-assign.js +42 -42
- package/lib/rules/no-extend-native.js +103 -103
- package/lib/rules/no-extra-bind.js +81 -81
- package/lib/rules/no-extra-boolean-cast.js +71 -71
- package/lib/rules/no-extra-parens.js +368 -355
- package/lib/rules/no-extra-semi.js +70 -23
- package/lib/rules/no-extra-strict.js +86 -86
- package/lib/rules/no-fallthrough.js +97 -97
- package/lib/rules/no-floating-decimal.js +30 -30
- package/lib/rules/no-func-assign.js +83 -83
- package/lib/rules/no-implied-eval.js +76 -76
- package/lib/rules/no-inline-comments.js +49 -49
- package/lib/rules/no-inner-declarations.js +78 -78
- package/lib/rules/no-invalid-regexp.js +53 -53
- package/lib/rules/no-irregular-whitespace.js +135 -135
- package/lib/rules/no-iterator.js +28 -28
- package/lib/rules/no-label-var.js +64 -64
- package/lib/rules/no-labels.js +44 -44
- package/lib/rules/no-lone-blocks.js +106 -27
- package/lib/rules/no-lonely-if.js +30 -30
- package/lib/rules/no-loop-func.js +58 -58
- package/lib/rules/no-mixed-requires.js +165 -165
- package/lib/rules/no-mixed-spaces-and-tabs.js +74 -74
- package/lib/rules/no-multi-spaces.js +119 -119
- package/lib/rules/no-multi-str.js +43 -43
- package/lib/rules/no-multiple-empty-lines.js +98 -98
- package/lib/rules/no-native-reassign.js +62 -62
- package/lib/rules/no-negated-in-lhs.js +25 -25
- package/lib/rules/no-nested-ternary.js +24 -24
- package/lib/rules/no-new-func.js +25 -25
- package/lib/rules/no-new-object.js +25 -25
- package/lib/rules/no-new-require.js +25 -25
- package/lib/rules/no-new-wrappers.js +26 -26
- package/lib/rules/no-new.js +27 -27
- package/lib/rules/no-obj-calls.js +28 -28
- package/lib/rules/no-octal-escape.js +39 -39
- package/lib/rules/no-octal.js +25 -25
- package/lib/rules/no-param-reassign.js +87 -87
- package/lib/rules/no-path-concat.js +39 -39
- package/lib/rules/no-plusplus.js +24 -24
- package/lib/rules/no-process-env.js +30 -30
- package/lib/rules/no-process-exit.js +33 -33
- package/lib/rules/no-proto.js +28 -28
- package/lib/rules/no-redeclare.js +68 -68
- package/lib/rules/no-regex-spaces.js +35 -35
- package/lib/rules/no-reserved-keys.js +56 -56
- package/lib/rules/no-restricted-modules.js +85 -85
- package/lib/rules/no-return-assign.js +53 -24
- package/lib/rules/no-script-url.js +34 -34
- package/lib/rules/no-self-compare.js +29 -29
- package/lib/rules/no-sequences.js +94 -94
- package/lib/rules/no-shadow-restricted-names.js +51 -51
- package/lib/rules/no-shadow.js +181 -136
- package/lib/rules/no-space-before-semi.js +98 -98
- package/lib/rules/no-spaced-func.js +37 -37
- package/lib/rules/no-sparse-arrays.js +33 -33
- package/lib/rules/no-sync.js +30 -30
- package/lib/rules/no-ternary.js +24 -24
- package/lib/rules/no-this-before-super.js +144 -0
- package/lib/rules/no-throw-literal.js +33 -33
- package/lib/rules/no-trailing-spaces.js +74 -63
- package/lib/rules/no-undef-init.js +28 -28
- package/lib/rules/no-undef.js +92 -92
- package/lib/rules/no-undefined.js +27 -27
- package/lib/rules/no-underscore-dangle.js +73 -73
- package/lib/rules/no-unexpected-multiline.js +58 -0
- package/lib/rules/no-unneeded-ternary.js +48 -48
- package/lib/rules/no-unreachable.js +98 -98
- package/lib/rules/no-unused-expressions.js +76 -76
- package/lib/rules/no-unused-vars.js +252 -250
- package/lib/rules/no-use-before-define.js +105 -105
- package/lib/rules/no-var.js +26 -26
- package/lib/rules/no-void.js +28 -28
- package/lib/rules/no-warning-comments.js +102 -102
- package/lib/rules/no-with.js +22 -22
- package/lib/rules/no-wrap-func.js +65 -65
- package/lib/rules/object-curly-spacing.js +231 -206
- package/lib/rules/object-shorthand.js +74 -73
- package/lib/rules/one-var.js +311 -304
- package/lib/rules/operator-assignment.js +118 -118
- package/lib/rules/operator-linebreak.js +114 -114
- package/lib/rules/padded-blocks.js +98 -98
- package/lib/rules/prefer-const.js +91 -0
- package/lib/rules/quote-props.js +72 -72
- package/lib/rules/quotes.js +92 -92
- package/lib/rules/radix.js +41 -41
- package/lib/rules/semi-spacing.js +167 -167
- package/lib/rules/semi.js +136 -136
- package/lib/rules/sort-vars.js +49 -49
- package/lib/rules/space-after-function-name.js +49 -49
- package/lib/rules/space-after-keywords.js +82 -82
- package/lib/rules/space-before-blocks.js +91 -91
- package/lib/rules/space-before-function-paren.js +139 -139
- package/lib/rules/space-before-function-parentheses.js +139 -139
- package/lib/rules/space-in-brackets.js +305 -305
- package/lib/rules/space-in-parens.js +281 -281
- package/lib/rules/space-infix-ops.js +106 -106
- package/lib/rules/space-return-throw-case.js +38 -38
- package/lib/rules/space-unary-ops.js +124 -133
- package/lib/rules/spaced-comment.js +143 -0
- package/lib/rules/spaced-line-comment.js +89 -89
- package/lib/rules/strict.js +242 -242
- package/lib/rules/use-isnan.js +26 -26
- package/lib/rules/valid-jsdoc.js +215 -215
- package/lib/rules/valid-typeof.js +42 -42
- package/lib/rules/vars-on-top.js +115 -115
- package/lib/rules/wrap-iife.js +48 -48
- package/lib/rules/wrap-regex.js +38 -38
- package/lib/rules/yoda.js +242 -225
- package/lib/rules.js +88 -88
- package/lib/timing.js +109 -109
- package/lib/token-store.js +201 -201
- package/lib/util/traverse.js +105 -105
- package/lib/util.js +125 -85
- package/package.json +6 -6
- package/CHANGELOG.md +0 -1638
package/lib/rules/max-len.js
CHANGED
@@ -1,76 +1,76 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview Rule to check for max length on a line.
|
3
|
-
* @author Matt DuVall <http://www.mattduvall.com>
|
4
|
-
* @copyright 2013 Matt DuVall. All rights reserved.
|
5
|
-
*/
|
6
|
-
|
7
|
-
"use strict";
|
8
|
-
|
9
|
-
//------------------------------------------------------------------------------
|
10
|
-
// Rule Definition
|
11
|
-
//------------------------------------------------------------------------------
|
12
|
-
|
13
|
-
module.exports = function(context) {
|
14
|
-
|
15
|
-
/**
|
16
|
-
* Creates a string that is made up of repeating a given string a certain
|
17
|
-
* number of times. This uses exponentiation of squares to achieve significant
|
18
|
-
* performance gains over the more traditional implementation of such
|
19
|
-
* functionality.
|
20
|
-
* @param {string} str The string to repeat.
|
21
|
-
* @param {int} num The number of times to repeat the string.
|
22
|
-
* @returns {string} The created string.
|
23
|
-
* @private
|
24
|
-
*/
|
25
|
-
function stringRepeat(str, num) {
|
26
|
-
var result = "";
|
27
|
-
for (num |= 0; num > 0; num >>>= 1, str += str) {
|
28
|
-
if (num & 1) {
|
29
|
-
result += str;
|
30
|
-
}
|
31
|
-
}
|
32
|
-
return result;
|
33
|
-
}
|
34
|
-
|
35
|
-
var tabWidth = context.options[1] || 4;
|
36
|
-
|
37
|
-
var maxLength = context.options[0] || 80,
|
38
|
-
tabString = stringRepeat(" ", tabWidth);
|
39
|
-
|
40
|
-
//--------------------------------------------------------------------------
|
41
|
-
// Helpers
|
42
|
-
//--------------------------------------------------------------------------
|
43
|
-
function checkProgramForMaxLength(node) {
|
44
|
-
var lines = context.getSourceLines();
|
45
|
-
|
46
|
-
// Replace the tabs
|
47
|
-
// Split (honors line-ending)
|
48
|
-
// Iterate
|
49
|
-
lines.forEach(function(line, i) {
|
50
|
-
if (line.replace(/\t/g, tabString).length > maxLength) {
|
51
|
-
context.report(node, { line: i + 1,
|
52
|
-
}
|
53
|
-
});
|
54
|
-
}
|
55
|
-
|
56
|
-
|
57
|
-
//--------------------------------------------------------------------------
|
58
|
-
// Public API
|
59
|
-
//--------------------------------------------------------------------------
|
60
|
-
|
61
|
-
return {
|
62
|
-
"Program": checkProgramForMaxLength
|
63
|
-
};
|
64
|
-
|
65
|
-
};
|
66
|
-
|
67
|
-
module.exports.schema = [
|
68
|
-
{
|
69
|
-
"type": "integer",
|
70
|
-
"minimum": 0
|
71
|
-
},
|
72
|
-
{
|
73
|
-
"type": "integer",
|
74
|
-
"minimum": 0
|
75
|
-
}
|
76
|
-
];
|
1
|
+
/**
|
2
|
+
* @fileoverview Rule to check for max length on a line.
|
3
|
+
* @author Matt DuVall <http://www.mattduvall.com>
|
4
|
+
* @copyright 2013 Matt DuVall. All rights reserved.
|
5
|
+
*/
|
6
|
+
|
7
|
+
"use strict";
|
8
|
+
|
9
|
+
//------------------------------------------------------------------------------
|
10
|
+
// Rule Definition
|
11
|
+
//------------------------------------------------------------------------------
|
12
|
+
|
13
|
+
module.exports = function(context) {
|
14
|
+
|
15
|
+
/**
|
16
|
+
* Creates a string that is made up of repeating a given string a certain
|
17
|
+
* number of times. This uses exponentiation of squares to achieve significant
|
18
|
+
* performance gains over the more traditional implementation of such
|
19
|
+
* functionality.
|
20
|
+
* @param {string} str The string to repeat.
|
21
|
+
* @param {int} num The number of times to repeat the string.
|
22
|
+
* @returns {string} The created string.
|
23
|
+
* @private
|
24
|
+
*/
|
25
|
+
function stringRepeat(str, num) {
|
26
|
+
var result = "";
|
27
|
+
for (num |= 0; num > 0; num >>>= 1, str += str) {
|
28
|
+
if (num & 1) {
|
29
|
+
result += str;
|
30
|
+
}
|
31
|
+
}
|
32
|
+
return result;
|
33
|
+
}
|
34
|
+
|
35
|
+
var tabWidth = context.options[1] || 4;
|
36
|
+
|
37
|
+
var maxLength = context.options[0] || 80,
|
38
|
+
tabString = stringRepeat(" ", tabWidth);
|
39
|
+
|
40
|
+
//--------------------------------------------------------------------------
|
41
|
+
// Helpers
|
42
|
+
//--------------------------------------------------------------------------
|
43
|
+
function checkProgramForMaxLength(node) {
|
44
|
+
var lines = context.getSourceLines();
|
45
|
+
|
46
|
+
// Replace the tabs
|
47
|
+
// Split (honors line-ending)
|
48
|
+
// Iterate
|
49
|
+
lines.forEach(function(line, i) {
|
50
|
+
if (line.replace(/\t/g, tabString).length > maxLength) {
|
51
|
+
context.report(node, { line: i + 1, column: 0 }, "Line " + (i + 1) + " exceeds the maximum line length of " + maxLength + ".");
|
52
|
+
}
|
53
|
+
});
|
54
|
+
}
|
55
|
+
|
56
|
+
|
57
|
+
//--------------------------------------------------------------------------
|
58
|
+
// Public API
|
59
|
+
//--------------------------------------------------------------------------
|
60
|
+
|
61
|
+
return {
|
62
|
+
"Program": checkProgramForMaxLength
|
63
|
+
};
|
64
|
+
|
65
|
+
};
|
66
|
+
|
67
|
+
module.exports.schema = [
|
68
|
+
{
|
69
|
+
"type": "integer",
|
70
|
+
"minimum": 0
|
71
|
+
},
|
72
|
+
{
|
73
|
+
"type": "integer",
|
74
|
+
"minimum": 0
|
75
|
+
}
|
76
|
+
];
|
@@ -1,73 +1,73 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview Rule to enforce a maximum number of nested callbacks.
|
3
|
-
* @author Ian Christian Myers
|
4
|
-
* @copyright 2013 Ian Christian Myers. All rights reserved.
|
5
|
-
*/
|
6
|
-
|
7
|
-
"use strict";
|
8
|
-
|
9
|
-
//------------------------------------------------------------------------------
|
10
|
-
// Rule Definition
|
11
|
-
//------------------------------------------------------------------------------
|
12
|
-
|
13
|
-
module.exports = function(context) {
|
14
|
-
|
15
|
-
//--------------------------------------------------------------------------
|
16
|
-
// Constants
|
17
|
-
//--------------------------------------------------------------------------
|
18
|
-
|
19
|
-
var THRESHOLD = context.options[0];
|
20
|
-
|
21
|
-
//--------------------------------------------------------------------------
|
22
|
-
// Helpers
|
23
|
-
//--------------------------------------------------------------------------
|
24
|
-
|
25
|
-
var callbackStack = [];
|
26
|
-
|
27
|
-
/**
|
28
|
-
* Checks a given function node for too many callbacks.
|
29
|
-
* @param {ASTNode} node The node to check.
|
30
|
-
* @returns {void}
|
31
|
-
* @private
|
32
|
-
*/
|
33
|
-
function checkFunction(node) {
|
34
|
-
var parent = node.parent;
|
35
|
-
|
36
|
-
if (parent.type === "CallExpression") {
|
37
|
-
callbackStack.push(node);
|
38
|
-
}
|
39
|
-
|
40
|
-
if (callbackStack.length > THRESHOLD) {
|
41
|
-
var opts = {num: callbackStack.length, max: THRESHOLD};
|
42
|
-
context.report(node, "Too many nested callbacks ({{num}}). Maximum allowed is {{max}}.", opts);
|
43
|
-
}
|
44
|
-
}
|
45
|
-
|
46
|
-
/**
|
47
|
-
* Pops the call stack.
|
48
|
-
* @returns {void}
|
49
|
-
* @private
|
50
|
-
*/
|
51
|
-
function popStack() {
|
52
|
-
callbackStack.pop();
|
53
|
-
}
|
54
|
-
|
55
|
-
//--------------------------------------------------------------------------
|
56
|
-
// Public API
|
57
|
-
//--------------------------------------------------------------------------
|
58
|
-
|
59
|
-
return {
|
60
|
-
"ArrowFunctionExpression": checkFunction,
|
61
|
-
"ArrowFunctionExpression:exit": popStack,
|
62
|
-
|
63
|
-
"FunctionExpression": checkFunction,
|
64
|
-
"FunctionExpression:exit": popStack
|
65
|
-
};
|
66
|
-
|
67
|
-
};
|
68
|
-
|
69
|
-
module.exports.schema = [
|
70
|
-
{
|
71
|
-
"type": "integer"
|
72
|
-
}
|
73
|
-
];
|
1
|
+
/**
|
2
|
+
* @fileoverview Rule to enforce a maximum number of nested callbacks.
|
3
|
+
* @author Ian Christian Myers
|
4
|
+
* @copyright 2013 Ian Christian Myers. All rights reserved.
|
5
|
+
*/
|
6
|
+
|
7
|
+
"use strict";
|
8
|
+
|
9
|
+
//------------------------------------------------------------------------------
|
10
|
+
// Rule Definition
|
11
|
+
//------------------------------------------------------------------------------
|
12
|
+
|
13
|
+
module.exports = function(context) {
|
14
|
+
|
15
|
+
//--------------------------------------------------------------------------
|
16
|
+
// Constants
|
17
|
+
//--------------------------------------------------------------------------
|
18
|
+
|
19
|
+
var THRESHOLD = context.options[0];
|
20
|
+
|
21
|
+
//--------------------------------------------------------------------------
|
22
|
+
// Helpers
|
23
|
+
//--------------------------------------------------------------------------
|
24
|
+
|
25
|
+
var callbackStack = [];
|
26
|
+
|
27
|
+
/**
|
28
|
+
* Checks a given function node for too many callbacks.
|
29
|
+
* @param {ASTNode} node The node to check.
|
30
|
+
* @returns {void}
|
31
|
+
* @private
|
32
|
+
*/
|
33
|
+
function checkFunction(node) {
|
34
|
+
var parent = node.parent;
|
35
|
+
|
36
|
+
if (parent.type === "CallExpression") {
|
37
|
+
callbackStack.push(node);
|
38
|
+
}
|
39
|
+
|
40
|
+
if (callbackStack.length > THRESHOLD) {
|
41
|
+
var opts = {num: callbackStack.length, max: THRESHOLD};
|
42
|
+
context.report(node, "Too many nested callbacks ({{num}}). Maximum allowed is {{max}}.", opts);
|
43
|
+
}
|
44
|
+
}
|
45
|
+
|
46
|
+
/**
|
47
|
+
* Pops the call stack.
|
48
|
+
* @returns {void}
|
49
|
+
* @private
|
50
|
+
*/
|
51
|
+
function popStack() {
|
52
|
+
callbackStack.pop();
|
53
|
+
}
|
54
|
+
|
55
|
+
//--------------------------------------------------------------------------
|
56
|
+
// Public API
|
57
|
+
//--------------------------------------------------------------------------
|
58
|
+
|
59
|
+
return {
|
60
|
+
"ArrowFunctionExpression": checkFunction,
|
61
|
+
"ArrowFunctionExpression:exit": popStack,
|
62
|
+
|
63
|
+
"FunctionExpression": checkFunction,
|
64
|
+
"FunctionExpression:exit": popStack
|
65
|
+
};
|
66
|
+
|
67
|
+
};
|
68
|
+
|
69
|
+
module.exports.schema = [
|
70
|
+
{
|
71
|
+
"type": "integer"
|
72
|
+
}
|
73
|
+
];
|
package/lib/rules/max-params.js
CHANGED
@@ -1,45 +1,45 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview Rule to flag when a function has too many parameters
|
3
|
-
* @author Ilya Volodin
|
4
|
-
* @copyright 2014 Nicholas C. Zakas. All rights reserved.
|
5
|
-
* @copyright 2013 Ilya Volodin. All rights reserved.
|
6
|
-
*/
|
7
|
-
|
8
|
-
"use strict";
|
9
|
-
|
10
|
-
//------------------------------------------------------------------------------
|
11
|
-
// Rule Definition
|
12
|
-
//------------------------------------------------------------------------------
|
13
|
-
|
14
|
-
module.exports = function(context) {
|
15
|
-
|
16
|
-
var numParams = context.options[0] || 3;
|
17
|
-
|
18
|
-
/**
|
19
|
-
* Checks a function to see if it has too many parameters.
|
20
|
-
* @param {ASTNode} node The node to check.
|
21
|
-
* @returns {void}
|
22
|
-
* @private
|
23
|
-
*/
|
24
|
-
function checkFunction(node) {
|
25
|
-
if (node.params.length > numParams) {
|
26
|
-
context.report(node, "This function has too many parameters ({{count}}). Maximum allowed is {{max}}.", {
|
27
|
-
count: node.params.length,
|
28
|
-
max: numParams
|
29
|
-
});
|
30
|
-
}
|
31
|
-
}
|
32
|
-
|
33
|
-
return {
|
34
|
-
"FunctionDeclaration": checkFunction,
|
35
|
-
"ArrowFunctionExpression": checkFunction,
|
36
|
-
"FunctionExpression": checkFunction
|
37
|
-
};
|
38
|
-
|
39
|
-
};
|
40
|
-
|
41
|
-
module.exports.schema = [
|
42
|
-
{
|
43
|
-
"type": "integer"
|
44
|
-
}
|
45
|
-
];
|
1
|
+
/**
|
2
|
+
* @fileoverview Rule to flag when a function has too many parameters
|
3
|
+
* @author Ilya Volodin
|
4
|
+
* @copyright 2014 Nicholas C. Zakas. All rights reserved.
|
5
|
+
* @copyright 2013 Ilya Volodin. All rights reserved.
|
6
|
+
*/
|
7
|
+
|
8
|
+
"use strict";
|
9
|
+
|
10
|
+
//------------------------------------------------------------------------------
|
11
|
+
// Rule Definition
|
12
|
+
//------------------------------------------------------------------------------
|
13
|
+
|
14
|
+
module.exports = function(context) {
|
15
|
+
|
16
|
+
var numParams = context.options[0] || 3;
|
17
|
+
|
18
|
+
/**
|
19
|
+
* Checks a function to see if it has too many parameters.
|
20
|
+
* @param {ASTNode} node The node to check.
|
21
|
+
* @returns {void}
|
22
|
+
* @private
|
23
|
+
*/
|
24
|
+
function checkFunction(node) {
|
25
|
+
if (node.params.length > numParams) {
|
26
|
+
context.report(node, "This function has too many parameters ({{count}}). Maximum allowed is {{max}}.", {
|
27
|
+
count: node.params.length,
|
28
|
+
max: numParams
|
29
|
+
});
|
30
|
+
}
|
31
|
+
}
|
32
|
+
|
33
|
+
return {
|
34
|
+
"FunctionDeclaration": checkFunction,
|
35
|
+
"ArrowFunctionExpression": checkFunction,
|
36
|
+
"FunctionExpression": checkFunction
|
37
|
+
};
|
38
|
+
|
39
|
+
};
|
40
|
+
|
41
|
+
module.exports.schema = [
|
42
|
+
{
|
43
|
+
"type": "integer"
|
44
|
+
}
|
45
|
+
];
|
@@ -1,61 +1,61 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview A rule to set the maximum number of statements in a function.
|
3
|
-
* @author Ian Christian Myers
|
4
|
-
* @copyright 2013 Ian Christian Myers. All rights reserved.
|
5
|
-
*/
|
6
|
-
|
7
|
-
"use strict";
|
8
|
-
|
9
|
-
//------------------------------------------------------------------------------
|
10
|
-
// Rule Definition
|
11
|
-
//------------------------------------------------------------------------------
|
12
|
-
|
13
|
-
module.exports = function(context) {
|
14
|
-
|
15
|
-
//--------------------------------------------------------------------------
|
16
|
-
// Helpers
|
17
|
-
//--------------------------------------------------------------------------
|
18
|
-
|
19
|
-
var functionStack = [],
|
20
|
-
maxStatements = context.options[0] || 10;
|
21
|
-
|
22
|
-
function startFunction() {
|
23
|
-
functionStack.push(0);
|
24
|
-
}
|
25
|
-
|
26
|
-
function endFunction(node) {
|
27
|
-
var count = functionStack.pop();
|
28
|
-
|
29
|
-
if (count > maxStatements) {
|
30
|
-
context.report(node, "This function has too many statements ({{count}}). Maximum allowed is {{max}}.",
|
31
|
-
{ count: count, max: maxStatements });
|
32
|
-
}
|
33
|
-
}
|
34
|
-
|
35
|
-
function countStatements(node) {
|
36
|
-
functionStack[functionStack.length - 1] += node.body.length;
|
37
|
-
}
|
38
|
-
|
39
|
-
//--------------------------------------------------------------------------
|
40
|
-
// Public API
|
41
|
-
//--------------------------------------------------------------------------
|
42
|
-
|
43
|
-
return {
|
44
|
-
"FunctionDeclaration": startFunction,
|
45
|
-
"FunctionExpression": startFunction,
|
46
|
-
"ArrowFunctionExpression": startFunction,
|
47
|
-
|
48
|
-
"BlockStatement": countStatements,
|
49
|
-
|
50
|
-
"FunctionDeclaration:exit": endFunction,
|
51
|
-
"FunctionExpression:exit": endFunction,
|
52
|
-
"ArrowFunctionExpression:exit": endFunction
|
53
|
-
};
|
54
|
-
|
55
|
-
};
|
56
|
-
|
57
|
-
module.exports.schema = [
|
58
|
-
{
|
59
|
-
"type": "integer"
|
60
|
-
}
|
61
|
-
];
|
1
|
+
/**
|
2
|
+
* @fileoverview A rule to set the maximum number of statements in a function.
|
3
|
+
* @author Ian Christian Myers
|
4
|
+
* @copyright 2013 Ian Christian Myers. All rights reserved.
|
5
|
+
*/
|
6
|
+
|
7
|
+
"use strict";
|
8
|
+
|
9
|
+
//------------------------------------------------------------------------------
|
10
|
+
// Rule Definition
|
11
|
+
//------------------------------------------------------------------------------
|
12
|
+
|
13
|
+
module.exports = function(context) {
|
14
|
+
|
15
|
+
//--------------------------------------------------------------------------
|
16
|
+
// Helpers
|
17
|
+
//--------------------------------------------------------------------------
|
18
|
+
|
19
|
+
var functionStack = [],
|
20
|
+
maxStatements = context.options[0] || 10;
|
21
|
+
|
22
|
+
function startFunction() {
|
23
|
+
functionStack.push(0);
|
24
|
+
}
|
25
|
+
|
26
|
+
function endFunction(node) {
|
27
|
+
var count = functionStack.pop();
|
28
|
+
|
29
|
+
if (count > maxStatements) {
|
30
|
+
context.report(node, "This function has too many statements ({{count}}). Maximum allowed is {{max}}.",
|
31
|
+
{ count: count, max: maxStatements });
|
32
|
+
}
|
33
|
+
}
|
34
|
+
|
35
|
+
function countStatements(node) {
|
36
|
+
functionStack[functionStack.length - 1] += node.body.length;
|
37
|
+
}
|
38
|
+
|
39
|
+
//--------------------------------------------------------------------------
|
40
|
+
// Public API
|
41
|
+
//--------------------------------------------------------------------------
|
42
|
+
|
43
|
+
return {
|
44
|
+
"FunctionDeclaration": startFunction,
|
45
|
+
"FunctionExpression": startFunction,
|
46
|
+
"ArrowFunctionExpression": startFunction,
|
47
|
+
|
48
|
+
"BlockStatement": countStatements,
|
49
|
+
|
50
|
+
"FunctionDeclaration:exit": endFunction,
|
51
|
+
"FunctionExpression:exit": endFunction,
|
52
|
+
"ArrowFunctionExpression:exit": endFunction
|
53
|
+
};
|
54
|
+
|
55
|
+
};
|
56
|
+
|
57
|
+
module.exports.schema = [
|
58
|
+
{
|
59
|
+
"type": "integer"
|
60
|
+
}
|
61
|
+
];
|