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 Codeif
(!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(a)traso.de
Internet: http://www.traso.de
________________________________________________________
Geschäftsführer: Haiko Gerdes
Handelsregister: Amtsgericht Leipzig, HRB 21850