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/file-finder.js
CHANGED
@@ -1,167 +1,167 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview Util class to find config files.
|
3
|
-
* @author Aliaksei Shytkin
|
4
|
-
* @copyright 2014 Michael McLaughlin. All rights reserved.
|
5
|
-
*/
|
6
|
-
"use strict";
|
7
|
-
|
8
|
-
//------------------------------------------------------------------------------
|
9
|
-
// Requirements
|
10
|
-
//------------------------------------------------------------------------------
|
11
|
-
|
12
|
-
var fs = require("fs"),
|
13
|
-
path = require("path");
|
14
|
-
|
15
|
-
//------------------------------------------------------------------------------
|
16
|
-
// Helpers
|
17
|
-
//------------------------------------------------------------------------------
|
18
|
-
|
19
|
-
/**
|
20
|
-
* Get the entries for a directory. Including a try-catch may be detrimental to
|
21
|
-
* function performance, so move it out here a separate function.
|
22
|
-
* @param {string} directory The directory to search in.
|
23
|
-
* @returns {string[]} The entries in the directory or an empty array on error.
|
24
|
-
* @private
|
25
|
-
*/
|
26
|
-
function getDirectoryEntries(directory) {
|
27
|
-
try {
|
28
|
-
return fs.readdirSync(directory);
|
29
|
-
} catch (ex) {
|
30
|
-
return [];
|
31
|
-
}
|
32
|
-
}
|
33
|
-
|
34
|
-
//------------------------------------------------------------------------------
|
35
|
-
// API
|
36
|
-
//------------------------------------------------------------------------------
|
37
|
-
|
38
|
-
/**
|
39
|
-
* FileFinder
|
40
|
-
* @constructor
|
41
|
-
* @param {...string} arguments The basename(s) of the file(s) to find.
|
42
|
-
*/
|
43
|
-
function FileFinder() {
|
44
|
-
this.fileNames = Array.prototype.slice.call(arguments);
|
45
|
-
this.cache = {};
|
46
|
-
}
|
47
|
-
|
48
|
-
/**
|
49
|
-
* Find one instance of a specified file name in directory or in a parent directory.
|
50
|
-
* Cache the results.
|
51
|
-
* Does not check if a matching directory entry is a file, and intentionally
|
52
|
-
* only searches for the first file name in this.fileNames.
|
53
|
-
* Is currently used by lib/ignored_paths.js to find an .eslintignore file.
|
54
|
-
* @param {string} directory The directory to start the search from.
|
55
|
-
* @returns {string} Path of the file found, or an empty string if not found.
|
56
|
-
*/
|
57
|
-
FileFinder.prototype.findInDirectoryOrParents = function (directory) {
|
58
|
-
var cache = this.cache,
|
59
|
-
child,
|
60
|
-
dirs,
|
61
|
-
filePath,
|
62
|
-
i,
|
63
|
-
name,
|
64
|
-
searched;
|
65
|
-
|
66
|
-
if (!directory) {
|
67
|
-
directory = process.cwd();
|
68
|
-
}
|
69
|
-
|
70
|
-
if (cache.hasOwnProperty(directory)) {
|
71
|
-
return cache[directory];
|
72
|
-
}
|
73
|
-
|
74
|
-
dirs = [];
|
75
|
-
searched = 0;
|
76
|
-
name = this.fileNames[0];
|
77
|
-
|
78
|
-
while (directory !== child) {
|
79
|
-
dirs[searched++] = directory;
|
80
|
-
|
81
|
-
if (getDirectoryEntries(directory).indexOf(name) !== -1) {
|
82
|
-
filePath = path.resolve(directory, name);
|
83
|
-
break;
|
84
|
-
}
|
85
|
-
|
86
|
-
child = directory;
|
87
|
-
|
88
|
-
// Assign parent directory to directory.
|
89
|
-
directory = path.dirname(directory);
|
90
|
-
}
|
91
|
-
|
92
|
-
for (i = 0; i < searched; i++) {
|
93
|
-
cache[dirs[i]] = filePath;
|
94
|
-
}
|
95
|
-
|
96
|
-
return filePath || String();
|
97
|
-
};
|
98
|
-
|
99
|
-
/**
|
100
|
-
* Find all instances of files with the specified file names, in directory and
|
101
|
-
* parent directories. Cache the results.
|
102
|
-
* Does not check if a matching directory entry is a file.
|
103
|
-
* Searches for all the file names in this.fileNames.
|
104
|
-
* Is currently used by lib/config.js to find .eslintrc and package.json files.
|
105
|
-
* @param {string} directory The directory to start the search from.
|
106
|
-
* @returns {string[]} The file paths found.
|
107
|
-
*/
|
108
|
-
FileFinder.prototype.findAllInDirectoryAndParents = function (directory) {
|
109
|
-
var cache = this.cache,
|
110
|
-
child,
|
111
|
-
dirs,
|
112
|
-
name,
|
113
|
-
fileNames,
|
114
|
-
fileNamesCount,
|
115
|
-
filePath,
|
116
|
-
i,
|
117
|
-
j,
|
118
|
-
searched;
|
119
|
-
|
120
|
-
if (!directory) {
|
121
|
-
directory = process.cwd();
|
122
|
-
}
|
123
|
-
|
124
|
-
if (cache.hasOwnProperty(directory)) {
|
125
|
-
return cache[directory];
|
126
|
-
}
|
127
|
-
|
128
|
-
dirs = [];
|
129
|
-
searched = 0;
|
130
|
-
fileNames = this.fileNames;
|
131
|
-
fileNamesCount = fileNames.length;
|
132
|
-
|
133
|
-
do {
|
134
|
-
dirs[searched++] = directory;
|
135
|
-
cache[directory] = [];
|
136
|
-
|
137
|
-
for (i = 0; i < fileNamesCount; i++) {
|
138
|
-
name = fileNames[i];
|
139
|
-
|
140
|
-
if (getDirectoryEntries(directory).indexOf(name) !== -1) {
|
141
|
-
filePath = path.resolve(directory, name);
|
142
|
-
|
143
|
-
// Add the file path to the cache of each directory searched.
|
144
|
-
for (j = 0; j < searched; j++) {
|
145
|
-
cache[dirs[j]].push(filePath);
|
146
|
-
}
|
147
|
-
}
|
148
|
-
}
|
149
|
-
child = directory;
|
150
|
-
|
151
|
-
// Assign parent directory to directory.
|
152
|
-
directory = path.dirname(directory);
|
153
|
-
|
154
|
-
if (directory === child) {
|
155
|
-
return cache[dirs[0]];
|
156
|
-
}
|
157
|
-
} while (!cache.hasOwnProperty(directory));
|
158
|
-
|
159
|
-
// Add what has been cached previously to the cache of each directory searched.
|
160
|
-
for (i = 0; i < searched; i++) {
|
161
|
-
dirs.push.apply(cache[dirs[i]], cache[directory]);
|
162
|
-
}
|
163
|
-
|
164
|
-
return cache[dirs[0]];
|
165
|
-
};
|
166
|
-
|
167
|
-
module.exports = FileFinder;
|
1
|
+
/**
|
2
|
+
* @fileoverview Util class to find config files.
|
3
|
+
* @author Aliaksei Shytkin
|
4
|
+
* @copyright 2014 Michael McLaughlin. All rights reserved.
|
5
|
+
*/
|
6
|
+
"use strict";
|
7
|
+
|
8
|
+
//------------------------------------------------------------------------------
|
9
|
+
// Requirements
|
10
|
+
//------------------------------------------------------------------------------
|
11
|
+
|
12
|
+
var fs = require("fs"),
|
13
|
+
path = require("path");
|
14
|
+
|
15
|
+
//------------------------------------------------------------------------------
|
16
|
+
// Helpers
|
17
|
+
//------------------------------------------------------------------------------
|
18
|
+
|
19
|
+
/**
|
20
|
+
* Get the entries for a directory. Including a try-catch may be detrimental to
|
21
|
+
* function performance, so move it out here a separate function.
|
22
|
+
* @param {string} directory The directory to search in.
|
23
|
+
* @returns {string[]} The entries in the directory or an empty array on error.
|
24
|
+
* @private
|
25
|
+
*/
|
26
|
+
function getDirectoryEntries(directory) {
|
27
|
+
try {
|
28
|
+
return fs.readdirSync(directory);
|
29
|
+
} catch (ex) {
|
30
|
+
return [];
|
31
|
+
}
|
32
|
+
}
|
33
|
+
|
34
|
+
//------------------------------------------------------------------------------
|
35
|
+
// API
|
36
|
+
//------------------------------------------------------------------------------
|
37
|
+
|
38
|
+
/**
|
39
|
+
* FileFinder
|
40
|
+
* @constructor
|
41
|
+
* @param {...string} arguments The basename(s) of the file(s) to find.
|
42
|
+
*/
|
43
|
+
function FileFinder() {
|
44
|
+
this.fileNames = Array.prototype.slice.call(arguments);
|
45
|
+
this.cache = {};
|
46
|
+
}
|
47
|
+
|
48
|
+
/**
|
49
|
+
* Find one instance of a specified file name in directory or in a parent directory.
|
50
|
+
* Cache the results.
|
51
|
+
* Does not check if a matching directory entry is a file, and intentionally
|
52
|
+
* only searches for the first file name in this.fileNames.
|
53
|
+
* Is currently used by lib/ignored_paths.js to find an .eslintignore file.
|
54
|
+
* @param {string} directory The directory to start the search from.
|
55
|
+
* @returns {string} Path of the file found, or an empty string if not found.
|
56
|
+
*/
|
57
|
+
FileFinder.prototype.findInDirectoryOrParents = function (directory) {
|
58
|
+
var cache = this.cache,
|
59
|
+
child,
|
60
|
+
dirs,
|
61
|
+
filePath,
|
62
|
+
i,
|
63
|
+
name,
|
64
|
+
searched;
|
65
|
+
|
66
|
+
if (!directory) {
|
67
|
+
directory = process.cwd();
|
68
|
+
}
|
69
|
+
|
70
|
+
if (cache.hasOwnProperty(directory)) {
|
71
|
+
return cache[directory];
|
72
|
+
}
|
73
|
+
|
74
|
+
dirs = [];
|
75
|
+
searched = 0;
|
76
|
+
name = this.fileNames[0];
|
77
|
+
|
78
|
+
while (directory !== child) {
|
79
|
+
dirs[searched++] = directory;
|
80
|
+
|
81
|
+
if (getDirectoryEntries(directory).indexOf(name) !== -1 && fs.statSync(path.resolve(directory, name)).isFile()) {
|
82
|
+
filePath = path.resolve(directory, name);
|
83
|
+
break;
|
84
|
+
}
|
85
|
+
|
86
|
+
child = directory;
|
87
|
+
|
88
|
+
// Assign parent directory to directory.
|
89
|
+
directory = path.dirname(directory);
|
90
|
+
}
|
91
|
+
|
92
|
+
for (i = 0; i < searched; i++) {
|
93
|
+
cache[dirs[i]] = filePath;
|
94
|
+
}
|
95
|
+
|
96
|
+
return filePath || String();
|
97
|
+
};
|
98
|
+
|
99
|
+
/**
|
100
|
+
* Find all instances of files with the specified file names, in directory and
|
101
|
+
* parent directories. Cache the results.
|
102
|
+
* Does not check if a matching directory entry is a file.
|
103
|
+
* Searches for all the file names in this.fileNames.
|
104
|
+
* Is currently used by lib/config.js to find .eslintrc and package.json files.
|
105
|
+
* @param {string} directory The directory to start the search from.
|
106
|
+
* @returns {string[]} The file paths found.
|
107
|
+
*/
|
108
|
+
FileFinder.prototype.findAllInDirectoryAndParents = function (directory) {
|
109
|
+
var cache = this.cache,
|
110
|
+
child,
|
111
|
+
dirs,
|
112
|
+
name,
|
113
|
+
fileNames,
|
114
|
+
fileNamesCount,
|
115
|
+
filePath,
|
116
|
+
i,
|
117
|
+
j,
|
118
|
+
searched;
|
119
|
+
|
120
|
+
if (!directory) {
|
121
|
+
directory = process.cwd();
|
122
|
+
}
|
123
|
+
|
124
|
+
if (cache.hasOwnProperty(directory)) {
|
125
|
+
return cache[directory];
|
126
|
+
}
|
127
|
+
|
128
|
+
dirs = [];
|
129
|
+
searched = 0;
|
130
|
+
fileNames = this.fileNames;
|
131
|
+
fileNamesCount = fileNames.length;
|
132
|
+
|
133
|
+
do {
|
134
|
+
dirs[searched++] = directory;
|
135
|
+
cache[directory] = [];
|
136
|
+
|
137
|
+
for (i = 0; i < fileNamesCount; i++) {
|
138
|
+
name = fileNames[i];
|
139
|
+
|
140
|
+
if (getDirectoryEntries(directory).indexOf(name) !== -1 && fs.statSync(path.resolve(directory, name)).isFile()) {
|
141
|
+
filePath = path.resolve(directory, name);
|
142
|
+
|
143
|
+
// Add the file path to the cache of each directory searched.
|
144
|
+
for (j = 0; j < searched; j++) {
|
145
|
+
cache[dirs[j]].push(filePath);
|
146
|
+
}
|
147
|
+
}
|
148
|
+
}
|
149
|
+
child = directory;
|
150
|
+
|
151
|
+
// Assign parent directory to directory.
|
152
|
+
directory = path.dirname(directory);
|
153
|
+
|
154
|
+
if (directory === child) {
|
155
|
+
return cache[dirs[0]];
|
156
|
+
}
|
157
|
+
} while (!cache.hasOwnProperty(directory));
|
158
|
+
|
159
|
+
// Add what has been cached previously to the cache of each directory searched.
|
160
|
+
for (i = 0; i < searched; i++) {
|
161
|
+
dirs.push.apply(cache[dirs[i]], cache[directory]);
|
162
|
+
}
|
163
|
+
|
164
|
+
return cache[dirs[0]];
|
165
|
+
};
|
166
|
+
|
167
|
+
module.exports = FileFinder;
|
@@ -1,68 +1,68 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview CheckStyle XML reporter
|
3
|
-
* @author Ian Christian Myers
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
//------------------------------------------------------------------------------
|
8
|
-
// Helper Functions
|
9
|
-
//------------------------------------------------------------------------------
|
10
|
-
|
11
|
-
function getMessageType(message) {
|
12
|
-
if (message.fatal || message.severity === 2) {
|
13
|
-
return "error";
|
14
|
-
} else {
|
15
|
-
return "warning";
|
16
|
-
}
|
17
|
-
}
|
18
|
-
|
19
|
-
function xmlEscape(s) {
|
20
|
-
return ("" + s).replace(/[<>&"']/g, function(c) {
|
21
|
-
switch (c) {
|
22
|
-
case "<":
|
23
|
-
return "<";
|
24
|
-
case ">":
|
25
|
-
return ">";
|
26
|
-
case "&":
|
27
|
-
return "&";
|
28
|
-
case "\"":
|
29
|
-
return """;
|
30
|
-
case "'":
|
31
|
-
return "'";
|
32
|
-
// no default
|
33
|
-
}
|
34
|
-
});
|
35
|
-
}
|
36
|
-
|
37
|
-
//------------------------------------------------------------------------------
|
38
|
-
// Public Interface
|
39
|
-
//------------------------------------------------------------------------------
|
40
|
-
|
41
|
-
module.exports = function(results) {
|
42
|
-
|
43
|
-
var output = "";
|
44
|
-
|
45
|
-
output += "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
|
46
|
-
output += "<checkstyle version=\"4.3\">";
|
47
|
-
|
48
|
-
results.forEach(function(result) {
|
49
|
-
var messages = result.messages;
|
50
|
-
|
51
|
-
output += "<file name=\"" + xmlEscape(result.filePath) + "\">";
|
52
|
-
|
53
|
-
messages.forEach(function(message) {
|
54
|
-
output += "<error line=\"" + xmlEscape(message.line) + "\" " +
|
55
|
-
"column=\"" + xmlEscape(message.column) + "\" " +
|
56
|
-
"severity=\"" + xmlEscape(getMessageType(message)) + "\" " +
|
57
|
-
"message=\"" + xmlEscape(message.message) +
|
58
|
-
(message.ruleId ? " (" + message.ruleId + ")" : "") + "\" />";
|
59
|
-
});
|
60
|
-
|
61
|
-
output += "</file>";
|
62
|
-
|
63
|
-
});
|
64
|
-
|
65
|
-
output += "</checkstyle>";
|
66
|
-
|
67
|
-
return output;
|
68
|
-
};
|
1
|
+
/**
|
2
|
+
* @fileoverview CheckStyle XML reporter
|
3
|
+
* @author Ian Christian Myers
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
//------------------------------------------------------------------------------
|
8
|
+
// Helper Functions
|
9
|
+
//------------------------------------------------------------------------------
|
10
|
+
|
11
|
+
function getMessageType(message) {
|
12
|
+
if (message.fatal || message.severity === 2) {
|
13
|
+
return "error";
|
14
|
+
} else {
|
15
|
+
return "warning";
|
16
|
+
}
|
17
|
+
}
|
18
|
+
|
19
|
+
function xmlEscape(s) {
|
20
|
+
return ("" + s).replace(/[<>&"']/g, function(c) {
|
21
|
+
switch (c) {
|
22
|
+
case "<":
|
23
|
+
return "<";
|
24
|
+
case ">":
|
25
|
+
return ">";
|
26
|
+
case "&":
|
27
|
+
return "&";
|
28
|
+
case "\"":
|
29
|
+
return """;
|
30
|
+
case "'":
|
31
|
+
return "'";
|
32
|
+
// no default
|
33
|
+
}
|
34
|
+
});
|
35
|
+
}
|
36
|
+
|
37
|
+
//------------------------------------------------------------------------------
|
38
|
+
// Public Interface
|
39
|
+
//------------------------------------------------------------------------------
|
40
|
+
|
41
|
+
module.exports = function(results) {
|
42
|
+
|
43
|
+
var output = "";
|
44
|
+
|
45
|
+
output += "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
|
46
|
+
output += "<checkstyle version=\"4.3\">";
|
47
|
+
|
48
|
+
results.forEach(function(result) {
|
49
|
+
var messages = result.messages;
|
50
|
+
|
51
|
+
output += "<file name=\"" + xmlEscape(result.filePath) + "\">";
|
52
|
+
|
53
|
+
messages.forEach(function(message) {
|
54
|
+
output += "<error line=\"" + xmlEscape(message.line) + "\" " +
|
55
|
+
"column=\"" + xmlEscape(message.column) + "\" " +
|
56
|
+
"severity=\"" + xmlEscape(getMessageType(message)) + "\" " +
|
57
|
+
"message=\"" + xmlEscape(message.message) +
|
58
|
+
(message.ruleId ? " (" + message.ruleId + ")" : "") + "\" />";
|
59
|
+
});
|
60
|
+
|
61
|
+
output += "</file>";
|
62
|
+
|
63
|
+
});
|
64
|
+
|
65
|
+
output += "</checkstyle>";
|
66
|
+
|
67
|
+
return output;
|
68
|
+
};
|
@@ -1,53 +1,53 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview Compact reporter
|
3
|
-
* @author Nicholas C. Zakas
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
//------------------------------------------------------------------------------
|
8
|
-
// Helper Functions
|
9
|
-
//------------------------------------------------------------------------------
|
10
|
-
|
11
|
-
function getMessageType(message) {
|
12
|
-
if (message.fatal || message.severity === 2) {
|
13
|
-
return "Error";
|
14
|
-
} else {
|
15
|
-
return "Warning";
|
16
|
-
}
|
17
|
-
}
|
18
|
-
|
19
|
-
|
20
|
-
//------------------------------------------------------------------------------
|
21
|
-
// Public Interface
|
22
|
-
//------------------------------------------------------------------------------
|
23
|
-
|
24
|
-
module.exports = function(results) {
|
25
|
-
|
26
|
-
var output = "",
|
27
|
-
total = 0;
|
28
|
-
|
29
|
-
results.forEach(function(result) {
|
30
|
-
|
31
|
-
var messages = result.messages;
|
32
|
-
total += messages.length;
|
33
|
-
|
34
|
-
messages.forEach(function(message) {
|
35
|
-
|
36
|
-
output += result.filePath + ": ";
|
37
|
-
output += "line " + (message.line || 0);
|
38
|
-
output += ", col " + (message.column || 0);
|
39
|
-
output += ", " + getMessageType(message);
|
40
|
-
output += " - " + message.message;
|
41
|
-
output += message.ruleId ? " (" + message.ruleId + ")" : "";
|
42
|
-
output += "\n";
|
43
|
-
|
44
|
-
});
|
45
|
-
|
46
|
-
});
|
47
|
-
|
48
|
-
if (total > 0) {
|
49
|
-
output += "\n" + total + " problem" + (total !== 1 ? "s" : "");
|
50
|
-
}
|
51
|
-
|
52
|
-
return output;
|
53
|
-
};
|
1
|
+
/**
|
2
|
+
* @fileoverview Compact reporter
|
3
|
+
* @author Nicholas C. Zakas
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
//------------------------------------------------------------------------------
|
8
|
+
// Helper Functions
|
9
|
+
//------------------------------------------------------------------------------
|
10
|
+
|
11
|
+
function getMessageType(message) {
|
12
|
+
if (message.fatal || message.severity === 2) {
|
13
|
+
return "Error";
|
14
|
+
} else {
|
15
|
+
return "Warning";
|
16
|
+
}
|
17
|
+
}
|
18
|
+
|
19
|
+
|
20
|
+
//------------------------------------------------------------------------------
|
21
|
+
// Public Interface
|
22
|
+
//------------------------------------------------------------------------------
|
23
|
+
|
24
|
+
module.exports = function(results) {
|
25
|
+
|
26
|
+
var output = "",
|
27
|
+
total = 0;
|
28
|
+
|
29
|
+
results.forEach(function(result) {
|
30
|
+
|
31
|
+
var messages = result.messages;
|
32
|
+
total += messages.length;
|
33
|
+
|
34
|
+
messages.forEach(function(message) {
|
35
|
+
|
36
|
+
output += result.filePath + ": ";
|
37
|
+
output += "line " + (message.line || 0);
|
38
|
+
output += ", col " + (message.column || 0);
|
39
|
+
output += ", " + getMessageType(message);
|
40
|
+
output += " - " + message.message;
|
41
|
+
output += message.ruleId ? " (" + message.ruleId + ")" : "";
|
42
|
+
output += "\n";
|
43
|
+
|
44
|
+
});
|
45
|
+
|
46
|
+
});
|
47
|
+
|
48
|
+
if (total > 0) {
|
49
|
+
output += "\n" + total + " problem" + (total !== 1 ? "s" : "");
|
50
|
+
}
|
51
|
+
|
52
|
+
return output;
|
53
|
+
};
|
@@ -1,40 +1,40 @@
|
|
1
|
-
/**
|
2
|
-
* @fileoverview JSLint XML reporter
|
3
|
-
* @author Ian Christian Myers
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
var xmlescape = require("xml-escape");
|
8
|
-
|
9
|
-
//------------------------------------------------------------------------------
|
10
|
-
// Public Interface
|
11
|
-
//------------------------------------------------------------------------------
|
12
|
-
|
13
|
-
module.exports = function(results) {
|
14
|
-
|
15
|
-
var output = "";
|
16
|
-
|
17
|
-
output += "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
|
18
|
-
output += "<jslint>";
|
19
|
-
|
20
|
-
results.forEach(function(result) {
|
21
|
-
var messages = result.messages;
|
22
|
-
|
23
|
-
output += "<file name=\"" + result.filePath + "\">";
|
24
|
-
|
25
|
-
messages.forEach(function(message) {
|
26
|
-
output += "<issue line=\"" + message.line + "\" " +
|
27
|
-
"char=\"" + message.column + "\" " +
|
28
|
-
"evidence=\"" + xmlescape(message.source || "") + "\" " +
|
29
|
-
"reason=\"" + xmlescape(message.message || "") +
|
30
|
-
(message.ruleId ? " (" + message.ruleId + ")" : "") + "\" />";
|
31
|
-
});
|
32
|
-
|
33
|
-
output += "</file>";
|
34
|
-
|
35
|
-
});
|
36
|
-
|
37
|
-
output += "</jslint>";
|
38
|
-
|
39
|
-
return output;
|
40
|
-
};
|
1
|
+
/**
|
2
|
+
* @fileoverview JSLint XML reporter
|
3
|
+
* @author Ian Christian Myers
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
var xmlescape = require("xml-escape");
|
8
|
+
|
9
|
+
//------------------------------------------------------------------------------
|
10
|
+
// Public Interface
|
11
|
+
//------------------------------------------------------------------------------
|
12
|
+
|
13
|
+
module.exports = function(results) {
|
14
|
+
|
15
|
+
var output = "";
|
16
|
+
|
17
|
+
output += "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
|
18
|
+
output += "<jslint>";
|
19
|
+
|
20
|
+
results.forEach(function(result) {
|
21
|
+
var messages = result.messages;
|
22
|
+
|
23
|
+
output += "<file name=\"" + result.filePath + "\">";
|
24
|
+
|
25
|
+
messages.forEach(function(message) {
|
26
|
+
output += "<issue line=\"" + message.line + "\" " +
|
27
|
+
"char=\"" + message.column + "\" " +
|
28
|
+
"evidence=\"" + xmlescape(message.source || "") + "\" " +
|
29
|
+
"reason=\"" + xmlescape(message.message || "") +
|
30
|
+
(message.ruleId ? " (" + message.ruleId + ")" : "") + "\" />";
|
31
|
+
});
|
32
|
+
|
33
|
+
output += "</file>";
|
34
|
+
|
35
|
+
});
|
36
|
+
|
37
|
+
output += "</jslint>";
|
38
|
+
|
39
|
+
return output;
|
40
|
+
};
|