tools: enable additional eslint rules
Enable additional rules that node either already adheres to or it makes sense to do so going forward: for-direction, accessor-pairs, no-lonely-if and symbol-description. Fix all instances of no-lonely-if in lib & test and disable accessor-pairs in test-util-inspect. PR-URL: https://github.com/nodejs/node/pull/16243 Refs: https://eslint.org/docs/rules/for-direction Refs: https://eslint.org/docs/rules/accessor-pairs Refs: https://eslint.org/docs/rules/no-lonely-if Refs: https://eslint.org/docs/rules/symbol-description Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Vse Mozhet Byt <vsemozhetbyt@gmail.com> Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
This commit is contained in:
parent
bf1bacef6b
commit
3c0ebf5aca
@ -18,6 +18,7 @@ overrides:
|
|||||||
rules:
|
rules:
|
||||||
# Possible Errors
|
# Possible Errors
|
||||||
# http://eslint.org/docs/rules/#possible-errors
|
# http://eslint.org/docs/rules/#possible-errors
|
||||||
|
for-direction: error
|
||||||
no-control-regex: error
|
no-control-regex: error
|
||||||
no-debugger: error
|
no-debugger: error
|
||||||
no-dupe-args: error
|
no-dupe-args: error
|
||||||
@ -41,6 +42,7 @@ rules:
|
|||||||
|
|
||||||
# Best Practices
|
# Best Practices
|
||||||
# http://eslint.org/docs/rules/#best-practices
|
# http://eslint.org/docs/rules/#best-practices
|
||||||
|
accessor-pairs: error
|
||||||
dot-location: [error, property]
|
dot-location: [error, property]
|
||||||
eqeqeq: [error, smart]
|
eqeqeq: [error, smart]
|
||||||
no-fallthrough: error
|
no-fallthrough: error
|
||||||
@ -122,6 +124,7 @@ rules:
|
|||||||
ignoreUrls: true,
|
ignoreUrls: true,
|
||||||
tabWidth: 2}]
|
tabWidth: 2}]
|
||||||
new-parens: error
|
new-parens: error
|
||||||
|
no-lonely-if: error
|
||||||
no-mixed-spaces-and-tabs: error
|
no-mixed-spaces-and-tabs: error
|
||||||
no-multiple-empty-lines: [error, {max: 2, maxEOF: 0, maxBOF: 0}]
|
no-multiple-empty-lines: [error, {max: 2, maxEOF: 0, maxBOF: 0}]
|
||||||
no-restricted-syntax: [error, {
|
no-restricted-syntax: [error, {
|
||||||
@ -172,6 +175,7 @@ rules:
|
|||||||
no-this-before-super: error
|
no-this-before-super: error
|
||||||
prefer-const: [error, {ignoreReadBeforeAssign: true}]
|
prefer-const: [error, {ignoreReadBeforeAssign: true}]
|
||||||
rest-spread-spacing: error
|
rest-spread-spacing: error
|
||||||
|
symbol-description: error
|
||||||
template-curly-spacing: error
|
template-curly-spacing: error
|
||||||
|
|
||||||
# Custom rules in tools/eslint-rules
|
# Custom rules in tools/eslint-rules
|
||||||
|
@ -6,6 +6,7 @@ rules:
|
|||||||
no-undef: off
|
no-undef: off
|
||||||
no-unused-vars: off
|
no-unused-vars: off
|
||||||
strict: off
|
strict: off
|
||||||
|
symbol-description: off
|
||||||
|
|
||||||
# add new ECMAScript features gradually
|
# add new ECMAScript features gradually
|
||||||
no-var: error
|
no-var: error
|
||||||
|
@ -301,9 +301,8 @@ function _addHeaderLine(field, value, dest) {
|
|||||||
} else {
|
} else {
|
||||||
dest['set-cookie'] = [value];
|
dest['set-cookie'] = [value];
|
||||||
}
|
}
|
||||||
} else {
|
} else if (dest[field] === undefined) {
|
||||||
// Drop duplicates
|
// Drop duplicates
|
||||||
if (dest[field] === undefined)
|
|
||||||
dest[field] = value;
|
dest[field] = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -404,8 +404,7 @@ function _storeHeader(firstLine, headers) {
|
|||||||
this.chunkedEncoding = false;
|
this.chunkedEncoding = false;
|
||||||
} else if (!this.useChunkedEncodingByDefault) {
|
} else if (!this.useChunkedEncodingByDefault) {
|
||||||
this._last = true;
|
this._last = true;
|
||||||
} else {
|
} else if (!state.trailer &&
|
||||||
if (!state.trailer &&
|
|
||||||
!this._removedContLen &&
|
!this._removedContLen &&
|
||||||
typeof this._contentLength === 'number') {
|
typeof this._contentLength === 'number') {
|
||||||
state.header += 'Content-Length: ' + this._contentLength + CRLF;
|
state.header += 'Content-Length: ' + this._contentLength + CRLF;
|
||||||
@ -419,7 +418,6 @@ function _storeHeader(firstLine, headers) {
|
|||||||
debug('Both Content-Length and Transfer-Encoding are removed');
|
debug('Both Content-Length and Transfer-Encoding are removed');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Test non-chunked message does not have trailer header set,
|
// Test non-chunked message does not have trailer header set,
|
||||||
// message will be terminated by the first empty line after the
|
// message will be terminated by the first empty line after the
|
||||||
|
@ -433,8 +433,8 @@ function socketOnEnd(server, socket, parser, state) {
|
|||||||
state.outgoing[state.outgoing.length - 1]._last = true;
|
state.outgoing[state.outgoing.length - 1]._last = true;
|
||||||
} else if (socket._httpMessage) {
|
} else if (socket._httpMessage) {
|
||||||
socket._httpMessage._last = true;
|
socket._httpMessage._last = true;
|
||||||
} else {
|
} else if (socket.writable) {
|
||||||
if (socket.writable) socket.end();
|
socket.end();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -602,14 +602,12 @@ function parserOnIncoming(server, socket, state, req, keepAlive) {
|
|||||||
res.writeContinue();
|
res.writeContinue();
|
||||||
server.emit('request', req, res);
|
server.emit('request', req, res);
|
||||||
}
|
}
|
||||||
} else {
|
} else if (server.listenerCount('checkExpectation') > 0) {
|
||||||
if (server.listenerCount('checkExpectation') > 0) {
|
|
||||||
server.emit('checkExpectation', req, res);
|
server.emit('checkExpectation', req, res);
|
||||||
} else {
|
} else {
|
||||||
res.writeHead(417);
|
res.writeHead(417);
|
||||||
res.end();
|
res.end();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
server.emit('request', req, res);
|
server.emit('request', req, res);
|
||||||
}
|
}
|
||||||
|
@ -40,9 +40,9 @@ const kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
|
|||||||
function prependListener(emitter, event, fn) {
|
function prependListener(emitter, event, fn) {
|
||||||
// Sadly this is not cacheable as some libraries bundle their own
|
// Sadly this is not cacheable as some libraries bundle their own
|
||||||
// event emitter implementation with them.
|
// event emitter implementation with them.
|
||||||
if (typeof emitter.prependListener === 'function') {
|
if (typeof emitter.prependListener === 'function')
|
||||||
return emitter.prependListener(event, fn);
|
return emitter.prependListener(event, fn);
|
||||||
} else {
|
|
||||||
// This is a hack to make sure that our error handler is attached before any
|
// This is a hack to make sure that our error handler is attached before any
|
||||||
// userland ones. NEVER DO THIS. This is here only because this code needs
|
// userland ones. NEVER DO THIS. This is here only because this code needs
|
||||||
// to continue to work with older versions of Node.js that do not include
|
// to continue to work with older versions of Node.js that do not include
|
||||||
@ -54,7 +54,6 @@ function prependListener(emitter, event, fn) {
|
|||||||
else
|
else
|
||||||
emitter._events[event] = [fn, emitter._events[event]];
|
emitter._events[event] = [fn, emitter._events[event]];
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
function ReadableState(options, stream) {
|
function ReadableState(options, stream) {
|
||||||
options = options || {};
|
options = options || {};
|
||||||
|
@ -878,8 +878,8 @@ SecurePair.prototype.error = function(returnOnly) {
|
|||||||
/peer did not return a certificate/.test(err.message)) {
|
/peer did not return a certificate/.test(err.message)) {
|
||||||
// Not really an error.
|
// Not really an error.
|
||||||
this.destroy();
|
this.destroy();
|
||||||
} else {
|
} else if (!returnOnly) {
|
||||||
if (!returnOnly) this.cleartext.emit('error', err);
|
this.cleartext.emit('error', err);
|
||||||
}
|
}
|
||||||
return err;
|
return err;
|
||||||
};
|
};
|
||||||
|
@ -324,10 +324,9 @@ exports.execFile = function(file /*, args, options, callback*/) {
|
|||||||
if (stdoutLen > options.maxBuffer) {
|
if (stdoutLen > options.maxBuffer) {
|
||||||
ex = new Error('stdout maxBuffer exceeded');
|
ex = new Error('stdout maxBuffer exceeded');
|
||||||
kill();
|
kill();
|
||||||
} else {
|
} else if (encoding) {
|
||||||
if (encoding)
|
|
||||||
_stdout += chunk;
|
_stdout += chunk;
|
||||||
else
|
} else {
|
||||||
_stdout.push(chunk);
|
_stdout.push(chunk);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -343,10 +342,9 @@ exports.execFile = function(file /*, args, options, callback*/) {
|
|||||||
if (stderrLen > options.maxBuffer) {
|
if (stderrLen > options.maxBuffer) {
|
||||||
ex = new Error('stderr maxBuffer exceeded');
|
ex = new Error('stderr maxBuffer exceeded');
|
||||||
kill();
|
kill();
|
||||||
} else {
|
} else if (encoding) {
|
||||||
if (encoding)
|
|
||||||
_stderr += chunk;
|
_stderr += chunk;
|
||||||
else
|
} else {
|
||||||
_stderr.push(chunk);
|
_stderr.push(chunk);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -280,14 +280,12 @@ function _addListener(target, type, listener, prepend) {
|
|||||||
// Adding the second element, need to change to array.
|
// Adding the second element, need to change to array.
|
||||||
existing = events[type] =
|
existing = events[type] =
|
||||||
prepend ? [listener, existing] : [existing, listener];
|
prepend ? [listener, existing] : [existing, listener];
|
||||||
} else {
|
|
||||||
// If we've already got an array, just append.
|
// If we've already got an array, just append.
|
||||||
if (prepend) {
|
} else if (prepend) {
|
||||||
existing.unshift(listener);
|
existing.unshift(listener);
|
||||||
} else {
|
} else {
|
||||||
existing.push(listener);
|
existing.push(listener);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Check for listener leak
|
// Check for listener leak
|
||||||
if (!existing.warned) {
|
if (!existing.warned) {
|
||||||
|
@ -1262,8 +1262,7 @@ function writeAll(fd, isUserFd, buffer, offset, length, position, callback) {
|
|||||||
callback(writeErr);
|
callback(writeErr);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} else {
|
} else if (written === length) {
|
||||||
if (written === length) {
|
|
||||||
if (isUserFd) {
|
if (isUserFd) {
|
||||||
callback(null);
|
callback(null);
|
||||||
} else {
|
} else {
|
||||||
@ -1277,7 +1276,6 @@ function writeAll(fd, isUserFd, buffer, offset, length, position, callback) {
|
|||||||
}
|
}
|
||||||
writeAll(fd, isUserFd, buffer, offset, length, position, callback);
|
writeAll(fd, isUserFd, buffer, offset, length, position, callback);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -187,13 +187,12 @@ function onSessionHeaders(id, cat, flags, headers) {
|
|||||||
}
|
}
|
||||||
} else if (cat === NGHTTP2_HCAT_PUSH_RESPONSE) {
|
} else if (cat === NGHTTP2_HCAT_PUSH_RESPONSE) {
|
||||||
event = 'push';
|
event = 'push';
|
||||||
} else { // cat === NGHTTP2_HCAT_HEADERS:
|
// cat === NGHTTP2_HCAT_HEADERS:
|
||||||
if (!endOfStream && status !== undefined && status >= 200) {
|
} else if (!endOfStream && status !== undefined && status >= 200) {
|
||||||
event = 'response';
|
event = 'response';
|
||||||
} else {
|
} else {
|
||||||
event = endOfStream ? 'trailers' : 'headers';
|
event = endOfStream ? 'trailers' : 'headers';
|
||||||
}
|
}
|
||||||
}
|
|
||||||
debug(`[${sessionName(owner[kType])}] emitting stream '${event}' event`);
|
debug(`[${sessionName(owner[kType])}] emitting stream '${event}' event`);
|
||||||
process.nextTick(emit, stream, event, obj, flags, headers);
|
process.nextTick(emit, stream, event, obj, flags, headers);
|
||||||
}
|
}
|
||||||
|
@ -455,8 +455,7 @@ const win32 = {
|
|||||||
} else {
|
} else {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
} else {
|
} else if (isAbsolute) {
|
||||||
if (isAbsolute) {
|
|
||||||
if (tail.length > 0)
|
if (tail.length > 0)
|
||||||
return device + '\\' + tail;
|
return device + '\\' + tail;
|
||||||
else
|
else
|
||||||
@ -466,7 +465,6 @@ const win32 = {
|
|||||||
} else {
|
} else {
|
||||||
return device;
|
return device;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
@ -315,8 +315,7 @@ function parse(qs, sep, eq, options) {
|
|||||||
sepIdx = eqIdx = 0;
|
sepIdx = eqIdx = 0;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
} else {
|
} else if (lastPos < end) {
|
||||||
if (lastPos < end)
|
|
||||||
value += qs.slice(lastPos, end);
|
value += qs.slice(lastPos, end);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,8 +128,7 @@ Url.prototype.parse = function parse(url, parseQueryString, slashesDenoteHost) {
|
|||||||
if (isWs)
|
if (isWs)
|
||||||
continue;
|
continue;
|
||||||
lastPos = start = i;
|
lastPos = start = i;
|
||||||
} else {
|
} else if (inWs) {
|
||||||
if (inWs) {
|
|
||||||
if (!isWs) {
|
if (!isWs) {
|
||||||
end = -1;
|
end = -1;
|
||||||
inWs = false;
|
inWs = false;
|
||||||
@ -138,7 +137,6 @@ Url.prototype.parse = function parse(url, parseQueryString, slashesDenoteHost) {
|
|||||||
end = i;
|
end = i;
|
||||||
inWs = true;
|
inWs = true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Only convert backslashes while we haven't seen a split character
|
// Only convert backslashes while we haven't seen a split character
|
||||||
if (!split) {
|
if (!split) {
|
||||||
|
@ -5,6 +5,7 @@ rules:
|
|||||||
# http://eslint.org/docs/rules/#ecmascript-6
|
# http://eslint.org/docs/rules/#ecmascript-6
|
||||||
no-var: error
|
no-var: error
|
||||||
prefer-const: error
|
prefer-const: error
|
||||||
|
symbol-description: off
|
||||||
|
|
||||||
# Custom rules in tools/eslint-rules
|
# Custom rules in tools/eslint-rules
|
||||||
prefer-assert-iferror: error
|
prefer-assert-iferror: error
|
||||||
|
@ -24,10 +24,9 @@ function run(flags, signals) {
|
|||||||
assert.strictEqual(code, 0xC0000005);
|
assert.strictEqual(code, 0xC0000005);
|
||||||
else
|
else
|
||||||
assert.strictEqual(code, 1);
|
assert.strictEqual(code, 1);
|
||||||
} else {
|
} else if (signals) {
|
||||||
if (signals)
|
|
||||||
assert(signals.includes(sig), `Unexpected signal ${sig}`);
|
assert(signals.includes(sig), `Unexpected signal ${sig}`);
|
||||||
else
|
} else {
|
||||||
assert.strictEqual(sig, null);
|
assert.strictEqual(sig, null);
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
@ -37,10 +37,8 @@ if (cluster.isMaster) {
|
|||||||
unbound.disconnect();
|
unbound.disconnect();
|
||||||
unbound.on('disconnect', cluster.disconnect);
|
unbound.on('disconnect', cluster.disconnect);
|
||||||
}
|
}
|
||||||
} else {
|
} else if (process.env.BOUND === 'y') {
|
||||||
if (process.env.BOUND === 'y') {
|
|
||||||
const source = net.createServer();
|
const source = net.createServer();
|
||||||
|
|
||||||
source.listen(0);
|
source.listen(0);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
@ -40,10 +40,8 @@ if (cluster.isMaster) {
|
|||||||
unbound.disconnect();
|
unbound.disconnect();
|
||||||
unbound.on('disconnect', cluster.disconnect);
|
unbound.on('disconnect', cluster.disconnect);
|
||||||
}
|
}
|
||||||
} else {
|
} else if (process.env.BOUND === 'y') {
|
||||||
if (process.env.BOUND === 'y') {
|
|
||||||
const source = dgram.createSocket('udp4');
|
const source = dgram.createSocket('udp4');
|
||||||
|
|
||||||
source.bind(0);
|
source.bind(0);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
@ -41,8 +41,7 @@ if (cluster.isMaster) {
|
|||||||
worker.on('disconnect', common.mustCall());
|
worker.on('disconnect', common.mustCall());
|
||||||
worker.on('exit', common.mustCall());
|
worker.on('exit', common.mustCall());
|
||||||
});
|
});
|
||||||
} else {
|
} else if (cluster.worker.id === 1) {
|
||||||
if (cluster.worker.id === 1) {
|
|
||||||
// Call destroy when worker is disconnected
|
// Call destroy when worker is disconnected
|
||||||
cluster.worker.process.on('disconnect', function() {
|
cluster.worker.process.on('disconnect', function() {
|
||||||
cluster.worker.destroy();
|
cluster.worker.destroy();
|
||||||
@ -54,4 +53,3 @@ if (cluster.isMaster) {
|
|||||||
// Call destroy when worker is not disconnected yet
|
// Call destroy when worker is not disconnected yet
|
||||||
cluster.worker.destroy();
|
cluster.worker.destroy();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
@ -335,8 +335,7 @@ function runTest(port, testIndex) {
|
|||||||
port = server.address().port;
|
port = server.address().port;
|
||||||
if (tcase.debug) {
|
if (tcase.debug) {
|
||||||
console.error(`${prefix}TLS server running on port ${port}`);
|
console.error(`${prefix}TLS server running on port ${port}`);
|
||||||
} else {
|
} else if (tcase.renegotiate) {
|
||||||
if (tcase.renegotiate) {
|
|
||||||
runNextClient(0);
|
runNextClient(0);
|
||||||
} else {
|
} else {
|
||||||
let clientsCompleted = 0;
|
let clientsCompleted = 0;
|
||||||
@ -351,7 +350,6 @@ function runTest(port, testIndex) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,6 +26,8 @@ const JSStream = process.binding('js_stream').JSStream;
|
|||||||
const util = require('util');
|
const util = require('util');
|
||||||
const vm = require('vm');
|
const vm = require('vm');
|
||||||
|
|
||||||
|
/* eslint-disable accessor-pairs */
|
||||||
|
|
||||||
assert.strictEqual(util.inspect(1), '1');
|
assert.strictEqual(util.inspect(1), '1');
|
||||||
assert.strictEqual(util.inspect(false), 'false');
|
assert.strictEqual(util.inspect(false), 'false');
|
||||||
assert.strictEqual(util.inspect(''), "''");
|
assert.strictEqual(util.inspect(''), "''");
|
||||||
@ -1149,3 +1151,4 @@ if (typeof Symbol !== 'undefined') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
assert.doesNotThrow(() => util.inspect(process));
|
assert.doesNotThrow(() => util.inspect(process));
|
||||||
|
/* eslint-enable accessor-pairs */
|
||||||
|
@ -43,12 +43,10 @@ module.exports.inSkipBlock = function(node) {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
} else {
|
} else if (hasSkip(consequent.expression)) {
|
||||||
if (hasSkip(consequent.expression)) {
|
|
||||||
hasSkipBlock = true;
|
hasSkipBlock = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return hasSkipBlock;
|
return hasSkipBlock;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user