Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit dec5900

Browse filesBrowse files
TrottItalo A. Casas
authored andcommitted
tools: add lint rule to enforce timer arguments
Add a custom ESLint rule to require that setTimeout() and setInterval() get called with at least two arguments. This prevents omitting the duration or interval. PR-URL: #9472 Reviewed-By: Teddy Katz <teddy.katz@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent 09f35a4 commit dec5900
Copy full SHA for dec5900

File tree

Expand file treeCollapse file tree

2 files changed

+26
-0
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

2 files changed

+26
-0
lines changed
Open diff view settings
Collapse file

‎.eslintrc‎

Copy file name to clipboardExpand all lines: .eslintrc
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ rules:
124124
assert-fail-single-argument: 2
125125
assert-throws-arguments: [2, { requireTwo: false }]
126126
new-with-error: [2, Error, RangeError, TypeError, SyntaxError, ReferenceError]
127+
timer-arguments: 2
127128

128129
# Global scoped method and vars
129130
globals:
Collapse file
+25Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/**
2+
* @fileoverview Require at least two arguments when calling setTimeout() or
3+
* setInterval().
4+
* @author Rich Trott
5+
*/
6+
'use strict';
7+
8+
//------------------------------------------------------------------------------
9+
// Rule Definition
10+
//------------------------------------------------------------------------------
11+
12+
function isTimer(name) {
13+
return ['setTimeout', 'setInterval'].includes(name);
14+
}
15+
16+
module.exports = function(context) {
17+
return {
18+
'CallExpression': function(node) {
19+
const name = node.callee.name;
20+
if (isTimer(name) && node.arguments.length < 2) {
21+
context.report(node, `${name} must have at least 2 arguments`);
22+
}
23+
}
24+
};
25+
};

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.