Rapordan geçtikten bir saat sonra aşağıdaki listeyle karşılaştım, sanırım herkes için faydalı olabilir.
Daha fazla uyarı / hata bulduğumda güncel tutmaya çalışacağım:
Uyarılar
Satır 80 karakteri aşıyor; X karakter içeriyor
Veya
Satır maksimum 100 karakter sınırını aşıyor; X karakter içeriyor
Bunlar en çok gördüğüm, açıklayıcı, temiz ve okunaklı bir kod tutmak için kodlama satırlarını küçük tutmak iyi bir uygulamadır.
İşlev çağrısında virgülten sonra boşluk bulunamadı
Parametreleri alan ve virgülden sonra boşluk ekleyen bir işlev çağırdınız. Örnek: strrchr($bla,".")
olmalıstrrchr($bla, ".")
Beklenen \ "while (...) {\ n \"; \ "while (...) \ n {\ n \" bulundu
Beklenen \ "foreach (...) {\ n \"; \ "foreach (...) \ n {\ n \" bulundu
Beklenen \ "if (...) {\ n \"; \ "if (...) \ n {\ n \" bulundu
Beklenen \ "} else {\ n \"; \ "} \ n başkası bulundu {\ n \"
Bu, bu PHP ifadelerinin açılmadan önce bir satır döndürdüğünüz anlamına gelir.
İf / else ifadesiyle hatalı bir sözdizimi örneği:
if (true)
{
}
else
{
}
Olmalı
if (true) {
} else {
}
Çok satırlı işlev bildiriminin kapanış parantezi ve açılış ayracı aynı satırda olmalıdır
Çoğu zaman, böyle bir şeyi ilan ettiğiniz kurucuda olur:
public function __construct(
ProductFactory $productFactory,
Test $test
)
{
}
Oysa ki:
public function __construct(
ProductFactory $productFactory,
Test $test
) {
}
Satır sonu karakteri geçersiz; beklenen \ "\ n \" fakat \ "\ r \ n \" bulundu
Dosyanın başında çoğu zaman gerçekleşir, bunun sebebi IDE'nizin dönüş karakterini kodlamasıdır.
Değişken \ "your_variable \" geçerli deve büyüklüğü biçiminde değil
Her değişkenin deve büyüklüğü biçimini kullanması $your_variable
gerekir;$yourVariable
\ "One2Three \" değişkeni sayıları içerir ancak bu önerilmez
Değişkenlerinizde sayı kullanmaktan kaçının
Satır içi kontrol yapılarına izin verilmez
Aşağıdaki gibi satır içi kontrol yapılarını kullanmamalısınız:
else $test = true;
Kullanmalısın:
else {
$test = true;
}
Bir sınıfın açılış ayracı, tanımdan sonra satırda olmalıdır
Bir sınıf bildirirken bir satır döndürdünüz:
class Test
{
Açma ayracını aynı satırda tutmalısınız:
class Test {
Özel üye değişkeni \ "yourVariable \" öncül alt çizgi içermelidir
Korumalı üye değişkeni \ "yourVariable \" baştaki bir alt çizgi içermelidir
Korunan ve özel üye değişkenlerinize lider alt çizgi eklemelisiniz: $_yourVariable
Bu ikisinin tersine, ortak değişkeninize alt çizgi eklerseniz, aşağıdakileri yapabilirsiniz:
\ "_ YourVariable \" genel üye değişkeni, öncü alt çizgi içermemelidir.
$ Bla yöntem parametresi asla kullanılmaz
Bir parametreye bir metodu geçtiniz fakat onu asla kullanmadınız.
Çok satırlı işlev bildirimi doğru girintili değil; 8 boşluk bekleniyor ancak X bulundu
İşlev bildirim parametrelerinize çok fazla girinti eklediniz:
public function __construct(ProductRepository $productRepository,
ListsInterface $listsInterface,
Data $helper
) {
Olmalı:
public function __construct(ProductRepository $productRepository,
ListsInterface $listsInterface,
Data $helper
) {
Muhtemel işe yaramaz yöntem geçersiz kılma tespit edildi
Değişiklik eklemeden bir yöntemi geçersiz kılıyorsunuz, örneğin:
public function __construct(Context $context) {
parent::__construct($context);
}
Model LSD yöntemi yükü () döngüde algılandı
Bu load()
yöntemi, önerilmeyen ve kaçınılması gereken bir döngü içinde kullanıyorsunuz .
Büyük olasılıkla kodunuz şöyle görünüyor:
foreach(...) {
$model->load();
}
Bir döngü içinde bir model yüklüyorsanız, performans açısından gerçekten oldukça kötü. Yalnızca birkaç özellik almanız gerekiyorsa, bunun yerine koleksiyonları kullanmalısınız.
Fonksiyonun siklomatik karmaşıklığı (X) 10'u aşar; işlevi yeniden düzenlemeyi düşünün
Eğer siklomatik karmaşıklığa aşina değilseniz, bu yazıyı okumanızı öneririm: https://pdepend.org/documentation/software-metrics/cyclomatic-complexity.html . Bu uyarı temel olarak, fonksiyonunuzda çok fazla döngü ve koşul olduğu anlamına gelir.
Magento 2'de doğrudan nesne örneklemesi önerilmez
Örneğin nesneyi doğrudan sınıfı çağırarak başlattığınız gerçeğinden kaynaklanmaktadır, örneğin:
new \Zend_Filter_LocalizedToNormalized
Bağımlılık enjeksiyonunu veya son çare, nesne yöneticisi kullanmalısınız.
Yorumlar bir TODO görevine atıfta bulunur
Yorumunuzdan biri aşağıdaki @TODO
bayrağı içeriyor .
Her zaman doğru veya yanlış olan IF ifadelerinden kaçının
Her zaman doğru veya yanlış gibi görünen bir koşul yarattınız.
Örneğin:
$variable = "6";
...
// More code that doesn't change $variable
...
if ($variable)
Hatalar
\ "Class \" sınıfı için ad alanı belirtilmedi.
use Path\To\Class;
Sınıfınızın başındaki ifadeyi kaçırıyorsunuz .