Mamy aplikację napisaną w starym klimacie i chcemy przejść na php 5.4 a nie jesteśmy pewni czy wszystko będzie działać poprawnie? Ręcznie sprawdzać co jest grane to przy większej ilości kodu proszenie się o problemy, dlatego fajnie zautomatyzować proces.
Opcja 1
Wykorzystać crawler’a i przeglądać logi z błędami. Jasne, zadziała zakładając, że mamy dobrego crawler’a (trzeba pamiętać o obsłudze JS’a, jeżeli crawl’er jest napisany w php to musimy się pobawić SpiderMonkey – opis biblioteki znajdziecie na DevZone)
Opcja 2
Za pomocą pear’a instalujemy sobie PHP_CodeSniffer. Po poprawnej instalacji musimy odszukać katalog, w którym zainstalował się CodeSniffer, u mnie wygląda to tak:
ls -l `php-config –prefix`/lib/php/PHP/CodeSniffer
Za pomocą komendy php-config –prefix uzyskujemy katalog w którym znajdują się źródła PHP.
Output powyższej komendy na moim latopie:
total 336
-rw-r--r-- 1 root admin 26715 1 lip 04:06 CLI.php
drwxr-xr-x 13 root admin 442 1 lip 04:06 CommentParser
drwxr-xr-x 5 root admin 170 1 lip 04:06 DocGenerators
-rw-r--r-- 1 root admin 1009 1 lip 04:06 Exception.php
-rw-r--r-- 1 root admin 101016 1 lip 04:06 File.php
-rw-r--r-- 1 root admin 1433 1 lip 04:06 MultiFileSniff.php
-rw-r--r-- 1 root admin 1443 1 lip 04:06 Report.php
-rw-r--r-- 1 root admin 7712 1 lip 04:06 Reporting.php
drwxr-xr-x 13 root admin 442 1 lip 04:06 Reports
-rw-r--r-- 1 root admin 3074 1 lip 04:06 Sniff.php
drwxr-xr-x 13 root admin 442 9 sie 13:06 Standards
drwxr-xr-x 5 root admin 170 1 lip 04:06 Tokenizers
-rw-r--r-- 1 root admin 15821 1 lip 04:06 Tokens.php
Katalog z CodeSniffer’em jest dla nas o tyle istotny, bo musimy dograć do niego wzór standardu kodowania, na którym nam zależy. Standard o którym mowa znajdziecie na GitHub. Klonujemy repozytorium do katalogu Standards:
total 112
-rw-r--r-- 1 root admin 35839 1 lip 04:06 AbstractPatternSniff.php
-rw-r--r-- 1 root admin 6472 1 lip 04:06 AbstractScopeSniff.php
-rw-r--r-- 1 root admin 7976 1 lip 04:06 AbstractVariableSniff.php
drwxr-xr-x 5 root admin 170 1 lip 04:06 Generic
-rw-r--r-- 1 root admin 1090 1 lip 04:06 IncorrectPatternException.php
drwxr-xr-x 4 root admin 136 1 lip 04:06 MySource
drwxr-xr-x 5 root admin 170 1 lip 04:06 PEAR
drwxr-xr-x 3 root admin 102 1 lip 04:06 PHPCS
drwxr-xr-x 6 root admin 204 9 sie 13:06 <span style="color: #008000;">PHPCompatibility</span>
drwxr-xr-x 5 root admin 170 1 lip 04:06 Squiz
drwxr-xr-x 4 root admin 136 1 lip 04:06 Zend
Po wszystkim powinno to wyglądać tak jak powyżej ;-)
Teraz prosta komenda:
phpcs –standard=PHPCompatibility <ścieżka_do_kodu> –report-file=report.txt
Po chwili (w przypadku dużej ilości kodu może to potrwać deko długo) otrzymamy raport z przeprowadzonego testu, wszystkie informacje będą się znajdować w pliku określonym przez parametr –report-file