Bug 1316096 - Change eslint configuration to use string values for rules instead of integers, making it easier for others who are reading the rules to know if a rule is set to off, warn, or error. r?mossop draft
authorJared Wein <jwein@mozilla.com>
Tue, 08 Nov 2016 15:14:19 -0500
changeset 435489 c58714b6a392e9844f2b6d6d16342c2e88af6b61
parent 434636 908557c762f798605a2f96e4c943791cbada1b50
child 435541 0095643bdf9f2389b8f5cfce94ec53dcc9d2d10c
push id35065
push userbmo:jaws@mozilla.com
push dateTue, 08 Nov 2016 20:14:38 +0000
reviewersmossop
bugs1316096
milestone52.0a1
Bug 1316096 - Change eslint configuration to use string values for rules instead of integers, making it easier for others who are reading the rules to know if a rule is set to off, warn, or error. r?mossop MozReview-Commit-ID: BooRMiGGBpK
.eslintrc.js
accessible/tests/browser/.eslintrc.js
browser/components/contextualidentity/test/browser/.eslintrc.js
browser/components/migration/.eslintrc.js
browser/extensions/formautofill/.eslintrc.js
devtools/.eslintrc.js
devtools/client/dom/.eslintrc.js
devtools/client/inspector/.eslintrc.js
devtools/client/netmonitor/.eslintrc.js
devtools/client/sourceeditor/.eslintrc.js
devtools/client/webconsole/net/.eslintrc.js
devtools/shared/platform/content/.eslintrc.js
security/manager/.eslintrc.js
security/manager/ssl/tests/.eslintrc.js
testing/mochitest/browser.eslintrc.js
testing/mochitest/chrome.eslintrc.js
testing/mochitest/mochitest.eslintrc.js
testing/xpcshell/xpcshell.eslintrc.js
toolkit/.eslintrc.js
toolkit/components/extensions/.eslintrc.js
toolkit/components/narrate/.eslintrc.js
toolkit/components/narrate/test/.eslintrc.js
toolkit/components/passwordmgr/.eslintrc.js
toolkit/components/passwordmgr/test/.eslintrc.js
toolkit/components/reader/.eslintrc.js
toolkit/modules/subprocess/.eslintrc.js
toolkit/mozapps/extensions/.eslintrc.js
tools/lint/eslint/eslint-plugin-mozilla/lib/rules/.eslintrc.js
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -1,14 +1,14 @@
 "use strict";
 
 module.exports = {
   // When adding items to this file please check for effects on sub-directories.
   "plugins": [
     "mozilla"
   ],
   "rules": {
-    "mozilla/import-globals": 1,
+    "mozilla/import-globals": "warn",
   },
   "env": {
     "es6": true
   },
 };
--- a/accessible/tests/browser/.eslintrc.js
+++ b/accessible/tests/browser/.eslintrc.js
@@ -46,173 +46,173 @@ module.exports = { // eslint-disable-lin
     "waitForEvent": true,
     "waitForMultipleEvents": true,
     "invokeSetAttribute": true,
     "invokeSetStyle": true,
     "invokeFocus": true,
     "findAccessibleChildByID": true
   },
   "rules": {
-    "mozilla/no-aArgs": 1,
-    "mozilla/no-cpows-in-tests": 1,
-    "mozilla/reject-importGlobalProperties": 1,
-    "mozilla/var-only-at-top-level": 1,
+    "mozilla/no-aArgs": "warn",
+    "mozilla/no-cpows-in-tests": "warn",
+    "mozilla/reject-importGlobalProperties": "warn",
+    "mozilla/var-only-at-top-level": "warn",
 
-    "block-scoped-var": 2,
-    "brace-style": [2, "1tbs"],
-    "camelcase": 2,
-    "comma-dangle": [2, "never"],
-    "comma-spacing": 2,
-    "comma-style": [2, "last"],
-    "complexity": [2, 35],
-    "consistent-this": 0,
-    "curly": [2, "multi-line"],
-    "default-case": 0,
-    "dot-location": [2, "property"],
-    "dot-notation": 2,
-    "eol-last": 2,
-    "eqeqeq": 0,
-    "func-names": 0,
-    "func-style": 0,
-    "generator-star": 0,
-    "global-strict": 0,
-    "handle-callback-err": [2, "er"],
-    "indent": [2, 2, {"SwitchCase": 1}],
-    "key-spacing": [2, {"beforeColon": false, "afterColon": true}],
-    "linebreak-style": 0,
-    "max-depth": 0,
-    "max-nested-callbacks": [2, 4],
-    "max-params": 0,
-    "max-statements": 0,
-    "new-cap": [2, {"capIsNew": false}],
-    "new-parens": 2,
-    "no-array-constructor": 2,
-    "no-bitwise": 0,
-    "no-caller": 2,
-    "no-catch-shadow": 2,
-    "no-comma-dangle": 0,
-    "no-cond-assign": 2,
-    "no-console": 0,
-    "no-constant-condition": 0,
-    "no-continue": 0,
-    "no-control-regex": 2,
-    "no-debugger": 2,
-    "no-delete-var": 2,
-    "no-div-regex": 0,
-    "no-dupe-args": 2,
-    "no-dupe-keys": 2,
-    "no-duplicate-case": 2,
-    "no-else-return": 2,
-    "no-empty": 2,
-    "no-empty-character-class": 2,
-    "no-eval": 2,
-    "no-ex-assign": 2,
-    "no-extend-native": 2,
-    "no-extra-bind": 2,
-    "no-extra-boolean-cast": 2,
-    "no-extra-parens": 0,
-    "no-extra-semi": 2,
-    "no-extra-strict": 0,
-    "no-fallthrough": 2,
-    "no-floating-decimal": 0,
-    "no-inline-comments": 0,
-    "no-lonely-if": 2,
-    "no-mixed-requires": 0,
-    "no-mixed-spaces-and-tabs": 2,
-    "no-multi-spaces": 2,
-    "no-multi-str": 2,
-    "no-multiple-empty-lines": [2, {"max": 1}],
-    "no-native-reassign": 2,
-    "no-nested-ternary": 2,
-    "no-new-require": 0,
-    "no-octal": 2,
-    "no-param-reassign": 0,
-    "no-path-concat": 0,
-    "no-plusplus": 0,
-    "no-process-env": 0,
-    "no-process-exit": 0,
-    "no-proto": 2,
-    "no-redeclare": 2,
-    "no-regex-spaces": 2,
-    "no-reserved-keys": 0,
-    "no-restricted-modules": 0,
-    "no-return-assign": 1,
-    "no-script-url": 0,
-    "no-self-compare": 2,
-    "no-sequences": 2,
-    "no-shadow": 1,
-    "no-shadow-restricted-names": 2,
-    "no-space-before-semi": 0,
-    "no-spaced-func": 2,
-    "no-sparse-arrays": 2,
-    "no-sync": 0,
-    "no-ternary": 0,
-    "no-throw-literal": 2,
-    "no-trailing-spaces": 2,
-    "no-undef": 2,
-    "no-underscore-dangle": 0,
-    "no-undefined": 0,
-    "no-unneeded-ternary": 2,
-    "no-unreachable": 2,
-    "no-unused-vars": [2, {"vars": "all", "args": "none"}],
-    "no-use-before-define": 0,
-    "no-var": 0,
-    "no-warning-comments": 0,
-    "no-with": 2,
-    "object-shorthand": 0,
-    "one-var": [2, "never"],
-    "padded-blocks": [2, "never"],
-    "quote-props": 0,
-    "radix": 2,
-    "semi": [2, "always"],
-    "semi-spacing": [2, {"before": false, "after": true}],
-    "sort-vars": 0,
-    "space-after-function-name": 0,
-    "keyword-spacing": 2,
-    "space-before-blocks": 2,
-    "space-before-function-parentheses": 0,
-    "space-before-function-paren": [2, "never"],
-    "space-in-brackets": 0,
-    "space-in-parens": [2, "never"],
-    "space-infix-ops": [2, {"int32Hint": true}],
-    "space-unary-ops": [2, { "words": true, "nonwords": false }],
-    "space-unary-word-ops": 0,
-    "spaced-comment": [2, "always"],
-    "strict": [2, "global"],
-    "use-isnan": 2,
-    "valid-jsdoc": 0,
-    "valid-typeof": 2,
-    "vars-on-top": 0,
-    "wrap-iife": 0,
-    "wrap-regex": 0,
-    "yoda": 2,
+    "block-scoped-var": "error",
+    "brace-style": ["error", "1tbs"],
+    "camelcase": "error",
+    "comma-dangle": ["error", "never"],
+    "comma-spacing": "error",
+    "comma-style": ["error", "last"],
+    "complexity": ["error", 35],
+    "consistent-this": "off",
+    "curly": ["error", "multi-line"],
+    "default-case": "off",
+    "dot-location": ["error", "property"],
+    "dot-notation": "error",
+    "eol-last": "error",
+    "eqeqeq": "off",
+    "func-names": "off",
+    "func-style": "off",
+    "generator-star": "off",
+    "global-strict": "off",
+    "handle-callback-err": ["error", "er"],
+    "indent": ["error", 2, {"SwitchCase": 1}],
+    "key-spacing": ["error", {"beforeColon": false, "afterColon": true}],
+    "linebreak-style": "off",
+    "max-depth": "off",
+    "max-nested-callbacks": ["error", 4],
+    "max-params": "off",
+    "max-statements": "off",
+    "new-cap": ["error", {"capIsNew": false}],
+    "new-parens": "error",
+    "no-array-constructor": "error",
+    "no-bitwise": "off",
+    "no-caller": "error",
+    "no-catch-shadow": "error",
+    "no-comma-dangle": "off",
+    "no-cond-assign": "error",
+    "no-console": "off",
+    "no-constant-condition": "off",
+    "no-continue": "off",
+    "no-control-regex": "error",
+    "no-debugger": "error",
+    "no-delete-var": "error",
+    "no-div-regex": "off",
+    "no-dupe-args": "error",
+    "no-dupe-keys": "error",
+    "no-duplicate-case": "error",
+    "no-else-return": "error",
+    "no-empty": "error",
+    "no-empty-character-class": "error",
+    "no-eval": "error",
+    "no-ex-assign": "error",
+    "no-extend-native": "error",
+    "no-extra-bind": "error",
+    "no-extra-boolean-cast": "error",
+    "no-extra-parens": "off",
+    "no-extra-semi": "error",
+    "no-extra-strict": "off",
+    "no-fallthrough": "error",
+    "no-floating-decimal": "off",
+    "no-inline-comments": "off",
+    "no-lonely-if": "error",
+    "no-mixed-requires": "off",
+    "no-mixed-spaces-and-tabs": "error",
+    "no-multi-spaces": "error",
+    "no-multi-str": "error",
+    "no-multiple-empty-lines": ["error", {"max": 1}],
+    "no-native-reassign": "error",
+    "no-nested-ternary": "error",
+    "no-new-require": "off",
+    "no-octal": "error",
+    "no-param-reassign": "off",
+    "no-path-concat": "off",
+    "no-plusplus": "off",
+    "no-process-env": "off",
+    "no-process-exit": "off",
+    "no-proto": "error",
+    "no-redeclare": "error",
+    "no-regex-spaces": "error",
+    "no-reserved-keys": "off",
+    "no-restricted-modules": "off",
+    "no-return-assign": "warn",
+    "no-script-url": "off",
+    "no-self-compare": "error",
+    "no-sequences": "error",
+    "no-shadow": "warn",
+    "no-shadow-restricted-names": "error",
+    "no-space-before-semi": "off",
+    "no-spaced-func": "error",
+    "no-sparse-arrays": "error",
+    "no-sync": "off",
+    "no-ternary": "off",
+    "no-throw-literal": "error",
+    "no-trailing-spaces": "error",
+    "no-undef": "error",
+    "no-underscore-dangle": "off",
+    "no-undefined": "off",
+    "no-unneeded-ternary": "error",
+    "no-unreachable": "error",
+    "no-unused-vars": ["error", {"vars": "all", "args": "none"}],
+    "no-use-before-define": "off",
+    "no-var": "off",
+    "no-warning-comments": "off",
+    "no-with": "error",
+    "object-shorthand": "off",
+    "one-var": ["error", "never"],
+    "padded-blocks": ["error", "never"],
+    "quote-props": "off",
+    "radix": "error",
+    "semi": ["error", "always"],
+    "semi-spacing": ["error", {"before": false, "after": true}],
+    "sort-vars": "off",
+    "space-after-function-name": "off",
+    "keyword-spacing": "error",
+    "space-before-blocks": "error",
+    "space-before-function-parentheses": "off",
+    "space-before-function-paren": ["error", "never"],
+    "space-in-brackets": "off",
+    "space-in-parens": ["error", "never"],
+    "space-infix-ops": ["error", {"int32Hint": true}],
+    "space-unary-ops": ["error", { "words": true, "nonwords": false }],
+    "space-unary-word-ops": "off",
+    "spaced-comment": ["error", "always"],
+    "strict": ["error", "global"],
+    "use-isnan": "error",
+    "valid-jsdoc": "off",
+    "valid-typeof": "error",
+    "vars-on-top": "off",
+    "wrap-iife": "off",
+    "wrap-regex": "off",
+    "yoda": "error",
 
-    "guard-for-in": 0,
-    "newline-after-var": 0,
-    "no-alert": 0,
-    "no-eq-null": 0,
-    "no-func-assign": 0,
-    "no-implied-eval": 0,
-    "no-inner-declarations": 0,
-    "no-invalid-regexp": 0,
-    "no-irregular-whitespace": 0,
-    "no-iterator": 0,
-    "no-label-var": 0,
-    "no-labels": 2,
-    "no-lone-blocks": 0,
-    "no-loop-func": 0,
-    "no-negated-in-lhs": 0,
-    "no-new": 0,
-    "no-new-func": 0,
-    "no-new-object": 0,
-    "no-new-wrappers": 0,
-    "no-obj-calls": 0,
-    "no-octal-escape": 0,
-    "no-undef-init": 2,
-    "no-unexpected-multiline": 2,
-    "object-curly-spacing": 0,
-    "no-unused-expressions": 0,
-    "no-void": 0,
-    "no-wrap-func": 0,
-    "operator-assignment": 0,
-    "operator-linebreak": [2, "after"]
+    "guard-for-in": "off",
+    "newline-after-var": "off",
+    "no-alert": "off",
+    "no-eq-null": "off",
+    "no-func-assign": "off",
+    "no-implied-eval": "off",
+    "no-inner-declarations": "off",
+    "no-invalid-regexp": "off",
+    "no-irregular-whitespace": "off",
+    "no-iterator": "off",
+    "no-label-var": "off",
+    "no-labels": "error",
+    "no-lone-blocks": "off",
+    "no-loop-func": "off",
+    "no-negated-in-lhs": "off",
+    "no-new": "off",
+    "no-new-func": "off",
+    "no-new-object": "off",
+    "no-new-wrappers": "off",
+    "no-obj-calls": "off",
+    "no-octal-escape": "off",
+    "no-undef-init": "error",
+    "no-unexpected-multiline": "error",
+    "object-curly-spacing": "off",
+    "no-unused-expressions": "off",
+    "no-void": "off",
+    "no-wrap-func": "off",
+    "operator-assignment": "off",
+    "operator-linebreak": ["error", "after"]
   }
 };
--- a/browser/components/contextualidentity/test/browser/.eslintrc.js
+++ b/browser/components/contextualidentity/test/browser/.eslintrc.js
@@ -1,11 +1,11 @@
 "use strict";
 
 module.exports = {
   "extends": [
     "../../../../../testing/mochitest/browser.eslintrc.js"
   ],
 
   "rules": {
-    "no-undef": 2
+    "no-undef": "error"
   }
 };
