Statische Code-Analyse (Part 2)

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…

About the author

IT-Teamleiter bei CHECK24.
Hasst es, Dinge selber zu tun, die auch automatisch gehen.
Will nie wieder Code von Hand formatieren müssen.
Will schon beim Schreiben merken, wenn er Blödsinn macht, nicht erst im Fehlerlog nach dem Deployment.

Comments

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen