
09 Sty Jakość ma znaczenie – Code Sniffer
Code Sniffer podobnie jak PHPStan jest narzędziem, które pomaga nam dbać o jakość kodu. Często skupiając się na tym czy działa zapominamy o jakości, co z czasem może spowodować spory dług technologiczny. Pamiętam jak w jednej z firm, w której pracowałam, na korytarzu wisiał monitor, na którym cyklicznie zmieniały się różne dane statystyczne zebrane z projektów, które firma prowadziła. Jednym z parametrów był właśnie dług technologiczny. To nie jest tylko hasło, którym straszy się wszystkich, ale realny problem. Możemy Rozprawić się z nim rozprawić, dbając na co dzień o małe rzeczy. Wiem, że te elementy są zwykle nudne i upierdliwe. Dlatego jestem zwolenniczką, żeby usprawniać sobie takie działania dobrymi narzędziami i małymi automatyzacjami.
Podczas analizy Code Sniffera znajdziemy podobne błędy co w PHP Stanie. Jednak na pewno będzie ich więcej, ponieważ CS bardzo skupia się m. in. na odpowiednich komentarzach PHPDoc. Jest wręcz w tym temacie upierdliwy. Oczywiście jak każdą konfigurację możecie zmienić, nawet jeśli chodzi o standard, ponieważ ogólne standardy PSR2 są skonstruowane w dużej mierze dla projektów open source, co wymaga z założenia dużo bardziej dokładniejszej dokumentacji. Jeśli ktoś nie wie, co to za standard, to polecam poczytać chociaż na bardzo ogólnym poziomie. Często na rozmowach rekrutacyjnych zdarzają się właśnie pytania o te zasady.
Instalacja
Jak z każdą paczką instalujemy go z użyciem composera. Kod źródłowy możemy znaleźć na githubie.
composer require --dev "squizlabs/php_codesniffer"
Specjalnie dla Symfony
Jeśli projekt jest w Symfony mamy możliwość zainstalowania poszerzonej paczki, która wersyfikuje nie tylko standardy PSR2, ale także standardy samego Symfony.
composer require --dev escapestudios/symfony2-coding-standard:3.x-dev
Podobne paczki instnieją dla wielu innych frameworków czy narzędzi. Listę możecie znaleźć TUTAJ.
Jak używać Code Sniffer?
Po zainstalowaniu paczki w folderze bin/ projektu pojawią się dwa ważne skrypty: phpcs i phpcbf. Pierwszy z nich służy do analizy plików PHP, a drugi do plików JavaScript i CSS.
Aby uruchomić analizę należy wywołać jeden z wyżej wymienionych skryptów
bin/phpcs src
Zamiast całego folderu src/ możemy podać ścieżkę do konkretnego pliku bądź folderu.
Jeżeli chcemy uruchomić analizę z innym standardem niż PSR2 to wystarczy podczas uruchamiania dorzucić parametr –standard
bin/phpcs --standard=PSR2 src
Uruchomienie w Phingu
Super sprawą, którą zdecydowanie polecam jest odpalenie Code Sniffera przy buildzie aplikacji, może nawet jako reguła przed pushem, ale to już bardziej drastyczne rozwiązanie. Jednak z doświadczenia wiem, że nawet jeśli CS jest w projekcie, to nikt nie pamięta, żeby uruchomić analizę, a wrzucenie go na automat sprawi, że zespół będzie się bardziej pilnował.
<target name="check:php" description="PHPCS checker"> <phpcodesniffer haltonerror="true" standard="${project.basedir}/vendor/wimg/php-compatibility/PHPCompatibility" allowedFileExtensions="php" ignorePatterns="autoload.php,Test.php" showSniffs="false" showSources="false" showWarnings="true" verbosity="0"> <config name="testVersion" value="7.2" /> <fileset dir="${dir.src}"> <include name="**/*.php"/> </fileset> <fileset dir="${dir.component}"> <include name="**/*.php"/> </fileset> <formatter type="full" usefile="false"/> <formatter type="checkstyle" outfile="${dir.reports}/checkstyle-php.xml"/> </phpcodesniffer> </target>
Wsparcie w PHP Storm
Świetnym rozwiązaniem jest skonfigurowanie sobie CS w PHP Stormie jeśli z niego korzystacie. Jedną kombinacją klawiszy możecie potem odpalić automatyczną poprawę błędów w pliku. Oczywiście tych związanych z formatowaniem.
Żeby sprawnie skonfigurować standard, możemy to zrobić w composer.json, ponieważ domyślnie CS będzie działał ze standarderm PSR2. W composer.json należy dorzucić do scripts poniższą linijkę.
"scripts": { "phpcs": "phpcs --standard=PSR2" }
Zaczynamy od wejścia w Preferences > Languages & Frameworks > PHP > Quality Tools > Code Sniffer i wybrać plik phpcs, który zainstalowaliśmy.
Dodatkowo aby uruchomić podpowiedzi Editor > Insceptions > Quality Tools i włączamy opcje PHP Code Sniffer Validation wybierając z listy PSR2. Jeśli nie macie takiej opcji kliknijcie ikonkę synchronizacji obok selecta.

Jeśli masz jeszcze jakieś pytania do Code Sniffera to zadawaj je śmiało w komentarzu. A może znasz jakieś inne narzędzia do dbania o jakość kodu? Podziel się nimi.