PHP-Code analysieren
Letzte Woche ging es um statische Code-Analyse in JavaScript. Das geht natürlich auch in PHP, wird aber leider nicht direkt durch PhpStorm mitgeliefert.
Das Standard-Tool für statische Code-Analyse in PHP ist PhpStan. PhpStan lässt sich wunderbar zum Beispiel in CommitHooks oder in den CI-Server Deiner Wahl einbauen.
Diese Woche machen wir uns es erst mal einfach, und installieren ein passendes Plugin:
Das Plugin “Php Inspections” gibt es in einer kostenlosen/freien Variante, und in einer bezahlten Variante mit Support (EA Ultimate).
Und prompt finden sich interessante Dinge:
scandir sortiert standardmäßig die gefundenen Dateien. Oft braucht man das gar nicht, und das kostet bei großen Verzeichnissen unnötig Zeit, vor allem wenn das Directory-Listing bereits im Cache steht und schnell da ist. Hier sollte man sich also Gedanken darüber machen, ob man das wirklich braucht, und dann entsprechend als zweiten Parameter SCANDIR_SORT_NONE
angeben. Oder eben Ascending/Descending.
Ein netter Bug in einem Skript fiel mir dadurch auch auf:
Irgendwie war der Aufruf in die foreach-Schleife gerutscht. Die Codeanalyse sieht: Der macht gar nichts mit den Transaktionen, über die iteriert wird. Der Aufruf wird somit viel zu oft gemacht!
Auch das macht Sinn – soll in_array hier mit == oder mit === vergleichen?
Total sinnvoll – hier kann man einfach -4 nutzen!
Automatisch korrigieren
Das wirklich Coole ist, viele Inspections haben einen AutoFix, also <Alt>-<Enter>, <Enter>, und der Code ist gefixt. Wie man das nicht nur an einer Stelle, sondern denselben Bug an vielen Stellen ändert, dazu komme ich in den nächsten Wochen dann nochmal…
Comments