Statische Codeanalyse für Phpstorming und Intellij IDEE.
Öffnen Sie die IDE zu Settings->Plugins->Marketplace -Suche nach dem PhpClean . Drücken Sie die Taste install .
- Inspektionen
- Aktionen
Erkennt Zuordnung und Vergleichender Operatoren in einer Erklärung.
while ( false !== $ current = ldap_next_entry ( $ con , $ current )) {
// ^^^ Hard to read this statements
yield $ this -> getSingleEntry ( $ con , $ current );
}Klassen mit gleichem Namen in verschiedenen Namespaces können verwirrt werden. (Standardmäßig deaktiviert)
namespace App {
class User {}; // <- Class name collision with CliUser
}
namespace Cli {
class User {}; // <- Class name collision with AppUser
}Sie können einige PHPDOC -Tags in Ihrem Projekt abbauen.
Diese Inspektion erkennt die Verwendung globaler Variablen.
echo $ _GET [ ' name ' ]; // <-- Global variable usage Geschützte Methoden können in privat umgewandelt werden.
final class User {
protected function name () {} // <-- Method can be private
}Methoden sollten geschlossen werden (Methode oder Klasse endgültig machen)
class User {
public function name (): string { // <-- Method should be final
return '' ;
}
}Geschützte Methoden machen unsere Klassen offener. Schreiben Sie nur private oder öffentliche Methoden.
Geben Sie immer den Parametertyp an. Dies ist eine gute Praxis.
class User {
public function withName ( $ name ) {} // <-- Missing parameter type
}Geben Sie immer den Ergebnistyp der Funktion an.
function phrase () { // <-- Missing return type
return ' hi ' ;
}Überprüfen Sie, ob übergeordnete Eigenschaften veraltet sind.
class A {
/** @deprecated */
protected $ name ;
}
class B extends A {
protected $ name ; // <-- Warn about deprecation
} Mit @final doc -Tag markierte Klassen sollten nicht erweitert werden
/**
* @final
*/
class User {};
class Admin extends User {}; // <- Prohibited extentions of @final class User. Eigenschaften, die im Konstruktor nicht initialisiert werden, sollten als nullbar kommentiert werden.
class User {
/** @var string */ // <-- Property is not annotated correctly. Add null type
private $ name ;
public function getName () { }
public function setName ( string $ name ) { }
}Geschützte Eigenschaften können in privat umgewandelt werden.
class User {
protected $ user ; // <-- Property can be private
} Typen, die im PHP angegeben sind
/**
* @return void // <-- Redundant PhpDoc tag
*/
function show ( string $ message ): void {}Automatisches Typ Casting erkennen
class Hello {
public function randomize (): self { /* ... */ return $ this ; }
public function __toString () { return ' Hi ' ; }
}
echo ( new Hello ())-> randomize (); // <-- Deprecated __toString call Verwenden Sie Assert, um den variablen Typ anstelle des DOC -Kommentars zu überprüfen.
/** @var User $user */ // <-- Use assert to check variable type
assert ( $ user instanceof User); Ersetzen Sie new ClassName() durch ausgewählten benannten Konstruktor.
class Text {
public function __construct ( string $ name ){ }
public static fromName (string $ n ){}
} Rufen Sie refactor this auf den Methodennamen fromName und alle neuen Aussagen mit dieser Klasse werden geändert
new Text ( ' User ' ) // old code
Text:: fromName ( ' User ' ) // new code