Generator/ClassGenerator.php

Summary

Maintainability
F
1 wk
Test Coverage

Function generateClassType has a Cognitive Complexity of 251 (exceeds 5 allowed). Consider refactoring.
Open

    public function generateClassType(array $properties, $typesReference, $typesDescription, ClassConfig $config)
    {
        $phpNamespace = $this->currentClass->getNamespace();
        if ($config->isInterface) {
            $this->info('Passo a interfaccia', [$this->currentClass->getName()]);
Severity: Minor
Found in Generator/ClassGenerator.php - About 5 days 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 generateClassType has 317 lines of code (exceeds 25 allowed). Consider refactoring.
Open

    public function generateClassType(array $properties, $typesReference, $typesDescription, ClassConfig $config)
    {
        $phpNamespace = $this->currentClass->getNamespace();
        if ($config->isInterface) {
            $this->info('Passo a interfaccia', [$this->currentClass->getName()]);
Severity: Major
Found in Generator/ClassGenerator.php - About 1 day to fix

    File ClassGenerator.php has 451 lines of code (exceeds 250 allowed). Consider refactoring.
    Open

    <?php
    
    namespace Yoghi\Bundle\MaddaBundle\Generator;
    
    /*
    Severity: Minor
    Found in Generator/ClassGenerator.php - About 6 hrs to fix

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

      class ClassGenerator extends AbstractFileGenerator
      {
          /**
           * [$currentClass description].
           *
      Severity: Minor
      Found in Generator/ClassGenerator.php by phpmd

      Avoid deeply nested control flow statements.
      Open

                                          if ($defaultValue != null) {
                                              /* @var $parameter \Nette\PhpGenerator\Parameter */
                                              $parameter->setDefaultValue(''.$defaultValue);
                                          }
      Severity: Major
      Found in Generator/ClassGenerator.php - About 45 mins to fix

        The method generateClassType() has an NPath complexity of 1469684588800. The configured NPath complexity threshold is 200.
        Open

            public function generateClassType(array $properties, $typesReference, $typesDescription, ClassConfig $config)
            {
                $phpNamespace = $this->currentClass->getNamespace();
                if ($config->isInterface) {
                    $this->info('Passo a interfaccia', [$this->currentClass->getName()]);
        Severity: Minor
        Found in Generator/ClassGenerator.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 generateClassType() has 379 lines of code. Current threshold is set to 100. Avoid really long methods.
        Open

            public function generateClassType(array $properties, $typesReference, $typesDescription, ClassConfig $config)
            {
                $phpNamespace = $this->currentClass->getNamespace();
                if ($config->isInterface) {
                    $this->info('Passo a interfaccia', [$this->currentClass->getName()]);
        Severity: Minor
        Found in Generator/ClassGenerator.php by phpmd

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

            public function generateClassType(array $properties, $typesReference, $typesDescription, ClassConfig $config)
            {
                $phpNamespace = $this->currentClass->getNamespace();
                if ($config->isInterface) {
                    $this->info('Passo a interfaccia', [$this->currentClass->getName()]);
        Severity: Minor
        Found in Generator/ClassGenerator.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

        TODO found
        Open

                                //TODO: .'|null' va messo in quale condizione?
        Severity: Minor
        Found in Generator/ClassGenerator.php by fixme

        Unused definition of variable $body
        Open

                    $body = '';
        Severity: Minor
        Found in Generator/ClassGenerator.php by phan

        Doc-block of $properties in generateClassType contains phpdoc param type string which is incompatible with the param type array declared in the signature
        Open

             * @param string      $properties       elementi possibili 'fields', 'extend', 'implements'
        Severity: Minor
        Found in Generator/ClassGenerator.php by phan

        Possibly zero references to use statement for classlike/namespace Method (\Nette\PhpGenerator\Method)
        Open

        use Nette\PhpGenerator\Method;
        Severity: Minor
        Found in Generator/ClassGenerator.php by phan

        TODO found
        Open

                                //TODO: usare "primitive type per determinare il corretto IF"
        Severity: Minor
        Found in Generator/ClassGenerator.php by fixme

        FIXME found
        Open

                                //FIXME: se sono in php7 ho anche gli altri elementi primitivi
        Severity: Minor
        Found in Generator/ClassGenerator.php by fixme

        Unused definition of variable $fieldClassFull
        Open

                        $fieldClassFull = '';
        Severity: Minor
        Found in Generator/ClassGenerator.php by phan

        FIXME found
        Open

                                //FIXME: strpos is better
        Severity: Minor
        Found in Generator/ClassGenerator.php by fixme

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

                $mc = $this->currentClass->addMethod('__construct');
        Severity: Minor
        Found in Generator/ClassGenerator.php by phpmd

        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