src/Phan/IssueFixSuggester.php

Summary

Maintainability
F
5 days
Test Coverage

File IssueFixSuggester.php has 571 lines of code (exceeds 250 allowed). Consider refactoring.
Open

<?php

declare(strict_types=1);

namespace Phan;
Severity: Major
Found in src/Phan/IssueFixSuggester.php - About 1 day to fix

    Function suggestVariableTypoFix has a Cognitive Complexity of 30 (exceeds 5 allowed). Consider refactoring.
    Open

        public static function suggestVariableTypoFix(CodeBase $code_base, Context $context, string $variable_name, string $prefix = 'Did you mean'): ?Suggestion
        {
            if (Config::getValue('disable_suggestions')) {
                return null;
            }
    Severity: Minor
    Found in src/Phan/IssueFixSuggester.php - 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

    IssueFixSuggester has 28 functions (exceeds 20 allowed). Consider refactoring.
    Open

    class IssueFixSuggester
    {
        /** @see https://www.php.net/levenshtein - levenshtein warns and returns -1 for longer strings */
        private const MAX_SUGGESTION_NAME_LENGTH = 255;
    
    
    Severity: Minor
    Found in src/Phan/IssueFixSuggester.php - About 3 hrs to fix

      The class IssueFixSuggester has an overall complexity of 141 which is very high. The configured complexity threshold is 50.
      Open

      class IssueFixSuggester
      {
          /** @see https://www.php.net/levenshtein - levenshtein warns and returns -1 for longer strings */
          private const MAX_SUGGESTION_NAME_LENGTH = 255;
      
      
      Severity: Minor
      Found in src/Phan/IssueFixSuggester.php by phpmd

      The class IssueFixSuggester has 18 public methods. Consider refactoring IssueFixSuggester to keep number of public methods under 10.
      Open

      class IssueFixSuggester
      {
          /** @see https://www.php.net/levenshtein - levenshtein warns and returns -1 for longer strings */
          private const MAX_SUGGESTION_NAME_LENGTH = 255;
      
      
      Severity: Minor
      Found in src/Phan/IssueFixSuggester.php by phpmd

      TooManyPublicMethods

      Since: 0.1

      A class with too many public methods is probably a good suspect for refactoring, in order to reduce its complexity and find a way to have more fine grained objects.

      By default it ignores methods starting with 'get' or 'set'.

      Example

      Source https://phpmd.org/rules/codesize.html#toomanypublicmethods

      Function getSuggestionsForStringSet has a Cognitive Complexity of 18 (exceeds 5 allowed). Consider refactoring.
      Open

          public static function getSuggestionsForStringSet(string $target, array $potential_candidates): array
          {
              if (count($potential_candidates) === 0) {
                  return [];
              }
      Severity: Minor
      Found in src/Phan/IssueFixSuggester.php - 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

      Method suggestVariableTypoFix has 50 lines of code (exceeds 25 allowed). Consider refactoring.
      Open

          public static function suggestVariableTypoFix(CodeBase $code_base, Context $context, string $variable_name, string $prefix = 'Did you mean'): ?Suggestion
          {
              if (Config::getValue('disable_suggestions')) {
                  return null;
              }
      Severity: Minor
      Found in src/Phan/IssueFixSuggester.php - About 2 hrs to fix

        Method suggestSimilarClassConstant has 34 lines of code (exceeds 25 allowed). Consider refactoring.
        Open

            public static function suggestSimilarClassConstant(CodeBase $code_base, Context $context, FullyQualifiedClassConstantName $class_constant_fqsen): ?Suggestion
            {
                if (Config::getValue('disable_suggestions')) {
                    return null;
                }
        Severity: Minor
        Found in src/Phan/IssueFixSuggester.php - About 1 hr to fix

          Method suggestSimilarClass has 33 lines of code (exceeds 25 allowed). Consider refactoring.
          Open

              public static function suggestSimilarClass(
                  CodeBase $code_base,
                  Context $context,
                  FullyQualifiedClassName $class_fqsen,
                  ?Closure $filter = null,
          Severity: Minor
          Found in src/Phan/IssueFixSuggester.php - About 1 hr to fix

            Method getSuggestionsForStringSet has 32 lines of code (exceeds 25 allowed). Consider refactoring.
            Open

                public static function getSuggestionsForStringSet(string $target, array $potential_candidates): array
                {
                    if (count($potential_candidates) === 0) {
                        return [];
                    }
            Severity: Minor
            Found in src/Phan/IssueFixSuggester.php - About 1 hr to fix

              Method suggestSimilarProperty has 31 lines of code (exceeds 25 allowed). Consider refactoring.
              Open

                  public static function suggestSimilarProperty(CodeBase $code_base, Context $context, Clazz $class, string $wanted_property_name, bool $is_static): ?Suggestion
                  {
                      if (Config::getValue('disable_suggestions')) {
                          return null;
                      }
              Severity: Minor
              Found in src/Phan/IssueFixSuggester.php - About 1 hr to fix

                Function suggestSimilarClass has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
                Open

                    public static function suggestSimilarClass(
                        CodeBase $code_base,
                        Context $context,
                        FullyQualifiedClassName $class_fqsen,
                        ?Closure $filter = null,
                Severity: Minor
                Found in src/Phan/IssueFixSuggester.php - 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 filterSimilarProperties has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
                Open

                    public static function filterSimilarProperties(CodeBase $code_base, Context $context, array $property_map, bool $is_static): array
                    {
                        $class_fqsen_in_current_scope = self::maybeGetClassInCurrentScope($context);
                        $candidates = [];
                        foreach ($property_map as $property_name => $property) {
                Severity: Minor
                Found in src/Phan/IssueFixSuggester.php - 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

                Method suggestSimilarClassPropertiesToGlobalConstant has 27 lines of code (exceeds 25 allowed). Consider refactoring.
                Open

                    private static function suggestSimilarClassPropertiesToGlobalConstant(CodeBase $code_base, Context $context, FullyQualifiedGlobalConstantName $fqsen): array
                    {
                        if (!$context->isInClassScope()) {
                            return [];
                        }
                Severity: Minor
                Found in src/Phan/IssueFixSuggester.php - About 1 hr to fix

                  Function suggestSimilarClassPropertiesToGlobalConstant has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
                  Open

                      private static function suggestSimilarClassPropertiesToGlobalConstant(CodeBase $code_base, Context $context, FullyQualifiedGlobalConstantName $fqsen): array
                      {
                          if (!$context->isInClassScope()) {
                              return [];
                          }
                  Severity: Minor
                  Found in src/Phan/IssueFixSuggester.php - About 55 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

                  Function suggestSimilarProperty has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
                  Open

                      public static function suggestSimilarProperty(CodeBase $code_base, Context $context, Clazz $class, string $wanted_property_name, bool $is_static): ?Suggestion
                      {
                          if (Config::getValue('disable_suggestions')) {
                              return null;
                          }
                  Severity: Minor
                  Found in src/Phan/IssueFixSuggester.php - About 55 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

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

                      public static function filterSimilarMethods(CodeBase $code_base, Context $context, array $methods, bool $is_static): array
                      {
                          $class_fqsen_in_current_scope = self::maybeGetClassInCurrentScope($context);
                  
                          $candidates = [];
                  Severity: Minor
                  Found in src/Phan/IssueFixSuggester.php - 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 (!$current_function->isStatic()) {
                                              $suggestions[] = '$this->' . $variable_name;
                                          }
                  Severity: Major
                  Found in src/Phan/IssueFixSuggester.php - About 45 mins to fix

                    Method suggestSimilarClass has 6 arguments (exceeds 4 allowed). Consider refactoring.
                    Open

                            CodeBase $code_base,
                            Context $context,
                            FullyQualifiedClassName $class_fqsen,
                            ?Closure $filter = null,
                            string $prefix = null,
                    Severity: Minor
                    Found in src/Phan/IssueFixSuggester.php - About 45 mins to fix

                      Method suggestSimilarMethodMap has 5 arguments (exceeds 4 allowed). Consider refactoring.
                      Open

                          public static function suggestSimilarMethodMap(CodeBase $code_base, Context $context, Clazz $class, string $wanted_method_name, bool $is_static): array
                      Severity: Minor
                      Found in src/Phan/IssueFixSuggester.php - About 35 mins to fix

                        Method suggestSimilarPropertyMap has 5 arguments (exceeds 4 allowed). Consider refactoring.
                        Open

                            public static function suggestSimilarPropertyMap(CodeBase $code_base, Context $context, Clazz $class, string $wanted_property_name, bool $is_static): array
                        Severity: Minor
                        Found in src/Phan/IssueFixSuggester.php - About 35 mins to fix

                          Method suggestSimilarProperty has 5 arguments (exceeds 4 allowed). Consider refactoring.
                          Open

                              public static function suggestSimilarProperty(CodeBase $code_base, Context $context, Clazz $class, string $wanted_property_name, bool $is_static): ?Suggestion
                          Severity: Minor
                          Found in src/Phan/IssueFixSuggester.php - About 35 mins to fix

                            Method suggestSimilarGlobalFunction has 5 arguments (exceeds 4 allowed). Consider refactoring.
                            Open

                                    CodeBase $code_base,
                                    Context $context,
                                    FullyQualifiedFunctionName $function_fqsen,
                                    bool $suggest_in_global_namespace = true,
                                    string $prefix = ""
                            Severity: Minor
                            Found in src/Phan/IssueFixSuggester.php - About 35 mins to fix

                              Method suggestSimilarClassForGenericFQSEN has 5 arguments (exceeds 4 allowed). Consider refactoring.
                              Open

                                  public static function suggestSimilarClassForGenericFQSEN(CodeBase $code_base, Context $context, FQSEN $fqsen, ?Closure $filter = null, string $prefix = 'Did you mean'): ?Suggestion
                              Severity: Minor
                              Found in src/Phan/IssueFixSuggester.php - About 35 mins to fix

                                Method suggestSimilarClassForMethod has 5 arguments (exceeds 4 allowed). Consider refactoring.
                                Open

                                    public static function suggestSimilarClassForMethod(CodeBase $code_base, Context $context, FullyQualifiedClassName $class_fqsen, string $method_name, bool $is_static): ?Suggestion
                                Severity: Minor
                                Found in src/Phan/IssueFixSuggester.php - About 35 mins to fix

                                  Method suggestSimilarMethod has 5 arguments (exceeds 4 allowed). Consider refactoring.
                                  Open

                                      public static function suggestSimilarMethod(CodeBase $code_base, Context $context, Clazz $class, string $wanted_method_name, bool $is_static): ?Suggestion
                                  Severity: Minor
                                  Found in src/Phan/IssueFixSuggester.php - About 35 mins to fix

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

                                        private static function getKnownClasses(): array
                                        {
                                            static $known_classes = null;
                                            if (!is_array($known_classes)) {
                                                $known_classes = MarkupDescription::loadClassDescriptionMap();
                                    Severity: Minor
                                    Found in src/Phan/IssueFixSuggester.php - 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

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

                                        public static function suggestSimilarClassConstant(CodeBase $code_base, Context $context, FullyQualifiedClassConstantName $class_constant_fqsen): ?Suggestion
                                        {
                                            if (Config::getValue('disable_suggestions')) {
                                                return null;
                                            }
                                    Severity: Minor
                                    Found in src/Phan/IssueFixSuggester.php - 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 method.
                                    Open

                                            return Suggestion::fromString(
                                                $prefix . ' ' . \implode(' or ', $suggestions)
                                            );
                                    Severity: Major
                                    Found in src/Phan/IssueFixSuggester.php - About 30 mins to fix

                                      Avoid too many return statements within this method.
                                      Open

                                              return Suggestion::fromString(
                                                  'Did you mean ' . \implode(' or ', $suggestions)
                                              );
                                      Severity: Major
                                      Found in src/Phan/IssueFixSuggester.php - About 30 mins to fix

                                        Avoid too many return statements within this method.
                                        Open

                                                            return ['$this->' . $name];
                                        Severity: Major
                                        Found in src/Phan/IssueFixSuggester.php - About 30 mins to fix

                                          Avoid too many return statements within this method.
                                          Open

                                                  return [];
                                          Severity: Major
                                          Found in src/Phan/IssueFixSuggester.php - About 30 mins to fix

                                            Avoid too many return statements within this method.
                                            Open

                                                            return ['self::$' . $name];
                                            Severity: Major
                                            Found in src/Phan/IssueFixSuggester.php - About 30 mins to fix

                                              Avoid too many return statements within this method.
                                              Open

                                                      return Suggestion::fromString($suggestion_text);
                                              Severity: Major
                                              Found in src/Phan/IssueFixSuggester.php - About 30 mins to fix

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

                                                    private static function shouldSuggestProperty(Context $context, Clazz $class_in_scope, Property $property): bool
                                                    {
                                                        if ($property->isDynamicProperty()) {
                                                            // Don't suggest properties that weren't declared.
                                                            return false;
                                                Severity: Minor
                                                Found in src/Phan/IssueFixSuggester.php - 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

                                                The method suggestVariableTypoFix() has an NPath complexity of 2352. The configured NPath complexity threshold is 200.
                                                Open

                                                    public static function suggestVariableTypoFix(CodeBase $code_base, Context $context, string $variable_name, string $prefix = 'Did you mean'): ?Suggestion
                                                    {
                                                        if (Config::getValue('disable_suggestions')) {
                                                            return null;
                                                        }
                                                Severity: Minor
                                                Found in src/Phan/IssueFixSuggester.php by phpmd

                                                NPathComplexity

                                                Since: 0.1

                                                The NPath complexity of a method is the number of acyclic execution paths through that method. A threshold of 200 is generally considered the point where measures should be taken to reduce complexity.

                                                Example

                                                class Foo {
                                                    function bar() {
                                                        // lots of complicated code
                                                    }
                                                }

                                                Source https://phpmd.org/rules/codesize.html#npathcomplexity

                                                The method suggestSimilarProperty() has an NPath complexity of 432. The configured NPath complexity threshold is 200.
                                                Open

                                                    public static function suggestSimilarProperty(CodeBase $code_base, Context $context, Clazz $class, string $wanted_property_name, bool $is_static): ?Suggestion
                                                    {
                                                        if (Config::getValue('disable_suggestions')) {
                                                            return null;
                                                        }
                                                Severity: Minor
                                                Found in src/Phan/IssueFixSuggester.php by phpmd

                                                NPathComplexity

                                                Since: 0.1

                                                The NPath complexity of a method is the number of acyclic execution paths through that method. A threshold of 200 is generally considered the point where measures should be taken to reduce complexity.

                                                Example

                                                class Foo {
                                                    function bar() {
                                                        // lots of complicated code
                                                    }
                                                }

                                                Source https://phpmd.org/rules/codesize.html#npathcomplexity

                                                The method suggestSimilarProperty() has a Cyclomatic Complexity of 11. The configured cyclomatic complexity threshold is 10.
                                                Open

                                                    public static function suggestSimilarProperty(CodeBase $code_base, Context $context, Clazz $class, string $wanted_property_name, bool $is_static): ?Suggestion
                                                    {
                                                        if (Config::getValue('disable_suggestions')) {
                                                            return null;
                                                        }
                                                Severity: Minor
                                                Found in src/Phan/IssueFixSuggester.php by phpmd

                                                CyclomaticComplexity

                                                Since: 0.1

                                                Complexity is determined by the number of decision points in a method plus one for the method entry. The decision points are 'if', 'while', 'for', and 'case labels'. Generally, 1-4 is low complexity, 5-7 indicates moderate complexity, 8-10 is high complexity, and 11+ is very high complexity.

                                                Example

                                                // Cyclomatic Complexity = 11
                                                class Foo {
                                                1   public function example() {
                                                2       if ($a == $b) {
                                                3           if ($a1 == $b1) {
                                                                fiddle();
                                                4           } elseif ($a2 == $b2) {
                                                                fiddle();
                                                            } else {
                                                                fiddle();
                                                            }
                                                5       } elseif ($c == $d) {
                                                6           while ($c == $d) {
                                                                fiddle();
                                                            }
                                                7        } elseif ($e == $f) {
                                                8           for ($n = 0; $n < $h; $n++) {
                                                                fiddle();
                                                            }
                                                        } else {
                                                            switch ($z) {
                                                9               case 1:
                                                                    fiddle();
                                                                    break;
                                                10              case 2:
                                                                    fiddle();
                                                                    break;
                                                11              case 3:
                                                                    fiddle();
                                                                    break;
                                                                default:
                                                                    fiddle();
                                                                    break;
                                                            }
                                                        }
                                                    }
                                                }

                                                Source https://phpmd.org/rules/codesize.html#cyclomaticcomplexity

                                                The method getSuggestionsForStringSet() has a Cyclomatic Complexity of 11. The configured cyclomatic complexity threshold is 10.
                                                Open

                                                    public static function getSuggestionsForStringSet(string $target, array $potential_candidates): array
                                                    {
                                                        if (count($potential_candidates) === 0) {
                                                            return [];
                                                        }
                                                Severity: Minor
                                                Found in src/Phan/IssueFixSuggester.php by phpmd

                                                CyclomaticComplexity

                                                Since: 0.1

                                                Complexity is determined by the number of decision points in a method plus one for the method entry. The decision points are 'if', 'while', 'for', and 'case labels'. Generally, 1-4 is low complexity, 5-7 indicates moderate complexity, 8-10 is high complexity, and 11+ is very high complexity.

                                                Example

                                                // Cyclomatic Complexity = 11
                                                class Foo {
                                                1   public function example() {
                                                2       if ($a == $b) {
                                                3           if ($a1 == $b1) {
                                                                fiddle();
                                                4           } elseif ($a2 == $b2) {
                                                                fiddle();
                                                            } else {
                                                                fiddle();
                                                            }
                                                5       } elseif ($c == $d) {
                                                6           while ($c == $d) {
                                                                fiddle();
                                                            }
                                                7        } elseif ($e == $f) {
                                                8           for ($n = 0; $n < $h; $n++) {
                                                                fiddle();
                                                            }
                                                        } else {
                                                            switch ($z) {
                                                9               case 1:
                                                                    fiddle();
                                                                    break;
                                                10              case 2:
                                                                    fiddle();
                                                                    break;
                                                11              case 3:
                                                                    fiddle();
                                                                    break;
                                                                default:
                                                                    fiddle();
                                                                    break;
                                                            }
                                                        }
                                                    }
                                                }

                                                Source https://phpmd.org/rules/codesize.html#cyclomaticcomplexity

                                                The method suggestVariableTypoFix() has a Cyclomatic Complexity of 17. The configured cyclomatic complexity threshold is 10.
                                                Open

                                                    public static function suggestVariableTypoFix(CodeBase $code_base, Context $context, string $variable_name, string $prefix = 'Did you mean'): ?Suggestion
                                                    {
                                                        if (Config::getValue('disable_suggestions')) {
                                                            return null;
                                                        }
                                                Severity: Minor
                                                Found in src/Phan/IssueFixSuggester.php by phpmd

                                                CyclomaticComplexity

                                                Since: 0.1

                                                Complexity is determined by the number of decision points in a method plus one for the method entry. The decision points are 'if', 'while', 'for', and 'case labels'. Generally, 1-4 is low complexity, 5-7 indicates moderate complexity, 8-10 is high complexity, and 11+ is very high complexity.

                                                Example

                                                // Cyclomatic Complexity = 11
                                                class Foo {
                                                1   public function example() {
                                                2       if ($a == $b) {
                                                3           if ($a1 == $b1) {
                                                                fiddle();
                                                4           } elseif ($a2 == $b2) {
                                                                fiddle();
                                                            } else {
                                                                fiddle();
                                                            }
                                                5       } elseif ($c == $d) {
                                                6           while ($c == $d) {
                                                                fiddle();
                                                            }
                                                7        } elseif ($e == $f) {
                                                8           for ($n = 0; $n < $h; $n++) {
                                                                fiddle();
                                                            }
                                                        } else {
                                                            switch ($z) {
                                                9               case 1:
                                                                    fiddle();
                                                                    break;
                                                10              case 2:
                                                                    fiddle();
                                                                    break;
                                                11              case 3:
                                                                    fiddle();
                                                                    break;
                                                                default:
                                                                    fiddle();
                                                                    break;
                                                            }
                                                        }
                                                    }
                                                }

                                                Source https://phpmd.org/rules/codesize.html#cyclomaticcomplexity

                                                The class IssueFixSuggester has a coupling between objects value of 18. Consider to reduce the number of dependencies under 13.
                                                Open

                                                class IssueFixSuggester
                                                {
                                                    /** @see https://www.php.net/levenshtein - levenshtein warns and returns -1 for longer strings */
                                                    private const MAX_SUGGESTION_NAME_LENGTH = 255;
                                                
                                                
                                                Severity: Minor
                                                Found in src/Phan/IssueFixSuggester.php by phpmd

                                                CouplingBetweenObjects

                                                Since: 1.1.0

                                                A class with too many dependencies has negative impacts on several quality aspects of a class. This includes quality criteria like stability, maintainability and understandability

                                                Example

                                                class Foo {
                                                    /**
                                                     * @var \foo\bar\X
                                                     */
                                                    private $x = null;
                                                
                                                    /**
                                                     * @var \foo\bar\Y
                                                     */
                                                    private $y = null;
                                                
                                                    /**
                                                     * @var \foo\bar\Z
                                                     */
                                                    private $z = null;
                                                
                                                    public function setFoo(\Foo $foo) {}
                                                    public function setBar(\Bar $bar) {}
                                                    public function setBaz(\Baz $baz) {}
                                                
                                                    /**
                                                     * @return \SplObjectStorage
                                                     * @throws \OutOfRangeException
                                                     * @throws \InvalidArgumentException
                                                     * @throws \ErrorException
                                                     */
                                                    public function process(\Iterator $it) {}
                                                
                                                    // ...
                                                }

                                                Source https://phpmd.org/rules/design.html#couplingbetweenobjects

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

                                                    public static function suggestSimilarMethodMap(CodeBase $code_base, Context $context, Clazz $class, string $wanted_method_name, bool $is_static): array
                                                    {
                                                        $methods = $class->getMethodMap($code_base);
                                                        if (count($methods) > Config::getValue('suggestion_check_limit')) {
                                                            return [];
                                                Severity: Major
                                                Found in src/Phan/IssueFixSuggester.php and 1 other location - About 1 hr to fix
                                                src/Phan/IssueFixSuggester.php on lines 375..383

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

                                                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

                                                    public static function suggestSimilarPropertyMap(CodeBase $code_base, Context $context, Clazz $class, string $wanted_property_name, bool $is_static): array
                                                    {
                                                        $property_map = $class->getPropertyMap($code_base);
                                                        if (count($property_map) > Config::getValue('suggestion_check_limit')) {
                                                            return [];
                                                Severity: Major
                                                Found in src/Phan/IssueFixSuggester.php and 1 other location - About 1 hr to fix
                                                src/Phan/IssueFixSuggester.php on lines 274..282

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

                                                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

                                                Avoid variables with short names like $i. Configured minimum length is 3.
                                                Open

                                                                $i = strpos($fqsen, '::');
                                                Severity: Minor
                                                Found in src/Phan/IssueFixSuggester.php by phpmd

                                                ShortVariable

                                                Since: 0.2

                                                Detects when a field, local, or parameter has a very short name.

                                                Example

                                                class Something {
                                                    private $q = 15; // VIOLATION - Field
                                                    public static function main( array $as ) { // VIOLATION - Formal
                                                        $r = 20 + $this->q; // VIOLATION - Local
                                                        for (int $i = 0; $i < 10; $i++) { // Not a Violation (inside FOR)
                                                            $r += $this->q;
                                                        }
                                                    }
                                                }

                                                Source https://phpmd.org/rules/naming.html#shortvariable

                                                There are no issues that match your filters.

                                                Category
                                                Status