CodeSniffer (PHP_CodeSniffer) Nedir, Nasıl Kullanılır?

CodeSniffer (PHP_CodeSniffer), PHP kodunun belirlenen kodlama standartlarına (PSR-12, WordPress Coding Standards gibi) uyup uymadığını otomatik olarak kontrol eden açık kaynak bir araçtır. İki komuttan oluşur: phpcs kuralları ihlal eden satırları listeler, phpcbf ise otomatik düzeltilebilen hataları kendisi düzeltir. Projeye Composer ile composer require --dev squizlabs/php_codesniffer komutuyla kurulur ve ekip içinde kodun aynı düzende yazılmasını sağlar.
- phpcs: Kodlama standardı hatalarını bulur.
- phpcbf: Düzeltilebilir hataları otomatik düzeltir.
- Standartlar: PSR-12, PSR-1, PEAR, Squiz, Zend ve WordPress (WPCS).
- Yapılandırma: Proje köküne
phpcs.xmldosyası. - Bakım: Proje 2023’ten beri PHPCSStandards ekibi tarafından geliştiriliyor; Composer paket adı değişmedi.
CodeSniffer Nasıl Kurulur?
Projenizin klasöründe Composer ile geliştirme bağımlılığı olarak kurun:
composer require --dev squizlabs/php_codesniffer
Kurulumdan sonra vendor/bin/phpcs ve vendor/bin/phpcbf komutları kullanılabilir. Bilgisayar genelinde kullanmak isterseniz composer global require ile de kurabilirsiniz.
CodeSniffer Nasıl Kullanılır?
vendor/bin/phpcs --standard=PSR12 src/
vendor/bin/phpcbf --standard=PSR12 src/
vendor/bin/phpcs -i
- Birinci komut
src/klasörünü PSR-12 standardına göre kontrol eder. - İkinci komut otomatik düzeltilebilen hataları ([x] işaretli olanlar) düzeltir.
- Üçüncü komut kurulu standartları listeler.
Çıktıdaki her satırda dosya, satır numarası, hata türü (ERROR veya WARNING) ve açıklama yer alır. Değişkenlerin adlandırılması gibi bazı kurallar otomatik düzeltilemez; bunları elle düzeltmeniz gerekir.
phpcs.xml ile Proje Kuralları
Her seferinde parametre yazmamak için proje köküne phpcs.xml dosyası ekleyin:
<?xml version="1.0"?>
<ruleset name="Proje Kuralları">
<file>src</file>
<exclude-pattern>vendor/*</exclude-pattern>
<arg name="extensions" value="php"/>
<rule ref="PSR12"/>
<rule ref="Generic.Files.LineLength">
<properties>
<property name="lineLimit" value="120"/>
</properties>
</rule>
</ruleset>
Bu dosya varsa yalnızca vendor/bin/phpcs yazmanız yeterlidir. Bir satırda kuralı geçici olarak devre dışı bırakmak için // phpcs:ignore yorumu kullanılabilir.
Hangi Standartlar Var?
| Standart | Ne zaman kullanılır |
|---|---|
| PSR-12 | Laravel, Symfony ve çoğu modern PHP projesi |
| PSR-1 | Temel kodlama kuralları |
| WordPress (WPCS) | WordPress tema ve eklentileri; güvenlik kontrolleri (kaçış, nonce) de içerir |
| PEAR, Squiz, Zend | Eski projeler veya bu standartları kullanan ekipler |
WordPress Kodlama Standartları ile Kullanım
composer require --dev wp-coding-standards/wpcs dealerdirect/phpcodesniffer-composer-installer
vendor/bin/phpcs --standard=WordPress wp-content/plugins/eklentim/
WPCS, WordPress’e özgü güvenlik ve uyumluluk kurallarını da kontrol ettiği için tema ve eklenti geliştirirken çok faydalıdır. WordPress tarafında kullanılan bir eklenti örneği için WordPress WhatsApp eklentisi yazısına bakabilirsiniz.
CodeSniffer’ı Geliştirme Sürecine Eklemek
- Editör: VS Code ve PhpStorm, phpcs çıktısını yazarken satır içinde gösterebilir.
- Git hook: Commit öncesi phpcs çalıştırarak kurallara uymayan kodun depoya girmesini engelleyebilirsiniz.
- CI/CD: GitHub Actions veya GitLab CI’da her pull request’te phpcs çalıştırılır; hata varsa derleme başarısız olur.



