kylekatarnls/business-day

View on GitHub
src/Cmixin/BusinessDay/Util/YearCondition.php

Summary

Maintainability
A
2 hrs
Test Coverage
A
100%

Method matchYearCondition has 29 lines of code (exceeds 25 allowed). Consider refactoring.
Open

    protected function matchYearCondition($dateTime, ?string &$condition): bool
    {
        if (!$condition || !preg_match(
            '/^\s*year(?:\s*%\s*(?<modulo>\d+))?\s*(?<operator>>=?|<=?|={1,3}|!={1,2}|<>)\s*(?<expected>\d+)/',
            $condition,
Severity: Minor
Found in src/Cmixin/BusinessDay/Util/YearCondition.php - About 1 hr to fix

    Avoid too many return statements within this method.
    Open

                    return $value !== $expected;
    Severity: Major
    Found in src/Cmixin/BusinessDay/Util/YearCondition.php - About 30 mins to fix

      Avoid too many return statements within this method.
      Open

                      return $value === $expected;
      Severity: Major
      Found in src/Cmixin/BusinessDay/Util/YearCondition.php - About 30 mins to fix

        Avoid too many return statements within this method.
        Open

                        return $value <= $expected;
        Severity: Major
        Found in src/Cmixin/BusinessDay/Util/YearCondition.php - About 30 mins to fix

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

              protected function matchYearCondition($dateTime, ?string &$condition): bool
              {
                  if (!$condition || !preg_match(
                      '/^\s*year(?:\s*%\s*(?<modulo>\d+))?\s*(?<operator>>=?|<=?|={1,3}|!={1,2}|<>)\s*(?<expected>\d+)/',
                      $condition,

          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

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

              protected function matchYearCondition($dateTime, ?string &$condition): bool

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

          There are no issues that match your filters.

          Category
          Status