fbi-cde/crime-data-frontend

View on GitHub

Showing 176 of 242 total issues

Expected '===' and instead saw '=='.
Open

const isProd = process.env.NODE_ENV == 'production'
Severity: Minor
Found in src/App.js by eslint

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 treats null literals. Possible values:
    • always (default) - Always use === or !==.
    • never - Never use === or !== with null.
    • ignore - Do not apply this rule to null.

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/

Use of !important
Open

  box-shadow: none !important;
Severity: Minor
Found in public/swagger/crime-data-style.css by csslint

Expected '===' and instead saw '=='.
Open

const isProd = process.env.NODE_ENV == 'production'
Severity: Minor
Found in src/server.js by eslint

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 treats null literals. Possible values:
    • always (default) - Always use === or !==.
    • never - Never use === or !== with null.
    • ignore - Do not apply this rule to null.

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/

The object literal notation {} is preferrable.
Open

        const object = new Object()
Severity: Minor
Found in src/containers/NibrsContainer.js by eslint

disallow Object constructors (no-new-object)

The Object constructor is used to create new generic objects in JavaScript, such as:

var myObject = new Object();

However, this is no different from using the more concise object literal syntax:

var myObject = {};

For this reason, many prefer to always use the object literal syntax and never use the Object constructor.

While there are no performance differences between the two approaches, the byte savings and conciseness of the object literal form is what has made it the de facto way of creating new objects.

Rule Details

This rule disallows Object constructors.

Examples of incorrect code for this rule:

/*eslint no-new-object: "error"*/

var myObject = new Object();

var myObject = new Object;

Examples of correct code for this rule:

/*eslint no-new-object: "error"*/

var myObject = new CustomObject();

var myObject = {};

When Not To Use It

If you wish to allow the use of the Object constructor, you can safely turn this rule off.

Related Rules

Heading (h3) should not be qualified.
Open

.endpoint .heading h3 {
Severity: Minor
Found in public/swagger/crime-data-style.css by csslint

Line should be indented 2 spaces, but was indented 4 spaces
Open

    display: block;
Severity: Minor
Found in sass/components/_accordin.scss by scss-lint

Unqualified attribute selectors are known to be slow.
Open

.site .sandbox_header [type=submit] {
Severity: Minor
Found in public/swagger/crime-data-style.css by csslint

Use of !important
Open

  color: #fff !important;
Severity: Minor
Found in public/swagger/crime-data-style.css by csslint

Don't use IDs in selectors.
Open

#api-key-current, .sandbox {
Severity: Minor
Found in public/swagger/crime-data-style.css by csslint

Line should be indented 0 spaces, but was indented 8 spaces
Open

        .accordion__arrow::before {
Severity: Minor
Found in sass/components/_accordin.scss by scss-lint

Heading (h2) should not be qualified.
Open

.site .swagger-ui-wrap .resource .heading h2 {
Severity: Minor
Found in public/swagger/crime-data-style.css by csslint

Opening curly brace { should be preceded by one space
Open

.vl{
Severity: Minor
Found in sass/components/_accordin.scss by scss-lint

Line should be indented 2 spaces, but was indented 4 spaces
Open

    margin-right: 1.875rem;
Severity: Minor
Found in sass/components/_accordin.scss by scss-lint

Line should be indented 2 spaces, but was indented 4 spaces
Open

    padding-bottom: 12px;
Severity: Minor
Found in sass/components/_tables.scss by scss-lint

Rule doesn't have all its properties in alphabetical order.
Open

.site .sandbox_header [type=submit] {
Severity: Minor
Found in public/swagger/crime-data-style.css by csslint

Properties should be ordered animation, display
Open

    display: block;
Severity: Minor
Found in sass/components/_accordin.scss by scss-lint

Properties should be ordered border-left, padding-, padding-left
Open

  padding-left:10px; border-left: 1px solid #ccc; padding-:10px;
Severity: Minor
Found in sass/components/_accordin.scss by scss-lint

Properties should be ordered display, height, margin-top, position, right, top, width
Open

            position: relative;
Severity: Minor
Found in sass/components/_accordin.scss by scss-lint

Merge rule .jsonTable tr:nth-child(even) with rule on line 36
Open

.jsonTable tr:nth-child(even){background-color: $white;}
Severity: Minor
Found in sass/components/_tables.scss by scss-lint

Line should be indented 2 spaces, but was indented 4 spaces
Open

    100% {
Severity: Minor
Found in sass/components/_accordin.scss by scss-lint
Severity
Category
Status
Source
Language