tools: enable/add additional eslint rules
authorRoman Reiss <me@silverwind.io>
Thu, 11 Jun 2015 17:08:25 +0000 (19:08 +0200)
committerRoman Reiss <me@silverwind.io>
Thu, 11 Jun 2015 18:27:35 +0000 (20:27 +0200)
Enables the following rules:

- no-undef: Valuable rule to error on usage of undefined variables
- require-buffer: Custom rule that forbids usage of the global Buffer
  inside lib/ because of REPL issues.

PR-URL: https://github.com/nodejs/io.js/pull/1794
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
.eslintignore
.eslintrc
Makefile
lib/buffer.js
test/.eslintrc
tools/eslint-rules/require-buffer.js [new file with mode: 0644]
vcbuild.bat

index 46a6319..da42fb9 100644 (file)
@@ -3,3 +3,4 @@ test/addons/doc-*/
 test/fixtures
 test/**/node_modules
 test/parallel/test-fs-non-number-arguments-throw.js
+test/disabled
index 0c43234..7b2b151 100644 (file)
--- a/.eslintrc
+++ b/.eslintrc
@@ -39,14 +39,9 @@ rules:
   # Stylistic Issues
   # list: https://github.com/eslint/eslint/tree/master/docs/rules#stylistic-issues
   ## use single quote, we can use double quote when escape chars
-  quotes:
-    - 2
-    - "single"
-    - "avoid-escape"
+  quotes: [2, "single", "avoid-escape"]
   ## 2 space indentation
-  indent:
-    - 2
-    - 2
+  indent: [2, 2]
   ## add space after comma
   ## set to 'warn' because of https://github.com/eslint/eslint/issues/2408
   comma-spacing: 1
@@ -63,35 +58,40 @@ rules:
   ## require parens for Constructor
   new-parens: 2
   ## max 80 length
-  max-len:
-    - 2
-    - 80
-    - 2
+  max-len: [2, 80, 2]
 
   # Strict Mode
   # list: https://github.com/eslint/eslint/tree/master/docs/rules#strict-mode
   ## 'use strict' on top
-  strict:
-    - 2
-    - "global"
+  strict: [2, "global"]
+
+  # Variables
+  # list: https://github.com/eslint/eslint/tree/master/docs/rules#variables
+  ## disallow use of undefined variables (globals)
+  no-undef: 2
+
+  # Custom rules in tools/eslint-rules
+  require-buffer: 2
 
 # Global scoped method and vars
 globals:
-  DTRACE_HTTP_CLIENT_REQUEST: true
-  LTTNG_HTTP_CLIENT_REQUEST: true
-  COUNTER_HTTP_CLIENT_REQUEST: true
-  DTRACE_HTTP_CLIENT_RESPONSE: true
-  LTTNG_HTTP_CLIENT_RESPONSE: true
-  COUNTER_HTTP_CLIENT_RESPONSE: true
-  DTRACE_HTTP_SERVER_REQUEST: true
-  LTTNG_HTTP_SERVER_REQUEST: true
-  COUNTER_HTTP_SERVER_REQUEST: true
-  DTRACE_HTTP_SERVER_RESPONSE: true
-  LTTNG_HTTP_SERVER_RESPONSE: true
-  COUNTER_HTTP_SERVER_RESPONSE: true
-  DTRACE_NET_STREAM_END: true
-  LTTNG_NET_STREAM_END: true
-  COUNTER_NET_SERVER_CONNECTION_CLOSE: true
-  DTRACE_NET_SERVER_CONNECTION: true
-  LTTNG_NET_SERVER_CONNECTION: true
-  COUNTER_NET_SERVER_CONNECTION: true
+  DTRACE_HTTP_CLIENT_REQUEST           : false
+  LTTNG_HTTP_CLIENT_REQUEST            : false
+  COUNTER_HTTP_CLIENT_REQUEST          : false
+  DTRACE_HTTP_CLIENT_RESPONSE          : false
+  LTTNG_HTTP_CLIENT_RESPONSE           : false
+  COUNTER_HTTP_CLIENT_RESPONSE         : false
+  DTRACE_HTTP_SERVER_REQUEST           : false
+  LTTNG_HTTP_SERVER_REQUEST            : false
+  COUNTER_HTTP_SERVER_REQUEST          : false
+  DTRACE_HTTP_SERVER_RESPONSE          : false
+  LTTNG_HTTP_SERVER_RESPONSE           : false
+  COUNTER_HTTP_SERVER_RESPONSE         : false
+  DTRACE_NET_STREAM_END                : false
+  LTTNG_NET_STREAM_END                 : false
+  COUNTER_NET_SERVER_CONNECTION_CLOSE  : false
+  DTRACE_NET_SERVER_CONNECTION         : false
+  LTTNG_NET_SERVER_CONNECTION          : false
+  COUNTER_NET_SERVER_CONNECTION        : false
+  escape                               : false
+  unescape                             : false
index 94f130f..adebf50 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -375,7 +375,7 @@ bench-idle:
        ./$(NODE_EXE) benchmark/idle_clients.js &
 
 jslint:
-       ./$(NODE_EXE) tools/eslint/bin/eslint.js src lib test --reset --quiet
+       ./$(NODE_EXE) tools/eslint/bin/eslint.js src lib test --rulesdir tools/eslint-rules --reset --quiet
 
 CPPLINT_EXCLUDE ?=
 CPPLINT_EXCLUDE += src/node_lttng.cc
index ccd899d..81fe904 100644 (file)
@@ -1,3 +1,4 @@
+/* eslint-disable require-buffer */
 'use strict';
 
 const binding = process.binding('buffer');
index d5d9558..608c62d 100644 (file)
@@ -3,3 +3,10 @@
 rules:
   ## allow unreachable code
   no-unreachable: 0
+  ## allow undeclared variables
+  no-undef: 0
+  ## allow global Buffer usage
+  require-buffer: 0
+
+globals:
+  gc: false
diff --git a/tools/eslint-rules/require-buffer.js b/tools/eslint-rules/require-buffer.js
new file mode 100644 (file)
index 0000000..7a975df
--- /dev/null
@@ -0,0 +1,16 @@
+'use strict';
+
+const msg = 'Use const Buffer = require(\'buffer\').Buffer; ' +
+            'at the beginning of this file';
+
+module.exports = function(context) {
+  return {
+    'Program:exit': function() {
+      context.getScope().through.forEach(function(ref) {
+        if (ref.identifier.name === 'Buffer') {
+            context.report(ref.identifier, msg);
+        }
+      });
+    }
+  }
+}
index 21e8d54..2bfdb89 100644 (file)
@@ -181,7 +181,7 @@ goto jslint
 :jslint
 if not defined jslint goto exit
 echo running jslint
-%config%\iojs tools\eslint\bin\eslint.js src lib test --reset --quiet
+%config%\iojs tools\eslint\bin\eslint.js src lib test --rulesdir tools\eslint-rules --reset --quiet
 goto exit
 
 :create-msvs-files-failed