W codziennej pracy z kodem, warto dbać o jego porządek. W tym celu stworzone zostały różne standardy, które ułatwiają programiście edycję nie tylko swojego kodu, lecz także stworzonego przez kogoś innego. Stworzone zostały różne narzędzia do statycznej analizy kodu PHP, które ułatwiają zapanowanie nad mogącym się pojawić bałaganie w kodzie, wykrywają nieużywane funkcje, czy też sprawdzają kod pod kątem utrzymania go według określonego standardu. Jako, że nie lubię nudy, dzisiaj nadszedł dzień na zapoznanie się z ciekawym narzędziem (a właściwie jego instalacją), jakim jest PHP Code Sniffer. Umożliwia on wykrywanie naruszeń określonych standardów kodowania w językach PHP, JS, CSS. Ponieważ na co dzień korzystam z edytora Netbeans, postanowiłem więc sprawdzić, na ile będzie to użyteczne dla mnie zestawienie.
PHP Code Sniffer na Windows 10 najwygodniej zainstalować za pomocą PEAR. Ponieważ PEAR zawarty jest już w standardowej instalacji XAMPP, którą posiadam, pokażę na tym przykładzie, jak wykonać prawidłową instalację, oraz jak rozwiązać problemy, które mogą (lecz nie muszą) pojawić się podczas tego procesu. Oczywiście nie musisz mieć zainstalowanego XAMPPa, może to być inny serwer, ważne byś miał zainstalowany PHP, sposób postępowania powinien być podobny.
A więc, uruchamiam konsolę wiersza poleceń (cmd) i przechodzę do folderu C:\xampp\php\ (jeśli masz XAMPPa zainstalowanego w innej lokalizacji, przejdź do folderu, w którym znajduje się podkatalog \php\).
Uruchamiam instalację PHP Code Sniffer poleceniem:
pear install PHP_CodeSniffer
lub
pear install --alldeps PHP_CodeSniffer
Jak widać próba utworzenia folderu zakończyła się błędem. Prawdopodobnie (z tego co na szybko udało mi się odnaleźć) problem spowodowany jest z niektórymi wersjami XAMPP pod Windows. Rozwiązaniem, które powinno rozwiązać powyższy problem, jest wykonanie poleceń:
pear config-set doc_dir C:\xampp\php\pear pear config-set cfg_dir C:\xampp\php\pear pear config-set data_dir C:\xampp\php\pear pear config-set test_dir C:\xampp\php\pear pear config-set www_dir C:\xampp\php\pear
Następnie ponowne wykonanie polecenia
pear install --alldeps PHP_CodeSniffer
Co, jak widać pomogło:
Na wszelki wypadek sprawdzam, czy instalacja się powiodła, poleceniem:
phpcs -i
W wyniku czego otrzymuję informacje na temat obsługiwanych standardów kodowania wspieranych przez zainstalowanego właśnie PHP Code Sniffer:
Dodatkowo instaluję narzędzie pomocne do uporządkowania kodu PHP Mess Detector:
pear channel-discover pear.pdepend.org pear channel-discover pear.phpmd.org pear install phpmd/PHP_PMD
Sprawdzam jeszcze dla pewności ścieżki do plików wykonywalnych, za pomocą poleceń:
where phpcs where phpcbf where phpmd
W folderze c:\xampp\php\pear\ zostały utworzone m.in. katalogi:
I to już wszystko. Jeśli nie wystąpią inne błędy, to cały proces instalacji zajmie ci mniej czasu, niż przeczytanie tego artykułu. W kolejnym artykule opiszę, w jaki sposób skonfigurować Netbeans, by obsługiwał PHP Code Sniffer.
A właściwie nie wszystko… Podczas sprawdzania obsługiwanych standardów kodowania nie został wymieniony WordPress. Ponieważ od jakiegoś czasu działam na tej platformie, przydałoby się więc, by jego standardy obsługiwał PHP Code Sniffer. Na szczęście dostępne jest repozytorium GITa, które zawiera zestaw reguł napisanych pod PHP Code Sniffer (https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards). Jedynie co trzeba teraz zrobić, to pobrać z repozytorium GITa paczkę z zestawem standardów kodowania WordPressa i wskazać na ten zestaw w PHP Code Sniffer. A więc, do dzieła.
Paczkę ściągam do folderu c:\wpcs za pomocą polecenia:
git clone -b master https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git wpcs
Instalacja przebiegła bez problemów:
Paczka z repozytorium została pobrana do folderu c:\wpcs, więc tą ścieżkę należy dodać do PHP Code Sniffer:
phpcs --config-set installed_paths c:\wpcs
Teraz to już na prawdę wszystko. W kolejnym artykule postaram się opisać integrację Netbeans z PHP Code Sniffer i wrzucić jakieś screeny z wynikami działania Code Sniffera przy jakimś testowym projekcie.