DAS27/php-project-lvl2

View on GitHub

Showing 22 of 22 total issues

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

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

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

    function makeNode(string $key, string $type, $oldValue, $newValue, array $children = [])
    Severity: Minor
    Found in src/astBuilder.php - About 35 mins to fix

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

                  throw new \Exception("Unknown format: {$format}");
      Severity: Minor
      Found in src/parsers.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

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

                          throw new \Exception("Undefined type: {$type}");
      Severity: Minor
      Found in src/formatters/Plain.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

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

                      throw new \Exception("Unknown format: {$format}");
      Severity: Minor
      Found in src/formatters.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

      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

      Avoid using static access to class '\Symfony\Component\Yaml\Yaml' in method 'parse'.
      Open

                  return Yaml::parse($data, Yaml::PARSE_OBJECT_FOR_MAP);
      Severity: Minor
      Found in src/parsers.php by phpmd

      StaticAccess

      Since: 1.4.0

      Static access causes unexchangeable dependencies to other classes and leads to hard to test code. Avoid using static access at all costs and instead inject dependencies through the constructor. The only case when static access is acceptable is when used for factory methods.

      Example

      class Foo
      {
          public function bar()
          {
              Bar::baz();
          }
      }

      Source https://phpmd.org/rules/cleancode.html#staticaccess

      Call to undeclared function \collect()
      Open

          $keys1 = collect($data1)->keys()->all();
      Severity: Critical
      Found in src/astBuilder.php by phan

      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

      Reference to constant PARSE_OBJECT_FOR_MAP from undeclared class \Symfony\Component\Yaml\Yaml
      Open

                  return Yaml::parse($data, Yaml::PARSE_OBJECT_FOR_MAP);
      Severity: Critical
      Found in src/parsers.php by phan

      Call to undeclared function \Funct\Collection\union()
      Open

          $keys = union($keys1, $keys2);
      Severity: Critical
      Found in src/astBuilder.php by phan

      Call to undeclared function \Funct\Collection\flattenAll()
      Open

          $flattened = flattenAll($iter($tree));
      Severity: Critical
      Found in src/formatters/Plain.php by phan

      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;
      }
      

      Call to undeclared function \collect()
      Open

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

      Call to method parse from undeclared class \Symfony\Component\Yaml\Yaml
      Open

                  return Yaml::parse($data, Yaml::PARSE_OBJECT_FOR_MAP);
      Severity: Critical
      Found in src/parsers.php by phan

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

              return array_map(function ($item) use ($iter, $ancestry) {
      Severity: Major
      Found in src/formatters/Plain.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;
      }
      

      Call to undeclared function \collect()
      Open

          $keys2 = collect($data2)->keys()->all();
      Severity: Critical
      Found in src/astBuilder.php by phan

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

                  throw new \Exception("Unknown format: {$format}");
      Severity: Major
      Found in src/parsers.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

      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/Plain.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

      Severity
      Category
      Status
      Source
      Language