Showing 792 of 792 total issues
Move the invocation into the parens that contain the function. Open
(function ($) {
- Read upRead up
- Exclude checks
Require IIFEs to be Wrapped (wrap-iife)
You can immediately invoke function expressions, but not function declarations. A common technique to create an immediately-invoked function expression (IIFE) is to wrap a function declaration in parentheses. The opening parentheses causes the contained function to be parsed as an expression, rather than a declaration.
// function expression could be unwrapped
var x = function () { return { y: 1 };}();
// function declaration must be wrapped
function () { /* side effects */ }(); // SyntaxError
Rule Details
This rule requires all immediately-invoked function expressions to be wrapped in parentheses.
Options
This rule has two options, a string option and an object option.
String option:
-
"outside"
enforces always wrapping the call expression. The default is"outside"
. -
"inside"
enforces always wrapping the function expression. -
"any"
enforces always wrapping, but allows either style.
Object option:
-
"functionPrototypeMethods": true
additionally enforces wrapping function expressions invoked using.call
and.apply
. The default isfalse
.
outside
Examples of incorrect code for the default "outside"
option:
/*eslint wrap-iife: ["error", "outside"]*/
var x = function () { return { y: 1 };}(); // unwrapped
var x = (function () { return { y: 1 };})(); // wrapped function expression
Examples of correct code for the default "outside"
option:
/*eslint wrap-iife: ["error", "outside"]*/
var x = (function () { return { y: 1 };}()); // wrapped call expression
inside
Examples of incorrect code for the "inside"
option:
/*eslint wrap-iife: ["error", "inside"]*/
var x = function () { return { y: 1 };}(); // unwrapped
var x = (function () { return { y: 1 };}()); // wrapped call expression
Examples of correct code for the "inside"
option:
/*eslint wrap-iife: ["error", "inside"]*/
var x = (function () { return { y: 1 };})(); // wrapped function expression
any
Examples of incorrect code for the "any"
option:
/*eslint wrap-iife: ["error", "any"]*/
var x = function () { return { y: 1 };}(); // unwrapped
Examples of correct code for the "any"
option:
/*eslint wrap-iife: ["error", "any"]*/
var x = (function () { return { y: 1 };}()); // wrapped call expression
var x = (function () { return { y: 1 };})(); // wrapped function expression
functionPrototypeMethods
Examples of incorrect code for this rule with the "inside", { "functionPrototypeMethods": true }
options:
/* eslint wrap-iife: [2, "inside", { functionPrototypeMethods: true }] */
var x = function(){ foo(); }()
var x = (function(){ foo(); }())
var x = function(){ foo(); }.call(bar)
var x = (function(){ foo(); }.call(bar))
Examples of correct code for this rule with the "inside", { "functionPrototypeMethods": true }
options:
/* eslint wrap-iife: [2, "inside", { functionPrototypeMethods: true }] */
var x = (function(){ foo(); })()
var x = (function(){ foo(); }).call(bar)
Source: http://eslint.org/docs/rules/
Expected '!==' and instead saw '!='. Open
if (toolbar.length != 0) {
- Read upRead up
- Exclude checks
Require === and !== (eqeqeq)
It is considered good practice to use the type-safe equality operators ===
and !==
instead of their regular counterparts ==
and !=
.
The reason for this is that ==
and !=
do type coercion which follows the rather obscure Abstract Equality Comparison Algorithm.
For instance, the following statements are all considered true
:
[] == false
[] == ![]
3 == "03"
If one of those occurs in an innocent-looking statement such as a == b
the actual problem is very difficult to spot.
Rule Details
This rule is aimed at eliminating the type-unsafe equality operators.
Examples of incorrect code for this rule:
/*eslint eqeqeq: "error"*/
if (x == 42) { }
if ("" == text) { }
if (obj.getStuff() != undefined) { }
The --fix
option on the command line automatically fixes some problems reported by this rule. A problem is only fixed if one of the operands is a typeof
expression, or if both operands are literals with the same type.
Options
always
The "always"
option (default) enforces the use of ===
and !==
in every situation (except when you opt-in to more specific handling of null
[see below]).
Examples of incorrect code for the "always"
option:
/*eslint eqeqeq: ["error", "always"]*/
a == b
foo == true
bananas != 1
value == undefined
typeof foo == 'undefined'
'hello' != 'world'
0 == 0
true == true
foo == null
Examples of correct code for the "always"
option:
/*eslint eqeqeq: ["error", "always"]*/
a === b
foo === true
bananas !== 1
value === undefined
typeof foo === 'undefined'
'hello' !== 'world'
0 === 0
true === true
foo === null
This rule optionally takes a second argument, which should be an object with the following supported properties:
-
"null"
: Customize how this rule treatsnull
literals. Possible values:-
always
(default) - Always use === or !==. -
never
- Never use === or !== withnull
. -
ignore
- Do not apply this rule tonull
.
-
smart
The "smart"
option enforces the use of ===
and !==
except for these cases:
- Comparing two literal values
- Evaluating the value of
typeof
- Comparing against
null
Examples of incorrect code for the "smart"
option:
/*eslint eqeqeq: ["error", "smart"]*/
// comparing two variables requires ===
a == b
// only one side is a literal
foo == true
bananas != 1
// comparing to undefined requires ===
value == undefined
Examples of correct code for the "smart"
option:
/*eslint eqeqeq: ["error", "smart"]*/
typeof foo == 'undefined'
'hello' != 'world'
0 == 0
true == true
foo == null
allow-null
Deprecated: Instead of using this option use "always" and pass a "null" option property with value "ignore". This will tell eslint to always enforce strict equality except when comparing with the null
literal.
["error", "always", {"null": "ignore"}]
When Not To Use It
If you don't want to enforce a style for using equality operators, then it's safe to disable this rule. Source: http://eslint.org/docs/rules/
Prefer single-quoted strings when you don't need string interpolation or special symbols. (https://github.com/bbatsov/ruby-style-guide#consistent-string-literals) Open
Autotest.add_discovery { "rspec2" }
- Read upRead up
- Exclude checks
Checks if uses of quotes match the configured preference.
Example: EnforcedStyle: single_quotes (default)
# bad
"No special symbols"
"No string interpolation"
"Just text"
# good
'No special symbols'
'No string interpolation'
'Just text'
"Wait! What's #{this}!"
Example: EnforcedStyle: double_quotes
# bad
'Just some text'
'No special chars or interpolation'
# good
"Just some text"
"No special chars or interpolation"
"Every string in #{project} uses double_quotes"
Line is too long. [150/90] (https://github.com/bbatsov/ruby-style-guide#80-character-limits) Open
scope :invited_not_accepted,-> {includes(:organisation).where('users.invitation_sent_at IS NOT NULL').where('users.invitation_accepted_at IS NULL')}
- Exclude checks
Line is too long. [112/90] (https://github.com/bbatsov/ruby-style-guide#80-character-limits) Open
return CategoryType.who_they_help if (self.charity_commission_id < 300) & (self.charity_commission_id > 199)
- Exclude checks
Adjoining classes: .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger:active Open
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger:active,
- Exclude checks
Adjoining classes: .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger[disabled] Open
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger[disabled] {
- Exclude checks
Adjoining classes: .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default Open
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default {
- Exclude checks
Adjoining classes: .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default:hover Open
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default:hover,
- Exclude checks
Adjoining classes: .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default.disabled Open
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default.disabled,
- Exclude checks
Adjoining classes: .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default[disabled] Open
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default[disabled],
- Exclude checks
Expected (<filter-function-list> | none) but found 'progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff' endColorstr='#ffe6e6e6' GradientType=0)'.</filter-function-list> Open
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
- Exclude checks
Duplicate property '*background-color' found. Open
*background-color: #e6e6e6;
- Exclude checks
Property with star prefix found. Open
*background-color: #d9d9d9;
- Exclude checks
Use of !important Open
border-top: none !important;
- Exclude checks
Don't use IDs in selectors. Open
#preview_email {
- Exclude checks
Line is too long. [100/90] (https://github.com/bbatsov/ruby-style-guide#80-character-limits) Open
#attr_accessible :email, :password, :password_confirmation, :remember_me, :pending_organisation_id
- Exclude checks
Adjoining classes: .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger:active Open
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger:active,
- Exclude checks
Expected end of value but found ' '. Open
background-color: #e9322d \9;
- Exclude checks
Adjoining classes: .bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default:active Open
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default:active,
- Exclude checks