Araçlarla Otomatik Kontrol
Bütün bu kuralların her seferinde elle kontrol edilmesini beklemek gerçekçi değil — insan gözü yorulur, standartlar gözden kaçar. Bu bölümdeki araçlar, bir insan reviewer'ın kontrol etmek zorunda kalmaması gereken şeyleri yakalamak için var.
1. PHP_CodeSniffer ve Coder
PHP_CodeSniffer, Coder modülünün Drupal ve DrupalPractice kural setleriyle birleştiğinde, önceki bölümlerde ele alınan PHP, YAML ve dokümantasyon standartlarını gerçekten bir bilgisayarın kontrol edebileceği bir şeye dönüştüren araçtır.
composer require --dev drupal/coder2. phpcs ve phpcbf Çalıştırmak
Kurulduktan sonra phpcs bir dizini tarar ve bulduğu her ihlali, dosya ve satır numarasıyla birlikte listeler; onun yanındaki phpcbf ise belirsizlik taşımayan bir düzeltmesi olan ihlallerin bir kısmını — çoğunlukla boşluk ve biçimlendirme sorunlarını, nadiren yapısal bir şeyi — otomatik olarak düzeltir.
vendor/bin/phpcs \
--standard=Drupal,DrupalPractice \
web/modules/custom
vendor/bin/phpcbf \
--standard=Drupal \
web/modules/custom3. PHPStan ve phpstan-drupal
phpcs yalnızca biçimlendirmeye bakar — bir method çağrısının geçerli olup olmadığı ya da bir değişkenin olması gereken tipi taşıyıp taşımadığı hakkında hiçbir fikri yoktur. phpstan-drupal kurallarıyla genişletilmiş PHPStan tam olarak bunun için var: kodu hiç çalıştırmadan yanlış bir method çağrısını, uyuşmayan bir tipi ya da var olmayan bir şeye yapılan referansı yakalayan gerçek bir statik analiz.
composer require --dev phpstan/phpstan mglaman/phpstan-drupal4. ESLint ve Stylelint
Daha önce ele alınan JavaScript ve CSS standartlarının kendi araçları var: JavaScript için, Drupal core'un birlikte geldiği konfigürasyonu kullanan ESLint, CSS için ise Stylelint. İkisi de phpcs ile aynı şekilde çalışır — onları bir dizine yöneltin, ihlallerin listesini okuyun.
5. Editör Entegrasyonu
Bu araçların hiçbiri yalnızca bir commit'ten hemen önce çalıştırılırsa pek işe yaramaz. phpcs, ESLint ve Stylelint'i bir editöre bağlamak — çoğu IDE bunu bir eklenti üzerinden destekler — bir ihlali yazıldığı anda gösterir; bu da bir pipeline'ın başarısız olmasını beklemekten çok daha kısa bir geri bildirim döngüsüdür.