rollbar/pyrollbar

View on GitHub

Showing 97 of 97 total issues

File __init__.py has 1344 lines of code (exceeds 250 allowed). Consider refactoring.
Open

from __future__ import absolute_import
from __future__ import unicode_literals

import copy
import functools
Severity: Major
Found in rollbar/__init__.py - About 3 days to fix

    Function _add_locals_data has a Cognitive Complexity of 34 (exceeds 5 allowed). Consider refactoring.
    Open

    def _add_locals_data(trace_data, exc_info):
        if not SETTINGS['locals']['enabled']:
            return
    
        frames = trace_data['frames']
    Severity: Minor
    Found in rollbar/__init__.py - About 5 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

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

    Severity: Major
    Found in rollbar/contrib/quart/__init__.py and 1 other location - About 4 hrs to fix
    rollbar/contrib/flask/__init__.py on lines 0..19

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

    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

    Severity: Major
    Found in rollbar/contrib/flask/__init__.py and 1 other location - About 4 hrs to fix
    rollbar/contrib/quart/__init__.py on lines 0..19

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

    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

    Function _build_person_data has a Cognitive Complexity of 27 (exceeds 5 allowed). Consider refactoring.
    Open

    def _build_person_data(request):
        """
        Returns a dictionary describing the logged-in user using data from `request`.
    
        Try request.rollbar_person first, then 'user', then 'user_id'
    Severity: Minor
    Found in rollbar/__init__.py - About 3 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

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

                if isinstance(obj[k], dict):
                    obj[k] = self._shorten_mapping(obj[k], max_size)
                    if level == self._get_max_level():
                        del obj[k]
                        return
    Severity: Major
    Found in rollbar/lib/transforms/shortener.py and 1 other location - About 3 hrs to fix
    rollbar/lib/transforms/shortener.py on lines 94..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 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

                elif isinstance(obj[k], sequence_types):
                    obj[k] = self._shorten_sequence(obj[k], max_size)
                    if level == self._get_max_level():
                        del obj[k]
                        return
    Severity: Major
    Found in rollbar/lib/transforms/shortener.py and 1 other location - About 3 hrs to fix
    rollbar/lib/transforms/shortener.py on lines 88..93

    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

    Function send_payload has a Cognitive Complexity of 24 (exceeds 5 allowed). Consider refactoring.
    Open

    def send_payload(payload, access_token):
        """
        Sends a payload object, (the result of calling _build_payload() + _serialize_payload()).
        Uses the configured handler from SETTINGS['handler']
    
    
    Severity: Minor
    Found in rollbar/__init__.py - About 3 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

    Function traverse has a Cognitive Complexity of 22 (exceeds 5 allowed). Consider refactoring.
    Open

    def traverse(
        obj,
        key=(),
        string_handler=_default_handlers[STRING],
        tuple_handler=_default_handlers[TUPLE],
    Severity: Minor
    Found in rollbar/lib/traverse.py - About 3 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

    Function _parse_response has a Cognitive Complexity of 20 (exceeds 5 allowed). Consider refactoring.
    Open

    def _parse_response(path, access_token, params, resp, endpoint=None):
        if isinstance(resp, requests.Response):
            try:
                data = resp.text
            except Exception:
    Severity: Minor
    Found in rollbar/__init__.py - 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 middleware.py has 268 lines of code (exceeds 250 allowed). Consider refactoring.
    Open

    r"""
    django-rollbar middleware
    
    There are two options for installing the Rollbar middleware. Both options
    require modifying your settings.py file.
    Severity: Minor
    Found in rollbar/contrib/django/middleware.py - About 2 hrs to fix

      Function includeme has a Cognitive Complexity of 17 (exceeds 5 allowed). Consider refactoring.
      Open

      def includeme(config):
          """
          Pyramid entry point
          """
          settings = config.registry.settings
      Severity: Minor
      Found in rollbar/contrib/pyramid/__init__.py - 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

      Function _report_exc_info has a Cognitive Complexity of 17 (exceeds 5 allowed). Consider refactoring.
      Open

      def _report_exc_info(exc_info, request, extra_data, payload_data, level=None):
          """
          Called by report_exc_info() wrapper
          """
      
      
      Severity: Minor
      Found in rollbar/__init__.py - 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

      Function __init__ has a Cognitive Complexity of 16 (exceeds 5 allowed). Consider refactoring.
      Open

          def __init__(self, get_response=None):
              super(RollbarNotifierMiddleware, self).__init__(get_response)
      
              self.settings = getattr(settings, 'ROLLBAR', {})
              if not self.settings.get('access_token'):
      Severity: Minor
      Found in rollbar/contrib/django/middleware.py - 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

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

      def dict_merge(a, b, silence_errors=False):
          """
          Recursively merges dict's. not just simple a['key'] = b['key'], if
          both a and bhave a key who's value is a dict then dict_merge is called
          on both values and the result stored in the returned dictionary.
      Severity: Minor
      Found in rollbar/lib/__init__.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 _filter_ip has a Cognitive Complexity of 14 (exceeds 5 allowed). Consider refactoring.
      Open

      def _filter_ip(request_data, capture_ip):
          if 'user_ip' not in request_data or capture_ip == True:
              return
      
          current_ip = request_data['user_ip']
      Severity: Minor
      Found in rollbar/__init__.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 traverse has 13 arguments (exceeds 4 allowed). Consider refactoring.
      Open

      def traverse(
      Severity: Major
      Found in rollbar/lib/traverse.py - About 1 hr to fix

        Function init has a Cognitive Complexity of 13 (exceeds 5 allowed). Consider refactoring.
        Open

        def init(access_token, environment='production', scrub_fields=None, url_fields=None, **kw):
            """
            Saves configuration variables in this module's SETTINGS.
        
            access_token: project access token. Get this from the Rollbar UI:
        Severity: Minor
        Found in rollbar/__init__.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 traverse_obj has a Cognitive Complexity of 13 (exceeds 5 allowed). Consider refactoring.
        Open

            def traverse_obj(self, obj, level=1):
                def seq_iter(o):
                    return o if isinstance(o, dict) else range(len(o))
        
                for k in seq_iter(obj):
        Severity: Minor
        Found in rollbar/lib/transforms/shortener.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 _transform has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
        Open

        def _transform(obj, transform, key=None):
            key = key or ()
        
            def do_transform(type_name, val, key=None, **kw):
                fn = getattr(transform, "transform_%s" % type_name, transform.transform_custom)
        Severity: Minor
        Found in rollbar/lib/transforms/__init__.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

        Severity
        Category
        Status
        Source
        Language