apparat/object

View on GitHub
src/Object/Domain/Model/Uri/Url.php

Summary

Maintainability
C
1 day
Test Coverage

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

class Url extends Uri implements UriInterface, SerializablePropertyInterface
{
    /**
     * Use PSR-7 method
     */
Severity: Minor
Found in src/Object/Domain/Model/Uri/Url.php by phpmd

Url has 22 functions (exceeds 20 allowed). Consider refactoring.
Open

class Url extends Uri implements UriInterface, SerializablePropertyInterface
{
    /**
     * Use PSR-7 method
     */
Severity: Minor
Found in src/Object/Domain/Model/Uri/Url.php - About 2 hrs to fix

    Method getUrlInternal has 53 lines of code (exceeds 25 allowed). Consider refactoring.
    Open

        protected function getUrlInternal(array &$override = [])
        {
            // Prepare the URL scheme
            $scheme = !empty($this->urlParts['scheme']) ? $this->getScheme().'://' : '';
            if (isset($override['scheme'])) {
    Severity: Major
    Found in src/Object/Domain/Model/Uri/Url.php - About 2 hrs to fix

      Function getUrlInternal has a Cognitive Complexity of 16 (exceeds 5 allowed). Consider refactoring.
      Open

          protected function getUrlInternal(array &$override = [])
          {
              // Prepare the URL scheme
              $scheme = !empty($this->urlParts['scheme']) ? $this->getScheme().'://' : '';
              if (isset($override['scheme'])) {
      Severity: Minor
      Found in src/Object/Domain/Model/Uri/Url.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 matches has 33 lines of code (exceeds 25 allowed). Consider refactoring.
      Open

          public function matches(Url $url)
          {
      
              // Test the scheme
              $urlScheme = $url->getScheme();
      Severity: Minor
      Found in src/Object/Domain/Model/Uri/Url.php - About 1 hr to fix

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

            public function matches(Url $url)
            {
        
                // Test the scheme
                $urlScheme = $url->getScheme();
        Severity: Minor
        Found in src/Object/Domain/Model/Uri/Url.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

        Avoid too many return statements within this method.
        Open

                return true;
        Severity: Major
        Found in src/Object/Domain/Model/Uri/Url.php - About 30 mins to fix

          Avoid too many return statements within this method.
          Open

                      return false;
          Severity: Major
          Found in src/Object/Domain/Model/Uri/Url.php - About 30 mins to fix

            Avoid too many return statements within this method.
            Open

                        return false;
            Severity: Major
            Found in src/Object/Domain/Model/Uri/Url.php - About 30 mins to fix

              Avoid too many return statements within this method.
              Open

                          return false;
              Severity: Major
              Found in src/Object/Domain/Model/Uri/Url.php - About 30 mins to fix

                Avoid too many return statements within this method.
                Open

                            return false;
                Severity: Major
                Found in src/Object/Domain/Model/Uri/Url.php - About 30 mins to fix

                  The method getUrlInternal() has an NPath complexity of 1105920. The configured NPath complexity threshold is 200.
                  Open

                      protected function getUrlInternal(array &$override = [])
                      {
                          // Prepare the URL scheme
                          $scheme = !empty($this->urlParts['scheme']) ? $this->getScheme().'://' : '';
                          if (isset($override['scheme'])) {
                  Severity: Minor
                  Found in src/Object/Domain/Model/Uri/Url.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 matches() has an NPath complexity of 4374. The configured NPath complexity threshold is 200.
                  Open

                      public function matches(Url $url)
                      {
                  
                          // Test the scheme
                          $urlScheme = $url->getScheme();
                  Severity: Minor
                  Found in src/Object/Domain/Model/Uri/Url.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 getUrlInternal() has a Cyclomatic Complexity of 23. The configured cyclomatic complexity threshold is 10.
                  Open

                      protected function getUrlInternal(array &$override = [])
                      {
                          // Prepare the URL scheme
                          $scheme = !empty($this->urlParts['scheme']) ? $this->getScheme().'://' : '';
                          if (isset($override['scheme'])) {
                  Severity: Minor
                  Found in src/Object/Domain/Model/Uri/Url.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 matches() has a Cyclomatic Complexity of 16. The configured cyclomatic complexity threshold is 10.
                  Open

                      public function matches(Url $url)
                      {
                  
                          // Test the scheme
                          $urlScheme = $url->getScheme();
                  Severity: Minor
                  Found in src/Object/Domain/Model/Uri/Url.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

                  Remove error control operator '@' on line 91.
                  Open

                      public function __construct($url)
                      {
                          parent::__construct($url);
                  
                          // Parse the URL
                  Severity: Minor
                  Found in src/Object/Domain/Model/Uri/Url.php by phpmd

                  ErrorControlOperator

                  Error suppression should be avoided if possible as it doesn't just suppress the error, that you are trying to stop, but will also suppress errors that you didn't predict would ever occur. Consider changing error_reporting() level and/or setting up your own error handler.

                  Example

                  function foo($filePath) {
                      $file = @fopen($filPath); // hides exceptions
                      $key = @$array[$notExistingKey]; // assigns null to $key
                  }

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

                  There are no issues that match your filters.

                  Category
                  Status