iranzo/stampython

View on GitHub
stampy/plugin/irccommands.py

Summary

Maintainability
F
5 days
Test Coverage

Function irccommands has a Cognitive Complexity of 129 (exceeds 5 allowed). Consider refactoring.
Open

def irccommands(message):
    """
    Processes kick, ban, etc commands in the messages
    :param message: message to process
    :return:
Severity: Minor
Found in stampy/plugin/irccommands.py - About 2 days 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

Cyclomatic complexity is too high in function irccommands. (45)
Open

def irccommands(message):
    """
    Processes kick, ban, etc commands in the messages
    :param message: message to process
    :return:
Severity: Minor
Found in stampy/plugin/irccommands.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

File irccommands.py has 387 lines of code (exceeds 250 allowed). Consider refactoring.
Open

#!/usr/bin/env python
# encoding: utf-8
#
# Description: Plugin for processing irc-like commands
# Author: Pablo Iranzo Gomez (Pablo.Iranzo@gmail.com)
Severity: Minor
Found in stampy/plugin/irccommands.py - About 5 hrs to fix

    Function op has a Cognitive Complexity of 28 (exceeds 5 allowed). Consider refactoring.
    Open

    def op(chat_id=False, user_id=False, extra=""):
        """
        Use API call to have the bot op user in
        :param chat_id:  chat id to locate user into
        :param user_id:  user id to op
    Severity: Minor
    Found in stampy/plugin/irccommands.py - About 4 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

    Cyclomatic complexity is too high in function op. (18)
    Open

    def op(chat_id=False, user_id=False, extra=""):
        """
        Use API call to have the bot op user in
        :param chat_id:  chat id to locate user into
        :param user_id:  user id to op
    Severity: Minor
    Found in stampy/plugin/irccommands.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

    Cyclomatic complexity is too high in function mute. (10)
    Open

    def mute(chat_id=False, user_id=False, extra=""):
        """
        Use API call to have the bot op user in
        :param chat_id:  chat id to locate user into
        :param user_id:  user id to op
    Severity: Minor
    Found in stampy/plugin/irccommands.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

    Cyclomatic complexity is too high in function kick. (7)
    Open

    def kick(chat_id=False, user_id=False, ban=False):
        """
        Use API call to have the bot kick out of chat
        :param chat_id:  chat id to locate user into
        :param user_id:  user id to kick out of chat
    Severity: Minor
    Found in stampy/plugin/irccommands.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

    Cyclomatic complexity is too high in function whois. (6)
    Open

    def whois(chat_id=False, user_id=False):
        """
        Use API call to retrieve userid
        :param chat_id:  chat id to locate user into
        :param user_id:  user id to kick out of chat
    Severity: Minor
    Found in stampy/plugin/irccommands.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

    Cyclomatic complexity is too high in function unban. (6)
    Open

    def unban(chat_id=False, user_id=False):
        """
        Use API call to have the bot unban user
        :param chat_id: Channel ID to unban user on
        :param user_id: User ID to unban
    Severity: Minor
    Found in stampy/plugin/irccommands.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

    Cyclomatic complexity is too high in function topic. (6)
    Open

    def topic(chat_id=False, title=False):
        """
        Use API call to have the bot change topic
        :param chat_id:  chat id to locate user into
        :param title: new title to set
    Severity: Minor
    Found in stampy/plugin/irccommands.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 mute has a Cognitive Complexity of 13 (exceeds 5 allowed). Consider refactoring.
    Open

    def mute(chat_id=False, user_id=False, extra=""):
        """
        Use API call to have the bot op user in
        :param chat_id:  chat id to locate user into
        :param user_id:  user id to op
    Severity: Minor
    Found in stampy/plugin/irccommands.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 kick has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
    Open

    def kick(chat_id=False, user_id=False, ban=False):
        """
        Use API call to have the bot kick out of chat
        :param chat_id:  chat id to locate user into
        :param user_id:  user id to kick out of chat
    Severity: Minor
    Found in stampy/plugin/irccommands.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

    Avoid deeply nested control flow statements.
    Open

                        if result['ok'] is True or result['ok'] == 'True':
                            text = _("User %s kicked out of chat %s") % (user_id, chat_id)
                        else:
                            text = _("Error kicking user %s from chat %s: %s") % (user_id, chat_id, result)
    
    
    Severity: Major
    Found in stampy/plugin/irccommands.py - About 45 mins to fix

      Function topic has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
      Open

      def topic(chat_id=False, title=False):
          """
          Use API call to have the bot change topic
          :param chat_id:  chat id to locate user into
          :param title: new title to set
      Severity: Minor
      Found in stampy/plugin/irccommands.py - About 45 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

      Avoid deeply nested control flow statements.
      Open

                          if result['ok'] is True or result['ok'] == 'True':
                              text = _("User %s kicked and banned out of chat %s") % (user_id, chat_id)
                          else:
                              text = _("Error kick+ban user %s from chat %s: %s") % (user_id, chat_id, result['description'])
                          stampy.stampy.sendmessage(chat_id=chat_id, text=text, reply_to_message_id=message_id, disable_web_page_preview=True, parse_mode="Markdown")
      Severity: Major
      Found in stampy/plugin/irccommands.py - About 45 mins to fix

        Avoid deeply nested control flow statements.
        Open

                            if result['ok'] is True or result['ok'] == 'True':
                                text = _("User %s muted on chat %s") % (user_id,
                                                                        chat_id)
                            else:
                                text = _("Error muting user %s from chat %s: %s") % (
        Severity: Major
        Found in stampy/plugin/irccommands.py - About 45 mins to fix

          Avoid deeply nested control flow statements.
          Open

                              if result['ok'] is True or result['ok'] == 'True':
                                  text = _("Users %s deoped on chat %s") % (user_id, chat_id)
                              else:
                                  text = _("Error deoping users from chat %s: %s") % (chat_id, result)
          
          
          Severity: Major
          Found in stampy/plugin/irccommands.py - About 45 mins to fix

            Avoid deeply nested control flow statements.
            Open

                                if result['ok'] is True or result['ok'] == 'True':
                                    text = _("User %s unbanned out of chat %s") % (user_id, chat_id)
                                else:
                                    text = _("Error unbanning user %s from chat %s: %s") % (user_id, chat_id, result['description'])
                                stampy.stampy.sendmessage(chat_id=chat_id, text=text, reply_to_message_id=message_id, disable_web_page_preview=True, parse_mode="Markdown")
            Severity: Major
            Found in stampy/plugin/irccommands.py - About 45 mins to fix

              Avoid deeply nested control flow statements.
              Open

                                  if result['ok'] is True or result['ok'] == 'True':
                                      text = _("Users opped on chat %s") % chat_id
                                  else:
                                      text = _("Error opping users from chat %s: %s") % (chat_id, result)
              
              
              Severity: Major
              Found in stampy/plugin/irccommands.py - About 45 mins to fix

                Avoid deeply nested control flow statements.
                Open

                                    if result['ok'] is True or result['ok'] == 'True':
                                        text = _("User %s oped on chat %s") % (user_id, chat_id)
                                    else:
                                        text = _("Error oping user %s from chat %s: %s") % (user_id, chat_id, result)
                
                
                Severity: Major
                Found in stampy/plugin/irccommands.py - About 45 mins to fix

                  Avoid deeply nested control flow statements.
                  Open

                                      if result['ok'] is True or result['ok'] == 'True':
                                          text = _("User %s unmuted on chat %s") % (user_id, chat_id)
                                      else:
                                          text = _("Error unmuting %s from chat %s: %s") % (
                                              user_id, chat_id, result)
                  Severity: Major
                  Found in stampy/plugin/irccommands.py - About 45 mins to fix

                    Avoid deeply nested control flow statements.
                    Open

                                        if result['ok'] is True or result['ok'] == 'True':
                                            text = _("User %s information: %s") % (user_id, result['result'])
                                        else:
                                            text = _("Error querying user %s information: %s") % (user_id, result)
                    
                    
                    Severity: Major
                    Found in stampy/plugin/irccommands.py - About 45 mins to fix

                      Avoid deeply nested control flow statements.
                      Open

                                          if result['ok'] is True or result['ok'] == 'True':
                                              text = _("User %s deoped on chat %s") % (user_id, chat_id)
                                          else:
                                              text = _("Error deoping %s from chat %s: %s") % (user_id, chat_id, result)
                      
                      
                      Severity: Major
                      Found in stampy/plugin/irccommands.py - About 45 mins to fix

                        Function whois has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
                        Open

                        def whois(chat_id=False, user_id=False):
                            """
                            Use API call to retrieve userid
                            :param chat_id:  chat id to locate user into
                            :param user_id:  user id to kick out of chat
                        Severity: Minor
                        Found in stampy/plugin/irccommands.py - About 35 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

                        Avoid too many return statements within this function.
                        Open

                            return
                        Severity: Major
                        Found in stampy/plugin/irccommands.py - About 30 mins to fix

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

                          def unban(chat_id=False, user_id=False):
                              """
                              Use API call to have the bot unban user
                              :param chat_id: Channel ID to unban user on
                              :param user_id: User ID to unban
                          Severity: Minor
                          Found in stampy/plugin/irccommands.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

                          There are no issues that match your filters.

                          Category
                          Status