Showing 22 of 22 total issues
Avoid excessively long variable names like $indentForChangedItems. Keep variable name length under 20. Open
$indentForChangedItems = str_repeat(' ', 4 * $level - 2);
- Read upRead up
- Exclude checks
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
Method renderPrettyDiff
has 30 lines of code (exceeds 25 allowed). Consider refactoring. Open
function renderPrettyDiff($tree)
{
$iter = function ($node, $level = 1) use (&$iter) {
return array_map(function ($item) use ($level, $iter) {
['key' => $key, 'type' => $type, 'oldValue' => $oldValue, 'newValue' => $newValue] = $item;
Method makeNode
has 5 arguments (exceeds 4 allowed). Consider refactoring. Open
function makeNode(string $key, string $type, $oldValue, $newValue, array $children = [])
Missing class import via use statement (line '16', column '23'). Open
throw new \Exception("Unknown format: {$format}");
- Read upRead up
- Exclude checks
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
Missing class import via use statement (line '27', column '31'). Open
throw new \Exception("Undefined type: {$type}");
- Read upRead up
- Exclude checks
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
Missing class import via use statement (line '20', column '27'). Open
throw new \Exception("Unknown format: {$format}");
- Read upRead up
- Exclude checks
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
Missing class import via use statement (line '31', column '31'). Open
throw new \Exception("Undefined type: {$type}");
- Read upRead up
- Exclude checks
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
Avoid using static access to class '\Symfony\Component\Yaml\Yaml' in method 'parse'. Open
return Yaml::parse($data, Yaml::PARSE_OBJECT_FOR_MAP);
- Read upRead up
- Exclude checks
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
Call to undeclared function \collect()
Open
$keys1 = collect($data1)->keys()->all();
- Exclude checks
Define and throw a dedicated exception instead of using a generic one. Open
throw new \Exception("Undefined type: {$type}");
- Read upRead up
- Exclude checks
If you throw a general exception type, such as ErrorException, RuntimeException, or Exception in a library or framework, it forces consumers to catch all exceptions, including unknown exceptions that they do not know how to handle.
Instead, either throw a subtype that already exists in the Standard PHP Library, or create your own type that derives from Exception.
Noncompliant Code Example
throw new Exception(); // Noncompliant
Compliant Solution
throw new InvalidArgumentException(); // or throw new UnexpectedValueException();
See
- MITRE, CWE-397 - Declaration of Throws for Generic Exception
- CERT, ERR07-J. - Do not throw RuntimeException, Exception, or Throwable
Reference to constant PARSE_OBJECT_FOR_MAP
from undeclared class \Symfony\Component\Yaml\Yaml
Open
return Yaml::parse($data, Yaml::PARSE_OBJECT_FOR_MAP);
- Exclude checks
Call to undeclared function \Funct\Collection\union()
Open
$keys = union($keys1, $keys2);
- Exclude checks
Call to undeclared function \Funct\Collection\flattenAll()
Open
$flattened = flattenAll($iter($tree));
- Exclude checks
Reduce the number of returns of this function 5, down to the maximum allowed 3. Open
return array_map(function ($item) use ($level, $iter) {
- Read upRead up
- Exclude checks
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; }
Call to undeclared function \collect()
Open
$keys = collect($value)->keys()->all();
- Exclude checks
Call to method parse
from undeclared class \Symfony\Component\Yaml\Yaml
Open
return Yaml::parse($data, Yaml::PARSE_OBJECT_FOR_MAP);
- Exclude checks
Reduce the number of returns of this function 5, down to the maximum allowed 3. Open
return array_map(function ($item) use ($iter, $ancestry) {
- Read upRead up
- Exclude checks
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; }
Call to undeclared function \collect()
Open
$keys2 = collect($data2)->keys()->all();
- Exclude checks
Define and throw a dedicated exception instead of using a generic one. Open
throw new \Exception("Unknown format: {$format}");
- Read upRead up
- Exclude checks
If you throw a general exception type, such as ErrorException, RuntimeException, or Exception in a library or framework, it forces consumers to catch all exceptions, including unknown exceptions that they do not know how to handle.
Instead, either throw a subtype that already exists in the Standard PHP Library, or create your own type that derives from Exception.
Noncompliant Code Example
throw new Exception(); // Noncompliant
Compliant Solution
throw new InvalidArgumentException(); // or throw new UnexpectedValueException();
See
- MITRE, CWE-397 - Declaration of Throws for Generic Exception
- CERT, ERR07-J. - Do not throw RuntimeException, Exception, or Throwable
Define and throw a dedicated exception instead of using a generic one. Open
throw new \Exception("Undefined type: {$type}");
- Read upRead up
- Exclude checks
If you throw a general exception type, such as ErrorException, RuntimeException, or Exception in a library or framework, it forces consumers to catch all exceptions, including unknown exceptions that they do not know how to handle.
Instead, either throw a subtype that already exists in the Standard PHP Library, or create your own type that derives from Exception.
Noncompliant Code Example
throw new Exception(); // Noncompliant
Compliant Solution
throw new InvalidArgumentException(); // or throw new UnexpectedValueException();
See
- MITRE, CWE-397 - Declaration of Throws for Generic Exception
- CERT, ERR07-J. - Do not throw RuntimeException, Exception, or Throwable