تحليل رمز ثابت ل phpstorm و intellij فكرة.
افتح IDE انتقل إلى Settings->Plugins->Marketplace عن PhpClean . اضغط على زر install .
- عمليات التفتيش
- الإجراءات
يكتشف عوامل المهمة والمقارنة في بيان واحد.
while ( false !== $ current = ldap_next_entry ( $ con , $ current )) {
// ^^^ Hard to read this statements
yield $ this -> getSingleEntry ( $ con , $ current );
}يمكن الخلط بين الفصول الدراسية ذات الاسم نفسه في مساحات أسماء مختلفة. (معطل بشكل افتراضي)
namespace App {
class User {}; // <- Class name collision with CliUser
}
namespace Cli {
class User {}; // <- Class name collision with AppUser
}يمكنك إهمال بعض علامات PHPDOC في مشروعك.
يكتشف هذا التفتيش استخدامات المتغيرات العالمية.
echo $ _GET [ ' name ' ]; // <-- Global variable usage يمكن تحويل الطرق المحمية إلى القطاع الخاص.
final class User {
protected function name () {} // <-- Method can be private
}يجب إغلاق الأساليب (اجعل الطريقة أو الفصل النهائي)
class User {
public function name (): string { // <-- Method should be final
return '' ;
}
}الأساليب المحمية تجعل فصولنا أكثر انفتاحًا. اكتب الأساليب الخاصة أو العامة فقط.
دائما تحديد نوع المعلمة. هذه ممارسة جيدة.
class User {
public function withName ( $ name ) {} // <-- Missing parameter type
}حدد دائمًا نوع نتيجة الوظيفة.
function phrase () { // <-- Missing return type
return ' hi ' ;
}تحقق مما إذا تم إهمال خاصية الوالدين.
class A {
/** @deprecated */
protected $ name ;
}
class B extends A {
protected $ name ; // <-- Warn about deprecation
} لا ينبغي تمديد الفصول الدراسية بعلامة @final
/**
* @final
*/
class User {};
class Admin extends User {}; // <- Prohibited extentions of @final class User. يجب أن تكون الخصائص التي لم تتم تهيئتها في المنشئ قابلية للشرح.
class User {
/** @var string */ // <-- Property is not annotated correctly. Add null type
private $ name ;
public function getName () { }
public function setName ( string $ name ) { }
}يمكن تحويل الخصائص المحمية إلى القطاع الخاص.
class User {
protected $ user ; // <-- Property can be private
} يمكن حذف الأنواع المحددة في PHP في كتل PHPDOC
/**
* @return void // <-- Redundant PhpDoc tag
*/
function show ( string $ message ): void {}اكتشف صب النوع التلقائي
class Hello {
public function randomize (): self { /* ... */ return $ this ; }
public function __toString () { return ' Hi ' ; }
}
echo ( new Hello ())-> randomize (); // <-- Deprecated __toString call استخدم تأكيد التحقق من النوع المتغير بدلاً من تعليق DOC.
/** @var User $user */ // <-- Use assert to check variable type
assert ( $ user instanceof User); استبدل new ClassName() بمشارك محدد.
class Text {
public function __construct ( string $ name ){ }
public static fromName (string $ n ){}
} استدعاء refactor this على اسم الطريقة fromName وسيتم تغيير جميع العبارات الجديدة مع هذا الفصل
new Text ( ' User ' ) // old code
Text:: fromName ( ' User ' ) // new code