--- a/browser/components/migration/.eslintrc.js
+++ b/browser/components/migration/.eslintrc.js
@@ -9,74 +9,74 @@ module.exports = { // eslint-disable-lin
     "Components": true,
     "dump": true,
     "Iterator": true
   },
 
   "env": { "browser": true },
 
   "rules": {
-    "block-scoped-var": 2,
-    // "brace-style": [1, "1tbs", {"allowSingleLine": true}],
-    "comma-dangle": 0,
-    "comma-spacing": [1, {"before": false, "after": true}],
-    "comma-style": [1, "last"],
-    // "complexity": 1,
-    "consistent-return": 2,
-    //"curly": 2,
-    "dot-notation": 2,
-    "eol-last": 2,
-    "indent": [1, 2, {"SwitchCase": 1}],
-    // "key-spacing": [1, {"beforeColon": false, "afterColon": true}],
-    "keyword-spacing": 1,
-    "max-nested-callbacks": [2, 3],
-    "new-parens": 2,
-    "no-array-constructor": 2,
-    "no-cond-assign": 2,
-    "no-control-regex": 2,
-    "no-debugger": 2,
-    "no-delete-var": 2,
-    "no-dupe-args": 2,
-    "no-dupe-keys": 2,
-    "no-duplicate-case": 2,
-    "no-else-return": 2,
-    "no-eval": 2,
-    "no-extend-native": 2,
-    // "no-extra-bind": 2,
-    "no-extra-boolean-cast": 2,
-    "no-extra-semi": 1,
+    "block-scoped-var": "error",
+    // "brace-style": ["warn", "1tbs", {"allowSingleLine": true}],
+    "comma-dangle": "off",
+    "comma-spacing": ["warn", {"before": false, "after": true}],
+    "comma-style": ["warn", "last"],
+    // "complexity": "warn",
+    "consistent-return": "error",
+    //"curly": "error",
+    "dot-notation": "error",
+    "eol-last": "error",
+    "indent": ["warn", 2, {"SwitchCase": 1}],
+    // "key-spacing": ["warn", {"beforeColon": false, "afterColon": true}],
+    "keyword-spacing": "warn",
+    "max-nested-callbacks": ["error", 3],
+    "new-parens": "error",
+    "no-array-constructor": "error",
+    "no-cond-assign": "error",
+    "no-control-regex": "error",
+    "no-debugger": "error",
+    "no-delete-var": "error",
+    "no-dupe-args": "error",
+    "no-dupe-keys": "error",
+    "no-duplicate-case": "error",
+    "no-else-return": "error",
+    "no-eval": "error",
+    "no-extend-native": "error",
+    // "no-extra-bind": "error",
+    "no-extra-boolean-cast": "error",
+    "no-extra-semi": "warn",
     "no-fallthrough": ["error", { "commentPattern": ".*[Ii]ntentional(?:ly)?\\s+fall(?:ing)?[\\s-]*through.*" }],
-    "no-lonely-if": 2,
-    "no-mixed-spaces-and-tabs": 2,
-    "no-multi-spaces": 1,
-    "no-multi-str": 1,
-    "no-native-reassign": 2,
-    "no-nested-ternary": 2,
-    "no-redeclare": 2,
-    "no-return-assign": 2,
-    "no-self-compare": 2,
-    "no-sequences": 2,
-    "no-shadow": 1,
-    "no-shadow-restricted-names": 2,
-    // "no-spaced-func": 1,
-    "no-throw-literal": 2,
-    "no-trailing-spaces": 2,
-    "no-undef": 2,
-    "no-unneeded-ternary": 2,
-    "no-unreachable": 2,
+    "no-lonely-if": "error",
+    "no-mixed-spaces-and-tabs": "error",
+    "no-multi-spaces": "warn",
+    "no-multi-str": "warn",
+    "no-native-reassign": "error",
+    "no-nested-ternary": "error",
+    "no-redeclare": "error",
+    "no-return-assign": "error",
+    "no-self-compare": "error",
+    "no-sequences": "error",
+    "no-shadow": "warn",
+    "no-shadow-restricted-names": "error",
+    // "no-spaced-func": "warn",
+    "no-throw-literal": "error",
+    "no-trailing-spaces": "error",
+    "no-undef": "error",
+    "no-unneeded-ternary": "error",
+    "no-unreachable": "error",
     "no-unused-vars": ["error", { "varsIgnorePattern": "^C[ciur]$" }],
-    "no-with": 2,
-    "padded-blocks": [1, "never"],
+    "no-with": "error",
+    "padded-blocks": ["warn", "never"],
     "quotes": ["error", "double", { "avoidEscape": true, "allowTemplateLiterals": true }],
-    "semi": [2, "always", {"omitLastInOneLineBlock": true }],
-    "semi-spacing": [1, {"before": false, "after": true}],
-    "space-before-blocks": [1, "always"],
-    // "space-before-function-paren": [1, "never"],
-    "space-in-parens": [1, "never"],
-    "space-infix-ops": [1, {"int32Hint": true}],
-    // "space-unary-ops": [1, { "words": true, "nonwords": false }],
-    "strict": [2, "global"],
-    "use-isnan": 2,
-    "valid-typeof": 2,
-    "yoda": 2
+    "semi": ["error", "always", {"omitLastInOneLineBlock": true }],
+    "semi-spacing": ["warn", {"before": false, "after": true}],
+    "space-before-blocks": ["warn", "always"],
+    // "space-before-function-paren": ["warn", "never"],
+    "space-in-parens": ["warn", "never"],
+    "space-infix-ops": ["warn", {"int32Hint": true}],
+    // "space-unary-ops": ["warn", { "words": true, "nonwords": false }],
+    "strict": ["error", "global"],
+    "use-isnan": "error",
+    "valid-typeof": "error",
+    "yoda": "error"
   }
 };
 
