acooks/jittertrap

View on GitHub
html5-client/src/js/jittertrap-chart-toptalk.js

Summary

Maintainability
B
5 hrs
Test Coverage

Function toptalkChart has 266 lines of code (exceeds 50 allowed). Consider refactoring.
Invalid

  my.charts.toptalk.toptalkChart = (function (m) {
    var margin = {
      top: 20,
      right: 20,
      bottom: 440,
Severity: Major
Found in html5-client/src/js/jittertrap-chart-toptalk.js - About 1 day to fix

    Function redraw has 96 lines of code (exceeds 50 allowed). Consider refactoring.
    Open

        m.redraw = function() {
    
          var width = size.width - margin.left - margin.right;
          var height = size.height - margin.top - margin.bottom;
    
    
    Severity: Major
    Found in html5-client/src/js/jittertrap-chart-toptalk.js - About 2 hrs to fix

      Function has too many statements (40). Maximum allowed is 30.
      Open

          m.redraw = function() {

      enforce a maximum number of statements allowed in function blocks (max-statements)

      The max-statements rule allows you to specify the maximum number of statements allowed in a function.

      function foo() {
        var bar = 1; // one statement
        var baz = 2; // two statements
        var qux = 3; // three statements
      }

      Rule Details

      This rule enforces a maximum number of statements allowed in function blocks.

      Options

      This rule has a number or object option:

      • "max" (default 10) enforces a maximum number of statements allows in function blocks

      Deprecated: The object property maximum is deprecated; please use the object property max instead.

      This rule has an object option:

      • "ignoreTopLevelFunctions": true ignores top-level functions

      max

      Examples of incorrect code for this rule with the default { "max": 10 } option:

      /*eslint max-statements: ["error", 10]*/
      /*eslint-env es6*/
      
      function foo() {
        var foo1 = 1;
        var foo2 = 2;
        var foo3 = 3;
        var foo4 = 4;
        var foo5 = 5;
        var foo6 = 6;
        var foo7 = 7;
        var foo8 = 8;
        var foo9 = 9;
        var foo10 = 10;
      
        var foo11 = 11; // Too many.
      }
      
      let foo = () => {
        var foo1 = 1;
        var foo2 = 2;
        var foo3 = 3;
        var foo4 = 4;
        var foo5 = 5;
        var foo6 = 6;
        var foo7 = 7;
        var foo8 = 8;
        var foo9 = 9;
        var foo10 = 10;
      
        var foo11 = 11; // Too many.
      };

      Examples of correct code for this rule with the default { "max": 10 } option:

      /*eslint max-statements: ["error", 10]*/
      /*eslint-env es6*/
      
      function foo() {
        var foo1 = 1;
        var foo2 = 2;
        var foo3 = 3;
        var foo4 = 4;
        var foo5 = 5;
        var foo6 = 6;
        var foo7 = 7;
        var foo8 = 8;
        var foo9 = 9;
        var foo10 = 10;
        return function () {
      
          // The number of statements in the inner function does not count toward the
          // statement maximum.
      
          return 42;
        };
      }
      
      let foo = () => {
        var foo1 = 1;
        var foo2 = 2;
        var foo3 = 3;
        var foo4 = 4;
        var foo5 = 5;
        var foo6 = 6;
        var foo7 = 7;
        var foo8 = 8;
        var foo9 = 9;
        var foo10 = 10;
        return function () {
      
          // The number of statements in the inner function does not count toward the
          // statement maximum.
      
          return 42;
        };
      }

      ignoreTopLevelFunctions

      Examples of additional correct code for this rule with the { "max": 10 }, { "ignoreTopLevelFunctions": true } options:

      /*eslint max-statements: ["error", 10, { "ignoreTopLevelFunctions": true }]*/
      
      function foo() {
        var foo1 = 1;
        var foo2 = 2;
        var foo3 = 3;
        var foo4 = 4;
        var foo5 = 5;
        var foo6 = 6;
        var foo7 = 7;
        var foo8 = 8;
        var foo9 = 9;
        var foo10 = 10;
        var foo11 = 11;
      }

      Related Rules

      • [complexity](complexity.md)
      • [max-depth](max-depth.md)
      • [max-len](max-len.md)
      • [max-nested-callbacks](max-nested-callbacks.md)
      • [max-params](max-params.md) Source: http://eslint.org/docs/rules/

      Function reset has 85 lines of code (exceeds 50 allowed). Consider refactoring.
      Open

          m.reset = function() {
      
            d3.select("#chartToptalk").selectAll("svg").remove();
      
            svg = d3.select("#chartToptalk")
      Severity: Major
      Found in html5-client/src/js/jittertrap-chart-toptalk.js - About 2 hrs to fix

        The body of a for-in should be wrapped in an if statement to filter unwanted properties from the prototype.
        Open

                for (var val in row.values)

        Require Guarding for-in (guard-for-in)

        Looping over objects with a for in loop will include properties that are inherited through the prototype chain. This behavior can lead to unexpected items in your for loop.

        for (key in foo) {
            doSomething(key);
        }

        Note that simply checking foo.hasOwnProperty(key) is likely to cause an error in some cases; see [no-prototype-builtins](no-prototype-builtins.md).

        Rule Details

        This rule is aimed at preventing unexpected behavior that could arise from using a for in loop without filtering the results in the loop. As such, it will warn when for in loops do not filter their results with an if statement.

        Examples of incorrect code for this rule:

        /*eslint guard-for-in: "error"*/
        
        for (key in foo) {
            doSomething(key);
        }

        Examples of correct code for this rule:

        /*eslint guard-for-in: "error"*/
        
        for (key in foo) {
            if (Object.prototype.hasOwnProperty.call(foo, key)) {
                doSomething(key);
            }
            if ({}.hasOwnProperty.call(foo, key)) {
                doSomething(key);
            }
        }

        Related Rules

        • [no-prototype-builtins](no-prototype-builtins.md)

        Further Reading

        The body of a for-in should be wrapped in an if statement to filter unwanted properties from the prototype.
        Open

              for (var key in chartData)

        Require Guarding for-in (guard-for-in)

        Looping over objects with a for in loop will include properties that are inherited through the prototype chain. This behavior can lead to unexpected items in your for loop.

        for (key in foo) {
            doSomething(key);
        }

        Note that simply checking foo.hasOwnProperty(key) is likely to cause an error in some cases; see [no-prototype-builtins](no-prototype-builtins.md).

        Rule Details

        This rule is aimed at preventing unexpected behavior that could arise from using a for in loop without filtering the results in the loop. As such, it will warn when for in loops do not filter their results with an if statement.

        Examples of incorrect code for this rule:

        /*eslint guard-for-in: "error"*/
        
        for (key in foo) {
            doSomething(key);
        }

        Examples of correct code for this rule:

        /*eslint guard-for-in: "error"*/
        
        for (key in foo) {
            if (Object.prototype.hasOwnProperty.call(foo, key)) {
                doSomething(key);
            }
            if ({}.hasOwnProperty.call(foo, key)) {
                doSomething(key);
            }
        }

        Related Rules

        • [no-prototype-builtins](no-prototype-builtins.md)

        Further Reading

        Identical blocks of code found in 3 locations. Consider refactoring.
        Open

              var graph = svg.append("g")
                 .attr("transform", "translate(" + margin.left + "," + margin.top + ")");
        Severity: Minor
        Found in html5-client/src/js/jittertrap-chart-toptalk.js and 2 other locations - About 40 mins to fix
        html5-client/src/js/jittertrap-chart-pgaps.js on lines 89..90
        html5-client/src/js/jittertrap-chart-tput.js on lines 84..85

        Duplicated Code

        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

        Tuning

        This issue has a mass of 48.

        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

        Refactorings

        Further Reading

        There are no issues that match your filters.

        Category
        Status