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:
Anatoli Papirovski 2017-10-16 18:37:14 -04:00
parent bf1bacef6b
commit 3c0ebf5aca
No known key found for this signature in database
GPG Key ID: 614E2E1ABEB4B2C0
22 changed files with 118 additions and 138 deletions

View File

@ -18,6 +18,7 @@ overrides:
rules:
# Possible Errors
# http://eslint.org/docs/rules/#possible-errors
for-direction: error
no-control-regex: error
no-debugger: error
no-dupe-args: error
@ -41,6 +42,7 @@ rules:
# Best Practices
# http://eslint.org/docs/rules/#best-practices
accessor-pairs: error
dot-location: [error, property]
eqeqeq: [error, smart]
no-fallthrough: error
@ -122,6 +124,7 @@ rules:
ignoreUrls: true,
tabWidth: 2}]
new-parens: error
no-lonely-if: error
no-mixed-spaces-and-tabs: error
no-multiple-empty-lines: [error, {max: 2, maxEOF: 0, maxBOF: 0}]
no-restricted-syntax: [error, {
@ -172,6 +175,7 @@ rules:
no-this-before-super: error
prefer-const: [error, {ignoreReadBeforeAssign: true}]
rest-spread-spacing: error
symbol-description: error
template-curly-spacing: error
# Custom rules in tools/eslint-rules

View File

@ -6,6 +6,7 @@ rules:
no-undef: off
no-unused-vars: off
strict: off
symbol-description: off
# add new ECMAScript features gradually
no-var: error

View File

@ -301,9 +301,8 @@ function _addHeaderLine(field, value, dest) {
} else {
dest['set-cookie'] = [value];
}
} else {
} else if (dest[field] === undefined) {
// Drop duplicates
if (dest[field] === undefined)
dest[field] = value;
}
}

View File

@ -404,8 +404,7 @@ function _storeHeader(firstLine, headers) {
this.chunkedEncoding = false;
} else if (!this.useChunkedEncodingByDefault) {
this._last = true;
} else {
if (!state.trailer &&
} else if (!state.trailer &&
!this._removedContLen &&
typeof this._contentLength === 'number') {
state.header += 'Content-Length: ' + this._contentLength + CRLF;
@ -419,7 +418,6 @@ function _storeHeader(firstLine, headers) {
debug('Both Content-Length and Transfer-Encoding are removed');
}
}
}
// Test non-chunked message does not have trailer header set,
// message will be terminated by the first empty line after the

View File

@ -433,8 +433,8 @@ function socketOnEnd(server, socket, parser, state) {
state.outgoing[state.outgoing.length - 1]._last = true;
} else if (socket._httpMessage) {
socket._httpMessage._last = true;
} else {
if (socket.writable) socket.end();
} else if (socket.writable) {
socket.end();
}
}
@ -602,14 +602,12 @@ function parserOnIncoming(server, socket, state, req, keepAlive) {
res.writeContinue();
server.emit('request', req, res);
}
} else {
if (server.listenerCount('checkExpectation') > 0) {
} else if (server.listenerCount('checkExpectation') > 0) {
server.emit('checkExpectation', req, res);
} else {
res.writeHead(417);
res.end();
}
}
} else {
server.emit('request', req, res);
}

View File

@ -40,9 +40,9 @@ const kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
function prependListener(emitter, event, fn) {
// Sadly this is not cacheable as some libraries bundle their own
// event emitter implementation with them.
if (typeof emitter.prependListener === 'function') {
if (typeof emitter.prependListener === 'function')
return emitter.prependListener(event, fn);
} else {
// 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
// to continue to work with older versions of Node.js that do not include
@ -54,7 +54,6 @@ function prependListener(emitter, event, fn) {
else
emitter._events[event] = [fn, emitter._events[event]];
}
}
function ReadableState(options, stream) {
options = options || {};

View File

@ -878,8 +878,8 @@ SecurePair.prototype.error = function(returnOnly) {
/peer did not return a certificate/.test(err.message)) {
// Not really an error.
this.destroy();
} else {
if (!returnOnly) this.cleartext.emit('error', err);
} else if (!returnOnly) {
this.cleartext.emit('error', err);
}
return err;
};

View File

@ -324,10 +324,9 @@ exports.execFile = function(file /*, args, options, callback*/) {
if (stdoutLen > options.maxBuffer) {
ex = new Error('stdout maxBuffer exceeded');
kill();
} else {
if (encoding)
} else if (encoding) {
_stdout += chunk;
else
} else {
_stdout.push(chunk);
}
});
@ -343,10 +342,9 @@ exports.execFile = function(file /*, args, options, callback*/) {
if (stderrLen > options.maxBuffer) {
ex = new Error('stderr maxBuffer exceeded');
kill();
} else {
if (encoding)
} else if (encoding) {
_stderr += chunk;
else
} else {
_stderr.push(chunk);
}
});

View File

