Każdy (dobry) programista chciałby, aby jego kod był najlepszy. Najważniejszą i podstawową rzeczą podczas pisania kodu, to prawidłowe nazywanie zmiennych, funkcji oraz klas. Tego jednak program nie jest w stanie sprawdzać (przynajmniej jak na razie nikt nie napisał, tak zaawansowanego analizatora kodu źródłowego). Możemy jednak zatrudnić parę skryptów aby utrzymać poprawne formatowanie kodu (tak, niektórzy z tym także mają problemy).
Na pierwszy ogień testów poszedł phpCodeBeautifier. Szybko jednak okazało się, że klamra otwierająca zawartość klasy musi znajdować się w tej samej linii co jej deklaracja. Istnieje opcja:
--space-before-start-angle-bracket
która pozwala wymusić jeden znak spacji przed „{„. Czemu autorzy nie pomyśleli o
--newline-before-start-angle-bracket
? Cieżko powiedzieć. Kod jest zamknięty, więc się tego nie dopisze samemu.
Istnieje jednak PHP_CodeSniffer (phpcs), który połączony z odpowiednim standardem sprawdzi składnie pliku.
Zainstalujmy „to” wszystko… Na początek instalacja samego phpcs:
apt-get install php-codesniffer
Aby aplikacja mogła sprawdzać formatowanie zgodne z symfony należy jeszcze doinstalować standard symfony. Można go znaleźć w repozytorium svn pod adresem http://subversion.assembla.com/svn/phpsymfony/Symfony%20Code%20sniffer%20standards/Symfony/.
cd /usr/share/php/PHP/CodeSniffer/Standards && sudo svn co http://subversion.assembla.com/svn/phpsymfony/Symfony%20Code%20sniffer%20standards/ .
Do przetestowania programu stwórzymy plik:
vim ~/test.php
z odpowiednią zawartością:
<?php
class TestKlasa
{
public function testFunction()
{
}
}
Uf, nareszcie możemy sprawdzić czy nasz kod jest poprawny:
phpcs --standard=Symfony ~/test.php
W wyniku czego otrzymamy:
FILE: ~/test.php -------------------------------------------------------------------------------- FOUND 3 ERROR(S) AND 0 WARNING(S) AFFECTING 2 LINE(S) -------------------------------------------------------------------------------- 2 | ERROR | Missing file doc comment 2 | ERROR | Missing class doc comment 4 | ERROR | Missing function doc comment --------------------------------------------------------------------------------
Działa! To znaczy są błędy, ale o to właśnie nam chodziło – aby je wykrywać. Poprawmy więc zawartość pliku:
<?php
/**
* Test file for PHP_CodeSniffer
*
* PHP versions 4 and 5
*
* @category Tests
* @package XX
* @author Marcin Dryka <marcin.dryka@xsolve.pl>
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @version SVN: 1
* @filesource
*/
/**
* TestKlasa
*
* @package XX
* @author Marcin Dryka <marcin.dryka@xsolve.pl>
* @version Release: 1
*/
class TestKlasa
{
/**
* testFunction
*
* @author Marcin Dryka <marcin.dryka@xsolve.pl>
* @access public
* @return void
*/
public function testFunction()
{
}
}
Przy tak wyglądającym pliku wynik działania phpcs jest pusty, brak błędów oznacza poprawnie sformatowany plik. Teraz potrzebna jest tylko silna wola, aby używać skryptu do sprawdzania wszystkich plików. Przy starszych aplikacjach będzie to dość kłopotliwe. Zdarzają się jednak pliki pisane od tak zwanego zera. Gdzie możemy w pełni stosować konwencje ustalone przez autorów symfony (i nie tylko).
Tags: code, codesniffer, format, formatter, php, php_codesniffer, symfony
Super sprawa – nic tylko zacząć używać.
The article is ver good. Write please more
Best you should make changes to the blog name Automatyczna inwigilacja kodu | xlab to something more specific for your blog post you write. I liked the blog post nevertheless.