レポートを1時間読んだ後、私は次のリストを思いつきました。
さらに警告/エラーが見つかったらすぐに更新するようにします:
警告
行が80文字を超えています。X文字を含む
または
行が100文字の上限を超えています。X文字を含む
それらは私が最もよく見たもので、自明です。きれいで読みやすいコードを維持するために、コーディング行を小さくすることは良い習慣です。
関数呼び出しのコンマの後にスペースが見つかりません
パラメーターを受け取る関数を呼び出しましたが、コンマの後にスペースを追加しませんでした。例:あるstrrchr($bla,".")
べきstrrchr($bla, ".")
期待される\ "while(...){\ n \"; 見つかった\ "while(...)\ n {\ n \"
期待される\ "foreach(...){\ n \"; \ "foreach(...)\ n {\ n \"が見つかりました
期待される\ "if(...){\ n \"; \ "if(...)\ n {\ n \"が見つかりました
\ "} else {\ n \";が必要です。\ "} \ nその他{\ n \"が見つかりました
つまり、これらのPHPステートメントの開き括弧の前に行が返されたことを意味します。
if / elseステートメントを使用した不適切な構文の例:
if (true)
{
}
else
{
}
あるべき
if (true) {
} else {
}
複数行関数宣言の右括弧と左括弧は同じ行になければなりません
ほとんどの場合、次のようなものを宣言するコンストラクターで発生します。
public function __construct(
ProductFactory $productFactory,
Test $test
)
{
}
一方、次のようになります。
public function __construct(
ProductFactory $productFactory,
Test $test
) {
}
行末文字は無効です。\ "\ n \"が必要ですが、\ "\ r \ n \"が見つかりました
ほとんどの場合、ファイルの先頭で起こります。これは、IDEがリターン文字をエンコードする方法が原因です。
変数\ "your_variable \"は有効なキャメルキャップ形式ではありません
すべての変数は、ラクダキャップの形式を使用する必要があり、そう$your_variable
でなければなりません$yourVariable
変数\ "one2Three \"には数字が含まれていますが、これは推奨されません
変数で数値を使用しないでください
インライン制御構造は許可されていません
次のようなインライン制御構造を使用しないでください。
else $test = true;
以下を使用する必要があります。
else {
$test = true;
}
クラスの左中括弧は、定義の後の行になければなりません
クラスを宣言するときに行を返しました:
class Test
{
開始ブレースを同じ行に置く必要があります。
class Test {
プライベートメンバー変数\ "yourVariable \"には先頭にアンダースコアが含まれている必要があります
保護されたメンバー変数\ "yourVariable \"には先頭にアンダースコアが含まれている必要があります
保護されたメンバー変数とプライベートメンバー変数に先頭の下線を追加する必要があります。 $_yourVariable
これら2つの反対として、パブリック変数にアンダースコアを追加すると、次のようになります:
パブリックメンバー変数\ "_ yourVariable \"には、先頭にアンダースコアを含めることはできません。
メソッドパラメータ$ blaは使用されません
メソッドにパラメーターを渡しましたが、使用することはありません。
複数行の関数宣言が正しくインデントされていません。8スペースが必要ですが、Xが見つかりました
関数宣言パラメーターに追加したインデントが多すぎます:
public function __construct(ProductRepository $productRepository,
ListsInterface $listsInterface,
Data $helper
) {
する必要があります:
public function __construct(ProductRepository $productRepository,
ListsInterface $listsInterface,
Data $helper
) {
無効なメソッドのオーバーライドの可能性が検出されました
変更を追加せずにメソッドをオーバーライドしています、例:
public function __construct(Context $context) {
parent::__construct($context);
}
ループで検出されたモデルLSDメソッドload()
load()
ループ内でメソッドを使用していますが、これは推奨されておらず、回避する必要があります。
ほとんどの場合、コードは次のようになります。
foreach(...) {
$model->load();
}
ループでモデルをロードしている場合、パフォーマンスの点でかなり悪いです。いくつかの属性のみを取得する必要がある場合は、代わりにコレクションを使用する必要があります。
関数の循環的複雑度(X)は10を超えています。関数のリファクタリングを検討する
循環的な複雑さに慣れていない場合は、この投稿(https://pdepend.org/documentation/software-metrics/cyclomatic-complexity.html)を読むことをお勧めします。この警告は基本的に、関数内のループと条件が多すぎることを意味します。
Magento 2では、オブジェクトの直接インスタンス化は推奨されません
これは、たとえば次のように、クラスを呼び出すことでオブジェクトを直接インスタンス化しているという事実が原因です。
new \Zend_Filter_LocalizedToNormalized
依存性注入または最後の手段であるオブジェクトマネージャーを使用する必要があります。
コメントはTODOタスクを参照します
コメントの1つに次の@TODO
フラグが含まれています。
常に真または偽のIFステートメントを避ける
常に真または偽と思われる条件を作成しました。
例えば:
$variable = "6";
...
// More code that doesn't change $variable
...
if ($variable)
エラー
\ "Class \"クラスの名前空間が指定されていません。
use Path\To\Class;
クラスの冒頭に文がありません。