Konano/arknights-mower

View on GitHub
arknights_mower/utils/recognize.py

Summary

Maintainability
B
6 hrs
Test Coverage

Function get_scene has a Cognitive Complexity of 82 (exceeds 5 allowed). Consider refactoring.
Wontfix

    def get_scene(self) -> int:
        """ get the current scene in the game """
        if self.scene != Scene.UNDEFINED:
            return self.scene
        if self.find('connecting', scope=((self.w//2, self.h//10*8), (self.w//4*3, self.h))) is not None:
Severity: Minor
Found in arknights_mower/utils/recognize.py - About 1 day 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 recognize.py has 299 lines of code (exceeds 250 allowed). Consider refactoring.
Open

from __future__ import annotations

import time
from typing import List, Optional

Severity: Minor
Found in arknights_mower/utils/recognize.py - About 3 hrs to fix

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

        def get_infra_scene(self)-> int:
            if self.scene != Scene.UNDEFINED:
                return self.scene
            if self.find('connecting', scope=((self.w//2, self.h//10*8), (self.w//4*3, self.h))) is not None:
                self.scene = Scene.CONNECTING
    Severity: Minor
    Found in arknights_mower/utils/recognize.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 find has 6 arguments (exceeds 4 allowed). Consider refactoring.
    Wontfix

        def find(self, res: str, draw: bool = False, scope: tp.Scope = None, thres: int = None, judge: bool = True, strict: bool = False) -> tp.Scope:
    Severity: Minor
    Found in arknights_mower/utils/recognize.py - About 45 mins to fix

      Function start has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
      Wontfix

          def start(self, screencap: bytes = None, build: bool = True) -> None:
              """ init with screencap, build matcher  """
              retry_times = config.MAX_RETRYTIME
              while retry_times > 0:
                  try:
      Severity: Minor
      Found in arknights_mower/utils/recognize.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

      Refactor this function to reduce its Cognitive Complexity from 22 to the 15 allowed.
      Open

          def get_infra_scene(self)-> int:
      Severity: Critical
      Found in arknights_mower/utils/recognize.py by sonar-python

      Cognitive Complexity is a measure of how hard the control flow of a function is to understand. Functions with high Cognitive Complexity will be difficult to maintain.

      See

      Refactor this function to reduce its Cognitive Complexity from 82 to the 15 allowed.
      Wontfix

          def get_scene(self) -> int:
      Severity: Critical
      Found in arknights_mower/utils/recognize.py by sonar-python

      Cognitive Complexity is a measure of how hard the control flow of a function is to understand. Functions with high Cognitive Complexity will be difficult to maintain.

      See

      Trailing whitespace
      Open

                  raise RecognizeError(f"Can't find '{res}'") 
      Severity: Minor
      Found in arknights_mower/utils/recognize.py by pep8

      Trailing whitespace is superfluous.

      The warning returned varies on whether the line itself is blank,
      for easier filtering for those who want to indent their blank lines.
      
      Okay: spam(1)\n#
      W291: spam(1) \n#
      W293: class Foo(object):\n    \n    bang = 12

      Missing whitespace around operator
      Open

          def get_infra_scene(self)-> int:
      Severity: Minor
      Found in arknights_mower/utils/recognize.py by pep8

      Surround operators with a single space on either side.

      - Always surround these binary operators with a single space on
        either side: assignment (=), augmented assignment (+=, -= etc.),
        comparisons (==, <, >, !=, <=, >=, in, not in, is, is not),
        Booleans (and, or, not).
      
      - If operators with different priorities are used, consider adding
        whitespace around the operators with the lowest priorities.
      
      Okay: i = i + 1
      Okay: submitted += 1
      Okay: x = x * 2 - 1
      Okay: hypot2 = x * x + y * y
      Okay: c = (a + b) * (a - b)
      Okay: foo(bar, key='word', *args, **kwargs)
      Okay: alpha[:-i]
      
      E225: i=i+1
      E225: submitted +=1
      E225: x = x /2 - 1
      E225: z = x **y
      E225: z = 1and 1
      E226: c = (a+b) * (a-b)
      E226: hypot2 = x*x + y*y
      E227: c = a|b
      E228: msg = fmt%(errno, errmsg)

      There are no issues that match your filters.

      Category
      Status