sitch-io/sensor

View on GitHub
sitch/sitchlib/cgi_correlator.py

Summary

Maintainability
F
5 days
Test Coverage

File cgi_correlator.py has 446 lines of code (exceeds 250 allowed). Consider refactoring.
Open

"""CGI Correlator module."""

import os
import sqlite3
import alert_manager
Severity: Minor
Found in sitch/sitchlib/cgi_correlator.py - About 6 hrs to fix

    Cyclomatic complexity is too high in method feed_comparison. (12)
    Open

        def feed_comparison(self, channel):
            """Compare channel metadata against the feed DB.
    
            This function wraps a few checks against the feed DB.  It first checks
                if the bts is in the feed DB.  Next, it checks that the sensor is
    Severity: Minor
    Found in sitch/sitchlib/cgi_correlator.py by radon

    Cyclomatic Complexity

    Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

    Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

    Construct Effect on CC Reasoning
    if +1 An if statement is a single decision.
    elif +1 The elif statement adds another decision.
    else +0 The else statement does not cause a new decision. The decision is at the if.
    for +1 There is a decision at the start of the loop.
    while +1 There is a decision at the while statement.
    except +1 Each except branch adds a new conditional path of execution.
    finally +0 The finally block is unconditionally executed.
    with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
    assert +1 The assert statement internally roughly equals a conditional statement.
    Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
    Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

    Source: http://radon.readthedocs.org/en/latest/intro.html

    CgiCorrelator has 24 functions (exceeds 20 allowed). Consider refactoring.
    Open

    class CgiCorrelator(object):
        """The CgiCorrelator compares CGI addressing against the OpenCellID DB.
    
        The feed data is put in place by the FeedManager class, prior to
        instantiating the CgiCorrelator.
    Severity: Minor
    Found in sitch/sitchlib/cgi_correlator.py - About 2 hrs to fix

      Cyclomatic complexity is too high in method correlate. (8)
      Open

          def correlate(self, scan_bolus):
              """Entrypoint for the CGI correlation component.
      
              Args:
                  scan_bolus (tuple):  scan_bolus[0] contains the scan type.  If
      Severity: Minor
      Found in sitch/sitchlib/cgi_correlator.py by radon

      Cyclomatic Complexity

      Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

      Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

      Construct Effect on CC Reasoning
      if +1 An if statement is a single decision.
      elif +1 The elif statement adds another decision.
      else +0 The else statement does not cause a new decision. The decision is at the if.
      for +1 There is a decision at the start of the loop.
      while +1 There is a decision at the while statement.
      except +1 Each except branch adds a new conditional path of execution.
      finally +0 The finally block is unconditionally executed.
      with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
      assert +1 The assert statement internally roughly equals a conditional statement.
      Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
      Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

      Source: http://radon.readthedocs.org/en/latest/intro.html

      Function correlate has a Cognitive Complexity of 14 (exceeds 5 allowed). Consider refactoring.
      Open

          def correlate(self, scan_bolus):
              """Entrypoint for the CGI correlation component.
      
              Args:
                  scan_bolus (tuple):  scan_bolus[0] contains the scan type.  If
      Severity: Minor
      Found in sitch/sitchlib/cgi_correlator.py - About 1 hr 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

      Function feed_comparison has a Cognitive Complexity of 11 (exceeds 5 allowed). Consider refactoring.
      Open

          def feed_comparison(self, channel):
              """Compare channel metadata against the feed DB.
      
              This function wraps a few checks against the feed DB.  It first checks
                  if the bts is in the feed DB.  Next, it checks that the sensor is
      Severity: Minor
      Found in sitch/sitchlib/cgi_correlator.py - About 1 hr 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

      Function cell_matches has 5 arguments (exceeds 4 allowed). Consider refactoring.
      Open

          def cell_matches(cls, cell, mcc, mnc, lac, cellid):
      Severity: Minor
      Found in sitch/sitchlib/cgi_correlator.py - About 35 mins to fix

        Function get_feed_info has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
        Open

            def get_feed_info(self, mcc, mnc, lac, cellid):
                """Check CGI against cache, then against the feed DB.
        
                Args:
                    mcc (str): Mobile Country Code
        Severity: Minor
        Found in sitch/sitchlib/cgi_correlator.py - About 25 mins 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

        Similar blocks of code found in 2 locations. Consider refactoring.
        Open

                    if result != ():
                        result[1]["site_name"] = channel["site_name"]
                        result[1]["sensor_name"] = channel["sensor_name"]
                        result[1]["sensor_id"] = channel["sensor_id"]
                        retval.append(result)
        Severity: Major
        Found in sitch/sitchlib/cgi_correlator.py and 1 other location - About 4 hrs to fix
        sitch/sitchlib/arfcn_correlator.py on lines 78..82

        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 79.

        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

        Similar blocks of code found in 2 locations. Consider refactoring.
        Open

            @classmethod
            def make_bts_friendly(cls, bts_struct):
                """Create a human-friendly representation of CGI.
        
                Args:
        Severity: Major
        Found in sitch/sitchlib/cgi_correlator.py and 1 other location - About 3 hrs to fix
        sitch/sitchlib/gsm_decomposer.py on lines 76..83

        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 71.

        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

        Similar blocks of code found in 2 locations. Consider refactoring.
        Open

                if (channel["cgi_str"] not in self.bad_cgis and
                        channel["cgi_str"] not in self.cgi_whitelist and
                        channel["cgi_str"] not in self.good_cgis):
                    comparison_results.append(self.check_channel_range(channel))
        Severity: Major
        Found in sitch/sitchlib/cgi_correlator.py and 1 other location - About 3 hrs to fix
        sitch/sitchlib/cgi_correlator.py on lines 311..314

        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 67.

        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

        Similar blocks of code found in 2 locations. Consider refactoring.
        Open

                if (channel["cgi_str"] not in self.bad_cgis and
                        channel["cgi_str"] not in self.cgi_whitelist and
                        channel["cgi_str"] not in self.good_cgis):
                    comparison_results.append(self.check_channel_against_feed(channel))
        Severity: Major
        Found in sitch/sitchlib/cgi_correlator.py and 1 other location - About 3 hrs to fix
        sitch/sitchlib/cgi_correlator.py on lines 316..319

        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 67.

        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

        Similar blocks of code found in 2 locations. Consider refactoring.
        Open

            @classmethod
            def get_cgi_int(cls, channel):
                """Attempt to create an integer representation of CGI."""
                try:
                    cgi_int = int(channel["cgi_str"].replace(':', ''))
        Severity: Major
        Found in sitch/sitchlib/cgi_correlator.py and 1 other location - About 2 hrs to fix
        sitch/sitchlib/gsm_decomposer.py on lines 56..65

        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 59.

        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

        Similar blocks of code found in 4 locations. Consider refactoring.
        Open

            @classmethod
            def convert_hex_targets(cls, channel):
                """Convert lac and cellid from hex to decimal."""
                for target in ['lac', 'cellid']:
                    if target in channel:
        Severity: Major
        Found in sitch/sitchlib/cgi_correlator.py and 3 other locations - About 2 hrs to fix
        sitch/sitchlib/cgi_correlator.py on lines 515..521
        sitch/sitchlib/gsm_decomposer.py on lines 85..91
        sitch/sitchlib/gsm_decomposer.py on lines 93..99

        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 57.

        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

        Similar blocks of code found in 4 locations. Consider refactoring.
        Open

            @classmethod
            def convert_float_targets(cls, channel):
                """Convert string values for rxq and rxl to floating point."""
                for target in ['rxq', 'rxl']:
                    if target in channel:
        Severity: Major
        Found in sitch/sitchlib/cgi_correlator.py and 3 other locations - About 2 hrs to fix
        sitch/sitchlib/cgi_correlator.py on lines 507..513
        sitch/sitchlib/gsm_decomposer.py on lines 85..91
        sitch/sitchlib/gsm_decomposer.py on lines 93..99

        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 57.

        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

        Similar blocks of code found in 2 locations. Consider refactoring.
        Open

            @classmethod
            def bts_from_channel(cls, channel):
                """Create a simplified representation of BTS metadata.
        
                Args:
        Severity: Major
        Found in sitch/sitchlib/cgi_correlator.py and 1 other location - About 2 hrs to fix
        sitch/sitchlib/gsm_decomposer.py on lines 67..74

        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 54.

        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

        Similar blocks of code found in 2 locations. Consider refactoring.
        Open

                    channel["feed_info"] = self.get_feed_info(channel["mcc"],
                                                              channel["mnc"],
                                                              channel["lac"],
                                                              channel["cellid"])
        Severity: Major
        Found in sitch/sitchlib/cgi_correlator.py and 1 other location - About 1 hr to fix
        sitch/sitchlib/cgi_correlator.py on lines 73..76

        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 44.

        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

        Similar blocks of code found in 2 locations. Consider refactoring.
        Open

                    channel["distance"] = Utility.calculate_distance(chan["lon"],
                                                                     chan["lat"],
                                                                     here["lon"],
                                                                     here["lat"])
        Severity: Major
        Found in sitch/sitchlib/cgi_correlator.py and 1 other location - About 1 hr to fix
        sitch/sitchlib/cgi_correlator.py on lines 68..71

        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 44.

        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

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

                    if channel["cgi_str"] not in self.bad_cgis:
                        self.bad_cgis.append(channel["cgi_str"])
        Severity: Major
        Found in sitch/sitchlib/cgi_correlator.py and 2 other locations - About 45 mins to fix
        sitch/sitchlib/cgi_correlator.py on lines 329..331
        sitch/sitchlib/cgi_correlator.py on lines 378..379

        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 35.

        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

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

                if len(retval) == 0:
                    if channel["cgi_str"] not in self.good_cgis:
                        self.good_cgis.append(channel["cgi_str"])
        Severity: Major
        Found in sitch/sitchlib/cgi_correlator.py and 2 other locations - About 45 mins to fix
        sitch/sitchlib/cgi_correlator.py on lines 352..353
        sitch/sitchlib/cgi_correlator.py on lines 378..379

        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 35.

        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

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

                    if channel["cgi_str"] not in self.bad_cgis:
                        self.bad_cgis.append(channel["cgi_str"])
        Severity: Major
        Found in sitch/sitchlib/cgi_correlator.py and 2 other locations - About 45 mins to fix
        sitch/sitchlib/cgi_correlator.py on lines 329..331
        sitch/sitchlib/cgi_correlator.py on lines 352..353

        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 35.

        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