src/Phan/AST/InferValue.php

Summary

Maintainability
A
1 hr
Test Coverage

Method computeBinaryOpResult has 43 lines of code (exceeds 25 allowed). Consider refactoring.
Open

    public static function computeBinaryOpResult($left, $right, int $flags)
    {
        // Don't make errors in the analyzed code crash Phan (e.g. converting arrays to strings).
        return self::evalSuppressingErrors(/** @return Node|array|int|string|float|bool|null */ static function () use ($left, $right, $flags) {
            switch ($flags) {
Severity: Minor
Found in src/Phan/AST/InferValue.php - About 1 hr to fix

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

        public static function computeBinaryOpResult($left, $right, int $flags)
        {
            // Don't make errors in the analyzed code crash Phan (e.g. converting arrays to strings).
            return self::evalSuppressingErrors(/** @return Node|array|int|string|float|bool|null */ static function () use ($left, $right, $flags) {
                switch ($flags) {
    Severity: Minor
    Found in src/Phan/AST/InferValue.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

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

        private static function evalSuppressingErrors(Closure $cb)
    Severity: Minor
    Found in src/Phan/AST/InferValue.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