Po godzinie przeglądania raportu wymyśliłem następującą listę, która może być pomocna dla wszystkich, o których myślę.
Postaram się go aktualizować, gdy tylko znajdę więcej ostrzeżeń / błędów:
Ostrzeżenia
Linia przekracza 80 znaków; zawiera X znaków
Lub
Linia przekracza maksymalny limit 100 znaków; zawiera X znaków
Te są te, które widziałem najbardziej, są oczywiste, dobrą praktyką jest utrzymywanie małych linii kodowania, aby zachować czysty i czytelny kod.
Nie znaleziono spacji po przecinku w wywołaniu funkcji
Wywołałeś funkcję, która odbiera parametry i nie dodałeś spacji po przecinku. Przykład: strrchr($bla,".")
powinien byćstrrchr($bla, ".")
Oczekiwano \ "while (...) {\ n \"; znaleziono \ "podczas gdy (...) \ n {\ n \"
Oczekiwany \ "foreach (...) {\ n \"; znaleziono \ "foreach (...) \ n {\ n \"
Oczekiwany \ "if (...) {\ n \"; znaleziono \ "jeśli (...) \ n {\ n \"
Oczekiwany \ "} else {\ n \"; znaleziono \ "} \ n else {\ n \"
Oznacza to, że zwróciłeś wiersz przed nawiasem otwierającym tych instrukcji PHP.
Przykład złej składni z instrukcją if / else:
if (true)
{
}
else
{
}
Powinno być
if (true) {
} else {
}
Nawias zamykający i nawias otwierający deklaracji funkcji wieloliniowej muszą znajdować się w tym samym wierszu
Najczęściej dzieje się to w konstruktorze, w którym deklarujesz coś takiego:
public function __construct(
ProductFactory $productFactory,
Test $test
)
{
}
Powinno być:
public function __construct(
ProductFactory $productFactory,
Test $test
) {
}
Znak końca linii jest nieprawidłowy; oczekiwano \ "\ n \", ale znaleziono \ "\ r \ n \"
Zdarza się najczęściej na początku pliku, jest to spowodowane sposobem, w jaki IDE koduje znak powrotu.
Zmienna \ „twoja_zmienna” nie ma prawidłowego formatu wielbłąda
Każda zmienna musi używać formatu wielbłąda, tak też $your_variable
powinno być$yourVariable
Zmienna \ „one2Three \” zawiera liczby, ale jest to odradzane
Unikaj używania liczb w swoich zmiennych
Wbudowane struktury kontrolne są niedozwolone
Nie powinieneś używać wbudowanych struktur kontrolnych, takich jak:
else $test = true;
Powinieneś użyć:
else {
$test = true;
}
Nawias otwierający klasy musi znajdować się w wierszu po definicji
Podczas deklarowania klasy zwróciłeś wiersz:
class Test
{
Powinieneś trzymać nawias otwierający w tej samej linii:
class Test {
Zmienna członka prywatnego \ „twoja Zmienna \” musi zawierać wiodący znak podkreślenia
Chroniona zmienna członkowska \ "twoja Zmienna \" musi zawierać wiodący znak podkreślenia
Powinieneś dodać wiodący znak podkreślenia do chronionych i prywatnych zmiennych członka: $_yourVariable
W przeciwieństwie do tych dwóch, jeśli dodasz podkreślenie do swojej zmiennej publicznej, możesz uzyskać:
Zmienna członka publicznego \ "_ twoja Zmienna \" nie może zawierać wiodącego podkreślenia.
Parametr metody $ bla nigdy nie jest używany
Przekazałeś parametr do metody, ale nigdy go nie używasz.
Deklaracja funkcji wieloliniowej niepoprawnie wcięta; oczekiwano 8 spacji, ale znaleziono X
Dodano zbyt dużo wcięcia do parametrów deklaracji funkcji:
public function __construct(ProductRepository $productRepository,
ListsInterface $listsInterface,
Data $helper
) {
Powinno być:
public function __construct(ProductRepository $productRepository,
ListsInterface $listsInterface,
Data $helper
) {
Wykryto możliwe bezużyteczne przesłonięcie metody
Przesłaniasz metodę bez dodawania modyfikacji, przykład:
public function __construct(Context $context) {
parent::__construct($context);
}
Model metody LSD load () wykryty w pętli
Używasz load()
metody wewnątrz pętli, która nie jest zalecana i należy jej unikać.
Najprawdopodobniej twój kod wygląda następująco:
foreach(...) {
$model->load();
}
Jeśli ładujesz model w pętli, to jest naprawdę dość źle pod względem wydajności. Jeśli potrzebujesz tylko pobrać kilka atrybutów, powinieneś użyć kolekcji.
Cyklomatyczna złożoność funkcji (X) przekracza 10; rozważ refaktoryzację funkcji
Jeśli nie znasz się na złożoności cyklicznej, sugeruję przeczytanie tego postu: https://pdepend.org/documentation/software-metrics/cyclomatic-complexity.html . To ostrzeżenie zasadniczo oznacza, że w Twojej funkcji jest zbyt wiele pętli i warunków.
Bezpośrednie tworzenie instancji obiektów jest odradzane w Magento 2
Jest to spowodowane tym, że tworzysz obiekt bezpośrednio, wywołując klasę, na przykład:
new \Zend_Filter_LocalizedToNormalized
Należy użyć wstrzykiwania zależności lub w ostateczności, menedżera obiektów.
Komentarze odnoszą się do zadania TODO
Jeden z twoich komentarzy zawiera następującą @TODO
flagę.
Unikaj instrukcji IF, które zawsze są prawdziwe lub fałszywe
Utworzyłeś warunek, który wydaje się zawsze prawdziwy lub fałszywy.
Na przykład:
$variable = "6";
...
// More code that doesn't change $variable
...
if ($variable)
Błędy
Przestrzeń nazw dla klasy \ „Class \” nie jest określona.
Brakuje use Path\To\Class;
oświadczenia na początku zajęć.