كيفية إصلاح تحذيرات / الأخطاء التي أثارها تقرير المراجعة الفنية الماجنتو السوق?

magento.stackexchange https://magento.stackexchange.com/questions/111085

سؤال

مع الماجنتو السوق الجديد ، تمديد المقدمة يمر عبر العديد من الدول التحقق من الصحة من أجل الموافقة والمتاحة عبر السوق.

أحدها هو المراجعة الفنية ، والتي يمكنك من خلالها الحصول على تقرير فني مثل ما يلي:

Marketplace Technical Report

كما ترى ، فإن أكثر من 200 تحذير أخافتني نوعا ما ، هل هناك أي مورد للمساعدة في إصلاح كل تحذير بصرف النظر عن القائمة المتوفرة في المستندات: http://docs.magento.com/marketplace/user_guide/extensions/review-code-validation.html?

هل كانت مفيدة؟

المحلول

بعد ساعة الذهاب من خلال التقرير الذي جاء مع القائمة التالية يمكن أن تكون مفيدة للجميع على ما أعتقد.

سأحاول الحفاظ على تحديثه فور العثور على مزيد من التحذيرات/أخطاء:

تحذيرات

خط يتجاوز 80 حرفا ؛ يحتوي على X الشخصيات

أو

خط يتجاوز الحد الأقصى من 100 حرفا ؛ يحتوي على X الشخصيات

تلك هي واحدة رأيت أكثر ، فهي النفس التفسيرية ، وهو ممارسة جيدة للحفاظ على الترميز خطوط صغيرة من أجل الحفاظ على بيئة نظيفة و رمز للقراءة.

لا توجد مساحة وجدت بعد فاصلة في استدعاء دالة

لديك تسمى دالة تستقبل المعلمات ولم إضافة الفضاء بعد الفاصلة.على سبيل المثال: strrchr($bla,".") يجب أن يكون strrchr($bla, ".")

يتوقع \"في حين (...) { \";وجدت \"في حين (...) { \"

يتوقع \"foreach (...) { \";وجدت \"foreach (...) { \"

يتوقع \"إذا كان (...) { \";وجدت \"إذا كان (...) { \"

يتوقع \"} آخر { \";وجدت \"} آخر { \"

هذا يعني أنك قد عاد خط قبل افتتاح قوس من تلك PHP البيانات.

مثال سيء الجملة مع if/else:

if (true)
{
}
else
{
}

يجب أن يكون

if (true) {
} else {
}

قوس إغلاق وفتح هدفين من متعدد الخطوط وظيفة الإعلان يجب أن يكون على نفس الخط

معظم الوقت ، يحدث في منشئ حيث تعلن شيئا مثل هذا:

public function __construct(
    ProductFactory $productFactory,
    Test $test
)
{
}

في حين كان ينبغي أن يكون:

public function __construct(
    ProductFactory $productFactory,
    Test $test
) {
}

نهاية خط حرف غير صالح ؛ يتوقع \" \" ولكن وجدت \" \"

يحدث أكثر من مرة في بداية الملف بسبب طريقة IDE بترميز عودة شخصية.

متغير \"your_variable\" ليست في صالح الإبل شكل قبعات

كل متغير يجب استخدام الجمل قبعات شكل, حتى $your_variable يجب أن يكون $yourVariable

متغير \"one2Three\" يحتوي على الأرقام ولكن هذا هو تثبيط

تجنب استخدام الأرقام في المتغيرات الخاصة بك

مضمنة هياكل المراقبة لا يسمح

يجب أن لا تكون مضمنة باستخدام هياكل المراقبة مثل:

else $test = true;

يجب عليك استخدام:

else {
    $test = true;
}

فتح هدفين من فئة يجب أن تكون على الخط بعد تعريف

لقد عدت خط عندما يعلن فئة:

class Test
{

يجب أن نأخذ افتتاح هدفين على نفس الخط:

class Test {

خاصة متغير العضو \"yourVariable\" يجب أن تحتوي الرائدة تؤكد

محمية متغير العضو \"yourVariable\" يجب أن تحتوي الرائدة تؤكد

يجب إضافة رائدة تؤكد أن المحمية الخاصة بك والخاص الأعضاء المتغيرات: $_yourVariable

كما عكس هؤلاء, إذا قمت بإضافة تسطير في العام متغير يمكنك الحصول على:

العامة متغير العضو \"_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() طريقة داخل حلقة التي لا ينصح ويجب تجنبها.

على الأرجح الكود الخاص بك تبدو مثل هذا:

foreach(...) {
    $model->load();
}

إذا كنت تحميل نموذج في حلقة إنها في الواقع سيئة جدا من حيث الأداء.إذا كنت تحتاج فقط إلى استرداد بعض الصفات ، يجب عليك استخدام مجموعات بدلا من ذلك.

وظيفة cyclomatic التعقيد (X) exceeeds 10;النظر في إعادة بيع ديون وظيفة

إذا كنت لم تكن مألوفة مع cyclomatic تعقيد أقترح عليك قراءة هذا المقال: https://pdepend.org/documentation/software-metrics/cyclomatic-complexity.html .هذا التحذير يعني أن هناك الكثير من الحلقات والشروط في وظيفة الخاص بك.

مباشرة إنشاء مثيل الكائن هو تثبيط في الماجنتو 2

وهو ناتج عن حقيقة أن كنت إنشاء مثيل كائن مباشرة عن طريق استدعاء الفئة ، على سبيل المثال:

new \Zend_Filter_LocalizedToNormalized

يجب استخدام حقن التبعية أو أخير ، مدير الكائن.

تعليقات تشير إلى ما يجب عمله المهمة

واحدة من تعليقك يحتوي على ما يلي @TODO العلم.

إذا تجنب التصريحات التي هي دائما صحيحة أو خاطئة

يجب إنشاء شرط أن يبدو دائما تكون صحيحة أو خاطئة.

على سبيل المثال:

$variable = "6";
...
// More code that doesn't change $variable
...
if ($variable)

أخطاء

اسم \"Class\" فئة غير محدد.

كنت في عداد المفقودين use Path\To\Class; بيان في بداية الفصل الدراسي.

نصائح أخرى

باستخدام كوديسنيفر مع ميكب1 أو ميكب2 روليسيت (اعتمادا على الإصدار الخاص بك من الماجنتو) سوف تعطيك فكرة عن الماجنتو روليسيت: https://github.com/magento/marketplace-eqp/tree/master/

هذه القواعد واحد يعمل على عملية تقديم السوق ليست دائما تماما في التزامن (على الرغم من وبطبيعة الحال ، وهذا هو المثل الأعلى) ، لذلك قد تحصل على رفض لأخطاء كوديسنيفر حتى لو كان يمر أحدث إصدار على جيثب.

تتضمن بعض أخطاء "الخطورة-10" الأكثر شيوعا (الأخطاء الوحيدة التي سيتم رفض امتدادك لها) ، وتوصياتها المدرجة ، ما يلي:

لا يسمح بعلامة الإغلاق في نهاية ملف فب

التوصية:إزالة فب إغلاق العلامة.

وقت المكالمة المكالمات المرجعية محظورة

التوصية:قراءة الوثائق على المراجع في فب 5 و ريفاكتور التعليمات البرمجية الخاصة بك.المراجع: http://php.net/manual/en/language.references.pass.php

تم الكشف عن الاستخدام المباشر لـ $_ف سوبيرجلوبال.

الاستخدام المباشر لل Super _ الحصول على سوبيرجلوبال الكشف عنها.

تم الكشف عن الاستخدام المباشر لـ Super _ بوست سوبيرجلوبال.

تم الكشف عن الاستخدام المباشر لـ $ _ طلب عالمي فائق.

تم الكشف عن الاستخدام المباشر للجلسة الفائقة العالمية.

تم الكشف عن الاستخدام المباشر لـ GLOB جلوبال سوبيرجلوبال.

التوصية:استخدم كائنات الغلاف المقابلة للحصول على بيانات ملفات تعريف الارتباط أو الجلسة أو الطلب.

تم إيقاف تعيين الدالة _ _ _ _ _ _ _ _ _ _ _

التوصية:لا ينبغي استخدام الوظائف المهملة حيث يمكن إزالتها في أي وقت من إصدار مستقبلي.[ربما خطأ عام لجميع حالات الإهمال]

لا يتم استخدام عامل متطابق = = = لاختبار قيمة الإرجاع لوظيفة ستربوس

لا يتم استخدام عامل التشغيل المتطابق = = = لاختبار قيمة الإرجاع لوظيفة الشريط

التوصية:استخدم عامل التشغيل === لاختبار قيمة الإرجاع لهذه الوظيفة.

الاستخدام غير الصحيح لسلسلة الاقتباس الخلفي ثابت.يجب أن تكون الاقتباسات الخلفية دائما داخل السلاسل.

التوصية:[لا توجد توصية مستقلة.أتصور هذا واحد هو منع إكسيك من خلال باككوتس.]

في عداد المفقودين _سالوود () طريقة أكل في فئة [كلاسنام].

التوصية:إدارة بعناية فائقة الإعداد والإدارة والتعامل مع الامتيازات.يجب تعريف مورد أكل في أدمينتمل.يجب تنفيذ ملف شمل لكل وحدة تحكم أدمينتمل و _سالوود() الأسلوب.

لم يتم تحديد مساحة الاسم لفئة [إكسيبتيونكلاسنام].

التوصية:حدد مساحة اسم الاستثناء.

خطأ في بناء الجملة فب:تمت إزالة وقت الاتصال بالمرجع

التوصية:إصلاح خطأ في بناء الجملة.[هذا واحد يرافق ما سبق.أتصور أن يتم إعطاء خطأ عام مماثل لجميع أخطاء بناء الجملة فب أخرى]

ممكن الماجنتو 2 انتهاك التصميم.الكشف عن الماجنتو نموذجي 1 اعمال بناء.

التوصية:[هذا يأتي مع أي توصية ، ولكن يصف التعليمات البرمجية حيث استخدام الطبقة مثل ماجى:: بلاه أو ماجيبلاه بلاه:: بلاه تم الكشف عن-هذه هي الفئات التي توجد فقط في الماجنتو 1 ولن تعمل في الماجنتو 2.فكرة جيدة هي البحث عن امتداد م 2 الخاص بك عن التعبير العادي Mage(\b|_) للتحقق المسبق من استخدامات م 1.]

الموارد هي كلمة محفوظة في بي إتش بي 7.

التوصية:[لا توجد توصية مستقلة.ببساطة إعادة تسمية الكلمة إلى شيء آخر يجب أن تعمل.أتخيل أن هذا الخطأ موجود لجميع الكلمات المحجوزة.]

يجب أن تكون علامة فب فتح المحتوى الأول في الملف

التوصية:إزالة كافة الأحرف قبل فب فتح العلامة.

لا ينصح باستخدام بناء لغة الموت.

لا ينصح باستخدام بناء لغة الخروج.

التوصية:سيتبودي () يجب استخدام طريقة كائن الاستجابة.

لا ينصح باستخدام بناء لغة الصدى.

لا ينصح باستخدام بنية لغة الطباعة.

التوصية:يجب تغيير بنية الامتداد لتجنب استخدام الصدى والرأس وما إلى ذلك.في الفئات ، ضع في اعتبارك استخدام طريقة سيتبودي () لكائن الاستجابة.

لا ينصح باستخدام التقييم()

التوصية:تجنب استخدام التقييم ().


على عكس هذه الأخطاء ، التي تتسبب في رفض امتدادك ، يتم سرد التحذيرات حاليا على أنها مجرد مجاملة ، للمساعدة في تحسين رمز الامتداد الخاص بك.لن يتم رفضك من مراجعة التكنولوجيا للتحذيرات ، ولكن هناك الكثير.

وبطبيعة الحال ، قد يتم تشديد هذه القاعدة في المستقبل ، ومجموعة قواعد كوديسنيفر قيد المراجعة المستمرة ، لذلك رؤية عدد التحذيرات التي يمكنك حل هو دائما خطة جيدة.يمكن أن تشير التحذيرات أيضا إلى مشكلات نظامية في قاعدة التعليمات البرمجية الخاصة بك.


لا تظهر بعض أسباب الرفض من المراجعة الفنية حاليا في التقرير عبر الإنترنت ، ويتم تقديمها فقط في البريد الإلكتروني.

أشياء مثل انتهاكات النسخ واللصق والبرامج الضارة المكتشفة لن تحتوي إلا على رسائل تظهر في البريد الإلكتروني الذي تحصل عليه لإعلامك بأن امتدادك لم يتم قبوله ، لذلك اقرأ البريد الإلكتروني بعناية.

أرشيف رسائل البريد الإلكتروني هذه غير مرئي حاليا من بوابة المطور ، لذلك إذا قمت بحذفها دون قراءة ، أو رفعها إلى غير مرغوب فيه ، ثم أنها ذهبت.

في بعض الأحيان يضع المراجعون من المستوى 1 في الماجنتو معلومات إضافية في هذا البريد الإلكتروني ، إما مجرد أشياء مفيدة اعتقدوا أنك قد ترغب في معرفتها ، مثل "يجب أن يكون مفتاح الصفيف هذا "سيفر" على الأرجح "خادم" ، أو المبررات لرفضهم واقتراحاتهم حول كيفية حلها بسرعة ، مثل " قمت بنسخ ملف الماجنتو الأساسي بالكامل وغيرت مسار الفصل:يمكنك استبدال هذا بإعداد تفضيل فئة بدلا من ذلك."،أو " قمت بنسخ ملف الماجنتو الأساسية كله فقط لتغيير اثنين من الوظائف العامة:يمكنك استخدام الإضافات لهذا بدلا من ذلك."

إذا كنت لا تقرأ هذه ، ومجرد إلقاء نظرة على تقرير كوديسنيفر ، قد ينتهي بك الأمر في محاولة لإصلاح المشاكل الخاطئة.


لاحظ أن unescaped output detected لا ينبغي التهرب من الرسالة باستخدام @escapeNotVerified أو @noEscape تعليقات.من المحتمل أن يكون هذا غير مسموح به في الإصدارات المستقبلية من الماجنتو.بدلا من ذلك ، استخدم أحد الإجراءات التالية:

  • أي سلسلة ثابتة في علامات اقتباس مفردة.
  • سلسلة ثابتة بعلامات اقتباس مزدوجة ، بدون متغيرات مضمنة.
  • [موصى به] هربت قيمة مع واحدة من طرق الهروب من \Magento\Framework\View\Element\AbstractBlock (escapeHtml(), escapeUrl(), escapeQuote(), escapeXssInUrl()).
  • قيمة يلقي إلى نوع رقمي (على الأقل منطقي و كثافة العمليات, ربما الآخرين?)
  • أي استدعاء الأسلوب مع كلمة "هتمل" في الاسم ، مثل printBannerHtml().لا تسيء استخدام هذا!تأكد من أن لديك blahHtml() طريقة حقا لا الهروب بشكل صحيح جميع المتغيرات.

خطأ:

تم اكتشاف الناتج غير المتسامح

خطأ في ملف .phtml

giveacodicetagpre.

أنت تصرخ استخدام:

giveacodicetagpre.

قم بإحالة قوالب الأمان XSS ل http://devdocs.magento.com/guides/v2.0/frontend-dev-guide/templates/template-security.html#escape-functions-for-templates / ص>

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى magento.stackexchange
scroll top