@ -280,14 +280,12 @@ function _addListener(target, type, listener, prepend) {
// Adding the second element, need to change to array.
existing = events[type] =
prepend ? [listener, existing] : [existing, listener];
} else {
// If we've already got an array, just append.
if (prepend) {
} else if (prepend) {
existing.unshift(listener);
} else {
existing.push(listener);
}
}
// Check for listener leak
if (!existing.warned) {

View File

@ -1262,8 +1262,7 @@ function writeAll(fd, isUserFd, buffer, offset, length, position, callback) {
callback(writeErr);
});
}
} else {
if (written === length) {
} else if (written === length) {
if (isUserFd) {
callback(null);
} else {
@ -1277,7 +1276,6 @@ function writeAll(fd, isUserFd, buffer, offset, length, position, callback) {
}
writeAll(fd, isUserFd, buffer, offset, length, position, callback);
}
}
});
}

View File

@ -187,13 +187,12 @@ function onSessionHeaders(id, cat, flags, headers) {
}
} else if (cat === NGHTTP2_HCAT_PUSH_RESPONSE) {
event = 'push';
} else { // cat === NGHTTP2_HCAT_HEADERS:
if (!endOfStream && status !== undefined && status >= 200) {
// cat === NGHTTP2_HCAT_HEADERS:
} else if (!endOfStream && status !== undefined && status >= 200) {
event = 'response';
} else {
event = endOfStream ? 'trailers' : 'headers';
}
}
debug(`[${sessionName(owner[kType])}] emitting stream '${event}' event`);
process.nextTick(emit, stream, event, obj, flags, headers);
}

View File

@ -455,8 +455,7 @@ const win32 = {
} else {
return '';
}
} else {
if (isAbsolute) {
} else if (isAbsolute) {
if (tail.length > 0)
return device + '\\' + tail;
else
@ -466,7 +465,6 @@ const win32 = {
} else {
return device;
}
}
},

View File

@ -315,8 +315,7 @@ function parse(qs, sep, eq, options) {
sepIdx = eqIdx = 0;
continue;
}
} else {
if (lastPos < end)
} else if (lastPos < end) {
value += qs.slice(lastPos, end);
}

View File

@ -128,8 +128,7 @@ Url.prototype.parse = function parse(url, parseQueryString, slashesDenoteHost) {
if (isWs)
continue;
lastPos = start = i;
} else {
if (inWs) {
} else if (inWs) {
if (!isWs) {
end = -1;
inWs = false;
@ -138,7 +137,6 @@ Url.prototype.parse = function parse(url, parseQueryString, slashesDenoteHost) {
end = i;
inWs = true;
}
}
// Only convert backslashes while we haven't seen a split character
if (!split) {

View File

@ -5,6 +5,7 @@ rules:
# http://eslint.org/docs/rules/#ecmascript-6
no-var: error
prefer-const: error
symbol-description: off
# Custom rules in tools/eslint-rules
prefer-assert-iferror: error

View File

@ -24,10 +24,9 @@ function run(flags, signals) {
assert.strictEqual(code, 0xC0000005);
else
assert.strictEqual(code, 1);
} else {
if (signals)
} else if (signals) {
assert(signals.includes(sig), `Unexpected signal ${sig}`);
else
} else {
assert.strictEqual(sig, null);
}
}));

View File

@ -37,10 +37,8 @@ if (cluster.isMaster) {
unbound.disconnect();
unbound.on('disconnect', cluster.disconnect);
}
} else {
if (process.env.BOUND === 'y') {
} else if (process.env.BOUND === 'y') {
const source = net.createServer();
source.listen(0);
}
}

View File

@ -40,10 +40,8 @@ if (cluster.isMaster) {
unbound.disconnect();
unbound.on('disconnect', cluster.disconnect);
}
} else {
if (process.env.BOUND === 'y') {
} else if (process.env.BOUND === 'y') {
const source = dgram.createSocket('udp4');
source.bind(0);
}
}

View File

@ -41,8 +41,7 @@ if (cluster.isMaster) {
worker.on('disconnect', common.mustCall());
worker.on('exit', common.mustCall());
});
} else {
if (cluster.worker.id === 1) {
} else if (cluster.worker.id === 1) {
// Call destroy when worker is disconnected
cluster.worker.process.on('disconnect', function() {
cluster.worker.destroy();
@ -54,4 +53,3 @@ if (cluster.isMaster) {
// Call destroy when worker is not disconnected yet
cluster.worker.destroy();
}
}

View File

@ -335,8 +335,7 @@ function runTest(port, testIndex) {
port = server.address().port;
if (tcase.debug) {
console.error(`${prefix}TLS server running on port ${port}`);
} else {
if (tcase.renegotiate) {
} else if (tcase.renegotiate) {
runNextClient(0);
} else {
let clientsCompleted = 0;
@ -351,7 +350,6 @@ function runTest(port, testIndex) {
});
}
}
}
});
}

View File

@ -26,6 +26,8 @@ const JSStream = process.binding('js_stream').JSStream;
const util = require('util');
const vm = require('vm');
/* eslint-disable accessor-pairs */
assert.strictEqual(util.inspect(1), '1');
assert.strictEqual(util.inspect(false), 'false');
assert.strictEqual(util.inspect(''), "''");
@ -1149,3 +1151,4 @@ if (typeof Symbol !== 'undefined') {
}
assert.doesNotThrow(() => util.inspect(process));
/* eslint-enable accessor-pairs */

View File

@ -43,12 +43,10 @@ module.exports.inSkipBlock = function(node) {
}
return false;
});
} else {
if (hasSkip(consequent.expression)) {
} else if (hasSkip(consequent.expression)) {
hasSkipBlock = true;
}
}
}
return hasSkipBlock;
};