DAS27/php-project-lvl2

View on GitHub
src/formatters/Pretty.php

Summary

Maintainability
A
1 hr
Test Coverage

Method renderPrettyDiff has 30 lines of code (exceeds 25 allowed). Consider refactoring.
Open

function renderPrettyDiff($tree)
{
    $iter = function ($node, $level = 1) use (&$iter) {
        return array_map(function ($item) use ($level, $iter) {
            ['key' => $key, 'type' => $type, 'oldValue' => $oldValue, 'newValue' => $newValue] = $item;
Severity: Minor
Found in src/formatters/Pretty.php - About 1 hr to fix

    Reduce the number of returns of this function 5, down to the maximum allowed 3.
    Open

            return array_map(function ($item) use ($level, $iter) {
    Severity: Major
    Found in src/formatters/Pretty.php by sonar-php

    Having too many return statements in a function increases the function's essential complexity because the flow of execution is broken each time a return statement is encountered. This makes it harder to read and understand the logic of the function.

    Noncompliant Code Example

    With the default threshold of 3:

    function myFunction(){ // Noncompliant as there are 4 return statements
      if (condition1) {
        return true;
      } else {
        if (condition2) {
          return false;
        } else {
          return true;
        }
      }
      return false;
    }
    

    Missing class import via use statement (line '31', column '31').
    Open

                        throw new \Exception("Undefined type: {$type}");
    Severity: Minor
    Found in src/formatters/Pretty.php by phpmd

    MissingImport

    Since: 2.7.0

    Importing all external classes in a file through use statements makes them clearly visible.

    Example

    function make() {
        return new \stdClass();
    }

    Source http://phpmd.org/rules/cleancode.html#MissingImport

    Define and throw a dedicated exception instead of using a generic one.
    Open

                        throw new \Exception("Undefined type: {$type}");
    Severity: Major
    Found in src/formatters/Pretty.php by sonar-php

    If you throw a general exception type, such as ErrorException, RuntimeException, or Exception in a library or framework, it forces consumers to catch all exceptions, including unknown exceptions that they do not know how to handle.

    Instead, either throw a subtype that already exists in the Standard PHP Library, or create your own type that derives from Exception.

    Noncompliant Code Example

    throw new Exception();  // Noncompliant
    

    Compliant Solution

    throw new InvalidArgumentException();
    // or
    throw new UnexpectedValueException();
    

    See

    Call to undeclared function \collect()
    Open

        $keys = collect($value)->keys()->all();
    Severity: Critical
    Found in src/formatters/Pretty.php by phan

    Avoid excessively long variable names like $indentForChangedItems. Keep variable name length under 20.
    Open

                $indentForChangedItems = str_repeat(' ', 4 * $level - 2);
    Severity: Minor
    Found in src/formatters/Pretty.php by phpmd

    LongVariable

    Since: 0.2

    Detects when a field, formal or local variable is declared with a long name.

    Example

    class Something {
        protected $reallyLongIntName = -3; // VIOLATION - Field
        public static function main( array $interestingArgumentsList[] ) { // VIOLATION - Formal
            $otherReallyLongName = -5; // VIOLATION - Local
            for ($interestingIntIndex = 0; // VIOLATION - For
                 $interestingIntIndex < 10;
                 $interestingIntIndex++ ) {
            }
        }
    }

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

    There are no issues that match your filters.

    Category
    Status