.phan/plugins/PHPDocToRealTypesPlugin.php

Summary

Maintainability
B
4 hrs
Test Coverage

Function analyzeFunctionLike has a Cognitive Complexity of 15 (exceeds 5 allowed). Consider refactoring.
Open

    private static function analyzeFunctionLike(CodeBase $code_base, FunctionInterface $method): void
    {
        if (Phan::isExcludedAnalysisFile($method->getContext()->getFile())) {
            // This has no side effects, so we can skip files that don't need to be analyzed
            return;
Severity: Minor
Found in .phan/plugins/PHPDocToRealTypesPlugin.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 analyzeFunctionLike has 31 lines of code (exceeds 25 allowed). Consider refactoring.
Open

    private static function analyzeFunctionLike(CodeBase $code_base, FunctionInterface $method): void
    {
        if (Phan::isExcludedAnalysisFile($method->getContext()->getFile())) {
            // This has no side effects, so we can skip files that don't need to be analyzed
            return;
Severity: Minor
Found in .phan/plugins/PHPDocToRealTypesPlugin.php - About 1 hr to fix

    Method analyzeReturnTypeOfFunctionLike has 26 lines of code (exceeds 25 allowed). Consider refactoring.
    Open

        private static function analyzeReturnTypeOfFunctionLike(CodeBase $code_base, FunctionInterface $method): void
        {
            $union_type = $method->getUnionType();
            if ($union_type->isVoidType()) {
                self::emitIssue(
    Severity: Minor
    Found in .phan/plugins/PHPDocToRealTypesPlugin.php - About 1 hr to fix

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

          public function beforeAnalyzePhase(CodeBase $code_base): void
          {
              $ignore_overrides = (bool)getenv('PHPDOC_TO_REAL_TYPES_IGNORE_INHERITANCE');
              foreach ($this->deferred_analysis_methods as $method) {
                  if ($method->isOverride() || $method->isOverriddenByAnother()) {
      Severity: Minor
      Found in .phan/plugins/PHPDocToRealTypesPlugin.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

      Constant CanUsePHP71Void should be defined in uppercase
      Open

          private const CanUsePHP71Void = 'PhanPluginCanUsePHP71Void';

      ConstantNamingConventions

      Since: 0.2

      Class/Interface constant names should always be defined in uppercase.

      Example

      class Foo {
          const MY_NUM = 0; // ok
          const myTest = ""; // fail
      }

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

      Constant CanUseNullableParamType should be defined in uppercase
      Open

          private const CanUseNullableParamType = 'PhanPluginCanUseNullableParamType';

      ConstantNamingConventions

      Since: 0.2

      Class/Interface constant names should always be defined in uppercase.

      Example

      class Foo {
          const MY_NUM = 0; // ok
          const myTest = ""; // fail
      }

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

      Constant CanUseNullableReturnType should be defined in uppercase
      Open

          private const CanUseNullableReturnType = 'PhanPluginCanUseNullableReturnType';

      ConstantNamingConventions

      Since: 0.2

      Class/Interface constant names should always be defined in uppercase.

      Example

      class Foo {
          const MY_NUM = 0; // ok
          const myTest = ""; // fail
      }

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

      Constant CanUseReturnType should be defined in uppercase
      Open

          private const CanUseReturnType = 'PhanPluginCanUseReturnType';

      ConstantNamingConventions

      Since: 0.2

      Class/Interface constant names should always be defined in uppercase.

      Example

      class Foo {
          const MY_NUM = 0; // ok
          const myTest = ""; // fail
      }

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

      Constant CanUseParamType should be defined in uppercase
      Open

          private const CanUseParamType = 'PhanPluginCanUseParamType';

      ConstantNamingConventions

      Since: 0.2

      Class/Interface constant names should always be defined in uppercase.

      Example

      class Foo {
          const MY_NUM = 0; // ok
          const myTest = ""; // fail
      }

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

      There are no issues that match your filters.

      Category
      Status