Statyczna analiza kodu cz 2 – PHP_CodeSniffer

W tym poście będę kontynuował rozpoczętą w ostatnim wpisie prezentację narzędzi do analizy statycznej kodu PHP.

Dzisiaj zajmę się tylko jednym narzędziem – chodzi mianowicie o PHP_CodeSniffer.

Tak naprawdę jest to zestaw dwóch skryptów. Pierwszy z nich to phpcs – oznacza on fragmenty kodu, które nie są zgodne z ustawionym standardem kodowania zaś drugi skrypt nazywa się phpcbf koryguje te nieścisłości. PHP_CodeSniffer można zainstalować zarówno za pomocą Pear jak i Composera. Sam projekt można znaleźć na GitHubie pod tym adresem.

phpcs

Przyszedł czas na krótką prezentację możliwości PHP_CodeSniffer. W tym celu stworzyłem plik TestSa.php zawierający klasę o tej samej nazwie:

Ja zainstalowałem PHP_CodeSniffera lokalnie w projekcie więc w CLI wpisuję następujące polecenie:

Zamiast w konsoli wpisywać osobno polecenie dla każdego pliku (a w projekcie może być  ich naprawdę dużo) można zamiast adresu pliku podać adres katalogu, w którym znajduje się projekt.  Efekt działania tego polecenia jest podobny do tego na obrazku poniżej:

phpcs_1b

Jak widać PHP_CodeSniffer znalazł 5 błędów  w pliku. Pytanie jednak na jakiej podstawie stwierdził, że coś jest nie tak? Otóż domyślnie phpcs sprawdza czy kod jest zgodny ze standardem PEAR. Nie ma problemu z ustawieniem innego standardu podług, którego plik będzie sprawdzany a możemy to zrobić dodając –standard=PSR2. Przykład poniżej:

phpcs_2a

Tym razem phpcs stwierdził, że w pliku są 4 błędy przez które nie można stwierdzić, że formatowanie kodu jest zgodne ze standardem PSR – 2. Skąd jednak wiadomo jakie standardy są dostępne w phpcs? Oprócz tego, że można taką informację znaleźć w dokumentacji to listę dostępnych w phpcs standardów można wyświetlić wydając polecenie:

W każdej chwili można także stworzyć swój własny standard kodowania lub doinstalować dodatkowy. Aby doinstalować nowy standard kodowania (powiedzmy Symfony2) należy przede wszystkim zainstalować dany standard:

Następnym krokiem będzie dodanie standardu do samego phpcs:

Po wydaniu powyższego polecenia powinna pojawić się informacja:

Config value „installed_paths” added successfully

Aby upewnić się że standard jest faktycznie zainstalowany sprawdzamy czy jest na liście za pomocą polecenia:

Jeśli standard jest widoczny na wyświetlonej liście to możemy rozpocząć sprawdzanie projektu z użyciem nowo zainstalowanego standardu i w tym celu wpisujemy w CLI następujące polecenie:

Jego efekt jest widoczny na poniższym screenie:

phpcs4

Jak widać muszę sporo popracować nad tym kodem 😉

phpcbf

Pewnie zastanawialiście się co oznaczają te znaki [X] w trzeciej kolumnie wyniku działania phpcs? Otóż jest to informacja o tym jakie błędy phpcbf może poprawić. Posługiwać się tym skryptem możemy w zasadzie w dokładnie ten sam sposób jak phpcs. Tak więc gdy wywołamy bardzo podobne polecenie:

Efekt działania tego polecenia jest następujący:

phpcsf1

Gdy teraz wywołamy ponownie polecenie:

Pojawi się informacja o tym że nadal są błędy w pliku ale jest ich już tylko 6. Te które były oznaczone jako [X] zostały poprawione a zostały wypisane tylko te które  phpcbf nie jest w stanie poprawić.

… na zakończenie

… napiszę, że te narzędzia najlepiej sprawdza się w połączeniu z jakimś rozszerzeniem do edytora, w którym piszecie kod. Dzięki temu będzie  na bierząco wyświetlane jakie fragmenty kodu należy poprawić a korygowanie kodu będzie wygodnie dostępne pod skrótem klawiszowym.

To rzecz jasna nie jest koniec i następnym poście przedstawię PHP Mess Detector. Do przeczytania już wkrótce!

Posty które mogą Cię zainteresować:

2 Responses to Statyczna analiza kodu cz 2 – PHP_CodeSniffer
  1. gosczwwy Odpowiedz

    Dzieki Michal!

    • Michał Janicki Odpowiedz

      Cała przyjemność po mojej stronie!

Dodaj komentarz

Your email address will not be published. Please enter your name, email and a comment.