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()]);
- Read upRead up
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()]);
File ClassGenerator.php
has 451 lines of code (exceeds 250 allowed). Consider refactoring. Open
<?php
namespace Yoghi\Bundle\MaddaBundle\Generator;
/*
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].
*
- Exclude checks
Avoid deeply nested control flow statements. Open
if ($defaultValue != null) {
/* @var $parameter \Nette\PhpGenerator\Parameter */
$parameter->setDefaultValue(''.$defaultValue);
}
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()]);
- Read upRead up
- Exclude checks
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()]);
- Exclude checks
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()]);
- Read upRead up
- Exclude checks
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?
- Exclude checks
Unused definition of variable $body
Open
$body = '';
- Exclude checks
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'
- Exclude checks
Possibly zero references to use statement for classlike/namespace Method
(\Nette\PhpGenerator\Method)
Open
use Nette\PhpGenerator\Method;
- Exclude checks
TODO found Open
//TODO: usare "primitive type per determinare il corretto IF"
- Exclude checks
FIXME found Open
//FIXME: se sono in php7 ho anche gli altri elementi primitivi
- Exclude checks
Unused definition of variable $fieldClassFull
Open
$fieldClassFull = '';
- Exclude checks
FIXME found Open
//FIXME: strpos is better
- Exclude checks
Avoid variables with short names like $mc. Configured minimum length is 3. Open
$mc = $this->currentClass->addMethod('__construct');
- Read upRead up
- Exclude checks
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;
}
}
}