fbi-cde/crime-data-frontend

View on GitHub
src/components/agency/AgencySummaryChart.js

Summary

Maintainability
A
0 mins
Test Coverage

Function render has 170 lines of code (exceeds 25 allowed). Consider refactoring.
Invalid

  render() {
    const { colors, crime, mutedColors, since, size, until } = this.props
    let data = this.props.data
    const { svgParentWidth } = this.state

Severity: Major
Found in src/components/agency/AgencySummaryChart.js - About 6 hrs to fix

    Function render has a Cognitive Complexity of 20 (exceeds 5 allowed). Consider refactoring.
    Invalid

      render() {
        const { colors, crime, mutedColors, since, size, until } = this.props
        let data = this.props.data
        const { svgParentWidth } = this.state
    
    
    Severity: Minor
    Found in src/components/agency/AgencySummaryChart.js - About 2 hrs to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    File AgencySummaryChart.js has 277 lines of code (exceeds 250 allowed). Consider refactoring.
    Invalid

    import { max } from 'd3-array'
    import { scaleBand, scaleLinear, scaleOrdinal } from 'd3-scale'
    import throttle from 'lodash.throttle'
    import uniqBy from 'lodash.uniqby'
    import PropTypes from 'prop-types'
    Severity: Minor
    Found in src/components/agency/AgencySummaryChart.js - About 2 hrs to fix

      Avoid deeply nested control flow statements.
      Invalid

                  if (data[i].data_year > lastRapeLegacyReported) {
                    lastRapeLegacyReported = data[i].data_year
                  }
      Severity: Major
      Found in src/components/agency/AgencySummaryChart.js - About 45 mins to fix

        Unary operator '++' used.
        Invalid

              for (let i = 0; i < data.length; i++) {

        disallow the unary operators ++ and -- (no-plusplus)

        Because the unary ++ and -- operators are subject to automatic semicolon insertion, differences in whitespace can change semantics of source code.

        var i = 10;
        var j = 20;
        
        i ++
        j
        // i = 11, j = 20
        var i = 10;
        var j = 20;
        
        i
        ++
        j
        // i = 10, j = 21

        Rule Details

        This rule disallows the unary operators ++ and --.

        Examples of incorrect code for this rule:

        /*eslint no-plusplus: "error"*/
        
        var foo = 0;
        foo++;
        
        var bar = 42;
        bar--;
        
        for (i = 0; i < l; i++) {
            return;
        }

        Examples of correct code for this rule:

        /*eslint no-plusplus: "error"*/
        
        var foo = 0;
        foo += 1;
        
        var bar = 42;
        bar -= 1;
        
        for (i = 0; i < l; i += 1) {
            return;
        }

        Options

        This rule has an object option.

        • "allowForLoopAfterthoughts": true allows unary operators ++ and -- in the afterthought (final expression) of a for loop.

        allowForLoopAfterthoughts

        Examples of correct code for this rule with the { "allowForLoopAfterthoughts": true } option:

        /*eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }]*/
        
        for (i = 0; i < l; i++) {
            return;
        }
        
        for (i = 0; i < l; i--) {
            return;
        }

        Source: http://eslint.org/docs/rules/

        'submitsNibrs' PropType is defined but prop is never used
        Open

          submitsNibrs: PropTypes.bool.isRequired,

        For more information visit Source: http://eslint.org/docs/rules/

        There are no issues that match your filters.

        Category
        Status