Blog

Phan: Php için kod kalite kontrol aracı

Ilk olarak phan ile istanbulphp etkinliğinde tanıştım ve ardından ufak projelerde kullandım.

Şu anda Fizbot ürünü ve bazı projelerimizde kod kalitesinden ödün vermemek için kullanıyoruz.

Bilindiği üzere php,javascript,python gibi scripting dillerde size java,c# gibi dillerde olan object oriented programlama dayatması yoktur ve bu dayatma olmadığından kodunuzu siz ne kadar özenli ve düzenli yazmak isteseniz bile deadline’a yetiştireceğiniz için kod kalitesinden ödün verebilmektesiniz.Ayrıca scripting dillerde kodunuzun spagetti koda dönüşmesi çok kolaydır.


Peki.. nedir bu Phan ?

Phan, yanlış pozitifleri en aza indirmeyi tercih eden PHP için statik bir analiz aracıdır. Phan, doğruluktan ziyade yanlışlığı kanıtlamaya çalışır.
Örnek hatalı kod :
Phan ile code analizi sonucu çıkan hatalar :

Kurulum adımları:

Öncelikle phanı kurabilmek için php-ast’yi indirmemiz gerekmektedir.

pecl install ast

Komutu ile php-ast’yi indirdikten sonra php.ini dosyamıza 

extension=ast.so

Eklememiz gerekmektedir. Eklendiğinden emin olmak için aşağıdaki komut kullanılabilir.

php -m

Composer aracılığı ile Phan'ı yükleyelim

composer require phan/phan

Şimdi geldik phan configi oluşturmaya

./vendor/bin/phan --init --init-level=1

Phan Config Nedir ?

Phan ayarlarını değiştirebildiğimiz örnek olarak plugin ekleyip çıkarabildiğimiz dosyadır. --init-level=1 sıkı kontrol config dosyası üretirken --init-level=5 zayıf kontrol config dosyası üretmektedir.

Tüm phan config seçeneklerine aşağıdaki linkten bakabilirsiniz.

https://github.com/phan/phan/wiki/Phan-Config-Settings

Ayrıca tüm phan pluginlerine aşağıdaki linkten bakabilirsiniz.

https://github.com/phan/phan/tree/master/.phan/plugins

Basit phan config ayarları :

  1. target_php_version =>  ‘Hedeflenen php versiyonunu Örneğin 7.4’
  2. exclude_file_lists => ‘Phanı deaktif edeceğimiz bazı dosyalarda buraya file pathlerini ekleyebiliriz.’


Peki.. Şimdi geldi küçük bir test yapmaya 

./vendor/bin/phan --progress-bar -o analysis.txt

Komutu ile tüm projeyi analiz edebilir ve çıkan hataları oluşturulan analysis.txt aracılığı ile görüntüleyebiliriz.

Phanı tarayıcıda test etmek için https://phan.github.io/demo/ adresinden faydalanabilirsiniz.

Çıkan hata tiplerine ve nelerden kaynaklandığına https://github.com/phan/phan/wiki/Issue-Types-Caught-by-Phan adresinden bakabilirsiniz.

Ayrıca Phan’ı continuous integration toolları ile beraber kullanabilir, Grumphp ile kod daha commit atılmadan önce yazılımcının yaptığı hataları düzeltmesine ve en az hata ile pull request açılmasına olanak sağlayabilir zamandan (code-review süreçlerinden)  tasarruf edebilirsiniz.

Phan https://github.com/phan/phan

Grumphp https://github.com/phpro/grumphp


Fizbot Aylık Bültene Kayıt Olun

Fizbot Blog olarak sizlere en değerli bilgileri ulaştırmak için durmadan çalışıyoruz. Bu ve bunun gibi makalelerin e-postanıza aylık bülten olarak gelmesini istiyorsanız bize e-posta adresinizi vermeniz yeterli.