This is a list of all the articles that should eventually be available. Articles
that have been written are struck through. Articles that are in need of
review (usually because they are affected by a new version of a linter) are
marked with an asterisk.
If you write a new article please ensure you strike it out in this list and note the filename of the new article next to it.
statement-label.md
-'{a}' is a statement labelout-of-scope.md
-'{a}' used out of scopealready-defined.md
-'{a}' is already definedsubexpression-parens.md
-The '&&' subexpression should be wrapped in parensunexpected-assignment.md
-Unexpected assignment expressionunused-expression.md
-Expected an assignment or function call and instead saw an expressionavoid-arguments.md
-Avoid '{a}'bad-assignment.md
-Bad assignmentbad-constructor.md
-Bad constructorbad-for-in-variable.md
-Bad for in variable '{a}'- Bad invocation
new-side-effects.md
-Do not use 'new' for side effects- Bad number '{a}'
- Bad operand
unnecessary-function-parens.md
-Do not wrap function literals in parens unless they are to be immediatelyinvokedcombine-var.md
-Combine this with the previous 'var' statementunexpected-assignment.md
-Expected a conditional expression and instead saw an assignment- Confusing use of '{a}'
- Confusing regular expression
uppercase-constructor.md
-A constructor name '{a}' should start with an uppercase letter- Unexpected control character '{a}'
dangling-underscore.md
-Unexpected dangling '_' in '{a}'variable-delete.md
-Only properties should be deleted- Duplicate '{a}'
- Empty block
- Empty case
empty-class.md
-Empty classeval.md
-eval is evil- Expected '{a}' and instead saw '{b}'
- Expected '{a}' to match '{b}' from line {c} and instead saw '{d}'
- Expected '{a}' at column {b}, not column {c}
- Expected an id, and instead saw #{a}
- Expected an identifier and instead saw '{a}'
reserved-identifier.md
-Expected an identifier and instead saw '{a}' (a reserved word)- Expected a number and instead saw '{a}'
- Expected an operator and instead saw '{a}'
- Expected a positive number and instead saw '{a}'
- Expected a small positive integer and instead saw '{a}'
expected-one-space.md
-Expected exactly one space between '{a}' and '{b}'expected-string.md
-Expected a string and instead saw '{a}'for-in-if.md
-The body of a for in should be wrapped in an if statementfunction-in-block.md
-Function statements should not be placed in blocksfunction-constructor.md
-The Function constructor is evalfunction-in-loop.md
-Don't make functions within a loopinvoked-declaration.md
-Function statements are not invocable- `function-strict.md§ -
Use the function form of 'use strict' - Expected an identifier in an assignment and instead saw a function invocation
implied-eval.md
-Implied eval is evil. Pass a function instead of a string- Unexpected 'in'. Compare with undefined or use the hasOwnProperty method
- Insecure '{a}'
use-isnan.md
-Use the isNaN function to compare with NaNleading-decimal.md
-A leading decimal point can be confused with a dot- Missing '{a}'
- Missing '{a}' after '{b}'
- Missing property name
- Missing space between '{a}' and '{b}'
missing-strict.md
-Missing 'use strict' statementmove-parens.md
-Move the invocation into the parens that contain the functionmove-var.md
-Move 'var' declarations to the top of the functionunnamed-function.md
-Missing name in function statementnested-comment.md
-Nested comment- Nested not
literal-constructor.md
-Do not use {a} as a constructor- '{a}' has not been fully defined yet
not-a-function.md
-'{a}' is not a functionnot-a-label.md
-'{a}' is not a label- '{a}' is out of scope
- '{a}' should not be greater than '{b}'
octal-literal.md
-Don't use octal '{a}'. Use '\u' instead- Do not mutate parameter '{a}' when using 'arguments'
unexpected-get-param.md
-Unexpected parameter '{a}' in get {b} functionexpected-value-param.md
-Expected parameter (value) set {a} functionmissing-radix.md
-Missing radix parameterread-only.md
-Read only- Redefinition of '{a}' from line {b}
- Reserved name '{a}'
regex-division.md
-A regular expression literal can be confused with '/='- Expected to see a statement and instead saw a block
stopping.md
-Stopping- Strange loop
- Strict violation
dot-notation.md
-['{a}'] is better written in dot notation- Unexpected sync method '{a}'
- A '<{a}>' must be within '<{b}>'
todo-comment.md
-Unexpected TODO comment- Line too long
- Too many errors
trailing-decimal.md
-A trailing decimal point can be confused with a dotunclosed-string.md
-Unclosed stringunclosed-comment.md
-Unclosed commentunclosed-regex.md
-Unclosed regular expression- Unescaped '{a}'
- Unexpected '{a}'
- Unexpected character '{a}'
unexpected-comment.md
-Unexpected comment- Unexpected label '{a}'
- Unexpected /property/ '{a}'
- Unexpected space between '{a}' and '{b}'
- Unexpected 'typeof'. Use '===' to compare directly with {a}
- Uninitialized '{a}'
unnecessary-else.md
-Unnecessary 'else' after disruptioninit-undefined.md
-It is not necessary to initialize '{a}' to 'undefined'unnecessary-strict.md
-Unnecessary 'use strict'- Unreachable '{a}' after '{b}'
- Unsafe character
unused-var.md
-Unused '{a}'- JavaScript URL
array-literal-notation.md
-Use the array literal notation []regex-spaces.md
-Spaces are hard to count. Use {{a}}- Expected 'else { if' and instead saw 'else if'
object-literal-notation.md
-Use the object literal notation {} or Object.create(null)use-or.md
-Use the || operatoruse-named-param.md
-Use a named parameter- Use spaces, not tabs
not-defined.md
-'{a}' was used before it was definedbad-declaration.md
-Variable {a} was not declared correctly- Don't declare variables in a loop
weird-assignment.md
-Weird assignment- Weird condition
- Weird construction. Delete 'new'
- Weird program
weird-relation.md
-Weird relation- Weird ternary
wrap-iife.md
-Wrap an immediate function invocation in parentheses- Wrap the /regexp/ literal in parens to disambiguate the slash operator
- document.write can be a form of eval
- Bad option: '{a}'
- Bad option value
- Unexpected early end of program
missing-strict.md
-Missing "use strict" statement- Strict violation
global-validthis.md
-Option 'validthis' can't be used in a global scopewith-strict.md
-'with' is not allowed in strict modeconst-redeclared.md
-const '{a}' has already been declared- const '{a}' is initialized to 'undefined'
overriding-constant.md
-Attempting to override '{a}' which is a constantregex-division.md
-A regular expression literal can be confused with '/='unclosed-regex.md
-Unclosed regular expression- Invalid regular expression
unclosed-comment.md
-Unclosed comment- Unbegun comment
- Unmatched '{a}'
- Expected '{a}' to match '{b}' from line {c} and instead saw '{d}'
- Expected '{a}' and instead saw '{b}'
- Missing '{a}'
- Unexpected '{a}'
- Missing ':' on a case clause
- Missing '}' to match '{' from line {a}
- Missing ']' to match '[' from line {a}
- Illegal comma
- Unclosed string
- Expected an identifier and instead saw '{a}'
bad-assignment.md
-Bad assignment- Expected a small integer or 'false' and instead saw '{a}'
- Expected an operator and instead saw '{a}'
get-set-es5.md
-get/set are ES5 features- Missing property name
- Expected to see a statement and instead saw a block
invoked-declaration.md
-Function declarations are not invocable- Each value should have its own case label
- Unrecoverable syntax error
- Too many errors
- Invalid for each loop
- A yield statement shall be within a generator function
- Let declaration not directly within a block
- A {a} cannot be named '{b}'
- Mozilla requires the yield expression to be parenthesized here
- Regular parameters cannot come after default parameters
- Unclosed template literal
hasownproperty.md
-'hasOwnProperty' is a really bad namecatch-leak.md
-Value of '{a}' may be overwritten in IE 8 and earliernot-defined.md
-'{a}' was used before it was definedalready-defined.md
-'{a}' is already definedvalid-trailing-decimal.md
-A dot following a number can be confused with a decimal pointconfusing-minuses.md
-Confusing minusesconfusing-pluses.md
-Confusing plusesleading-decimal.md
-A leading decimal point can be confused with a dotarray-literal-notation.md
-he array literal notation [] is preferableobject-literal-notation.md
-The object literal notation {} is preferable- Unexpected use of '{a}'
- Bad operand
- Confusing use of '{a}'
use-isnan.md
-Use the isNaN function to compare with NaNread-only.md
-Read only- '{a}' is a function
exception-assignment.md
-Do not assign to the exception parameter- Expected an identifier in an assignment and instead saw a function invocation
reserved-identifier.md
-Expected an identifier and instead saw '{a}' (a reserved word)unnamed-function.md
-Missing name in function declaration- Inner functions should be listed at the top of the outer function
- Unreachable '{a}' after '{b}'
- Label '{a}' on {b} statement
unused-expression.md
-Expected an assignment or function call and instead saw an expressionnew-side-effects.md
-Do not use 'new' for side effectsunnecessary-semicolon.md
-Unnecessary semicolon- Missing semicolon
unnecessary-strict.md
-Unnecessary directive "{a}"statement-label.md
-'{a}' is a statement labelout-of-scope.md
-'{a}' used out of scope- '{a}' is not allowed
- Possible strict violation
- Use '{a}' to compare with '{b}'
- Bad or unnecessary escaping
- Bad number '{a}'
- Don't use extra leading zeros '{a}'
trailing-decimal.md
-A trailing decimal point can be confused with a dot- Unexpected control character in regular expression
- Unexpected escaped character '{a}' in regular expression
- JavaScript URL
variable-delete.md
-Variables should not be deleted- Unexpected '{a}'
literal-constructor.md
-Do not use {a} as a constructorfunction-constructor.md
-The Function constructor is a form of evalbad-constructor.md
-Bad constructor- Weird constructorion. Is 'new' necessary?
missing-parens.md
-Missing '()' invoking a constructoravoid-arguments.md
-Avoid arguments.{a}- document.write can be a form of eval
eval.md
-eval can be harmfulnot-a-function.md
-Math is not a functionmissing-radix.md
-Missing radix parameterimplied-eval.md
-Implied eval. Consider passing a function instead of a string- Bad invocation
extra-comma.md
-Extra comma- This function has too many statements
too-many-params.md
-This function has too many parameters- Blocks are nested too deeply
- This function's cyclomatic complexity is too high
duplicate-key.md
-Duplicate key '{a}'unexpected-get-param.md
-Unexpected parameter '{a}' in get {b} function- Expected a single parameter in set {a} function
- Setter is defined without getter
redefinition-of-native.md
-Redefinition of '{a}'init-undefined.md
-It's not necessary to initialize '{a}' to 'undefined'function-in-block.md
-Function declarations should not be placed in blocksfunction-in-loop.md
-Don't make functions within a loopunexpected-assignment.md
-Expected a conditional expression and instead saw an assignmentunexpected-width.md
-Don't use 'with'- Expected a 'break' statement before '{a}'
debugger.md
-Forgotten 'debugger' statementbad-for-in-variable.md
-Creating global 'for' variablefor-in-if.md
-The body of a for in should be wrapped in an if statementnot-a-label.md
-'{a}' is not a statement label- '{a}' is out of scope
return-conditional.md
-Did you mean to return a conditional instead of an assignment?- Unexpected comma
- Expected a string and instead saw {a}
- The '{a}' key may produce unexpected results
function-strict.md
-Use the function form of "use strict"unused-var.md
-'{a}' is defined but never used- This character may get silently deleted by one or more browsers
- The '{a}' property is deprecated
- '{a}' is available in ES6 (use esnext option) or Mozilla JS extensions (use moz)
- Unexpected {a} in '{b}'
- Script URL
unclosed-string.md
-Unclosed string- Control character in string
octal-literal.md
-Octal literals are not allowed in strict mode- Expected '{a}' and instead saw '{b}'
not-defined.md
-'{a}' is not defined- '{a}' is only available in Mozilla JavaScript extensions (use moz option)
- '{a}' is only available in ES6 (use esnext option)
bad-declaration.md
-You might be leaking a variable ({a}) hereextending-native.md
-Extending prototype of native objectinvalid-typeof-value.md
-Invalid typeof value- '{a}' is already defined in outer scope
- A generator function shall contain a yield statement
- This line contains non-breaking spaces
out-of-scope.md
-'{{a}}' used outside of binding context- Opening curly brace does not appear on the same line as controlling statement
- Closing curly brace does not appear on the same line as the subsequent block
- Identifier '{{name}}' is not in camel case
- Function '{{name}}' has a complexity of {{complexity}}
- Expected {a} return value
- Designated 'this' alias '{{alias}}' is not assigned to the currect execution context
- Unexpected alias '{{alias}}' for 'this'
dot-notation.md
-['{{a}}'] is better written in dot notation- Expected '{{a}}' and instead saw '{{b}}'
- Missing function expression name
- Expected a function {{a}}
for-in-if.md
-The body of a for-in should be wrapped in an if statement- Blocks are nested too deeply
- Line {{i}} exceeds the maximum line length
- Too many nested callbacks
too-many-params.md
-This function has too many parameters- This function has too many statements
uppercase-constructor.md
-A constructor name should start with an uppercase lettermissing-parens.md
-Missing '()' invoking a constructor- Unexpected '{{name}}'
array-literal-notation.md
-The array literal notation [] is preferrable- Unexpected use of '{{operator}}'
avoid-arguments.md
-Avoid arguments.{{property}}catch-leak.md
-Value of '{{name}}' may be overwritten in IE 8 and earlier`extra-comma.md
-Trailing commaunexpected-assignment.md
-Expected a conditional expression and instead saw an assignment- Unexpected console statement
- Unexpected constant condition
- Unexpected control character in regular expression
debugger.md
-Unexpected 'debugger' statementvariable-delete.md
-Variables should not be deletedregex-division.md
-A regular expression literal can be confused wtih '/='duplicate-key.md
-Duplicate key '{{key}}'unnecessary-else.md
-Unexpected 'else' after 'return'empty-class.md
-Empty class- Unexpected label {{l}}
- Empty {{a}} statement
- Use '===' to compare with 'null'
eval.md
-eval can be harmfulexception-assignment.md
-Do not assign to the exception parameterextending-native.md
-{{a}} prototype is read only, properties should not be added- Redundant double negation in {{a}}
- Gratuitous parentheses around expression
unnecessary-semicolon.md
-Unnecessary semicolonunnecessary-strict.md
-Unnecessary 'use strict'- Multiple 'use strict' directives
- Expected a "break" statement before "{{code}}"
leading-decimal.md
-A leading decimal point can be confused with a dottrailing-decimal.md
-A trailing decimal point can be confused with a dot- '{{name}}' is a function
function-strict.md
-Use the function form of "use strict"implied-eval.md
-Implied eval. Consider passing a function instead of a string- Reserved name 'iterator'
statement-label.md
-Found identifier with same name as label- Unexpected labeled statment
- Unexpected label in {{a}} statement
- Block is nested inside another block
function-in-loop.md
-Don't make functions within a loop- Do not mix 'require' and other declarations
- Do not mix core, module, file and computed requires
escaped-eol.md
-Multiline support is limited to browsers supporting ES5 onlyread-only.md
-{{a}} is a read-only native objectredefinition-of-native.md
-Redefinition of '{{nativeObject}}'- The 'in' expression's left operand is negated
- Do not nest ternary expressions
function-constructor.md
-The Function constructor is evalobject-literal-notation.md
-The object literal notation {} is preferrableliteral-constructor.md
-Do not use {{fn}} as a constructornew-side-effects.md
-Do not use 'new' for side effectsnot-a-function.md
-'{{name}}' is not a function- Don't use octal '{{octalDigit}}'. Use '\u' instead
- Octal literals should not be used
- Use path.join() or parth.resolve() instead of + to create paths
unexpected-increment.md
-Unary operator '{{a}}' used- Don't use process.exit(); throw an error instead
- The 'proto' property is deprecated
already-defined.md
-'{{a}}' is already definedregex-spaces.md
-Spaces are hard to countreturn-conditional.md
-Return statement should not contain assignment- Script URL is a form of eval
weird-relation.md
-Comparing to itself is potentially pointless- Shadowing of global property "{{a}}"
- {{a}} is already declared in the upper scope
- Trailing whitespace before semicolon
- Spaced function application is not allowed
- Unexpected comma in middle of array
unexpected-sync.md
-Unexpected sync method- Ternary operator used
init-undefined.md
-It's not necessary to initialize '{{name}}' to undefinednot-defined.md
-'{{name}}' is not defined- '{{name}}' is read only
dangling-underscore.md
-Unexpected dangling '_' in '{{a}}'- Found unexpected statement after a {{type}}
unused-expression.md
-Expected an assignment or function call and instead saw an expressionunused-var.md
-{{var}} is defined but never usednot-defined.md
-{{a}} was used before it was definedunexpected-with.md
-Unexpected use of 'with' statementunnecessary-function-parens.md
-Wrapping non-IIFE function literals in parens is unnecessary- Expected literal to be on the right side of {{a}}
- Combine this with the previous 'var' statement
- Non-quoted property '{{key}}' found
use-quote.md
-String must use {{a}}missing-radix.md
-Missing radix parameter- Invalid radix parameter
- Missing semicolon
- Extra semicolon
- Variables within the same declaration block should be sorted alphabetically
missing-strict.md
-Missing "use strict" statementuse-isnan.md
-Use the isNaN function to compare with NaN- JSDoc type missing brace
- JSDoc syntax error
- Missing JSDoc parameter type for '{{name}}'
- Missing JSDoc parameter description for '{{name}}'
- Duplicate JSDoc parameter '{{name}}'
- Unexpected @{{a}} tag; function has no return statement
- Missing JSDoc return type
- Missing JSDoc return description
- Use @{{name}} instead
- Missing JSDoc @returns for function
- Expected JSDoc for '{{name}}' but found '{{name}}'
- Missing JSDoc for parameter '{{name}}'
wrap-iife.md
-Wrap an immediate function invocation in parentheses- Wrap only the function expression in parens
move-parens.md
-Move the invocation into the parens that contain the function- Wrap the /regexp/ literal in parens to disambiguate the slash operator