Hallo liebe Kollegen,
I möchte mit euch ein bisschen Erfahrung teilen. Ich habe einen
Statischen Analysator für PHP phpstan installiert. Ich finde es
klasse und ich denke das Tool kann uns helfen weniger Bugs zu
programmieren.
1. Installieren
composer global require "phpstan/phpstan"
oder mit Docker
docker pull phpstan/phpstan
2. Starten
phpstan analyze -l max -a ./tests/Bootstrap.php
modules/xhotels/classes/Provider/DTS/Reader
oder als Container
docker run --rm -v `pwd`:/app phpstan/phpstan analyse -l 5 -a
tests/Bootstrap.php
modules/xhotels/classes/Provider/DTS/Reader/Prices.php
Die -l Option kann ein Analyse Level setzen (1-7|max). Mit der
Option -a definiert man eine (oder mehrere) Bootrstrap Datei, diese
für Tests passt gut.
Ich habe gemerkt, dass diese Versionen unterschiedliche Probleme
finden. Vielleicht liegt es an der Version.
3. Beispiel Ausgabe
------
-----------------------------------------------------------------
Line
Reader/Prices.php
------
-----------------------------------------------------------------
208 Variable $allowed in isset() always exists and is
not nullable.
------
-----------------------------------------------------------------
[ERROR] Found 1
error
Phpstan hat die Annotations analysiert und festgestellt, dass im
Code
if (!isset($allowed)) $allowed immer ein String
ist und daher ist die Bedingung immer True. Das ist ein Bug.
Noch Beispiel:
------
--------------------------------------------------------------------------------------
Line
RatePlan.php
------
--------------------------------------------------------------------------------------
169 Strict comparison using !== between false and
int|null will always evaluate to true.
Die Funktion gibt int|null zurück, es wird aber geprüft ob das
Ergebnis nicht False ist. Das ist auch ein Bug.
Sehr viel wird gemeldet, wenn man in Annotations kein Parameter Typ
angegeben hat. Es nervt ein bisschen, aber ist einfach zu fixen und
im Endeffekt kann das Tool damit besser den Code analysieren und
sicherer Bugs finden.
Probiert es aus!
VG
Viktoras
--
Mit freundlichen Grüßen
Viktoras Bezaras
- Entwickler -
________________________________________________________
TraSo GmbH
Nonnenstraße 42
D-04229 Leipzig
Tel.: +49 341 355 740 44
E-Mail: v.bezaras@traso.de
Internet: http://www.traso.de
________________________________________________________
Geschäftsführer: Haiko Gerdes
Handelsregister: Amtsgericht Leipzig, HRB 21850