PHP 5.4 sprawdzanie kompatybilności kodu

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:


13:43:12-paramah@lobo:~$ ls -l `php-config --prefix`/lib/php/PHP/CodeSniffer
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:


13:43:17-paramah@lobo:~$ ls -l `php-config --prefix`/lib/php/PHP/CodeSniffer/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 PHPCompatibility
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

0 thoughts on “PHP 5.4 sprawdzanie kompatybilności kodu

  1. What i do not realize is actually how you are not really a lot more well-favored than you may be now. You are very intelligent. You realize therefore considerably relating to this subject, made me in my view believe it from a lot of varied angles. Its like women and men are not interested until it is one thing to accomplish with Girl gaga! Your own stuffs nice. All the time take care of it up!

  2. I am really loving the theme/design of your weblog. Do you come across any web browser compatibility situations? Some of the site audience have complained regarding my vshare download ios blog not working the right way in Internet Explorer though seems excellent in Safari. Do you have any kind of advice to assist correct this problem?

  3. I’m curious to know what site system you have been utilizing? I’m having some minor security issues with our most recent site on intercom system installation NY and I would like to find one thing far more secure. Have you got any strategies?

Leave a Reply

Your email address will not be published. Required fields are marked *