--- a/browser/extensions/formautofill/.eslintrc.js
+++ b/browser/extensions/formautofill/.eslintrc.js
@@ -7,468 +7,468 @@ module.exports = { // eslint-disable-lin
     "Components": true,
     "dump": true,
     "TextDecoder": false,
     "TextEncoder": false,
   },
 
   "rules": {
     // Rules from the mozilla plugin
-    "mozilla/balanced-listeners": 2,
-    "mozilla/no-aArgs": 1,
-    "mozilla/no-cpows-in-tests": 1,
-    "mozilla/var-only-at-top-level": 1,
+    "mozilla/balanced-listeners": "error",
+    "mozilla/no-aArgs": "warn",
+    "mozilla/no-cpows-in-tests": "warn",
+    "mozilla/var-only-at-top-level": "warn",
 
-    "valid-jsdoc": [2, {
+    "valid-jsdoc": ["error", {
       "prefer": {
         "return": "returns",
       },
       "preferType": {
         "Boolean": "boolean",
         "Number": "number",
         "String": "string",
         "bool": "boolean",
       },
       "requireParamDescription": false,
       "requireReturn": false,
       "requireReturnDescription": false,
     }],
 
     // Braces only needed for multi-line arrow function blocks
-    // "arrow-body-style": [2, "as-needed"],
+    // "arrow-body-style": ["error", "as-needed"],
 
     // Require spacing around =>
-    "arrow-spacing": 2,
+    "arrow-spacing": "error",
 
     // Always require spacing around a single line block
-    "block-spacing": 1,
+    "block-spacing": "warn",
 
     // Forbid spaces inside the square brackets of array literals.
-    "array-bracket-spacing": [2, "never"],
+    "array-bracket-spacing": ["error", "never"],
 
     // Forbid spaces inside the curly brackets of object literals.
-    "object-curly-spacing": [2, "never"],
+    "object-curly-spacing": ["error", "never"],
 
     // No space padding in parentheses
-    "space-in-parens": [2, "never"],
+    "space-in-parens": ["error", "never"],
 
     // Enforce one true brace style (opening brace on the same line) and avoid
     // start and end braces on the same line.
-    "brace-style": [2, "1tbs", {"allowSingleLine": true}],
+    "brace-style": ["error", "1tbs", {"allowSingleLine": true}],
 
     // No space before always a space after a comma
-    "comma-spacing": [2, {"before": false, "after": true}],
+    "comma-spacing": ["error", {"before": false, "after": true}],
 
     // Commas at the end of the line not the start
-    "comma-style": 2,
+    "comma-style": "error",
 
     // Don't require spaces around computed properties
-    "computed-property-spacing": [1, "never"],
+    "computed-property-spacing": ["warn", "never"],
 
     // Functions are not required to consistently return something or nothing
-    "consistent-return": 0,
+    "consistent-return": "off",
 
     // Require braces around blocks that start a new line
-    "curly": [2, "all"],
+    "curly": ["error", "all"],
 
     // Always require a trailing EOL
-    "eol-last": 2,
+    "eol-last": "error",
 
     // Require function* name()
-    "generator-star-spacing": [2, {"before": false, "after": true}],
+    "generator-star-spacing": ["error", {"before": false, "after": true}],
 
     // Two space indent
-    "indent": [2, 2, {"SwitchCase": 1}],
+    "indent": ["error", 2, {"SwitchCase": 1}],
 
     // Space after colon not before in property declarations
-    "key-spacing": [2, {"beforeColon": false, "afterColon": true, "mode": "minimum"}],
+    "key-spacing": ["error", {"beforeColon": false, "afterColon": true, "mode": "minimum"}],
 
     // Require spaces before and after finally, catch, etc.
-    "keyword-spacing": 2,
+    "keyword-spacing": "error",
 
     // Unix linebreaks
-    "linebreak-style": [2, "unix"],
+    "linebreak-style": ["error", "unix"],
 
     // Always require parenthesis for new calls
-    "new-parens": 2,
+    "new-parens": "error",
 
     // Use [] instead of Array()
-    "no-array-constructor": 2,
+    "no-array-constructor": "error",
 
     // No duplicate arguments in function declarations
-    "no-dupe-args": 2,
+    "no-dupe-args": "error",
 
     // No duplicate keys in object declarations
-    "no-dupe-keys": 2,
+    "no-dupe-keys": "error",
 
     // No duplicate cases in switch statements
-    "no-duplicate-case": 2,
+    "no-duplicate-case": "error",
 
     // If an if block ends with a return no need for an else block
-    // "no-else-return": 2,
+    // "no-else-return": "error",
 
     // Disallow empty statements. This will report an error for:
     // try { something(); } catch (e) {}
     // but will not report it for:
     // try { something(); } catch (e) { /* Silencing the error because ...*/ }
     // which is a valid use case.
-    "no-empty": 2,
+    "no-empty": "error",
 
     // No empty character classes in regex
-    "no-empty-character-class": 2,
+    "no-empty-character-class": "error",
 
     // Disallow empty destructuring
-    "no-empty-pattern": 2,
+    "no-empty-pattern": "error",
 
     // No assiging to exception variable
-    "no-ex-assign": 2,
+    "no-ex-assign": "error",
 
     // No using !! where casting to boolean is already happening
-    "no-extra-boolean-cast": 1,
+    "no-extra-boolean-cast": "warn",
 
     // No double semicolon
-    "no-extra-semi": 2,
+    "no-extra-semi": "error",
 
     // No overwriting defined functions
-    "no-func-assign": 2,
+    "no-func-assign": "error",
 
     // No invalid regular expresions
-    "no-invalid-regexp": 2,
+    "no-invalid-regexp": "error",
 
     // No odd whitespace characters
-    "no-irregular-whitespace": 2,
+    "no-irregular-whitespace": "error",
 
     // No single if block inside an else block
-    "no-lonely-if": 1,
+    "no-lonely-if": "warn",
 
     // No mixing spaces and tabs in indent
-    "no-mixed-spaces-and-tabs": [2, "smart-tabs"],
+    "no-mixed-spaces-and-tabs": ["error", "smart-tabs"],
 
     // Disallow use of multiple spaces (sometimes used to align const values,
     // array or object items, etc.). It's hard to maintain and doesn't add that
     // much benefit.
-    "no-multi-spaces": 1,
+    "no-multi-spaces": "warn",
 
     // No reassigning native JS objects
-    "no-native-reassign": 2,
+    "no-native-reassign": "error",
 
     // No (!foo in bar)
-    "no-negated-in-lhs": 2,
+    "no-negated-in-lhs": "error",
 
     // Nested ternary statements are confusing
-    "no-nested-ternary": 2,
+    "no-nested-ternary": "error",
 
     // Use {} instead of new Object()
-    "no-new-object": 2,
+    "no-new-object": "error",
 
     // No Math() or JSON()
-    "no-obj-calls": 2,
+    "no-obj-calls": "error",
 
     // No octal literals
-    "no-octal": 2,
+    "no-octal": "error",
 
     // No redeclaring variables
-    "no-redeclare": 2,
+    "no-redeclare": "error",
 
     // No unnecessary comparisons
-    "no-self-compare": 2,
+    "no-self-compare": "error",
 
     // No spaces between function name and parentheses
-    "no-spaced-func": 1,
+    "no-spaced-func": "warn",
 
     // No trailing whitespace
-    "no-trailing-spaces": 2,
+    "no-trailing-spaces": "error",
 
     // Error on newline where a semicolon is needed
-    "no-unexpected-multiline": 2,
+    "no-unexpected-multiline": "error",
 
     // No unreachable statements
-    "no-unreachable": 2,
+    "no-unreachable": "error",
 
     // No expressions where a statement is expected
-    "no-unused-expressions": 2,
+    "no-unused-expressions": "error",
 
     // No declaring variables that are never used
-    "no-unused-vars": [2, {"args": "none", "varsIgnorePattern": "^(Cc|Ci|Cr|Cu|EXPORTED_SYMBOLS)$"}],
+    "no-unused-vars": ["error", {"args": "none", "varsIgnorePattern": "^(Cc|Ci|Cr|Cu|EXPORTED_SYMBOLS)$"}],
 
     // No using variables before defined
-    "no-use-before-define": 2,
+    "no-use-before-define": "error",
 
     // No using with
-    "no-with": 2,
+    "no-with": "error",
 
     // Always require semicolon at end of statement
-    "semi": [2, "always"],
+    "semi": ["error", "always"],
 
     // Require space before blocks
-    "space-before-blocks": 2,
+    "space-before-blocks": "error",
 
     // Never use spaces before function parentheses
-    "space-before-function-paren": [2, {"anonymous": "never", "named": "never"}],
+    "space-before-function-paren": ["error", {"anonymous": "never", "named": "never"}],
 
-    // Require spaces around operators, except for a|0.
-    "space-infix-ops": [2, {"int32Hint": true}],
+    // Require spaces around operators, except for a|"off".
+    "space-infix-ops": ["error", {"int32Hint": true}],
 
     // ++ and -- should not need spacing
-    "space-unary-ops": [1, {"nonwords": false}],
+    "space-unary-ops": ["warn", {"nonwords": false}],
 
     // No comparisons to NaN
-    "use-isnan": 2,
+    "use-isnan": "error",
 
     // Only check typeof against valid results
-    "valid-typeof": 2,
+    "valid-typeof": "error",
 
     // Disallow using variables outside the blocks they are defined (especially
     // since only let and const are used, see "no-var").
-    "block-scoped-var": 2,
+    "block-scoped-var": "error",
 
     // Allow trailing commas for easy list extension.  Having them does not
     // impair readability, but also not required either.
-    "comma-dangle": [2, "always-multiline"],
+    "comma-dangle": ["error", "always-multiline"],
 
     // Warn about cyclomatic complexity in functions.
-    "complexity": 1,
+    "complexity": "warn",
 
     // Don't warn for inconsistent naming when capturing this (not so important
     // with auto-binding fat arrow functions).
-    // "consistent-this": [2, "self"],
+    // "consistent-this": ["error", "self"],
 
     // Don't require a default case in switch statements. Avoid being forced to
     // add a bogus default when you know all possible cases are handled.
-    "default-case": 0,
+    "default-case": "off",
 
     // Enforce dots on the next line with property name.
-    "dot-location": [2, "property"],
+    "dot-location": ["error", "property"],
 
     // Encourage the use of dot notation whenever possible.
-    "dot-notation": 2,
+    "dot-notation": "error",
 
     // Allow using == instead of ===, in the interest of landing something since
     // the devtools codebase is split on convention here.
-    "eqeqeq": 0,
+    "eqeqeq": "off",
 
     // Don't require function expressions to have a name.
     // This makes the code more verbose and hard to read. Our engine already
     // does a fantastic job assigning a name to the function, which includes
     // the enclosing function name, and worst case you have a line number that
     // you can just look up.
-    "func-names": 0,
+    "func-names": "off",
 
     // Allow use of function declarations and expressions.
-    "func-style": 0,
+    "func-style": "off",
 
     // Don't enforce the maximum depth that blocks can be nested. The complexity
     // rule is a better rule to check this.
-    "max-depth": 0,
+    "max-depth": "off",
 
     // Maximum length of a line.
     // Disabled because we exceed this in too many places.
-    "max-len": [0, 80],
+    "max-len": ["off", 80],
 
     // Maximum depth callbacks can be nested.
-    "max-nested-callbacks": [2, 4],
+    "max-nested-callbacks": ["error", 4],
 
     // Don't limit the number of parameters that can be used in a function.
-    "max-params": 0,
+    "max-params": "off",
 
     // Don't limit the maximum number of statement allowed in a function. We
     // already have the complexity rule that's a better measurement.
-    "max-statements": 0,
+    "max-statements": "off",
 
     // Don't require a capital letter for constructors, only check if all new
     // operators are followed by a capital letter. Don't warn when capitalized
     // functions are used without the new operator.
-    "new-cap": [0, {"capIsNew": false}],
+    "new-cap": ["off", {"capIsNew": false}],
 
     // Allow use of bitwise operators.
-    "no-bitwise": 0,
+    "no-bitwise": "off",
 
     // Disallow use of arguments.caller or arguments.callee.
-    "no-caller": 2,
+    "no-caller": "error",
 
     // Disallow the catch clause parameter name being the same as a variable in
     // the outer scope, to avoid confusion.
-    "no-catch-shadow": 0,
+    "no-catch-shadow": "off",
 
     // Disallow assignment in conditional expressions.
-    "no-cond-assign": 2,
+    "no-cond-assign": "error",
 
     // Disallow using the console API.
-    "no-console": 2,
+    "no-console": "error",
 
     // Allow using constant expressions in conditions like while (true)
-    "no-constant-condition": 0,
+    "no-constant-condition": "off",
 
     // Allow use of the continue statement.
-    "no-continue": 0,
+    "no-continue": "off",
 
     // Disallow control characters in regular expressions.
-    "no-control-regex": 2,
+    "no-control-regex": "error",
 
     // Disallow use of debugger.
-    "no-debugger": 2,
+    "no-debugger": "error",
 
     // Disallow deletion of variables (deleting properties is fine).
-    "no-delete-var": 2,
+    "no-delete-var": "error",
 
     // Allow division operators explicitly at beginning of regular expression.
-    "no-div-regex": 0,
+    "no-div-regex": "off",
 
     // Disallow use of eval(). We have other APIs to evaluate code in content.
-    "no-eval": 2,
+    "no-eval": "error",
 
     // Disallow adding to native types
-    "no-extend-native": 2,
+    "no-extend-native": "error",
 
     // Disallow unnecessary function binding.
-    "no-extra-bind": 2,
+    "no-extra-bind": "error",
 
     // Allow unnecessary parentheses, as they may make the code more readable.
-    "no-extra-parens": 0,
+    "no-extra-parens": "off",
 
     // Disallow fallthrough of case statements, except if there is a comment.
-    "no-fallthrough": 2,
+    "no-fallthrough": "error",
 
     // Allow the use of leading or trailing decimal points in numeric literals.
-    "no-floating-decimal": 0,
+    "no-floating-decimal": "off",
 
     // Allow comments inline after code.
-    "no-inline-comments": 0,
+    "no-inline-comments": "off",
 
     // Disallow use of labels for anything other then loops and switches.
-    "no-labels": [2, {"allowLoop": true}],
+    "no-labels": ["error", {"allowLoop": true}],
 
     // Disallow use of multiline strings (use template strings instead).
-    "no-multi-str": 1,
+    "no-multi-str": "warn",
 
     // Disallow multiple empty lines.
-    "no-multiple-empty-lines": [1, {"max": 2}],
+    "no-multiple-empty-lines": ["warn", {"max": 2}],
 
     // Allow reassignment of function parameters.
-    "no-param-reassign": 0,
+    "no-param-reassign": "off",
 
     // Allow string concatenation with __dirname and __filename (not a node env).
-    "no-path-concat": 0,
+    "no-path-concat": "off",
 
     // Allow use of unary operators, ++ and --.
-    "no-plusplus": 0,
+    "no-plusplus": "off",
 
     // Allow using process.env (not a node environment).
-    "no-process-env": 0,
+    "no-process-env": "off",
 
     // Allow using process.exit (not a node environment).
-    "no-process-exit": 0,
+    "no-process-exit": "off",
 
     // Disallow usage of __proto__ property.
-    "no-proto": 2,
+    "no-proto": "error",
 
     // Disallow multiple spaces in a regular expression literal.
-    "no-regex-spaces": 2,
+    "no-regex-spaces": "error",
 
     // Allow reserved words being used as object literal keys.
-    "no-reserved-keys": 0,
+    "no-reserved-keys": "off",
 
     // Don't restrict usage of specified node modules (not a node environment).
-    "no-restricted-modules": 0,
+    "no-restricted-modules": "off",
 
     // Disallow use of assignment in return statement. It is preferable for a
     // single line of code to have only one easily predictable effect.
-    "no-return-assign": 2,
+    "no-return-assign": "error",
 
     // Don't warn about declaration of variables already declared in the outer scope.
-    "no-shadow": 0,
+    "no-shadow": "off",
 
     // Disallow shadowing of names such as arguments.
-    "no-shadow-restricted-names": 2,
+    "no-shadow-restricted-names": "error",
 
     // Allow use of synchronous methods (not a node environment).
-    "no-sync": 0,
+    "no-sync": "off",
 
     // Allow the use of ternary operators.
-    "no-ternary": 0,
+    "no-ternary": "off",
 
     // Disallow throwing literals (eg. throw "error" instead of
     // throw new Error("error")).
-    "no-throw-literal": 2,
+    "no-throw-literal": "error",
 
     // Disallow use of undeclared variables unless mentioned in a /* global */
     // block. Note that globals from head.js are automatically imported in tests
     // by the import-headjs-globals rule form the mozilla eslint plugin.
-    "no-undef": 2,
+    "no-undef": "error",
 
     // Allow dangling underscores in identifiers (for privates).
-    "no-underscore-dangle": 0,
+    "no-underscore-dangle": "off",
 
     // Allow use of undefined variable.
-    "no-undefined": 0,
+    "no-undefined": "off",
 
     // Disallow the use of Boolean literals in conditional expressions.
-    "no-unneeded-ternary": 2,
+    "no-unneeded-ternary": "error",
 
     // We use var-only-at-top-level instead of no-var as we allow top level
     // vars.
-    "no-var": 0,
+    "no-var": "off",
 
     // Allow using TODO/FIXME comments.
-    "no-warning-comments": 0,
+    "no-warning-comments": "off",
 
     // Don't require method and property shorthand syntax for object literals.
     // We use this in the code a lot, but not consistently, and this seems more
     // like something to check at code review time.
-    "object-shorthand": 0,
+    "object-shorthand": "off",
 
     // Allow more than one variable declaration per function.
-    "one-var": 0,
+    "one-var": "off",
 
     // Disallow padding within blocks.
-    "padded-blocks": [1, "never"],
+    "padded-blocks": ["warn", "never"],
 
     // Don't require quotes around object literal property names.
-    "quote-props": 0,
+    "quote-props": "off",
 
     // Double quotes should be used.
-    "quotes": [1, "double", {"avoidEscape": true, "allowTemplateLiterals": true}],
+    "quotes": ["warn", "double", {"avoidEscape": true, "allowTemplateLiterals": true}],
 
     // Require use of the second argument for parseInt().
-    "radix": 2,
+    "radix": "error",
 
     // Enforce spacing after semicolons.
-    "semi-spacing": [2, {"before": false, "after": true}],
+    "semi-spacing": ["error", {"before": false, "after": true}],
 
     // Don't require to sort variables within the same declaration block.
     // Anyway, one-var is disabled.
-    "sort-vars": 0,
+    "sort-vars": "off",
 
     // Require a space immediately following the // in a line comment.
-    "spaced-comment": [2, "always"],
+    "spaced-comment": ["error", "always"],
 
     // Require "use strict" to be defined globally in the script.
-    "strict": [2, "global"],
+    "strict": ["error", "global"],
 
     // Allow vars to be declared anywhere in the scope.
-    "vars-on-top": 0,
+    "vars-on-top": "off",
 
     // Don't require immediate function invocation to be wrapped in parentheses.
-    "wrap-iife": 0,
+    "wrap-iife": "off",
 
     // Don't require regex literals to be wrapped in parentheses (which
     // supposedly prevent them from being mistaken for division operators).
-    "wrap-regex": 0,
+    "wrap-regex": "off",
 
     // Disallow Yoda conditions (where literal value comes first).
-    "yoda": 2,
+    "yoda": "error",
 
     // disallow use of eval()-like methods
-    "no-implied-eval": 2,
+    "no-implied-eval": "error",
 
     // Disallow function or variable declarations in nested blocks
-    "no-inner-declarations": 2,
+    "no-inner-declarations": "error",
 
     // Disallow usage of __iterator__ property
-    "no-iterator": 2,
+    "no-iterator": "error",
 
     // Disallow labels that share a name with a variable
-    "no-label-var": 2,
+    "no-label-var": "error",
 
     // Disallow creating new instances of String, Number, and Boolean
-    "no-new-wrappers": 2,
+    "no-new-wrappers": "error",
   },
 };
--- a/devtools/.eslintrc.js
+++ b/devtools/.eslintrc.js
@@ -32,38 +32,38 @@ module.exports = {
     "WebSocket": true,
     "XMLHttpRequest": true,
   },
   "rules": {
     // These are the rules that have been configured so far to match the
     // devtools coding style.
 
     // Rules from the mozilla plugin
-    "mozilla/no-aArgs": 1,
-    "mozilla/no-cpows-in-tests": 2,
-    "mozilla/no-single-arg-cu-import": 2,
+    "mozilla/no-aArgs": "warn",
+    "mozilla/no-cpows-in-tests": "error",
+    "mozilla/no-single-arg-cu-import": "error",
     // See bug 1224289.
-    "mozilla/reject-importGlobalProperties": 2,
+    "mozilla/reject-importGlobalProperties": "error",
     // devtools/shared/platform is special; see the README.md in that
     // directory for details.  We reject requires using explicit
     // subdirectories of this directory.
-    "mozilla/reject-some-requires": [2, "^devtools/shared/platform/(chome|content)/"],
-    "mozilla/var-only-at-top-level": 1,
+    "mozilla/reject-some-requires": ["error", "^devtools/shared/platform/(chome|content)/"],
+    "mozilla/var-only-at-top-level": "warn",
 
     // Rules from the React plugin
-    "react/display-name": 2,
-    "react/no-danger": 2,
-    "react/no-did-mount-set-state": 2,
-    "react/no-did-update-set-state": 2,
-    "react/no-direct-mutation-state": 2,
-    "react/no-unknown-property": 2,
-    "react/prefer-es6-class": [1, "never"],
+    "react/display-name": "error",
+    "react/no-danger": "error",
+    "react/no-did-mount-set-state": "error",
+    "react/no-did-update-set-state": "error",
+    "react/no-direct-mutation-state": "error",
+    "react/no-unknown-property": "error",
+    "react/prefer-es6-class": ["warn", "never"],
     // Disabled temporarily until errors are fixed.
-    "react/prop-types": 0,
-    "react/sort-comp": [2, {
+    "react/prop-types": "off",
+    "react/sort-comp": ["error", {
       order: [
         "lifecycle",
         "everything-else",
         "render"
       ],
       groups: {
         lifecycle: [
           "displayName",
@@ -86,387 +86,387 @@ module.exports = {
           "componentDidUpdate",
           "componentWillUnmount"
         ]
       }
     }],
 
     // Disallow using variables outside the blocks they are defined (especially
     // since only let and const are used, see "no-var").
-    "block-scoped-var": 2,
+    "block-scoped-var": "error",
     // Enforce one true brace style (opening brace on the same line) and avoid
     // start and end braces on the same line.
-    "brace-style": [2, "1tbs", {"allowSingleLine": false}],
+    "brace-style": ["error", "1tbs", {"allowSingleLine": false}],
     // Require camel case names
-    "camelcase": 2,
+    "camelcase": "error",
     // Allow trailing commas for easy list extension.  Having them does not
     // impair readability, but also not required either.
-    "comma-dangle": 0,
+    "comma-dangle": "off",
     // Enforce spacing before and after comma
-    "comma-spacing": [2, {"before": false, "after": true}],
+    "comma-spacing": ["error", {"before": false, "after": true}],
     // Enforce one true comma style.
-    "comma-style": [2, "last"],
+    "comma-style": ["error", "last"],
     // Warn about cyclomatic complexity in functions.
-    "complexity": [2, 35],
+    "complexity": ["error", 35],
     // Require return statements to either always or never specify values.
-    "consistent-return": 2,
+    "consistent-return": "error",
     // Don't warn for inconsistent naming when capturing this (not so important
     // with auto-binding fat arrow functions).
-    "consistent-this": 0,
+    "consistent-this": "off",
     // Enforce curly brace conventions for all control statements.
-    "curly": 2,
+    "curly": "error",
     // Don't require a default case in switch statements. Avoid being forced to
     // add a bogus default when you know all possible cases are handled.
-    "default-case": 0,
+    "default-case": "off",
     // Enforce dots on the next line with property name.
-    "dot-location": [2, "property"],
+    "dot-location": ["error", "property"],
     // Encourage the use of dot notation whenever possible.
-    "dot-notation": 2,
+    "dot-notation": "error",
     // Enforce newline at the end of file, with no multiple empty lines.
-    "eol-last": 2,
+    "eol-last": "error",
     // Allow using == instead of ===, in the interest of landing something since
     // the devtools codebase is split on convention here.
-    "eqeqeq": 0,
+    "eqeqeq": "off",
     // Don't require function expressions to have a name.
     // This makes the code more verbose and hard to read. Our engine already
     // does a fantastic job assigning a name to the function, which includes
     // the enclosing function name, and worst case you have a line number that
     // you can just look up.
-    "func-names": 0,
+    "func-names": "off",
     // Allow use of function declarations and expressions.
-    "func-style": 0,
+    "func-style": "off",
     // Deprecated, will be removed in 1.0.
-    "generator-star": 0,
+    "generator-star": "off",
     // Enforce the spacing around the * in generator functions.
-    "generator-star-spacing": [2, "after"],
+    "generator-star-spacing": ["error", "after"],
     // Deprecated, will be removed in 1.0.
-    "global-strict": 0,
+    "global-strict": "off",
     // Only useful in a node environment.
-    "handle-callback-err": 0,
+    "handle-callback-err": "off",
     // Tab width.
-    "indent": [2, 2, {"SwitchCase": 1}],
+    "indent": ["error", 2, {"SwitchCase": 1}],
     // Enforces spacing between keys and values in object literal properties.
-    "key-spacing": [2, {"beforeColon": false, "afterColon": true}],
+    "key-spacing": ["error", {"beforeColon": false, "afterColon": true}],
     // Enforces unix style line breaks.
-    "linebreak-style": [2, "unix"],
+    "linebreak-style": ["error", "unix"],
     // Don't enforce the maximum depth that blocks can be nested. The complexity
     // rule is a better rule to check this.
-    "max-depth": 0,
+    "max-depth": "off",
     // Maximum length of a line.
-    "max-len": [2, 90, 2, {
+    "max-len": ["error", 90, 2, {
       "ignoreUrls": true,
       "ignorePattern": "data:image\/|\\s*require\\s*\\(|^\\s*loader\\.lazy|-\\*-"
     }],
     // Maximum depth callbacks can be nested.
-    "max-nested-callbacks": [2, 3],
+    "max-nested-callbacks": ["error", 3],
     // Don't limit the number of parameters that can be used in a function.
-    "max-params": 0,
+    "max-params": "off",
     // Don't limit the maximum number of statement allowed in a function. We
     // already have the complexity rule that's a better measurement.
-    "max-statements": 0,
+    "max-statements": "off",
     // Require a capital letter for constructors, only check if all new
     // operators are followed by a capital letter. Don't warn when capitalized
     // functions are used without the new operator.
-    "new-cap": [2, {"capIsNew": false}],
+    "new-cap": ["error", {"capIsNew": false}],
     // Disallow the omission of parentheses when invoking a constructor with no
     // arguments.
-    "new-parens": 2,
+    "new-parens": "error",
     // Disallow use of the Array constructor.
-    "no-array-constructor": 2,
+    "no-array-constructor": "error",
     // Allow use of bitwise operators.
-    "no-bitwise": 0,
+    "no-bitwise": "off",
     // Disallow use of arguments.caller or arguments.callee.
-    "no-caller": 2,
+    "no-caller": "error",
     // Disallow the catch clause parameter name being the same as a variable in
     // the outer scope, to avoid confusion.
-    "no-catch-shadow": 2,
+    "no-catch-shadow": "error",
     // Deprecated, will be removed in 1.0.
-    "no-comma-dangle": 0,
+    "no-comma-dangle": "off",
     // Disallow assignment in conditional expressions.
-    "no-cond-assign": 2,
+    "no-cond-assign": "error",
     // Allow using the console API.
-    "no-console": 0,
+    "no-console": "off",
     // Allow using constant expressions in conditions like while (true)
-    "no-constant-condition": 0,
+    "no-constant-condition": "off",
     // Allow use of the continue statement.
-    "no-continue": 0,
+    "no-continue": "off",
     // Disallow control characters in regular expressions.
-    "no-control-regex": 2,
+    "no-control-regex": "error",
     // Disallow use of debugger.
-    "no-debugger": 2,
+    "no-debugger": "error",
     // Disallow deletion of variables (deleting properties is fine).
-    "no-delete-var": 2,
+    "no-delete-var": "error",
     // Allow division operators explicitly at beginning of regular expression.
-    "no-div-regex": 0,
+    "no-div-regex": "off",
     // Disallow duplicate arguments in functions.
-    "no-dupe-args": 2,
+    "no-dupe-args": "error",
     // Disallow duplicate keys when creating object literals.
-    "no-dupe-keys": 2,
+    "no-dupe-keys": "error",
     // Disallow a duplicate case label.
-    "no-duplicate-case": 2,
+    "no-duplicate-case": "error",
     // Disallow else after a return in an if. The else around the second return
     // here is useless:
     // if (something) { return false; } else { return true; }
-    "no-else-return": 2,
+    "no-else-return": "error",
     // Disallow empty statements. This will report an error for:
     // try { something(); } catch (e) {}
     // but will not report it for:
     // try { something(); } catch (e) { /* Silencing the error because ...*/ }
     // which is a valid use case.
-    "no-empty": 2,
+    "no-empty": "error",
     // Disallow the use of empty character classes in regular expressions.
-    "no-empty-character-class": 2,
+    "no-empty-character-class": "error",
     // Disallow use of eval(). We have other APIs to evaluate code in content.
-    "no-eval": 2,
+    "no-eval": "error",
     // Disallow assigning to the exception in a catch block.
-    "no-ex-assign": 2,
+    "no-ex-assign": "error",
     // Disallow adding to native types
-    "no-extend-native": 2,
+    "no-extend-native": "error",
     // Disallow unnecessary function binding.
-    "no-extra-bind": 2,
+    "no-extra-bind": "error",
     // Disallow double-negation boolean casts in a boolean context.
-    "no-extra-boolean-cast": 2,
+    "no-extra-boolean-cast": "error",
     // Allow unnecessary parentheses, as they may make the code more readable.
-    "no-extra-parens": 0,
+    "no-extra-parens": "off",
     // Disallow unnecessary semicolons.
-    "no-extra-semi": 2,
+    "no-extra-semi": "error",
     // Deprecated, will be removed in 1.0.
-    "no-extra-strict": 0,
+    "no-extra-strict": "off",
     // Disallow fallthrough of case statements, except if there is a comment.
-    "no-fallthrough": 2,
+    "no-fallthrough": "error",
     // Allow the use of leading or trailing decimal points in numeric literals.
-    "no-floating-decimal": 0,
+    "no-floating-decimal": "off",
     // Disallow comments inline after code.
-    "no-inline-comments": 2,
+    "no-inline-comments": "error",
     // Disallow if as the only statement in an else block.
-    "no-lonely-if": 2,
+    "no-lonely-if": "error",
     // Allow mixing regular variable and require declarations (not a node env).
-    "no-mixed-requires": 0,
+    "no-mixed-requires": "off",
     // Disallow mixed spaces and tabs for indentation.
-    "no-mixed-spaces-and-tabs": 2,
+    "no-mixed-spaces-and-tabs": "error",
     // Disallow use of multiple spaces (sometimes used to align const values,
     // array or object items, etc.). It's hard to maintain and doesn't add that
     // much benefit.
-    "no-multi-spaces": 2,
+    "no-multi-spaces": "error",
     // Disallow use of multiline strings (use template strings instead).
-    "no-multi-str": 2,
+    "no-multi-str": "error",
     // Disallow multiple empty lines.
-    "no-multiple-empty-lines": [2, {"max": 1}],
+    "no-multiple-empty-lines": ["error", {"max": 1}],
     // Disallow reassignments of native objects.
-    "no-native-reassign": 2,
+    "no-native-reassign": "error",
     // Disallow nested ternary expressions, they make the code hard to read.
-    "no-nested-ternary": 2,
+    "no-nested-ternary": "error",
     // Allow use of new operator with the require function.
-    "no-new-require": 0,
+    "no-new-require": "off",
     // Disallow use of octal literals.
-    "no-octal": 2,
+    "no-octal": "error",
     // Allow reassignment of function parameters.
-    "no-param-reassign": 0,
+    "no-param-reassign": "off",
     // Allow string concatenation with __dirname and __filename (not a node env).
-    "no-path-concat": 0,
+    "no-path-concat": "off",
     // Allow use of unary operators, ++ and --.
-    "no-plusplus": 0,
+    "no-plusplus": "off",
     // Allow using process.env (not a node environment).
-    "no-process-env": 0,
+    "no-process-env": "off",
     // Allow using process.exit (not a node environment).
-    "no-process-exit": 0,
+    "no-process-exit": "off",
     // Disallow usage of __proto__ property.
-    "no-proto": 2,
+    "no-proto": "error",
     // Disallow declaring the same variable more than once (we use let anyway).
-    "no-redeclare": 2,
+    "no-redeclare": "error",
     // Disallow multiple spaces in a regular expression literal.
-    "no-regex-spaces": 2,
+    "no-regex-spaces": "error",
     // Allow reserved words being used as object literal keys.
-    "no-reserved-keys": 0,
+    "no-reserved-keys": "off",
     // Don't restrict usage of specified node modules (not a node environment).
-    "no-restricted-modules": 0,
+    "no-restricted-modules": "off",
     // Disallow use of assignment in return statement. It is preferable for a
     // single line of code to have only one easily predictable effect.
-    "no-return-assign": 2,
+    "no-return-assign": "error",
     // Allow use of javascript: urls.
-    "no-script-url": 0,
+    "no-script-url": "off",
     // Disallow comparisons where both sides are exactly the same.
-    "no-self-compare": 2,
+    "no-self-compare": "error",
     // Disallow use of comma operator.
-    "no-sequences": 2,
+    "no-sequences": "error",
     // Warn about declaration of variables already declared in the outer scope.
     // This isn't an error because it sometimes is useful to use the same name
     // in a small helper function rather than having to come up with another
     // random name.
     // Still, making this a warning can help people avoid being confused.
-    "no-shadow": 2,
+    "no-shadow": "error",
     // Disallow shadowing of names such as arguments.
-    "no-shadow-restricted-names": 2,
+    "no-shadow-restricted-names": "error",
     // Deprecated, will be removed in 1.0.
-    "no-space-before-semi": 0,
+    "no-space-before-semi": "off",
     // Disallow space between function identifier and application.
-    "no-spaced-func": 2,
+    "no-spaced-func": "error",
     // Disallow sparse arrays, eg. let arr = [,,2].
     // Array destructuring is fine though:
     // for (let [, breakpointPromise] of aPromises)
-    "no-sparse-arrays": 2,
+    "no-sparse-arrays": "error",
     // Allow use of synchronous methods (not a node environment).
-    "no-sync": 0,
+    "no-sync": "off",
     // Allow the use of ternary operators.
-    "no-ternary": 0,
+    "no-ternary": "off",
     // Disallow throwing literals (eg. throw "error" instead of
     // throw new Error("error")).
-    "no-throw-literal": 2,
+    "no-throw-literal": "error",
     // Disallow trailing whitespace at the end of lines.
-    "no-trailing-spaces": 2,
+    "no-trailing-spaces": "error",
     // Disallow use of undeclared variables unless mentioned in a /*global */
     // block. Note that globals from head.js are automatically imported in tests
     // by the import-headjs-globals rule form the mozilla eslint plugin.
-    "no-undef": 2,
+    "no-undef": "error",
     // Allow dangling underscores in identifiers (for privates).
-    "no-underscore-dangle": 0,
+    "no-underscore-dangle": "off",
     // Allow use of undefined variable.
-    "no-undefined": 0,
+    "no-undefined": "off",
     // Disallow the use of Boolean literals in conditional expressions.
-    "no-unneeded-ternary": 2,
+    "no-unneeded-ternary": "error",
     // Disallow unreachable statements after a return, throw, continue, or break
     // statement.
-    "no-unreachable": 2,
+    "no-unreachable": "error",
     // Disallow global and local variables that aren't used, but allow unused
     // function arguments.
-    "no-unused-vars": [2, {"vars": "all", "args": "none"}],
+    "no-unused-vars": ["error", {"vars": "all", "args": "none"}],
     // Allow using variables before they are defined.
-    "no-use-before-define": 0,
+    "no-use-before-define": "off",
     // We use var-only-at-top-level instead of no-var as we allow top level
     // vars.
-    "no-var": 0,
+    "no-var": "off",
     // Allow using TODO/FIXME comments.
-    "no-warning-comments": 0,
+    "no-warning-comments": "off",
     // Disallow use of the with statement.
-    "no-with": 2,
+    "no-with": "error",
     // Don't require method and property shorthand syntax for object literals.
     // We use this in the code a lot, but not consistently, and this seems more
     // like something to check at code review time.
-    "object-shorthand": 0,
+    "object-shorthand": "off",
     // Allow more than one variable declaration per function.
-    "one-var": 0,
+    "one-var": "off",
     // Disallow padding within blocks.
-    "padded-blocks": [2, "never"],
+    "padded-blocks": ["error", "never"],
     // Don't require quotes around object literal property names.
-    "quote-props": 0,
+    "quote-props": "off",
     // Double quotes should be used.  Other quote characters can be used around strings
     // with embedded double quotes to avoid escaping them.  Template literals are allowed
     // mainly for building multi-line messages where only some lines use substitution.
-    "quotes": [2, "double", {"avoidEscape": true, "allowTemplateLiterals": true}],
+    "quotes": ["error", "double", {"avoidEscape": true, "allowTemplateLiterals": true}],
     // Require use of the second argument for parseInt().
-    "radix": 2,
+    "radix": "error",
     // Always require use of semicolons wherever they are valid.
-    "semi": [2, "always"],
+    "semi": ["error", "always"],
     // Enforce spacing after semicolons.
-    "semi-spacing": [2, {"before": false, "after": true}],
+    "semi-spacing": ["error", {"before": false, "after": true}],
     // Don't require to sort variables within the same declaration block.
     // Anyway, one-var is disabled.
-    "sort-vars": 0,
+    "sort-vars": "off",
     // Deprecated, will be removed in 1.0.
-    "space-after-function-name": 0,
+    "space-after-function-name": "off",
     // Require a space around all keywords.
-    "keyword-spacing": 2,
+    "keyword-spacing": "error",
     // Require a space before the start brace of a block.
-    "space-before-blocks": [2, "always"],
+    "space-before-blocks": ["error", "always"],
     // Deprecated, will be removed in 1.0.
-    "space-before-function-parentheses": 0,
+    "space-before-function-parentheses": "off",
     // Require space after keyword for anonymous functions, but disallow space
     // after name of named functions.
-    "space-before-function-paren": [2, {"anonymous": "always", "named": "never"}],
+    "space-before-function-paren": ["error", {"anonymous": "always", "named": "never"}],
     // Disable the rule that checks if spaces inside {} and [] are there or not.
-    // Our code is split on conventions, and it'd be nice to have 2 rules
+    // Our code is split on conventions, and it'd be nice to have "error" rules
     // instead, one for [] and one for {}. So, disabling until we write them.
-    "space-in-brackets": 0,
+    "space-in-brackets": "off",
     // Disallow spaces inside parentheses.
-    "space-in-parens": [2, "never"],
-    // Require spaces around operators, except for a|0.
-    "space-infix-ops": [2, {"int32Hint": true}],
+    "space-in-parens": ["error", "never"],
+    // Require spaces around operators, except for a|"off".
+    "space-infix-ops": ["error", {"int32Hint": true}],
     // Require spaces before/after unary operators (words on by default,
     // nonwords off by default).
-    "space-unary-ops": [2, { "words": true, "nonwords": false }],
+    "space-unary-ops": ["error", { "words": true, "nonwords": false }],
     // Deprecated, will be removed in 1.0.
-    "space-unary-word-ops": 0,
+    "space-unary-word-ops": "off",
     // Require a space immediately following the // in a line comment.
-    "spaced-comment": [2, "always"],
+    "spaced-comment": ["error", "always"],
     // Require "use strict" to be defined globally in the script.
-    "strict": [2, "global"],
+    "strict": ["error", "global"],
     // Disallow comparisons with the value NaN.
-    "use-isnan": 2,
+    "use-isnan": "error",
     // Warn about invalid JSDoc comments.
     // Disabled for now because of https://github.com/eslint/eslint/issues/2270
     // The rule fails on some jsdoc comments like in:
     // devtools/client/webconsole/console-output.js
-    "valid-jsdoc": 0,
+    "valid-jsdoc": "off",
     // Ensure that the results of typeof are compared against a valid string.
-    "valid-typeof": 2,
+    "valid-typeof": "error",
     // Allow vars to be declared anywhere in the scope.
-    "vars-on-top": 0,
+    "vars-on-top": "off",
     // Don't require immediate function invocation to be wrapped in parentheses.
-    "wrap-iife": 0,
+    "wrap-iife": "off",
     // Don't require regex literals to be wrapped in parentheses (which
     // supposedly prevent them from being mistaken for division operators).
-    "wrap-regex": 0,
+    "wrap-regex": "off",
     // Disallow Yoda conditions (where literal value comes first).
-    "yoda": 2,
+    "yoda": "error",
 
     // And these are the rules that haven't been discussed so far, and that are
     // disabled for now until we introduce them, one at a time.
 
     // Require for-in loops to have an if statement.
-    "guard-for-in": 0,
+    "guard-for-in": "off",
     // allow/disallow an empty newline after var statement
-    "newline-after-var": 0,
+    "newline-after-var": "off",
     // disallow the use of alert, confirm, and prompt
-    "no-alert": 0,
+    "no-alert": "off",
     // disallow comparisons to null without a type-checking operator
-    "no-eq-null": 0,
+    "no-eq-null": "off",
     // disallow overwriting functions written as function declarations
-    "no-func-assign": 0,
+    "no-func-assign": "off",
     // disallow use of eval()-like methods
-    "no-implied-eval": 0,
+    "no-implied-eval": "off",
     // disallow function or variable declarations in nested blocks
-    "no-inner-declarations": 0,
+    "no-inner-declarations": "off",
     // disallow invalid regular expression strings in the RegExp constructor
-    "no-invalid-regexp": 0,
+    "no-invalid-regexp": "off",
     // disallow irregular whitespace outside of strings and comments
-    "no-irregular-whitespace": 0,
+    "no-irregular-whitespace": "off",
     // disallow usage of __iterator__ property
-    "no-iterator": 0,
+    "no-iterator": "off",
     // disallow labels that share a name with a variable
-    "no-label-var": 0,
+    "no-label-var": "off",
     // disallow use of labeled statements
-    "no-labels": 2,
+    "no-labels": "error",
     // disallow unnecessary nested blocks
-    "no-lone-blocks": 0,
+    "no-lone-blocks": "off",
     // disallow creation of functions within loops
-    "no-loop-func": 0,
+    "no-loop-func": "off",
     // disallow negation of the left operand of an in expression
-    "no-negated-in-lhs": 0,
+    "no-negated-in-lhs": "off",
     // disallow use of new operator when not part of the assignment or
     // comparison
-    "no-new": 0,
+    "no-new": "off",
     // disallow use of new operator for Function object
-    "no-new-func": 0,
+    "no-new-func": "off",
     // disallow use of the Object constructor
-    "no-new-object": 0,
+    "no-new-object": "off",
     // disallows creating new instances of String,Number, and Boolean
-    "no-new-wrappers": 0,
+    "no-new-wrappers": "off",
     // disallow the use of object properties of the global object (Math and
     // JSON) as functions
-    "no-obj-calls": 0,
+    "no-obj-calls": "off",
     // disallow use of octal escape sequences in string literals, such as
     // var foo = "Copyright \251";
-    "no-octal-escape": 0,
+    "no-octal-escape": "off",
     // disallow use of undefined when initializing variables
-    "no-undef-init": 0,
+    "no-undef-init": "off",
     // disallow usage of expressions in statement position
-    "no-unused-expressions": 0,
+    "no-unused-expressions": "off",
     // disallow use of void operator
-    "no-void": 0,
+    "no-void": "off",
     // disallow wrapping of non-IIFE statements in parens
-    "no-wrap-func": 0,
+    "no-wrap-func": "off",
     // require assignment operator shorthand where possible or prohibit it
     // entirely
-    "operator-assignment": 0,
+    "operator-assignment": "off",
     // enforce operators to be placed before or after line breaks
-    "operator-linebreak": 0,
+    "operator-linebreak": "off",
   }
 };
--- a/devtools/client/dom/.eslintrc.js
+++ b/devtools/client/dom/.eslintrc.js
@@ -6,12 +6,12 @@ module.exports = {
     "window": true,
     "define": true,
     "addEventListener": true,
     "document": true,
     "dispatchEvent": true,
     "MessageEvent": true
   },
   "rules": {
-    "indent": 0,
-    "padded-blocks": 0,
+    "indent": "off",
+    "padded-blocks": "off",
   }
 };
--- a/devtools/client/inspector/.eslintrc.js
+++ b/devtools/client/inspector/.eslintrc.js
@@ -5,11 +5,11 @@ module.exports = {
   "extends": "../../.eslintrc.js",
 
   "rules": {
     // The inspector is being migrated to HTML and cleaned of
     // chrome-privileged code, so this rule disallows requiring chrome
     // code. Some files in the inspector disable this rule still. The
     // goal is to enable the rule globally on all files.
     /* eslint-disable max-len */
-    "mozilla/reject-some-requires": [2, "^(chrome|chrome:.*|resource:.*|devtools/server/.*|.*\\.jsm|devtools/shared/platform/(chome|content)/.*)$"],
+    "mozilla/reject-some-requires": ["error", "^(chrome|chrome:.*|resource:.*|devtools/server/.*|.*\\.jsm|devtools/shared/platform/(chome|content)/.*)$"],
   },
 };
--- a/devtools/client/netmonitor/.eslintrc.js
+++ b/devtools/client/netmonitor/.eslintrc.js
@@ -5,11 +5,11 @@ module.exports = {
   "extends": "../../.eslintrc.js",
 
   "rules": {
     // The netmonitor is being migrated to HTML and cleaned of
     // chrome-privileged code, so this rule disallows requiring chrome
     // code. Some files in the netmonitor disable this rule still. The
     // goal is to enable the rule globally on all files.
     /* eslint-disable max-len */
-    "mozilla/reject-some-requires": [2, "^(chrome|chrome:.*|resource:.*|devtools/server/.*|.*\\.jsm|devtools/shared/platform/(chome|content)/.*)$"],
+    "mozilla/reject-some-requires": ["error", "^(chrome|chrome:.*|resource:.*|devtools/server/.*|.*\\.jsm|devtools/shared/platform/(chome|content)/.*)$"],
   },
 };
--- a/devtools/client/sourceeditor/.eslintrc.js
+++ b/devtools/client/sourceeditor/.eslintrc.js
@@ -5,11 +5,11 @@ module.exports = {
   "extends": "../../.eslintrc.js",
 
   "rules": {
     // The inspector is being migrated to HTML and cleaned of
     // chrome-privileged code, so this rule disallows requiring chrome
     // code. Some files here disable this rule still. The
     // goal is to enable the rule globally on all files.
     /* eslint-disable max-len */
-    "mozilla/reject-some-requires": [2, "^(chrome|chrome:.*|resource:.*|devtools/server/.*|.*\\.jsm)$"],
+    "mozilla/reject-some-requires": ["error", "^(chrome|chrome:.*|resource:.*|devtools/server/.*|.*\\.jsm)$"],
   },
 };
--- a/devtools/client/webconsole/net/.eslintrc.js
+++ b/devtools/client/webconsole/net/.eslintrc.js
@@ -10,11 +10,11 @@ module.exports = {
     "MessageEvent": true,
     "BrowserLoader": true,
     "addEventListener": true,
     "DOMParser": true,
     "dispatchEvent": true,
     "setTimeout": true
   },
   "rules": {
-    "no-unused-vars": [2, {"args": "none"}],
+    "no-unused-vars": ["error", {"args": "none"}],
   }
 };
--- a/devtools/shared/platform/content/.eslintrc.js
+++ b/devtools/shared/platform/content/.eslintrc.js
@@ -2,11 +2,11 @@
 
 module.exports = {
   // Extend from the devtools eslintrc.
   "extends": "../../../.eslintrc.js",
 
   "rules": {
     /* eslint-disable max-len */
     // All code in this directory must be content-clean.
-    "mozilla/reject-some-requires": [2, "^(chrome|chrome:.*|resource:.*|devtools/server/.*|.*\\.jsm|devtools/shared/platform/(chome|content)/.*)$"],
+    "mozilla/reject-some-requires": ["error", "^(chrome|chrome:.*|resource:.*|devtools/server/.*|.*\\.jsm|devtools/shared/platform/(chome|content)/.*)$"],
   },
 };
--- a/security/manager/.eslintrc.js
+++ b/security/manager/.eslintrc.js
@@ -1,222 +1,222 @@
 "use strict";
 
 module.exports = { // eslint-disable-line no-undef
   "rules": {
     // Braces only needed for multi-line arrow function blocks
-    "arrow-body-style": [2, "as-needed"],
+    "arrow-body-style": ["error", "as-needed"],
 
     // Require spacing around =>
-    "arrow-spacing": 2,
+    "arrow-spacing": "error",
 
     // Always require spacing around a single line block
-    "block-spacing": 2,
+    "block-spacing": "error",
 
     // No space before always a space after a comma
-    "comma-spacing": [2, {"before": false, "after": true}],
+    "comma-spacing": ["error", {"before": false, "after": true}],
 
     // Commas at the end of the line not the start
-    "comma-style": 2,
+    "comma-style": "error",
 
     // Don't require spaces around computed properties
-    "computed-property-spacing": [2, "never"],
+    "computed-property-spacing": ["error", "never"],
 
     // Functions must always return something or nothing
-    "consistent-return": 2,
+    "consistent-return": "error",
 
     // Require braces around blocks that start a new line
-    "curly": [2, "multi-line"],
+    "curly": ["error", "multi-line"],
 
     // Always require a trailing EOL
-    "eol-last": 2,
+    "eol-last": "error",
 
     // Require function* name()
-    "generator-star-spacing": [2, {"before": false, "after": true}],
+    "generator-star-spacing": ["error", {"before": false, "after": true}],
 
     // Space after colon not before in property declarations
-    "key-spacing": [2, { "beforeColon": false, "afterColon": true, "mode": "minimum" }],
+    "key-spacing": ["error", { "beforeColon": false, "afterColon": true, "mode": "minimum" }],
 
     // Require spaces around keywords
-    "keyword-spacing": 2,
+    "keyword-spacing": "error",
 
     // Unix linebreaks
-    "linebreak-style": [2, "unix"],
+    "linebreak-style": ["error", "unix"],
 
     // Always require parenthesis for new calls
-    "new-parens": 2,
+    "new-parens": "error",
 
     // Disallow use of alert(), confirm(), and prompt().
-    "no-alert": 2,
+    "no-alert": "error",
 
     // Use [] instead of Array()
-    "no-array-constructor": 2,
+    "no-array-constructor": "error",
 
     // Disallow use of arguments.caller or arguments.callee.
-    "no-caller": 2,
+    "no-caller": "error",
 
     // Disallow modifying variables of class declarations.
-    "no-class-assign": 2,
+    "no-class-assign": "error",
 
     // Disallow assignment in conditional expressions, except if the assignment
     // is within parentheses.
-    "no-cond-assign": [2, "except-parens"],
+    "no-cond-assign": ["error", "except-parens"],
 
     // Disallow use of the console API.
-    "no-console": 2,
+    "no-console": "error",
 
     // Disallow modifying variables that are declared using const.
-    "no-const-assign": 2,
+    "no-const-assign": "error",
 
     // Disallow use of debugger
-    "no-debugger": 2,
+    "no-debugger": "error",
 
     // Disallow deletion of variables (deleting properties is fine though).
-    "no-delete-var": 2,
+    "no-delete-var": "error",
 
     // No duplicate arguments in function declarations
-    "no-dupe-args": 2,
+    "no-dupe-args": "error",
 
     // No duplicate keys in object declarations
-    "no-dupe-keys": 2,
+    "no-dupe-keys": "error",
 
     // No duplicate cases in switch statements
-    "no-duplicate-case": 2,
+    "no-duplicate-case": "error",
 
     // Disallow use of eval().
-    "no-eval": 2,
+    "no-eval": "error",
 
     // No labels
-    "no-labels": 2,
+    "no-labels": "error",
 
     // If an if block ends with a return no need for an else block
-    "no-else-return": 2,
+    "no-else-return": "error",
 
     // No empty character classes in regex
-    "no-empty-character-class": 2,
+    "no-empty-character-class": "error",
 
     // Disallow empty destructuring
-    "no-empty-pattern": 2,
+    "no-empty-pattern": "error",
 
     // No assigning to exception variable
-    "no-ex-assign": 2,
+    "no-ex-assign": "error",
 
     // No using !! where casting to boolean is already happening
-    "no-extra-boolean-cast": 2,
+    "no-extra-boolean-cast": "error",
 
     // No double semicolon
-    "no-extra-semi": 2,
+    "no-extra-semi": "error",
 
     // No overwriting defined functions
-    "no-func-assign": 2,
+    "no-func-assign": "error",
 
     // No invalid regular expressions
-    "no-invalid-regexp": 2,
+    "no-invalid-regexp": "error",
 
     // No odd whitespace characters
-    "no-irregular-whitespace": 2,
+    "no-irregular-whitespace": "error",
 
     // No single if block inside an else block
-    "no-lonely-if": 2,
+    "no-lonely-if": "error",
 
     // No mixing spaces and tabs in indent
-    "no-mixed-spaces-and-tabs": [2, "smart-tabs"],
+    "no-mixed-spaces-and-tabs": ["error", "smart-tabs"],
 
     // No unnecessary spacing
-    "no-multi-spaces": [2, { "exceptions": {
+    "no-multi-spaces": ["error", { "exceptions": {
       "AssignmentExpression": true,
       "VariableDeclarator": true,
       "ArrayExpression": true,
       "ObjectExpression": true
     }}],
 
     // No reassigning native JS objects
-    "no-native-reassign": 2,
+    "no-native-reassign": "error",
 
     // No (!foo in bar)
-    "no-negated-in-lhs": 2,
+    "no-negated-in-lhs": "error",
 
     // Nested ternary statements are confusing
-    "no-nested-ternary": 2,
+    "no-nested-ternary": "error",
 
     // Use {} instead of new Object()
-    "no-new-object": 2,
+    "no-new-object": "error",
 
     // No Math() or JSON()
-    "no-obj-calls": 2,
+    "no-obj-calls": "error",
 
     // No octal literals
-    "no-octal": 2,
+    "no-octal": "error",
 
     // No redeclaring variables
-    "no-redeclare": 2,
+    "no-redeclare": "error",
 
     // Disallow use of assignment in return statement.
-    "no-return-assign": [2, "always"],
+    "no-return-assign": ["error", "always"],
 
     // Disallow self assignment such as |foo = foo|.
-    "no-self-assign": 2,
+    "no-self-assign": "error",
 
     // No unnecessary comparisons
-    "no-self-compare": 2,
+    "no-self-compare": "error",
 
     // No declaring variables that hide things like arguments
-    "no-shadow-restricted-names": 2,
+    "no-shadow-restricted-names": "error",
 
     // No spaces between function name and parentheses
-    "no-spaced-func": 2,
+    "no-spaced-func": "error",
 
-    // Disallow sparse arrays, eg. let arr = [,,2].
-    "no-sparse-arrays": 2,
+    // Disallow sparse arrays, eg. let arr = [,,"error"].
+    "no-sparse-arrays": "error",
 
     // Disallow throwing literals (eg. |throw "error"| instead of
     // |throw new Error("error")|)
-    "no-throw-literal": 2,
+    "no-throw-literal": "error",
 
     // No trailing whitespace
-    "no-trailing-spaces": 2,
+    "no-trailing-spaces": "error",
 
     // No using undeclared variables
-    "no-undef": 2,
+    "no-undef": "error",
 
     // Error on newline where a semicolon is needed
-    "no-unexpected-multiline": 2,
+    "no-unexpected-multiline": "error",
 
     // No unreachable statements
-    "no-unreachable": 2,
+    "no-unreachable": "error",
 
     // No expressions where a statement is expected
-    "no-unused-expressions": 2,
+    "no-unused-expressions": "error",
 
     // No using with
-    "no-with": 2,
+    "no-with": "error",
 
     // Always require semicolon at end of statement
-    "semi": [2, "always"],
+    "semi": ["error", "always"],
 
     // Require space before blocks
-    "space-before-blocks": 2,
+    "space-before-blocks": "error",
 
     // No space padding in parentheses
-    "space-in-parens": [2, "never"],
+    "space-in-parens": ["error", "never"],
 
     // Require spaces around operators
-    "space-infix-ops": 2,
+    "space-infix-ops": "error",
 
     // ++ and -- should not need spacing
-    "space-unary-ops": [2, { "words": true, "nonwords": false }],
+    "space-unary-ops": ["error", { "words": true, "nonwords": false }],
 
     // Require "use strict" to be defined globally in the script.
-    "strict": [2, "global"],
+    "strict": ["error", "global"],
 
     // No comparisons to NaN
-    "use-isnan": 2,
+    "use-isnan": "error",
 
     // Only check typeof against valid results
-    "valid-typeof": 2
+    "valid-typeof": "error"
   },
   "env": {
     "browser": true
   },
   "globals": {
     "Components": false,
     "dump": false
   }
--- a/security/manager/ssl/tests/.eslintrc.js
+++ b/security/manager/ssl/tests/.eslintrc.js
@@ -1,8 +1,8 @@
 "use strict";
 
 module.exports = { // eslint-disable-line no-undef
   "rules": {
     // Disallow non-top level |var| declarations.
-    "mozilla/var-only-at-top-level": 2
+    "mozilla/var-only-at-top-level": "error"
   }
 };
--- a/testing/mochitest/browser.eslintrc.js
+++ b/testing/mochitest/browser.eslintrc.js
@@ -1,14 +1,14 @@
 // Parent config file for all browser-chrome files.
 module.exports = {
   "rules": {
-    "mozilla/import-headjs-globals": 1,
-    "mozilla/import-browserjs-globals": 1,
-    "mozilla/mark-test-function-used": 1,
+    "mozilla/import-headjs-globals": "warn",
+    "mozilla/import-browserjs-globals": "warn",
+    "mozilla/mark-test-function-used": "warn",
   },
 
   "env": {
     "browser": true,
     //"node": true
   },
 
   // All globals made available in the test environment.
--- a/testing/mochitest/chrome.eslintrc.js
+++ b/testing/mochitest/chrome.eslintrc.js
@@ -1,13 +1,13 @@
 // Parent config file for all mochitest files.
 module.exports = {
   rules: {
-    "mozilla/import-headjs-globals": 1,
-    "mozilla/mark-test-function-used": 1,
+    "mozilla/import-headjs-globals": "warn",
+    "mozilla/mark-test-function-used": "warn",
   },
 
   "env": {
     "browser": true,
   },
 
   // All globals made available in the test environment.
   "globals": {
--- a/testing/mochitest/mochitest.eslintrc.js
+++ b/testing/mochitest/mochitest.eslintrc.js
@@ -1,14 +1,14 @@
 // Parent config file for all mochitest files.
 module.exports = {
   rules: {
-    "mozilla/import-headjs-globals": 1,
-    "mozilla/mark-test-function-used": 1,
-    "no-shadow": 2,
+    "mozilla/import-headjs-globals": "warn",
+    "mozilla/mark-test-function-used": "warn",
+    "no-shadow": "error",
   },
 
   "env": {
     "browser": true,
   },
 
   // All globals made available in the test environment.
   "globals": {
--- a/testing/xpcshell/xpcshell.eslintrc.js
+++ b/testing/xpcshell/xpcshell.eslintrc.js
@@ -1,13 +1,13 @@
 // Parent config file for all xpcshell files.
 module.exports = {
   rules: {
-    "mozilla/import-headjs-globals": 1,
-    "mozilla/mark-test-function-used": 1,
+    "mozilla/import-headjs-globals": "warn",
+    "mozilla/mark-test-function-used": "warn",
   },
 
   // All globals made available in the test environment.
   "globals": {
     "add_task": false,
     "add_test": false,
     "Assert": false,
     "deepEqual": false,
--- a/toolkit/.eslintrc.js
+++ b/toolkit/.eslintrc.js
@@ -1,198 +1,198 @@
 "use strict";
 
 module.exports = {
   // When adding items to this file please check for effects on all of toolkit
   // and browser
   "rules": {
     // Braces only needed for multi-line arrow function blocks
-    // "arrow-body-style": [2, "as-needed"],
+    // "arrow-body-style": ["error", "as-needed"],
 
     // Require spacing around =>
-    "arrow-spacing": 2,
+    "arrow-spacing": "error",
 
     // Always require spacing around a single line block
-    "block-spacing": 2,
+    "block-spacing": "error",
 
     // No newline before open brace for a block
-    // "brace-style": 2,
+    // "brace-style": "error",
 
     // No space before always a space after a comma
-    "comma-spacing": [2, {"before": false, "after": true}],
+    "comma-spacing": ["error", {"before": false, "after": true}],
 
     // Commas at the end of the line not the start
-    // "comma-style": 2,
+    // "comma-style": "error",
 
     // Don't require spaces around computed properties
-    "computed-property-spacing": [2, "never"],
+    "computed-property-spacing": ["error", "never"],
 
     // Functions must always return something or nothing
-    "consistent-return": 2,
+    "consistent-return": "error",
 
     // Require braces around blocks that start a new line
     // Note that this rule is likely to be overridden on a per-directory basis
     // very frequently.
-    // "curly": [2, "multi-line"],
+    // "curly": ["error", "multi-line"],
 
     // Always require a trailing EOL
-    "eol-last": 2,
+    "eol-last": "error",
 
     // Require function* name()
-    // "generator-star-spacing": [2, {"before": false, "after": true}],
+    // "generator-star-spacing": ["error", {"before": false, "after": true}],
 
     // Two space indent
-    // "indent": [2, 2, { "SwitchCase": 1 }],
+    // "indent": ["error", 2, { "SwitchCase": 1 }],
 
     // Space after colon not before in property declarations
-    // "key-spacing": [2, { "beforeColon": false, "afterColon": true, "mode": "minimum" }],
+    // "key-spacing": ["error", { "beforeColon": false, "afterColon": true, "mode": "minimum" }],
 
     // Require spaces before and after keywords
-    "keyword-spacing": 2,
+    "keyword-spacing": "error",
 
     // Unix linebreaks
-    "linebreak-style": [2, "unix"],
+    "linebreak-style": ["error", "unix"],
 
     // Always require parenthesis for new calls
-    // "new-parens": 2,
+    // "new-parens": "error",
 
     // Use [] instead of Array()
-    // "no-array-constructor": 2,
+    // "no-array-constructor": "error",
 
     // No duplicate arguments in function declarations
-    "no-dupe-args": 2,
+    "no-dupe-args": "error",
 
     // No duplicate keys in object declarations
-    "no-dupe-keys": 2,
+    "no-dupe-keys": "error",
 
     // No duplicate cases in switch statements
-    "no-duplicate-case": 2,
+    "no-duplicate-case": "error",
 
     // No labels
-    "no-labels": 2,
+    "no-labels": "error",
 
     // If an if block ends with a return no need for an else block
-    "no-else-return": 2,
+    "no-else-return": "error",
 
     // No empty statements
-    "no-empty": [2, {"allowEmptyCatch": true}],
+    "no-empty": ["error", {"allowEmptyCatch": true}],
 
     // No empty character classes in regex
-    "no-empty-character-class": 2,
+    "no-empty-character-class": "error",
 
     // Disallow empty destructuring
-    "no-empty-pattern": 2,
+    "no-empty-pattern": "error",
 
     // No assiging to exception variable
-    "no-ex-assign": 2,
+    "no-ex-assign": "error",
 
     // No using !! where casting to boolean is already happening
-    "no-extra-boolean-cast": 2,
+    "no-extra-boolean-cast": "error",
 
     // No double semicolon
-    "no-extra-semi": 2,
+    "no-extra-semi": "error",
 
     // No overwriting defined functions
-    "no-func-assign": 2,
+    "no-func-assign": "error",
 
     // No invalid regular expresions
-    "no-invalid-regexp": 2,
+    "no-invalid-regexp": "error",
 
     // No odd whitespace characters
-    "no-irregular-whitespace": 2,
+    "no-irregular-whitespace": "error",
 
     // No single if block inside an else block
-    "no-lonely-if": 2,
+    "no-lonely-if": "error",
 
     // No mixing spaces and tabs in indent
-    "no-mixed-spaces-and-tabs": [2, "smart-tabs"],
+    "no-mixed-spaces-and-tabs": ["error", "smart-tabs"],
 
     // No unnecessary spacing
-    // "no-multi-spaces": [2, { exceptions: { "AssignmentExpression": true, "VariableDeclarator": true, "ArrayExpression": true, "ObjectExpression": true } }],
+    // "no-multi-spaces": ["error", { exceptions: { "AssignmentExpression": true, "VariableDeclarator": true, "ArrayExpression": true, "ObjectExpression": true } }],
 
     // No reassigning native JS objects
-    "no-native-reassign": 2,
+    "no-native-reassign": "error",
 
     // No (!foo in bar)
-    "no-negated-in-lhs": 2,
+    "no-negated-in-lhs": "error",
 
     // Nested ternary statements are confusing
-    "no-nested-ternary": 2,
+    "no-nested-ternary": "error",
 
     // Use {} instead of new Object()
-    "no-new-object": 2,
+    "no-new-object": "error",
 
     // No Math() or JSON()
-    "no-obj-calls": 2,
+    "no-obj-calls": "error",
 
     // No octal literals
-    "no-octal": 2,
+    "no-octal": "error",
 
     // No redeclaring variables
-    "no-redeclare": 2,
+    "no-redeclare": "error",
 
     // No unnecessary comparisons
-    "no-self-compare": 2,
+    "no-self-compare": "error",
 
     // No declaring variables from an outer scope
-    // "no-shadow": 2,
+    // "no-shadow": "error",
 
     // No declaring variables that hide things like arguments
-    "no-shadow-restricted-names": 2,
+    "no-shadow-restricted-names": "error",
 
     // No spaces between function name and parentheses
-    // "no-spaced-func": 2,
+    // "no-spaced-func": "error",
 
     // No trailing whitespace
-    "no-trailing-spaces": 2,
+    "no-trailing-spaces": "error",
 
     // No using undeclared variables
-    // "no-undef": 2,
+    // "no-undef": "error",
 
     // Error on newline where a semicolon is needed
-    "no-unexpected-multiline": 2,
+    "no-unexpected-multiline": "error",
 
     // No unreachable statements
-    "no-unreachable": 2,
+    "no-unreachable": "error",
 
     // No declaring variables that are never used
-    // "no-unused-vars": [2, {"vars": "all", "args": "none"}],
+    // "no-unused-vars": ["error", {"vars": "all", "args": "none"}],
 
     // No using variables before defined
-    // "no-use-before-define": [2, "nofunc"],
+    // "no-use-before-define": ["error", "nofunc"],
 
     // No using with
-    "no-with": 2,
+    "no-with": "error",
 
     // Always require semicolon at end of statement
-    // "semi": [2, "always"],
+    // "semi": ["error", "always"],
 
     // Require space before blocks
-    "space-before-blocks": 2,
+    "space-before-blocks": "error",
 
     // Never use spaces before function parentheses
-    // "space-before-function-paren": [2, { "anonymous": "always", "named": "never" }],
+    // "space-before-function-paren": ["error", { "anonymous": "always", "named": "never" }],
 
     // No space padding in parentheses
-    // "space-in-parens": [2, "never"],
+    // "space-in-parens": ["error", "never"],
 
     // Require spaces around operators
-    // "space-infix-ops": 2,
+    // "space-infix-ops": "error",
 
     // ++ and -- should not need spacing
-    // "space-unary-ops": [2, { "words": true, "nonwords": false }],
+    // "space-unary-ops": ["error", { "words": true, "nonwords": false }],
 
     // Requires or disallows a whitespace (space or tab) beginning a comment
-    "spaced-comment": 2,
+    "spaced-comment": "error",
 
     // No comparisons to NaN
-    "use-isnan": 2,
+    "use-isnan": "error",
 
     // Only check typeof against valid results
-    "valid-typeof": 2,
+    "valid-typeof": "error",
   },
   "env": {
     "es6": true,
     "browser": true,
   },
   "globals": {
     "Components": false,
     "dump": true,
--- a/toolkit/components/extensions/.eslintrc.js
+++ b/toolkit/components/extensions/.eslintrc.js
@@ -26,468 +26,468 @@ module.exports = { // eslint-disable-lin
     "Services": true,
     "TabManager": true,
     "WindowListManager": true,
     "XPCOMUtils": true,
   },
 
   "rules": {
     // Rules from the mozilla plugin
-    "mozilla/balanced-listeners": 2,
-    "mozilla/no-aArgs": 1,
-    "mozilla/no-cpows-in-tests": 1,
-    "mozilla/var-only-at-top-level": 1,
+    "mozilla/balanced-listeners": "error",
+    "mozilla/no-aArgs": "warn",
+    "mozilla/no-cpows-in-tests": "warn",
+    "mozilla/var-only-at-top-level": "warn",
 
-    "valid-jsdoc": [2, {
+    "valid-jsdoc": ["error", {
       "prefer": {
         "return": "returns",
       },
       "preferType": {
         "Boolean": "boolean",
         "Number": "number",
         "String": "string",
         "bool": "boolean",
       },
       "requireParamDescription": false,
       "requireReturn": false,
       "requireReturnDescription": false,
     }],
 
     // Braces only needed for multi-line arrow function blocks
-    // "arrow-body-style": [2, "as-needed"],
+    // "arrow-body-style": ["error", "as-needed"],
 
     // Require spacing around =>
-    "arrow-spacing": 2,
+    "arrow-spacing": "error",
 
     // Always require spacing around a single line block
-    "block-spacing": 1,
+    "block-spacing": "warn",
 
     // Forbid spaces inside the square brackets of array literals.
-    "array-bracket-spacing": [2, "never"],
+    "array-bracket-spacing": ["error", "never"],
 
     // Forbid spaces inside the curly brackets of object literals.
-    "object-curly-spacing": [2, "never"],
+    "object-curly-spacing": ["error", "never"],
 
     // No space padding in parentheses
-    "space-in-parens": [2, "never"],
+    "space-in-parens": ["error", "never"],
 
     // Enforce one true brace style (opening brace on the same line) and avoid
     // start and end braces on the same line.
-    "brace-style": [2, "1tbs", {"allowSingleLine": true}],
+    "brace-style": ["error", "1tbs", {"allowSingleLine": true}],
 
     // No space before always a space after a comma
-    "comma-spacing": [2, {"before": false, "after": true}],
+    "comma-spacing": ["error", {"before": false, "after": true}],
 
     // Commas at the end of the line not the start
-    "comma-style": 2,
+    "comma-style": "error",
 
     // Don't require spaces around computed properties
-    "computed-property-spacing": [1, "never"],
+    "computed-property-spacing": ["warn", "never"],
 
     // Functions are not required to consistently return something or nothing
-    "consistent-return": 0,
+    "consistent-return": "off",
 
     // Require braces around blocks that start a new line
-    "curly": [2, "all"],
+    "curly": ["error", "all"],
 
     // Always require a trailing EOL
-    "eol-last": 2,
+    "eol-last": "error",
 
     // Require function* name()
-    "generator-star-spacing": [2, {"before": false, "after": true}],
+    "generator-star-spacing": ["error", {"before": false, "after": true}],
 
     // Two space indent
-    "indent": [2, 2, {"SwitchCase": 1}],
+    "indent": ["error", 2, {"SwitchCase": 1}],
 
     // Space after colon not before in property declarations
-    "key-spacing": [2, {"beforeColon": false, "afterColon": true, "mode": "minimum"}],
+    "key-spacing": ["error", {"beforeColon": false, "afterColon": true, "mode": "minimum"}],
 
     // Require spaces before and after finally, catch, etc.
-    "keyword-spacing": 2,
+    "keyword-spacing": "error",
 
     // Unix linebreaks
-    "linebreak-style": [2, "unix"],
+    "linebreak-style": ["error", "unix"],
 
     // Always require parenthesis for new calls
-    "new-parens": 2,
+    "new-parens": "error",
 
     // Use [] instead of Array()
-    "no-array-constructor": 2,
+    "no-array-constructor": "error",
 
     // No duplicate arguments in function declarations
-    "no-dupe-args": 2,
+    "no-dupe-args": "error",
 
     // No duplicate keys in object declarations
-    "no-dupe-keys": 2,
+    "no-dupe-keys": "error",
 
     // No duplicate cases in switch statements
-    "no-duplicate-case": 2,
+    "no-duplicate-case": "error",
 
     // If an if block ends with a return no need for an else block
-    // "no-else-return": 2,
+    // "no-else-return": "error",
 
     // Disallow empty statements. This will report an error for:
     // try { something(); } catch (e) {}
     // but will not report it for:
     // try { something(); } catch (e) { /* Silencing the error because ...*/ }
     // which is a valid use case.
-    "no-empty": 2,
+    "no-empty": "error",
 
     // No empty character classes in regex
-    "no-empty-character-class": 2,
+    "no-empty-character-class": "error",
 
     // Disallow empty destructuring
-    "no-empty-pattern": 2,
+    "no-empty-pattern": "error",
 
     // No assiging to exception variable
-    "no-ex-assign": 2,
+    "no-ex-assign": "error",
 
     // No using !! where casting to boolean is already happening
-    "no-extra-boolean-cast": 1,
+    "no-extra-boolean-cast": "warn",
 
     // No double semicolon
-    "no-extra-semi": 2,
+    "no-extra-semi": "error",
 
     // No overwriting defined functions
-    "no-func-assign": 2,
+    "no-func-assign": "error",
 
     // No invalid regular expresions
-    "no-invalid-regexp": 2,
+    "no-invalid-regexp": "error",
 
     // No odd whitespace characters
-    "no-irregular-whitespace": 2,
+    "no-irregular-whitespace": "error",
 
     // No single if block inside an else block
-    "no-lonely-if": 1,
+    "no-lonely-if": "warn",
 
     // No mixing spaces and tabs in indent
-    "no-mixed-spaces-and-tabs": [2, "smart-tabs"],
+    "no-mixed-spaces-and-tabs": ["error", "smart-tabs"],
 
     // Disallow use of multiple spaces (sometimes used to align const values,
     // array or object items, etc.). It's hard to maintain and doesn't add that
     // much benefit.
-    "no-multi-spaces": 1,
+    "no-multi-spaces": "warn",
 
     // No reassigning native JS objects
-    "no-native-reassign": 2,
+    "no-native-reassign": "error",
 
     // No (!foo in bar)
-    "no-negated-in-lhs": 2,
+    "no-negated-in-lhs": "error",
 
     // Nested ternary statements are confusing
-    "no-nested-ternary": 2,
+    "no-nested-ternary": "error",
 
     // Use {} instead of new Object()
-    "no-new-object": 2,
+    "no-new-object": "error",
 
     // No Math() or JSON()
-    "no-obj-calls": 2,
+    "no-obj-calls": "error",
 
     // No octal literals
-    "no-octal": 2,
+    "no-octal": "error",
 
     // No redeclaring variables
-    "no-redeclare": 2,
+    "no-redeclare": "error",
 
     // No unnecessary comparisons
-    "no-self-compare": 2,
+    "no-self-compare": "error",
 
     // No spaces between function name and parentheses
-    "no-spaced-func": 1,
+    "no-spaced-func": "warn",
 
     // No trailing whitespace
-    "no-trailing-spaces": 2,
+    "no-trailing-spaces": "error",
 
     // Error on newline where a semicolon is needed
-    "no-unexpected-multiline": 2,
+    "no-unexpected-multiline": "error",
 
     // No unreachable statements
-    "no-unreachable": 2,
+    "no-unreachable": "error",
 
     // No expressions where a statement is expected
-    "no-unused-expressions": 2,
+    "no-unused-expressions": "error",
 
     // No declaring variables that are never used
-    "no-unused-vars": [2, {"args": "none", "varsIgnorePattern": "^(Cc|Ci|Cr|Cu|EXPORTED_SYMBOLS)$"}],
+    "no-unused-vars": ["error", {"args": "none", "varsIgnorePattern": "^(Cc|Ci|Cr|Cu|EXPORTED_SYMBOLS)$"}],
 
     // No using variables before defined
-    "no-use-before-define": 2,
+    "no-use-before-define": "error",
 
     // No using with
-    "no-with": 2,
+    "no-with": "error",
 
     // Always require semicolon at end of statement
-    "semi": [2, "always"],
+    "semi": ["error", "always"],
 
     // Require space before blocks
-    "space-before-blocks": 2,
+    "space-before-blocks": "error",
 
     // Never use spaces before function parentheses
-    "space-before-function-paren": [2, {"anonymous": "never", "named": "never"}],
+    "space-before-function-paren": ["error", {"anonymous": "never", "named": "never"}],
 
-    // Require spaces around operators, except for a|0.
-    "space-infix-ops": [2, {"int32Hint": true}],
+    // Require spaces around operators, except for a|"off".
+    "space-infix-ops": ["error", {"int32Hint": true}],
 
     // ++ and -- should not need spacing
-    "space-unary-ops": [1, {"nonwords": false, "words": true, "overrides": {"typeof": false}}],
+    "space-unary-ops": ["warn", {"nonwords": false, "words": true, "overrides": {"typeof": false}}],
 
     // No comparisons to NaN
-    "use-isnan": 2,
+    "use-isnan": "error",
 
     // Only check typeof against valid results
-    "valid-typeof": 2,
+    "valid-typeof": "error",
 
     // Disallow using variables outside the blocks they are defined (especially
     // since only let and const are used, see "no-var").
-    "block-scoped-var": 2,
+    "block-scoped-var": "error",
 
     // Allow trailing commas for easy list extension.  Having them does not
     // impair readability, but also not required either.
-    "comma-dangle": [2, "always-multiline"],
+    "comma-dangle": ["error", "always-multiline"],
 
     // Warn about cyclomatic complexity in functions.
-    "complexity": 1,
+    "complexity": "warn",
 
     // Don't warn for inconsistent naming when capturing this (not so important
     // with auto-binding fat arrow functions).
-    // "consistent-this": [2, "self"],
+    // "consistent-this": ["error", "self"],
 
     // Don't require a default case in switch statements. Avoid being forced to
     // add a bogus default when you know all possible cases are handled.
-    "default-case": 0,
+    "default-case": "off",
 
     // Enforce dots on the next line with property name.
-    "dot-location": [2, "property"],
+    "dot-location": ["error", "property"],
 
     // Encourage the use of dot notation whenever possible.
-    "dot-notation": 2,
+    "dot-notation": "error",
 
     // Allow using == instead of ===, in the interest of landing something since
     // the devtools codebase is split on convention here.
-    "eqeqeq": 0,
+    "eqeqeq": "off",
 
     // Don't require function expressions to have a name.
     // This makes the code more verbose and hard to read. Our engine already
     // does a fantastic job assigning a name to the function, which includes
     // the enclosing function name, and worst case you have a line number that
     // you can just look up.
-    "func-names": 0,
+    "func-names": "off",
 
     // Allow use of function declarations and expressions.
-    "func-style": 0,
+    "func-style": "off",
 
     // Don't enforce the maximum depth that blocks can be nested. The complexity
     // rule is a better rule to check this.
-    "max-depth": 0,
+    "max-depth": "off",
 
     // Maximum length of a line.
     // Disabled because we exceed this in too many places.
-    "max-len": [0, 80],
+    "max-len": ["off", 80],
 
     // Maximum depth callbacks can be nested.
-    "max-nested-callbacks": [2, 4],
+    "max-nested-callbacks": ["error", 4],
 
     // Don't limit the number of parameters that can be used in a function.
-    "max-params": 0,
+    "max-params": "off",
 
     // Don't limit the maximum number of statement allowed in a function. We
     // already have the complexity rule that's a better measurement.
-    "max-statements": 0,
+    "max-statements": "off",
 
     // Don't require a capital letter for constructors, only check if all new
     // operators are followed by a capital letter. Don't warn when capitalized
     // functions are used without the new operator.
-    "new-cap": [0, {"capIsNew": false}],
+    "new-cap": ["off", {"capIsNew": false}],
 
     // Allow use of bitwise operators.
-    "no-bitwise": 0,
+    "no-bitwise": "off",
 
     // Disallow use of arguments.caller or arguments.callee.
-    "no-caller": 2,
+    "no-caller": "error",
 
     // Disallow the catch clause parameter name being the same as a variable in
     // the outer scope, to avoid confusion.
-    "no-catch-shadow": 0,
+    "no-catch-shadow": "off",
 
     // Disallow assignment in conditional expressions.
-    "no-cond-assign": 2,
+    "no-cond-assign": "error",
 
     // Disallow using the console API.
-    "no-console": 2,
+    "no-console": "error",
 
     // Allow using constant expressions in conditions like while (true)
-    "no-constant-condition": 0,
+    "no-constant-condition": "off",
 
     // Allow use of the continue statement.
-    "no-continue": 0,
+    "no-continue": "off",
 
     // Disallow control characters in regular expressions.
-    "no-control-regex": 2,
+    "no-control-regex": "error",
 
     // Disallow use of debugger.
-    "no-debugger": 2,
+    "no-debugger": "error",
 
     // Disallow deletion of variables (deleting properties is fine).
-    "no-delete-var": 2,
+    "no-delete-var": "error",
 
     // Allow division operators explicitly at beginning of regular expression.
-    "no-div-regex": 0,
+    "no-div-regex": "off",
 
     // Disallow use of eval(). We have other APIs to evaluate code in content.
-    "no-eval": 2,
+    "no-eval": "error",
 
     // Disallow adding to native types
-    "no-extend-native": 2,
+    "no-extend-native": "error",
 
     // Disallow unnecessary function binding.
-    "no-extra-bind": 2,
+    "no-extra-bind": "error",
 
     // Allow unnecessary parentheses, as they may make the code more readable.
-    "no-extra-parens": 0,
+    "no-extra-parens": "off",
 
     // Disallow fallthrough of case statements, except if there is a comment.
-    "no-fallthrough": 2,
+    "no-fallthrough": "error",
 
     // Allow the use of leading or trailing decimal points in numeric literals.
-    "no-floating-decimal": 0,
+    "no-floating-decimal": "off",
 
     // Allow comments inline after code.
-    "no-inline-comments": 0,
+    "no-inline-comments": "off",
 
     // Disallow use of labels for anything other then loops and switches.
-    "no-labels": [2, {"allowLoop": true}],
+    "no-labels": ["error", {"allowLoop": true}],
 
     // Disallow use of multiline strings (use template strings instead).
-    "no-multi-str": 1,
+    "no-multi-str": "warn",
 
     // Disallow multiple empty lines.
-    "no-multiple-empty-lines": [1, {"max": 2}],
+    "no-multiple-empty-lines": ["warn", {"max": 2}],
 
     // Allow reassignment of function parameters.
-    "no-param-reassign": 0,
+    "no-param-reassign": "off",
 
     // Allow string concatenation with __dirname and __filename (not a node env).
-    "no-path-concat": 0,
+    "no-path-concat": "off",
 
     // Allow use of unary operators, ++ and --.
-    "no-plusplus": 0,
+    "no-plusplus": "off",
 
     // Allow using process.env (not a node environment).
-    "no-process-env": 0,
+    "no-process-env": "off",
 
     // Allow using process.exit (not a node environment).
-    "no-process-exit": 0,
+    "no-process-exit": "off",
 
     // Disallow usage of __proto__ property.
-    "no-proto": 2,
+    "no-proto": "error",
 
     // Disallow multiple spaces in a regular expression literal.
-    "no-regex-spaces": 2,
+    "no-regex-spaces": "error",
 
     // Allow reserved words being used as object literal keys.
-    "no-reserved-keys": 0,
+    "no-reserved-keys": "off",
 
     // Don't restrict usage of specified node modules (not a node environment).
-    "no-restricted-modules": 0,
+    "no-restricted-modules": "off",
 
     // Disallow use of assignment in return statement. It is preferable for a
     // single line of code to have only one easily predictable effect.
-    "no-return-assign": 2,
+    "no-return-assign": "error",
 
     // Don't warn about declaration of variables already declared in the outer scope.
-    "no-shadow": 0,
+    "no-shadow": "off",
 
     // Disallow shadowing of names such as arguments.
-    "no-shadow-restricted-names": 2,
+    "no-shadow-restricted-names": "error",
 
     // Allow use of synchronous methods (not a node environment).
-    "no-sync": 0,
+    "no-sync": "off",
 
     // Allow the use of ternary operators.
-    "no-ternary": 0,
+    "no-ternary": "off",
 
     // Disallow throwing literals (eg. throw "error" instead of
     // throw new Error("error")).
-    "no-throw-literal": 2,
+    "no-throw-literal": "error",
 
     // Disallow use of undeclared variables unless mentioned in a /* global */
     // block. Note that globals from head.js are automatically imported in tests
     // by the import-headjs-globals rule form the mozilla eslint plugin.
-    "no-undef": 2,
+    "no-undef": "error",
 
     // Allow dangling underscores in identifiers (for privates).
-    "no-underscore-dangle": 0,
+    "no-underscore-dangle": "off",
 
     // Allow use of undefined variable.
-    "no-undefined": 0,
+    "no-undefined": "off",
 
     // Disallow the use of Boolean literals in conditional expressions.
-    "no-unneeded-ternary": 2,
+    "no-unneeded-ternary": "error",
 
     // We use var-only-at-top-level instead of no-var as we allow top level
     // vars.
-    "no-var": 0,
+    "no-var": "off",
 
     // Allow using TODO/FIXME comments.
-    "no-warning-comments": 0,
+    "no-warning-comments": "off",
 
     // Don't require method and property shorthand syntax for object literals.
     // We use this in the code a lot, but not consistently, and this seems more
     // like something to check at code review time.
-    "object-shorthand": 0,
+    "object-shorthand": "off",
 
     // Allow more than one variable declaration per function.
-    "one-var": 0,
+    "one-var": "off",
 
     // Disallow padding within blocks.
-    "padded-blocks": [1, "never"],
+    "padded-blocks": ["warn", "never"],
 
     // Don't require quotes around object literal property names.
-    "quote-props": 0,
+    "quote-props": "off",
 
     // Double quotes should be used.
-    "quotes": [1, "double", {"avoidEscape": true, "allowTemplateLiterals": true}],
+    "quotes": ["warn", "double", {"avoidEscape": true, "allowTemplateLiterals": true}],
 
     // Require use of the second argument for parseInt().
-    "radix": 2,
+    "radix": "error",
 
     // Enforce spacing after semicolons.
-    "semi-spacing": [2, {"before": false, "after": true}],
+    "semi-spacing": ["error", {"before": false, "after": true}],
 
     // Don't require to sort variables within the same declaration block.
     // Anyway, one-var is disabled.
-    "sort-vars": 0,
+    "sort-vars": "off",
 
     // Require a space immediately following the // in a line comment.
-    "spaced-comment": [2, "always"],
+    "spaced-comment": ["error", "always"],
 
     // Require "use strict" to be defined globally in the script.
-    "strict": [2, "global"],
+    "strict": ["error", "global"],
 
     // Allow vars to be declared anywhere in the scope.
-    "vars-on-top": 0,
+    "vars-on-top": "off",
 
     // Don't require immediate function invocation to be wrapped in parentheses.
-    "wrap-iife": 0,
+    "wrap-iife": "off",
 
     // Don't require regex literals to be wrapped in parentheses (which
     // supposedly prevent them from being mistaken for division operators).
-    "wrap-regex": 0,
+    "wrap-regex": "off",
 
     // Disallow Yoda conditions (where literal value comes first).
-    "yoda": 2,
+    "yoda": "error",
 
     // disallow use of eval()-like methods
-    "no-implied-eval": 2,
+    "no-implied-eval": "error",
 
     // Disallow function or variable declarations in nested blocks
-    "no-inner-declarations": 2,
+    "no-inner-declarations": "error",
 
     // Disallow usage of __iterator__ property
-    "no-iterator": 2,
+    "no-iterator": "error",
 
     // Disallow labels that share a name with a variable
-    "no-label-var": 2,
+    "no-label-var": "error",
 
     // Disallow creating new instances of String, Number, and Boolean
-    "no-new-wrappers": 2,
+    "no-new-wrappers": "error",
   },
 };
--- a/toolkit/components/narrate/.eslintrc.js
+++ b/toolkit/components/narrate/.eslintrc.js
@@ -10,85 +10,85 @@ module.exports = { // eslint-disable-lin
     "dump": true,
     "Iterator": true
   },
 
   "env": { "browser": true },
 
   "rules": {
     // Mozilla stuff
-    "mozilla/no-aArgs": 1,
-    "mozilla/reject-importGlobalProperties": 1,
-    "mozilla/var-only-at-top-level": 1,
+    "mozilla/no-aArgs": "warn",
+    "mozilla/reject-importGlobalProperties": "warn",
+    "mozilla/var-only-at-top-level": "warn",
 
-    "block-scoped-var": 2,
-    "brace-style": [1, "1tbs", {"allowSingleLine": false}],
-    "camelcase": 1,
-    "comma-dangle": 0,
-    "comma-spacing": [1, {"before": false, "after": true}],
-    "comma-style": [1, "last"],
-    "complexity": 1,
-    "consistent-return": 2,
-    "curly": 2,
-    "dot-location": [1, "property"],
-    "dot-notation": 2,
-    "eol-last": 2,
-    "generator-star-spacing": [1, "after"],
-    "indent": [1, 2, {"SwitchCase": 1}],
-    "key-spacing": [1, {"beforeColon": false, "afterColon": true}],
-    "keyword-spacing": 1,
-    "max-len": [1, 80, 2, {"ignoreUrls": true}],
-    "max-nested-callbacks": [2, 3],
-    "new-cap": [2, {"capIsNew": false}],
-    "new-parens": 2,
-    "no-array-constructor": 2,
-    "no-cond-assign": 2,
-    "no-control-regex": 2,
-    "no-debugger": 2,
-    "no-delete-var": 2,
-    "no-dupe-args": 2,
-    "no-dupe-keys": 2,
-    "no-duplicate-case": 2,
-    "no-else-return": 2,
-    "no-eval": 2,
-    "no-extend-native": 2,
-    "no-extra-bind": 2,
-    "no-extra-boolean-cast": 2,
-    "no-extra-semi": 1,
-    "no-fallthrough": 2,
-    "no-inline-comments": 1,
-    "no-lonely-if": 2,
-    "no-mixed-spaces-and-tabs": 2,
-    "no-multi-spaces": 1,
-    "no-multi-str": 1,
-    "no-multiple-empty-lines": [1, {"max": 1}],
-    "no-native-reassign": 2,
-    "no-nested-ternary": 2,
-    "no-redeclare": 2,
-    "no-return-assign": 2,
-    "no-self-compare": 2,
-    "no-sequences": 2,
-    "no-shadow": 1,
-    "no-shadow-restricted-names": 2,
-    "no-spaced-func": 1,
-    "no-throw-literal": 2,
-    "no-trailing-spaces": 2,
-    "no-undef": 2,
-    "no-unneeded-ternary": 2,
-    "no-unreachable": 2,
-    "no-unused-vars": 2,
-    "no-with": 2,
-    "padded-blocks": [1, "never"],
-    "quotes": [1, "double", "avoid-escape"],
-    "semi": [1, "always"],
-    "semi-spacing": [1, {"before": false, "after": true}],
-    "space-before-blocks": [1, "always"],
-    "space-before-function-paren": [1, "never"],
-    "space-in-parens": [1, "never"],
-    "space-infix-ops": [1, {"int32Hint": true}],
-    "space-unary-ops": [1, { "words": true, "nonwords": false }],
-    "spaced-comment": [1, "always"],
-    "strict": [2, "global"],
-    "use-isnan": 2,
-    "valid-typeof": 2,
-    "yoda": 2
+    "block-scoped-var": "error",
+    "brace-style": ["warn", "1tbs", {"allowSingleLine": false}],
+    "camelcase": "warn",
+    "comma-dangle": "off",
+    "comma-spacing": ["warn", {"before": false, "after": true}],
+    "comma-style": ["warn", "last"],
+    "complexity": "warn",
+    "consistent-return": "error",
+    "curly": "error",
+    "dot-location": ["warn", "property"],
+    "dot-notation": "error",
+    "eol-last": "error",
+    "generator-star-spacing": ["warn", "after"],
+    "indent": ["warn", 2, {"SwitchCase": 1}],
+    "key-spacing": ["warn", {"beforeColon": false, "afterColon": true}],
+    "keyword-spacing": "warn",
+    "max-len": ["warn", 80, 2, {"ignoreUrls": true}],
+    "max-nested-callbacks": ["error", 3],
+    "new-cap": ["error", {"capIsNew": false}],
+    "new-parens": "error",
+    "no-array-constructor": "error",
+    "no-cond-assign": "error",
+    "no-control-regex": "error",
+    "no-debugger": "error",
+    "no-delete-var": "error",
+    "no-dupe-args": "error",
+    "no-dupe-keys": "error",
+    "no-duplicate-case": "error",
+    "no-else-return": "error",
+    "no-eval": "error",
+    "no-extend-native": "error",
+    "no-extra-bind": "error",
+    "no-extra-boolean-cast": "error",
+    "no-extra-semi": "warn",
+    "no-fallthrough": "error",
+    "no-inline-comments": "warn",
+    "no-lonely-if": "error",
+    "no-mixed-spaces-and-tabs": "error",
+    "no-multi-spaces": "warn",
+    "no-multi-str": "warn",
+    "no-multiple-empty-lines": ["warn", {"max": 1}],
+    "no-native-reassign": "error",
+    "no-nested-ternary": "error",
+    "no-redeclare": "error",
+    "no-return-assign": "error",
+    "no-self-compare": "error",
+    "no-sequences": "error",
+    "no-shadow": "warn",
+    "no-shadow-restricted-names": "error",
+    "no-spaced-func": "warn",
+    "no-throw-literal": "error",
+    "no-trailing-spaces": "error",
+    "no-undef": "error",
+    "no-unneeded-ternary": "error",
+    "no-unreachable": "error",
+    "no-unused-vars": "error",
+    "no-with": "error",
+    "padded-blocks": ["warn", "never"],
+    "quotes": ["warn", "double", "avoid-escape"],
+    "semi": ["warn", "always"],
+    "semi-spacing": ["warn", {"before": false, "after": true}],
+    "space-before-blocks": ["warn", "always"],
+    "space-before-function-paren": ["warn", "never"],
+    "space-in-parens": ["warn", "never"],
+    "space-infix-ops": ["warn", {"int32Hint": true}],
+    "space-unary-ops": ["warn", { "words": true, "nonwords": false }],
+    "spaced-comment": ["warn", "always"],
+    "strict": ["error", "global"],
+    "use-isnan": "error",
+    "valid-typeof": "error",
+    "yoda": "error"
   }
 };
--- a/toolkit/components/narrate/test/.eslintrc.js
+++ b/toolkit/components/narrate/test/.eslintrc.js
@@ -13,11 +13,11 @@ module.exports = { // eslint-disable-lin
     "content": true,
     "ContentTaskUtils": true,
     "ContentTask": true,
     "BrowserTestUtils": true,
     "gBrowser": true,
   },
 
   "rules": {
-    "mozilla/import-headjs-globals": 1
+    "mozilla/import-headjs-globals": "warn"
   }
 };
--- a/toolkit/components/passwordmgr/.eslintrc.js
+++ b/toolkit/components/passwordmgr/.eslintrc.js
@@ -1,36 +1,36 @@
 "use strict";
 
 module.exports = { // eslint-disable-line no-undef
   "extends": "../../.eslintrc.js",
   "rules": {
     // Require spacing around =>
-    "arrow-spacing": 2,
+    "arrow-spacing": "error",
 
     // No newline before open brace for a block
-    "brace-style": [2, "1tbs", {"allowSingleLine": true}],
+    "brace-style": ["error", "1tbs", {"allowSingleLine": true}],
 
     // No space before always a space after a comma
-    "comma-spacing": [2, {"before": false, "after": true}],
+    "comma-spacing": ["error", {"before": false, "after": true}],
 
     // Commas at the end of the line not the start
-    "comma-style": 2,
+    "comma-style": "error",
 
     // Use [] instead of Array()
-    "no-array-constructor": 2,
+    "no-array-constructor": "error",
 
     // Use {} instead of new Object()
-    "no-new-object": 2,
+    "no-new-object": "error",
 
     // No using undeclared variables
-    "no-undef": 2,
+    "no-undef": "error",
 
     // Don't allow unused local variables unless they match the pattern
-    "no-unused-vars": [2, {"args": "none", "vars": "local", "varsIgnorePattern": "^(ids|ignored|unused)$"}],
+    "no-unused-vars": ["error", {"args": "none", "vars": "local", "varsIgnorePattern": "^(ids|ignored|unused)$"}],
 
     // Always require semicolon at end of statement
-    "semi": [2, "always"],
+    "semi": ["error", "always"],
 
     // Require spaces around operators
-    "space-infix-ops": 2,
+    "space-infix-ops": "error",
   }
 };
--- a/toolkit/components/passwordmgr/test/.eslintrc.js
+++ b/toolkit/components/passwordmgr/test/.eslintrc.js
@@ -1,13 +1,13 @@
 "use strict";
 
 module.exports = { // eslint-disable-line no-undef
   "extends": [
     "../../../../testing/mochitest/mochitest.eslintrc.js",
     "../../../../testing/mochitest/chrome.eslintrc.js"
   ],
   "rules": {
-    "brace-style": 0,
-    "no-undef": 0,
-    "no-unused-vars": 0,
+    "brace-style": "off",
+    "no-undef": "off",
+    "no-unused-vars": "off",
   },
 };
--- a/toolkit/components/reader/.eslintrc.js
+++ b/toolkit/components/reader/.eslintrc.js
@@ -1,199 +1,199 @@
 "use strict";
 
 module.exports = {
   "rules": {
     // Braces only needed for multi-line arrow function blocks
-    // "arrow-body-style": [2, "as-needed"],
+    // "arrow-body-style": ["error", "as-needed"],
 
     // Require spacing around =>
-    // "arrow-spacing": 2,
+    // "arrow-spacing": "error",
 
     // Always require spacing around a single line block
-    // "block-spacing": 1,
+    // "block-spacing": "warn",
 
     // No newline before open brace for a block
-    "brace-style": 2,
+    "brace-style": "error",
 
     // No space before always a space after a comma
-    "comma-spacing": [2, {"before": false, "after": true}],
+    "comma-spacing": ["error", {"before": false, "after": true}],
 
     // Commas at the end of the line not the start
-    // "comma-style": 2,
+    // "comma-style": "error",
 
     // Don't require spaces around computed properties
-    // "computed-property-spacing": [2, "never"],
+    // "computed-property-spacing": ["error", "never"],
 
     // Functions must always return something or nothing
-    "consistent-return": 2,
+    "consistent-return": "error",
 
     // Require braces around blocks that start a new line
     // Note that this rule is likely to be overridden on a per-directory basis
     // very frequently.
-    // "curly": [2, "multi-line"],
+    // "curly": ["error", "multi-line"],
 
     // Always require a trailing EOL
-    "eol-last": 2,
+    "eol-last": "error",
 
     // Require function* name()
-    // "generator-star-spacing": [2, {"before": false, "after": true}],
+    // "generator-star-spacing": ["error", {"before": false, "after": true}],
 
     // Two space indent
-    "indent": [2, 2, { "SwitchCase": 1 }],
+    "indent": ["error", 2, { "SwitchCase": 1 }],
 
     // Space after colon not before in property declarations
-    "key-spacing": [2, { "beforeColon": false, "afterColon": true, "mode": "minimum" }],
+    "key-spacing": ["error", { "beforeColon": false, "afterColon": true, "mode": "minimum" }],
 
     // Unix linebreaks
-    "linebreak-style": [2, "unix"],
+    "linebreak-style": ["error", "unix"],
 
     // Always require parenthesis for new calls
-    "new-parens": 2,
+    "new-parens": "error",
 
     // Use [] instead of Array()
-    // "no-array-constructor": 2,
+    // "no-array-constructor": "error",
 
     // No duplicate arguments in function declarations
-    "no-dupe-args": 2,
+    "no-dupe-args": "error",
 
     // No duplicate keys in object declarations
-    "no-dupe-keys": 2,
+    "no-dupe-keys": "error",
 
     // No duplicate cases in switch statements
-    "no-duplicate-case": 2,
+    "no-duplicate-case": "error",
 
     // No labels
-    "no-labels": 2,
+    "no-labels": "error",
 
     // If an if block ends with a return no need for an else block
-    "no-else-return": 2,
+    "no-else-return": "error",
 
     // No empty statements
-    "no-empty": 2,
+    "no-empty": "error",
 
     // No empty character classes in regex
-    "no-empty-character-class": 2,
+    "no-empty-character-class": "error",
 
     // Disallow empty destructuring
-    "no-empty-pattern": 2,
+    "no-empty-pattern": "error",
 
     // No assiging to exception variable
-    // "no-ex-assign": 2,
+    // "no-ex-assign": "error",
 
     // No using !! where casting to boolean is already happening
-    // "no-extra-boolean-cast": 2,
+    // "no-extra-boolean-cast": "error",
 
     // No double semicolon
-    "no-extra-semi": 2,
+    "no-extra-semi": "error",
 
     // No overwriting defined functions
-    "no-func-assign": 2,
+    "no-func-assign": "error",
 
     // Declarations in Program or Function Body
-    "no-inner-declarations": 2,
+    "no-inner-declarations": "error",
 
     // No invalid regular expresions
-    "no-invalid-regexp": 2,
+    "no-invalid-regexp": "error",
 
     // No odd whitespace characters
-    "no-irregular-whitespace": 2,
+    "no-irregular-whitespace": "error",
 
     // No single if block inside an else block
-    "no-lonely-if": 2,
+    "no-lonely-if": "error",
 
     // No mixing spaces and tabs in indent
-    "no-mixed-spaces-and-tabs": [2, "smart-tabs"],
+    "no-mixed-spaces-and-tabs": ["error", "smart-tabs"],
 
     // No unnecessary spacing
-    "no-multi-spaces": [2, { exceptions: { "AssignmentExpression": true, "VariableDeclarator": true, "ArrayExpression": true, "ObjectExpression": true } }],
+    "no-multi-spaces": ["error", { exceptions: { "AssignmentExpression": true, "VariableDeclarator": true, "ArrayExpression": true, "ObjectExpression": true } }],
 
     // No reassigning native JS objects
-    "no-native-reassign": 2,
+    "no-native-reassign": "error",
 
     // No (!foo in bar)
-    "no-negated-in-lhs": 2,
+    "no-negated-in-lhs": "error",
 
     // Nested ternary statements are confusing
-    "no-nested-ternary": 2,
+    "no-nested-ternary": "error",
 
     // Use {} instead of new Object()
-    // "no-new-object": 2,
+    // "no-new-object": "error",
 
     // No Math() or JSON()
-    "no-obj-calls": 2,
+    "no-obj-calls": "error",
 
     // No octal literals
-    "no-octal": 2,
+    "no-octal": "error",
 
     // No redeclaring variables
-    "no-redeclare": 2,
+    "no-redeclare": "error",
 
     // No unnecessary comparisons
-    "no-self-compare": 2,
+    "no-self-compare": "error",
 
     // No declaring variables from an outer scope
-    "no-shadow": 2,
+    "no-shadow": "error",
 
     // No declaring variables that hide things like arguments
-    "no-shadow-restricted-names": 2,
+    "no-shadow-restricted-names": "error",
 
     // No spaces between function name and parentheses
-    "no-spaced-func": 2,
+    "no-spaced-func": "error",
 
     // No trailing whitespace
-    "no-trailing-spaces": 2,
+    "no-trailing-spaces": "error",
 
     // No using undeclared variables
-    // "no-undef": 2,
+    // "no-undef": "error",
 
     // Error on newline where a semicolon is needed
-    "no-unexpected-multiline": 2,
+    "no-unexpected-multiline": "error",
 
     // No unreachable statements
-    "no-unreachable": 2,
+    "no-unreachable": "error",
 
     // No expressions where a statement is expected
-    // "no-unused-expressions": 2,
+    // "no-unused-expressions": "error",
 
     // No declaring variables that are never used
-    "no-unused-vars": [2, {"vars": "all", "args": "none"}],
+    "no-unused-vars": ["error", {"vars": "all", "args": "none"}],
 
     // No using variables before defined
-    // "no-use-before-define": [2, "nofunc"],
+    // "no-use-before-define": ["error", "nofunc"],
 
     // No using with
-    "no-with": 2,
+    "no-with": "error",
 
     // Always require semicolon at end of statement
-    "semi": [2, "always"],
+    "semi": ["error", "always"],
 
     // Require space after keywords
-    "keyword-spacing": 2,
+    "keyword-spacing": "error",
 
     // Require space before blocks
-    "space-before-blocks": 2,
+    "space-before-blocks": "error",
 
     // Never use spaces before function parentheses
-    // "space-before-function-paren": [2, { "anonymous": "always", "named": "never" }],
+    // "space-before-function-paren": ["error", { "anonymous": "always", "named": "never" }],
 
     // Require spaces before finally, catch, etc.
-    // "space-before-keywords": [2, "always"],
+    // "space-before-keywords": ["error", "always"],
 
     // No space padding in parentheses
-    // "space-in-parens": [2, "never"],
+    // "space-in-parens": ["error", "never"],
 
     // Require spaces around operators
-    // "space-infix-ops": 2,
+    // "space-infix-ops": "error",
 
     // Require spaces after return, throw and case
-    // "space-return-throw-case": 2,
+    // "space-return-throw-case": "error",
 
     // ++ and -- should not need spacing
-    // "space-unary-ops": [2, { "words": true, "nonwords": false }],
+    // "space-unary-ops": ["error", { "words": true, "nonwords": false }],
 
     // No comparisons to NaN
-    "use-isnan": 2,
+    "use-isnan": "error",
 
     // Only check typeof against valid results
-    "valid-typeof": 2,
+    "valid-typeof": "error",
   },
 }
--- a/toolkit/modules/subprocess/.eslintrc.js
+++ b/toolkit/modules/subprocess/.eslintrc.js
@@ -18,11 +18,11 @@ module.exports = { // eslint-disable-lin
     "ctypes": false,
     "debug": true,
     "dump": false,
     "libc": true,
     "unix": true,
   },
 
   "rules": {
-    "no-console": 0,
+    "no-console": "off",
   },
 };
--- a/toolkit/mozapps/extensions/.eslintrc.js
+++ b/toolkit/mozapps/extensions/.eslintrc.js
@@ -1,8 +1,8 @@
 "use strict";
 
 module.exports = { // eslint-disable-line no-undef
   "rules": {
     // No using undeclared variables
-    "no-undef": 2,
+    "no-undef": "error",
   }
 };
--- a/tools/lint/eslint/eslint-plugin-mozilla/lib/rules/.eslintrc.js
+++ b/tools/lint/eslint/eslint-plugin-mozilla/lib/rules/.eslintrc.js
@@ -10,37 +10,37 @@
  */
 
 module.exports = {
   "env": {
     "node": true
   },
 
   "rules": {
-    "brace-style": [2, "1tbs"],
-    "camelcase": 2,
-    "comma-dangle": [2, "never"],
-    "comma-spacing": 2,
-    "comma-style": [2, "last"],
-    "curly": [2, "multi-line"],
-    "handle-callback-err": [2, "er"],
-    "indent": [2, 2, {"SwitchCase": 1}],
-    "max-len": [2, 80, 2],
-    "no-multiple-empty-lines": [2, {"max": 1}],
-    "no-undef": 2,
-    "no-undef-init": 2,
-    "no-unexpected-multiline": 2,
-    "object-curly-spacing": 0,
-    "one-var": [2, "never"],
-    "operator-linebreak": [2, "after"],
-    "semi": [2, "always"],
-    "space-before-blocks": 2,
-    "space-before-function-paren": [2, "never"],
-    "keyword-spacing": 2,
-    "strict": [2, "global"],
+    "brace-style": ["error", "1tbs"],
+    "camelcase": "error",
+    "comma-dangle": ["error", "never"],
+    "comma-spacing": "error",
+    "comma-style": ["error", "last"],
+    "curly": ["error", "multi-line"],
+    "handle-callback-err": ["error", "er"],
+    "indent": ["error", 2, {"SwitchCase": 1}],
+    "max-len": ["error", 80, "error"],
+    "no-multiple-empty-lines": ["error", {"max": 1}],
+    "no-undef": "error",
+    "no-undef-init": "error",
+    "no-unexpected-multiline": "error",
+    "object-curly-spacing": "off",
+    "one-var": ["error", "never"],
+    "operator-linebreak": ["error", "after"],
+    "semi": ["error", "always"],
+    "space-before-blocks": "error",
+    "space-before-function-paren": ["error", "never"],
+    "keyword-spacing": "error",
+    "strict": ["error", "global"],
   },
 
   // Globals accessible within node modules.
   "globals": {
     "DTRACE_HTTP_CLIENT_REQUEST": true,
     "DTRACE_HTTP_CLIENT_RESPONSE": true,
     "DTRACE_HTTP_SERVER_REQUEST": true,
     "DTRACE_HTTP_SERVER_RESPONSE": true,