fbpx

Jakość ma znaczenie – Code Sniffer

code sniffer

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.

Zgarnij darmowy ebook i cotygodniową dawkę wiedzy

.
Magdalena Limanówka-Kuciel
magdalena@panizkomputerem.pl

Jestem programistką, która lubi mieć ręce pełne roboty. Do życia potrzebuje komputera z internetem i kubka gorącej kawy. Więcej na stronie o mnie.