qcubed/framework

View on GitHub
includes/framework/QArchive.class.php

Summary

Maintainability
C
1 day
Test Coverage

Function extractZip has a Cognitive Complexity of 42 (exceeds 5 allowed). Consider refactoring.
Open

    public static function extractZip($archive, $destination) {
        if (!function_exists('zip_open')) {
            throw new Exception("ZIP extension is not enabled on this installation of PHP. Recompile your installation of PHP with --enable-zip parameter.");
        }
        
Severity: Minor
Found in includes/framework/QArchive.class.php - About 6 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 extractZip has 45 lines of code (exceeds 25 allowed). Consider refactoring.
Open

    public static function extractZip($archive, $destination) {
        if (!function_exists('zip_open')) {
            throw new Exception("ZIP extension is not enabled on this installation of PHP. Recompile your installation of PHP with --enable-zip parameter.");
        }
        
Severity: Minor
Found in includes/framework/QArchive.class.php - About 1 hr to fix

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

            private static function zipFileErrMsg($errno) {
                // using constant name as a string to make this function PHP4 compatible
                $zipFileFunctionsErrors = array(
                    'ZIPARCHIVE::ER_MULTIDISK' => 'Multi-disk zip archives not supported.',
                    'ZIPARCHIVE::ER_RENAME' => 'Renaming temporary file failed.',
    Severity: Minor
    Found in includes/framework/QArchive.class.php - About 1 hr to fix

      Avoid deeply nested control flow statements.
      Open

                                          if (!in_array($item, $createdFolders)) {
      //                                        echo "- Creating folder: " . $destination . $item . "<br>";
                                              $createdFolders[] = $item;
                                              mkdir($destination . $item);
                                          }
      Severity: Major
      Found in includes/framework/QArchive.class.php - About 45 mins to fix

        Avoid too many return statements within this method.
        Open

                return true;
        Severity: Major
        Found in includes/framework/QArchive.class.php - About 30 mins to fix

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

              public static function extractZip($archive, $destination) {
                  if (!function_exists('zip_open')) {
                      throw new Exception("ZIP extension is not enabled on this installation of PHP. Recompile your installation of PHP with --enable-zip parameter.");
                  }
                  
          Severity: Minor
          Found in includes/framework/QArchive.class.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

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

                      throw new Exception("ZIP extension is not enabled on this installation of PHP. Recompile your installation of PHP with --enable-zip parameter.");
          Severity: Minor
          Found in includes/framework/QArchive.class.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

          The method extractZip uses an else expression. Else clauses are basically not necessary and you can simplify the code by not using them.
          Open

                          } else {
                              self::$strLastError = self::zipFileErrMsg($file);
                              return false;
                          }
          Severity: Minor
          Found in includes/framework/QArchive.class.php by phpmd

          ElseExpression

          Since: 1.4.0

          An if expression with an else branch is basically not necessary. You can rewrite the conditions in a way that the else clause is not necessary and the code becomes simpler to read. To achieve this, use early return statements, though you may need to split the code it several smaller methods. For very simple assignments you could also use the ternary operations.

          Example

          class Foo
          {
              public function bar($flag)
              {
                  if ($flag) {
                      // one branch
                  } else {
                      // another branch
                  }
              }
          }

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

          Avoid using static access to class 'QFile' in method 'extractZip'.
          Open

                                      QFile::writeFile($strSavePath, $strSectionToAppend);
          Severity: Minor
          Found in includes/framework/QArchive.class.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

          The method extractZip uses an else expression. Else clauses are basically not necessary and you can simplify the code by not using them.
          Open

                  } else {
                      self::$strLastError = self::zipFileErrMsg($zip);
                      return false;
                  }
          Severity: Minor
          Found in includes/framework/QArchive.class.php by phpmd

          ElseExpression

          Since: 1.4.0

          An if expression with an else branch is basically not necessary. You can rewrite the conditions in a way that the else clause is not necessary and the code becomes simpler to read. To achieve this, use early return statements, though you may need to split the code it several smaller methods. For very simple assignments you could also use the ternary operations.

          Example

          class Foo
          {
              public function bar($flag)
              {
                  if ($flag) {
                      // one branch
                  } else {
                      // another branch
                  }
              }
          }

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

          The method extractZip uses an else expression. Else clauses are basically not necessary and you can simplify the code by not using them.
          Open

                              } else {
                                  self::$strLastError = "Unable to read zip entry";
                                  return false;
                              }
          Severity: Minor
          Found in includes/framework/QArchive.class.php by phpmd

          ElseExpression

          Since: 1.4.0

          An if expression with an else branch is basically not necessary. You can rewrite the conditions in a way that the else clause is not necessary and the code becomes simpler to read. To achieve this, use early return statements, though you may need to split the code it several smaller methods. For very simple assignments you could also use the ternary operations.

          Example

          class Foo
          {
              public function bar($flag)
              {
                  if ($flag) {
                      // one branch
                  } else {
                      // another branch
                  }
              }
          }

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

          Avoid using sizeof() function in for loops.
          Open

                                          for ($i = 0; $i < sizeof($folderStack) - 1; $i++) {
                                              $arraySubsection = array_slice($folderStack, 0, $i + 1);
                                              $item = implode("/", $arraySubsection);
                                              
                                              if (!in_array($item, $createdFolders)) {
          Severity: Minor
          Found in includes/framework/QArchive.class.php by phpmd

          CountInLoopExpression

          Since: 2.7.0

          Using count/sizeof in loops expressions is considered bad practice and is a potential source of many bugs, especially when the loop manipulates an array, as count happens on each iteration.

          Example

          class Foo {
          
            public function bar()
            {
              $array = array();
          
              for ($i = 0; count($array); $i++) {
                // ...
              }
            }
          }

          Source https://phpmd.org/rules/design.html#countinloopexpression

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

                      $zipFileFunctionsErrors = array(
          Severity: Minor
          Found in includes/framework/QArchive.class.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