Rafalsky/HomeFinance

View on GitHub
backend/modules/gii/models/Generator.php

Summary

Maintainability
F
5 days
Test Coverage

File Generator.php has 616 lines of code (exceeds 250 allowed). Consider refactoring.
Open

<?php
/**
 *  This file is part of the HomeFinanceV2 project.
 *
 *  (c) Rafalsky.com <http://github.com/Rafalsky/>
Severity: Major
Found in backend/modules/gii/models/Generator.php - About 1 day to fix

    Function generateRules has a Cognitive Complexity of 31 (exceeds 5 allowed). Consider refactoring.
    Open

        public function generateRules($table)
        {
            $types = [];
            $lengths = [];
            foreach ($table->columns as $column) {
    Severity: Minor
    Found in backend/modules/gii/models/Generator.php - About 4 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

    Generator has 29 functions (exceeds 20 allowed). Consider refactoring.
    Open

    class Generator extends \yii\gii\generators\model\Generator
    {
        const RELATIONS_NONE = 'none';
        const RELATIONS_ALL = 'all';
        const RELATIONS_ALL_INVERSE = 'all-inverse';
    Severity: Minor
    Found in backend/modules/gii/models/Generator.php - About 3 hrs to fix

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

      class Generator extends \yii\gii\generators\model\Generator
      {
          const RELATIONS_NONE = 'none';
          const RELATIONS_ALL = 'all';
          const RELATIONS_ALL_INVERSE = 'all-inverse';

      The class Generator has 14 public methods. Consider refactoring Generator to keep number of public methods under 10.
      Open

      class Generator extends \yii\gii\generators\model\Generator
      {
          const RELATIONS_NONE = 'none';
          const RELATIONS_ALL = 'all';
          const RELATIONS_ALL_INVERSE = 'all-inverse';

      TooManyPublicMethods

      Since: 0.1

      A class with too many public methods is probably a good suspect for refactoring, in order to reduce its complexity and find a way to have more fine grained objects.

      By default it ignores methods starting with 'get' or 'set'.

      Example

      Source https://phpmd.org/rules/codesize.html#toomanypublicmethods

      Method generateRules has 80 lines of code (exceeds 25 allowed). Consider refactoring.
      Open

          public function generateRules($table)
          {
              $types = [];
              $lengths = [];
              foreach ($table->columns as $column) {
      Severity: Major
      Found in backend/modules/gii/models/Generator.php - About 3 hrs to fix

        Function generateRelations has a Cognitive Complexity of 17 (exceeds 5 allowed). Consider refactoring.
        Open

            protected function generateRelations()
            {
                if ($this->generateRelations === self::RELATIONS_NONE) {
                    return [];
                }
        Severity: Minor
        Found in backend/modules/gii/models/Generator.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 generateRelations has 43 lines of code (exceeds 25 allowed). Consider refactoring.
        Open

            protected function generateRelations()
            {
                if ($this->generateRelations === self::RELATIONS_NONE) {
                    return [];
                }
        Severity: Minor
        Found in backend/modules/gii/models/Generator.php - About 1 hr to fix

          Function checkJunctionTable has a Cognitive Complexity of 13 (exceeds 5 allowed). Consider refactoring.
          Open

              protected function checkJunctionTable($table)
              {
                  if (count($table->foreignKeys) < 2) {
                      return false;
                  }
          Severity: Minor
          Found in backend/modules/gii/models/Generator.php - About 1 hr 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

          Function generateClassName has a Cognitive Complexity of 13 (exceeds 5 allowed). Consider refactoring.
          Open

              protected function generateClassName($tableName, $useSchemaName = null)
              {
                  if (isset($this->classNames[$tableName])) {
                      return $this->classNames[$tableName];
                  }
          Severity: Minor
          Found in backend/modules/gii/models/Generator.php - About 1 hr 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

          Function getTableNames has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
          Open

              protected function getTableNames()
              {
                  if ($this->tableNames !== null) {
                      return $this->tableNames;
                  }
          Severity: Minor
          Found in backend/modules/gii/models/Generator.php - About 1 hr 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 hints has 32 lines of code (exceeds 25 allowed). Consider refactoring.
          Open

              public function hints()
              {
                  return array_merge(parent::hints(), [
                      'ns' => 'This is the namespace of the ActiveRecord class to be generated, e.g., <code>app\models</code>',
                      'db' => 'This is the ID of the DB application component.',
          Severity: Minor
          Found in backend/modules/gii/models/Generator.php - About 1 hr to fix

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

                private function generateManyManyRelations($table, $fks, $relations)
                {
                    $db = $this->getDbConnection();
            
                    foreach ($fks as $pair) {
            Severity: Minor
            Found in backend/modules/gii/models/Generator.php - About 1 hr to fix

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

                  protected function generateClassName($tableName, $useSchemaName = null)
                  {
                      if (isset($this->classNames[$tableName])) {
                          return $this->classNames[$tableName];
                      }
              Severity: Minor
              Found in backend/modules/gii/models/Generator.php - About 1 hr to fix

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

                    public function generate()
                    {
                        $files = [];
                        $relations = $this->generateRelations();
                        $db = $this->getDbConnection();
                Severity: Minor
                Found in backend/modules/gii/models/Generator.php - About 1 hr to fix

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

                      protected function addInverseRelations($relations)
                      {
                          $relationNames = [];
                          foreach ($this->getSchemaNames() as $schemaName) {
                              foreach ($this->getDbConnection()->getSchema()->getTableSchemas($schemaName) as $table) {
                  Severity: Minor
                  Found in backend/modules/gii/models/Generator.php - About 1 hr to fix

                    Function validateTableName has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
                    Open

                        public function validateTableName()
                        {
                            if (strpos($this->tableName, '*') !== false && substr_compare($this->tableName, '*', -1, 1)) {
                                $this->addError('tableName', 'Asterisk is only allowed as the last character.');
                    
                    
                    Severity: Minor
                    Found in backend/modules/gii/models/Generator.php - About 1 hr 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 checkJunctionTable has 26 lines of code (exceeds 25 allowed). Consider refactoring.
                    Open

                        protected function checkJunctionTable($table)
                        {
                            if (count($table->foreignKeys) < 2) {
                                return false;
                            }
                    Severity: Minor
                    Found in backend/modules/gii/models/Generator.php - About 1 hr to fix

                      Method getTableNames has 26 lines of code (exceeds 25 allowed). Consider refactoring.
                      Open

                          protected function getTableNames()
                          {
                              if ($this->tableNames !== null) {
                                  return $this->tableNames;
                              }
                      Severity: Minor
                      Found in backend/modules/gii/models/Generator.php - About 1 hr to fix

                        Function generateString has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
                        Open

                            public function generateString($string = '', $placeholders = [])
                            {
                                $string = addslashes($string);
                                if ($this->enableI18N) {
                                    // If there are placeholders, use them
                        Severity: Minor
                        Found in backend/modules/gii/models/Generator.php - About 45 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

                        Function getSchemaNames has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
                        Open

                            protected function getSchemaNames()
                            {
                                $db = $this->getDbConnection();
                                $schema = $db->getSchema();
                                if ($schema->hasMethod('getSchemaNames')) { // keep BC to Yii versions < 2.0.4
                        Severity: Minor
                        Found in backend/modules/gii/models/Generator.php - About 35 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

                        Function addInverseRelations has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
                        Open

                            protected function addInverseRelations($relations)
                            {
                                $relationNames = [];
                                foreach ($this->getSchemaNames() as $schemaName) {
                                    foreach ($this->getDbConnection()->getSchema()->getTableSchemas($schemaName) as $table) {
                        Severity: Minor
                        Found in backend/modules/gii/models/Generator.php - About 25 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

                        The method generateRules() has an NPath complexity of 10200. The configured NPath complexity threshold is 200.
                        Open

                            public function generateRules($table)
                            {
                                $types = [];
                                $lengths = [];
                                foreach ($table->columns as $column) {

                        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 generateRules() has a Cyclomatic Complexity of 28. The configured cyclomatic complexity threshold is 10.
                        Open

                            public function generateRules($table)
                            {
                                $types = [];
                                $lengths = [];
                                foreach ($table->columns as $column) {

                        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 generateClassName() has a Cyclomatic Complexity of 10. The configured cyclomatic complexity threshold is 10.
                        Open

                            protected function generateClassName($tableName, $useSchemaName = null)
                            {
                                if (isset($this->classNames[$tableName])) {
                                    return $this->classNames[$tableName];
                                }

                        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 autoCompleteData uses an else expression. Else clauses are basically not necessary and you can simplify the code by not using them.
                        Open

                                } else {
                                    return [];
                                }

                        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 assigning values to variables in if clauses and the like (line '786', column '14').
                        Open

                            protected function generateClassName($tableName, $useSchemaName = null)
                            {
                                if (isset($this->classNames[$tableName])) {
                                    return $this->classNames[$tableName];
                                }

                        IfStatementAssignment

                        Since: 2.7.0

                        Assignments in if clauses and the like are considered a code smell. Assignments in PHP return the right operand as their result. In many cases, this is an expected behavior, but can lead to many difficult to spot bugs, especially when the right operand could result in zero, null or an empty string and the like.

                        Example

                        class Foo
                        {
                            public function bar($flag)
                            {
                                if ($foo = 'bar') { // possible typo
                                    // ...
                                }
                                if ($baz = 0) { // always false
                                    // ...
                                }
                            }
                        }

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

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

                                    } else {
                                        // No placeholders, just the given string
                                        $str = "'" . $string . "'";
                                    }

                        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 getTableNames uses an else expression. Else clauses are basically not necessary and you can simplify the code by not using them.
                        Open

                                    } else {
                                        $schema = '';
                                        $pattern = '/^' . str_replace('*', '\w+', $this->tableName) . '$/';
                                    }

                        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 validateTableName uses an else expression. Else clauses are basically not necessary and you can simplify the code by not using them.
                        Open

                                } else {
                                    foreach ($tables as $table) {
                                        $class = $this->generateClassName($table);
                                        if ($this->isReservedKeyword($class)) {
                                            $this->addError('tableName', "Table '$table' will generate a class which is a reserved PHP keyword.");

                        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 assigning values to variables in if clauses and the like (line '799', column '18').
                        Open

                            protected function generateClassName($tableName, $useSchemaName = null)
                            {
                                if (isset($this->classNames[$tableName])) {
                                    return $this->classNames[$tableName];
                                }

                        IfStatementAssignment

                        Since: 2.7.0

                        Assignments in if clauses and the like are considered a code smell. Assignments in PHP return the right operand as their result. In many cases, this is an expected behavior, but can lead to many difficult to spot bugs, especially when the right operand could result in zero, null or an empty string and the like.

                        Example

                        class Foo
                        {
                            public function bar($flag)
                            {
                                if ($foo = 'bar') { // possible typo
                                    // ...
                                }
                                if ($baz = 0) { // always false
                                    // ...
                                }
                            }
                        }

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

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

                              } else {
                                  return '';
                              }

                        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 generateRules uses an else expression. Else clauses are basically not necessary and you can simplify the code by not using them.
                        Open

                                            } else {
                                                $types['string'][] = $column->name;
                                            }

                        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 assigning values to variables in if clauses and the like (line '450', column '22').
                        Open

                            protected function generateRelations()
                            {
                                if ($this->generateRelations === self::RELATIONS_NONE) {
                                    return [];
                                }

                        IfStatementAssignment

                        Since: 2.7.0

                        Assignments in if clauses and the like are considered a code smell. Assignments in PHP return the right operand as their result. In many cases, this is an expected behavior, but can lead to many difficult to spot bugs, especially when the right operand could result in zero, null or an empty string and the like.

                        Example

                        class Foo
                        {
                            public function bar($flag)
                            {
                                if ($foo = 'bar') { // possible typo
                                    // ...
                                }
                                if ($baz = 0) { // always false
                                    // ...
                                }
                            }
                        }

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

                        Avoid assigning values to variables in if clauses and the like (line '395', column '18').
                        Open

                            protected function getSchemaNames()
                            {
                                $db = $this->getDbConnection();
                                $schema = $db->getSchema();
                                if ($schema->hasMethod('getSchemaNames')) { // keep BC to Yii versions < 2.0.4

                        IfStatementAssignment

                        Since: 2.7.0

                        Assignments in if clauses and the like are considered a code smell. Assignments in PHP return the right operand as their result. In many cases, this is an expected behavior, but can lead to many difficult to spot bugs, especially when the right operand could result in zero, null or an empty string and the like.

                        Example

                        class Foo
                        {
                            public function bar($flag)
                            {
                                if ($foo = 'bar') { // possible typo
                                    // ...
                                }
                                if ($baz = 0) { // always false
                                    // ...
                                }
                            }
                        }

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

                        Avoid assigning values to variables in if clauses and the like (line '743', column '20').
                        Open

                            protected function getTableNames()
                            {
                                if ($this->tableNames !== null) {
                                    return $this->tableNames;
                                }

                        IfStatementAssignment

                        Since: 2.7.0

                        Assignments in if clauses and the like are considered a code smell. Assignments in PHP return the right operand as their result. In many cases, this is an expected behavior, but can lead to many difficult to spot bugs, especially when the right operand could result in zero, null or an empty string and the like.

                        Example

                        class Foo
                        {
                            public function bar($flag)
                            {
                                if ($foo = 'bar') { // possible typo
                                    // ...
                                }
                                if ($baz = 0) { // always false
                                    // ...
                                }
                            }
                        }

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

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

                                    } else {
                                        $ph = '';
                                    }

                        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 generateString uses an else expression. Else clauses are basically not necessary and you can simplify the code by not using them.
                        Open

                                } else {
                                    // No I18N, replace placeholders by real words, if any
                                    if (!empty($placeholders)) {
                                        $phKeys = array_map(function($word) {
                                            return '{' . $word . '}';

                        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 assigning values to variables in if clauses and the like (line '730', column '18').
                        Open

                            protected function getTableNames()
                            {
                                if ($this->tableNames !== null) {
                                    return $this->tableNames;
                                }

                        IfStatementAssignment

                        Since: 2.7.0

                        Assignments in if clauses and the like are considered a code smell. Assignments in PHP return the right operand as their result. In many cases, this is an expected behavior, but can lead to many difficult to spot bugs, especially when the right operand could result in zero, null or an empty string and the like.

                        Example

                        class Foo
                        {
                            public function bar($flag)
                            {
                                if ($foo = 'bar') { // possible typo
                                    // ...
                                }
                                if ($baz = 0) { // always false
                                    // ...
                                }
                            }
                        }

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

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

                                    } else {
                                        $schemaNames = [''];
                                    }

                        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 backend\modules\gii\models\count() function in for loops.
                        Open

                                    for ($j = $i + 1; $j < count($foreignKeys); $j++) {
                                        $secondColumns = $foreignKeys[$j];
                                        unset($secondColumns[0]);
                        
                                        $fks = array_merge(array_keys($firstColumns), array_keys($secondColumns));

                        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 using backend\modules\gii\models\count() function in for loops.
                        Open

                                for ($i = 0; $i < count($foreignKeys); $i++) {
                                    $firstColumns = $foreignKeys[$i];
                                    unset($firstColumns[0]);
                        
                                    for ($j = $i + 1; $j < count($foreignKeys); $j++) {

                        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 $generateLabelsFromComments. Keep variable name length under 20.
                        Open

                            public $generateLabelsFromComments = false;

                        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

                        Avoid variables with short names like $db. Configured minimum length is 3.
                        Open

                                $db = $this->getDbConnection();

                        ShortVariable

                        Since: 0.2

                        Detects when a field, local, or parameter has a very short name.

                        Example

                        class Something {
                            private $q = 15; // VIOLATION - Field
                            public static function main( array $as ) { // VIOLATION - Formal
                                $r = 20 + $this->q; // VIOLATION - Local
                                for (int $i = 0; $i < 10; $i++) { // Not a Violation (inside FOR)
                                    $r += $this->q;
                                }
                            }
                        }

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

                        Avoid variables with short names like $ns. Configured minimum length is 3.
                        Open

                            public $ns = 'app\models';

                        ShortVariable

                        Since: 0.2

                        Detects when a field, local, or parameter has a very short name.

                        Example

                        class Something {
                            private $q = 15; // VIOLATION - Field
                            public static function main( array $as ) { // VIOLATION - Formal
                                $r = 20 + $this->q; // VIOLATION - Local
                                for (int $i = 0; $i < 10; $i++) { // Not a Violation (inside FOR)
                                    $r += $this->q;
                                }
                            }
                        }

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

                        Avoid variables with short names like $db. Configured minimum length is 3.
                        Open

                                $db = $this->getDbConnection();

                        ShortVariable

                        Since: 0.2

                        Detects when a field, local, or parameter has a very short name.

                        Example

                        class Something {
                            private $q = 15; // VIOLATION - Field
                            public static function main( array $as ) { // VIOLATION - Formal
                                $r = 20 + $this->q; // VIOLATION - Local
                                for (int $i = 0; $i < 10; $i++) { // Not a Violation (inside FOR)
                                    $r += $this->q;
                                }
                            }
                        }

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

                        Avoid variables with short names like $db. Configured minimum length is 3.
                        Open

                              $db = $this->getDbConnection();

                        ShortVariable

                        Since: 0.2

                        Detects when a field, local, or parameter has a very short name.

                        Example

                        class Something {
                            private $q = 15; // VIOLATION - Field
                            public static function main( array $as ) { // VIOLATION - Formal
                                $r = 20 + $this->q; // VIOLATION - Local
                                for (int $i = 0; $i < 10; $i++) { // Not a Violation (inside FOR)
                                    $r += $this->q;
                                }
                            }
                        }

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

                        Avoid variables with short names like $db. Configured minimum length is 3.
                        Open

                                $db = $this->getDbConnection();

                        ShortVariable

                        Since: 0.2

                        Detects when a field, local, or parameter has a very short name.

                        Example

                        class Something {
                            private $q = 15; // VIOLATION - Field
                            public static function main( array $as ) { // VIOLATION - Formal
                                $r = 20 + $this->q; // VIOLATION - Local
                                for (int $i = 0; $i < 10; $i++) { // Not a Violation (inside FOR)
                                    $r += $this->q;
                                }
                            }
                        }

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

                        Avoid variables with short names like $db. Configured minimum length is 3.
                        Open

                            public $db = 'db';

                        ShortVariable

                        Since: 0.2

                        Detects when a field, local, or parameter has a very short name.

                        Example

                        class Something {
                            private $q = 15; // VIOLATION - Field
                            public static function main( array $as ) { // VIOLATION - Formal
                                $r = 20 + $this->q; // VIOLATION - Local
                                for (int $i = 0; $i < 10; $i++) { // Not a Violation (inside FOR)
                                    $r += $this->q;
                                }
                            }
                        }

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

                        Avoid variables with short names like $i. Configured minimum length is 3.
                        Open

                                $i = 0;

                        ShortVariable

                        Since: 0.2

                        Detects when a field, local, or parameter has a very short name.

                        Example

                        class Something {
                            private $q = 15; // VIOLATION - Field
                            public static function main( array $as ) { // VIOLATION - Formal
                                $r = 20 + $this->q; // VIOLATION - Local
                                for (int $i = 0; $i < 10; $i++) { // Not a Violation (inside FOR)
                                    $r += $this->q;
                                }
                            }
                        }

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

                        Avoid variables with short names like $db. Configured minimum length is 3.
                        Open

                                $db = $this->getDbConnection();

                        ShortVariable

                        Since: 0.2

                        Detects when a field, local, or parameter has a very short name.

                        Example

                        class Something {
                            private $q = 15; // VIOLATION - Field
                            public static function main( array $as ) { // VIOLATION - Formal
                                $r = 20 + $this->q; // VIOLATION - Local
                                for (int $i = 0; $i < 10; $i++) { // Not a Violation (inside FOR)
                                    $r += $this->q;
                                }
                            }
                        }

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

                        Avoid variables with short names like $db. Configured minimum length is 3.
                        Open

                                $db = $this->getDbConnection();

                        ShortVariable

                        Since: 0.2

                        Detects when a field, local, or parameter has a very short name.

                        Example

                        class Something {
                            private $q = 15; // VIOLATION - Field
                            public static function main( array $as ) { // VIOLATION - Formal
                                $r = 20 + $this->q; // VIOLATION - Local
                                for (int $i = 0; $i < 10; $i++) { // Not a Violation (inside FOR)
                                    $r += $this->q;
                                }
                            }
                        }

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

                        Avoid variables with short names like $db. Configured minimum length is 3.
                        Open

                                $db = $this->getDbConnection();

                        ShortVariable

                        Since: 0.2

                        Detects when a field, local, or parameter has a very short name.

                        Example

                        class Something {
                            private $q = 15; // VIOLATION - Field
                            public static function main( array $as ) { // VIOLATION - Formal
                                $r = 20 + $this->q; // VIOLATION - Local
                                for (int $i = 0; $i < 10; $i++) { // Not a Violation (inside FOR)
                                    $r += $this->q;
                                }
                            }
                        }

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

                        Avoid variables with short names like $db. Configured minimum length is 3.
                        Open

                                $db = $this->getDbConnection();

                        ShortVariable

                        Since: 0.2

                        Detects when a field, local, or parameter has a very short name.

                        Example

                        class Something {
                            private $q = 15; // VIOLATION - Field
                            public static function main( array $as ) { // VIOLATION - Formal
                                $r = 20 + $this->q; // VIOLATION - Local
                                for (int $i = 0; $i < 10; $i++) { // Not a Violation (inside FOR)
                                    $r += $this->q;
                                }
                            }
                        }

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

                        Avoid variables with short names like $db. Configured minimum length is 3.
                        Open

                                $db = $this->getDbConnection();

                        ShortVariable

                        Since: 0.2

                        Detects when a field, local, or parameter has a very short name.

                        Example

                        class Something {
                            private $q = 15; // VIOLATION - Field
                            public static function main( array $as ) { // VIOLATION - Formal
                                $r = 20 + $this->q; // VIOLATION - Local
                                for (int $i = 0; $i < 10; $i++) { // Not a Violation (inside FOR)
                                    $r += $this->q;
                                }
                            }
                        }

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

                        Avoid variables with short names like $db. Configured minimum length is 3.
                        Open

                                $db = $this->getDbConnection();

                        ShortVariable

                        Since: 0.2

                        Detects when a field, local, or parameter has a very short name.

                        Example

                        class Something {
                            private $q = 15; // VIOLATION - Field
                            public static function main( array $as ) { // VIOLATION - Formal
                                $r = 20 + $this->q; // VIOLATION - Local
                                for (int $i = 0; $i < 10; $i++) { // Not a Violation (inside FOR)
                                    $r += $this->q;
                                }
                            }
                        }

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

                        Avoid variables with short names like $ph. Configured minimum length is 3.
                        Open

                                        $ph = ', ' . VarDumper::export($placeholders);

                        ShortVariable

                        Since: 0.2

                        Detects when a field, local, or parameter has a very short name.

                        Example

                        class Something {
                            private $q = 15; // VIOLATION - Field
                            public static function main( array $as ) { // VIOLATION - Formal
                                $r = 20 + $this->q; // VIOLATION - Local
                                for (int $i = 0; $i < 10; $i++) { // Not a Violation (inside FOR)
                                    $r += $this->q;
                                }
                            }
                        }

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

                        There are no issues that match your filters.

                        Category
                        Status