Standardy kodowania z PHP_CodeSniffer

Pisząc kod w jakimkolwiek języku programowania, dobrze jest stosować określone standardy: jednakowe formatowanie, nazewnictwo zmiennych oraz funkcji, rodzaj komentarzy, sposób dokumentowania i wiele innych. Wybranie jednego schematu szczególnie przydaje się w grupie programistów, dzięki czemu łatwiej nam wspólnie pracować nad kodem. W dbaniu o trzymanie się standardu może nam pomóc PHP_CodeSniffer.

Jest to bardzo przydatne narzędzie, które wskaże nam odstępstwa od standardu w naszym kodzie, podobnie jak walidator. Możemy wybrać jeden z kilku dostępnych schematów (PEAR, Zend, PHPCS, Squiz, MySource) lub stworzyć własny. Oczywiście PHP_CodeSniffer nie pomoże nam w przypadku normalnych błędów programistycznych.

Przykładowe wywołania PHP_CodeSniffer można zobaczyć na poniższym filmiku:

Instalacja

PHP_CodeSniffer możemy bardzo prosto zainstalować przy użyciu PEAR, korzystając z polecenia:

pear install PHP_CodeSniffer

Możemy także pobrać narzędzie ze strony projektu i zainstalować je sami. Należy wtedy pamiętać, aby phpcs było dostępne z każdego miejsca (dopisane do ścieżki systemowej), a katalog z bibliotekami PHP był dopisany do include_path.

Przykłady użycia

Narzędzie posiada dość duże możliwości konfiguracyjne. W zależności od przekazywanych parametrów możemy zmieniać standardy kodowania, rodzaj wynikowego raportu, pomijać sprawdzanie wybranych plików lub katalogów, eksportować dane do wybranego formatu itd. Poniżej przedstawię tylko wybrane przykłady użycia PHP_CodeSniffer, po bardziej szczegółowe informacje na temat konfiguracji odsyłam do dokumentacji.

Najprostszym sposobem wywołania jest podanie ścieżki do katalogu (lub pojedynczego pliku), który chcemy sprawdzić pod kątem spełniania standardów kodowania:

phpcs /path/to/php/sources

Jak już wcześniej pisałem, PHP_CodeSniffer obsługuje kilka różnych standardów. Możemy je zmieniać, podając parametr standard w wywołaniu. Jeśli zostanie on pominięty (jak w pierwszym przykładzie), wykorzystany zostanie domyślny, określony w konfiguracji. Jeśli chcemy sprawdzić nasz projekt, a znajdują się w nim zewnętrzne biblioteki, możemy je pominąć używając parametru ignore:

phpcs --standard=ZEND --ignore=directory  path/to/php/sources

W przypadku, gdy chcemy otrzymać jedynie podsumowania zgodności naszych kodów z obowiązującymi standardami, możemy skorzystać z parametru report=summary. Dzięki temu wyświetlona zostanie tylko liczba błędów oraz ostrzeżeń w naszym projekcie.

phpcs --standard=PEAR --report=summary /path/to/php/sources

Wyniki naszych raportów możemy także eksportować do różnych formatów, np. XML lub CSV:

phpcs --report=checkstyle /path/to/code
phpcs --report=csv /path/to/code

Integracja z Eclipse

Wszyscy, którzy chcą korzystać z zalet PHP_CodeSniffer i używają Eclipse, mogą go łatwo zintegrować z programem. Dzięki temu w trakcie pisania kodu wszystkie nasze odstępstwa od standardu będą oznaczane na bieżąco.

W tym celu musimy na początek zainstalować zestaw narzędzi PHP Tool Integration. Aby to zrobić, należy z menu Eclipse wybrać Help -> Install new software… i dodać nowe źródło: http://www.phpsrc.org/eclipse/pti/. Po akceptacji licencji i zainstalowaniu dodatków, musimy zrestartować Eclipse.

Następnie należy skonfigurować odpowiednio wtyczkę. Trzeba w tym celu z menu wybrać Window > Preferences i rozwinąć Grupę PHP > PHP Tools > PHP CodeSniffer. W okienku CodeSniffer Standards musimy wybrać domyślny standard i podać lokalizację pliku ruleset.xml z jego definicją (np. …\CodeSniffer\Standards\Zend).

Eclipse i PHP CodeSniffer

Jeśli chcemy automatycznie dopasować nasze pliki PHP do określonego standardu, przydatna będzie rozszerzenie FormatterPrototype. Wystarczy je pobrać i skopiować do katalogu dropins w Eclipse. Następnie z menu możemy wybrać  Window > Preferences i rozwinąć grupę PHP > CodeStyle > Formatter. Dzięki wtyczce opcje zostały rozbudowane o szczegółowe ustawienia formatowania kodu PHP, które możemy dopasować wedle swojego uznania. Od tego momentu podczas programowania będziemy mogli skorzystać z kombinacji klawiszy CTRL + SHIFT + F, a nasz kod zostanie automatycznie sformatowany według naszych ustawień.

Eclipse Formatter Prototype

Dodaj komentarz