Dengan Magento Marketplace baru, perpanjangan yang diajukan melewati beberapa negara validasi agar dapat disetujui dan tersedia melalui Marketplace.
Salah satunya adalah tinjauan teknis, dari mana Anda bisa mendapatkan laporan teknis seperti berikut:
Seperti yang Anda lihat, 200+ peringatan agak menakutkan bagi saya, adakah sumber daya untuk membantu memperbaiki setiap peringatan selain dari daftar yang tersedia di dokumen: http://docs.magento.com/marketplace/user_guide/extensions/ review-code-validation.html ?
magento2
extensions
marketplace
Raphael di Digital Pianism
sumber
sumber
Jawaban:
Setelah satu jam membaca laporan saya menemukan daftar berikut, ini bisa bermanfaat untuk semua orang yang saya kira.
Saya akan mencoba memperbaruinya segera setelah saya menemukan lebih banyak peringatan / kesalahan:
Peringatan
Atau
Itu adalah salah satu yang paling sering saya lihat, mereka cukup jelas, itu adalah praktik yang baik untuk menjaga garis pengkodean kecil untuk menjaga kode yang bersih dan mudah dibaca.
Anda telah memanggil fungsi yang menerima parameter dan tidak menambahkan spasi setelah koma. Contoh:
strrchr($bla,".")
seharusnyastrrchr($bla, ".")
Itu berarti Anda telah mengembalikan garis sebelum braket pembuka dari pernyataan PHP tersebut.
Contoh sintaks yang buruk dengan pernyataan if / else:
Seharusnya
Sebagian besar waktu, itu terjadi di konstruktor di mana Anda menyatakan sesuatu seperti ini:
Padahal seharusnya:
Sering terjadi di awal file, itu disebabkan oleh cara IDE Anda mengkodekan karakter kembali.
Setiap variabel harus menggunakan format topi unta, demikian juga
$your_variable
seharusnya$yourVariable
Hindari menggunakan angka dalam variabel Anda
Anda tidak boleh menggunakan struktur kontrol sebaris seperti:
Kamu harus menggunakan:
Anda telah mengembalikan garis ketika mendeklarasikan kelas:
Anda harus menjaga brace pembuka pada baris yang sama:
Anda harus menambahkan garis bawah utama ke variabel anggota yang dilindungi dan pribadi:
$_yourVariable
Sebagai kebalikan dari keduanya, jika Anda menambahkan garis bawah dalam variabel publik Anda, Anda bisa mendapatkan:
Anda telah mengirimkan parameter ke suatu metode tetapi Anda tidak pernah menggunakannya.
Anda telah menambahkan terlalu banyak lekukan ke parameter deklarasi fungsi Anda:
Seharusnya:
Anda mengganti metode tanpa menambahkan modifikasi, contoh:
Anda menggunakan
load()
metode di dalam perulangan yang tidak direkomendasikan dan harus dihindari.Kemungkinan besar kode Anda terlihat seperti ini:
Jika Anda memuat model dalam satu lingkaran, itu memang sangat buruk dalam hal kinerja. Jika Anda hanya perlu mengambil beberapa atribut, Anda harus menggunakan koleksi saja.
Jika Anda tidak terbiasa dengan kompleksitas cyclomatic, saya sarankan Anda membaca di posting ini: https://pdepend.org/documentation/software-metrics/cyclomatic-complexity.html . Peringatan ini pada dasarnya berarti bahwa ada terlalu banyak loop dan kondisi dalam fungsi Anda.
Ini disebabkan oleh kenyataan bahwa Anda membuat instance objek secara langsung dengan memanggil kelas, misalnya:
Anda harus menggunakan injeksi ketergantungan atau pilihan terakhir, manajer objek.
Salah satu komentar Anda berisi
@TODO
bendera berikut .Anda telah membuat kondisi yang tampaknya selalu benar atau salah.
Sebagai contoh:
Kesalahan
Anda kehilangan
use Path\To\Class;
pernyataan di awal kelas Anda.sumber
You should keep the opening brace on the same line:
bukankah sebaliknya? Pos luar biasaMenggunakan Codesniffer dengan aturan MEQP1 atau MEQP2 (tergantung pada versi Magento Anda) akan memberi Anda gambaran tentang aturan Magento: https://github.com/magento/marketplace-eqp/tree/master/
Aturan ini dan yang berjalan pada proses pengiriman Marketplace TIDAK selalu selaras dengan sempurna (meskipun tentu saja, itu yang ideal), jadi Anda mungkin ditolak karena kesalahan codeniffer bahkan jika ia melewati versi terbaru di Github.
Beberapa kesalahan "severity-10" yang lebih umum (satu-satunya kesalahan yang akan ditolak oleh ekstensi Anda), dan rekomendasi yang tercantum, termasuk:
Rekomendasi: Hapus tag penutup PHP.
Rekomendasi: Baca dokumentasi referensi di PHP 5 dan perbaiki kode Anda. Referensi: http://php.net/manual/en/language.references.pass.php
Rekomendasi: Gunakan objek pembungkus yang sesuai untuk mendapatkan cookie, sesi, atau meminta data.
Rekomendasi: Fungsi yang sudah usang tidak boleh digunakan karena dapat dihapus kapan saja dari versi yang akan datang. [Mungkin kesalahan umum untuk semua penghentian]
Rekomendasi: Gunakan operator === untuk menguji nilai kembali fungsi ini.
Rekomendasi: [tidak ada rekomendasi terpisah. Saya membayangkan yang satu ini adalah untuk mencegah exec melalui backquotes.]
Rekomendasi: Sangat hati-hati mengatur pengaturan, manajemen, dan penanganan hak istimewa. Sumberdaya ACL harus didefinisikan dalam file adminhtml.xml untuk setiap kontroler adminhtml dan metode _isAllowed () harus diimplementasikan.
Rekomendasi: Tentukan ruang nama Pengecualian.
Rekomendasi: Perbaiki kesalahan sintaksis. [Yang ini menyertai hal di atas. Saya membayangkan bahwa kesalahan umum serupa diberikan untuk semua kesalahan sintaks PHP lainnya]
Rekomendasi: [Ini datang tanpa rekomendasi, tetapi menggambarkan kode di mana penggunaan kelas seperti Mage :: blah atau Mage_blah_blah :: blah terdeteksi - ini adalah kelas yang hanya ada di Magento 1 dan tidak akan berfungsi di Magento 2. Ide yang bagus adalah untuk cari ekstensi M2 Anda untuk regex
Mage(\b|_)
untuk memeriksa sebelum penggunaan M1.]Rekomendasi: [Tidak ada rekomendasi terpisah. Cukup mengubah nama kata menjadi sesuatu yang lain harus bekerja. Saya membayangkan kesalahan ini ada untuk semua kata yang dipesan.]
Rekomendasi: Hapus semua karakter sebelum Tag Pembuka PHP.
Rekomendasi: metode objek setBody () harus digunakan.
Rekomendasi: Arsitektur ekstensi harus diubah untuk menghindari penggunaan gema, header, dll di kelas, pertimbangkan untuk menggunakan metode setBody () dari objek respons.
Rekomendasi: Hindari penggunaan eval ().
Tidak seperti kesalahan ini, yang menyebabkan ekstensi Anda ditolak, peringatan saat ini didaftarkan hanya sebagai rasa hormat, untuk membantu meningkatkan kode ekstensi Anda. Anda TIDAK akan ditolak dari ulasan teknologi untuk peringatan, namun ada banyak.
Tentu saja, aturan ini dapat diperketat di masa mendatang, dan aturan kodeniffer sedang dikaji ulang, jadi melihat berapa banyak peringatan yang dapat Anda selesaikan selalu merupakan rencana yang bagus. Peringatan juga dapat menunjukkan masalah sistemik dengan basis kode Anda.
Beberapa alasan penolakan dari tinjauan teknis saat ini tidak muncul di laporan online, dan hanya diberikan dalam email.
Hal-hal seperti pelanggaran salin-rekat dan malware yang terdeteksi hanya akan menampilkan pesan di email yang Anda beri tahu bahwa ekstensi Anda tidak diterima, jadi baca email dengan hati-hati .
Arsip email-email ini saat ini tidak terlihat dari portal pengembang, jadi jika Anda menghapusnya tanpa membaca, atau mengarsipkannya ke sampah, maka mereka hilang.
Peninjau Tingkat 1 Magento kadang-kadang memasukkan informasi tambahan dalam email ini, baik hanya hal-hal bermanfaat yang menurut mereka mungkin ingin Anda ketahui, seperti "kunci array ini 'sever' mungkin harus 'server'," atau alasan penolakan dan saran mereka tentang cara menyelesaikannya dengan cepat, seperti "Anda menyalin seluruh file inti Magento dan baru saja mengubah classpath: Anda dapat mengganti ini dengan pengaturan preferensi kelas sebagai gantinya.", atau "Anda menyalin seluruh file inti Magento hanya untuk mengubah beberapa fungsi publik: Anda dapat menggunakan plugin untuk ini. "
Jika Anda tidak membaca ini, dan hanya melihat laporan codesniffer, Anda mungkin akhirnya mencoba untuk memperbaiki masalah yang salah.
Perhatikan bahwa
unescaped output detected
pesan TIDAK harus dihindari menggunakan@escapeNotVerified
atau@noEscape
komentar. Ini kemungkinan akan dianulir dalam versi Magento di masa mendatang. Sebaliknya, gunakan salah satu dari yang berikut:\Magento\Framework\View\Element\AbstractBlock
(escapeHtml()
,escapeUrl()
,escapeQuote()
,escapeXssInUrl()
).printBannerHtml()
. Jangan menyalahgunakan yang ini! PastikanblahHtml()
metode Anda benar-benar keluar dari semua variabel dengan benar.sumber
Kesalahan:
Kesalahan dalam file .phtml
Anda berteriak menggunakan:
Lihat keamanan Templat XSS untuk http://devdocs.magento.com/guides/v2.0/frontend-dev-guide/templates/template-security.html#escape-functions-for-templates
sumber
@noEscape
dan@escapeNotValidated
memerintahkan dengan cara ini: jika Anda melakukannya, mereka kemungkinan akan ditinggalkan dan kemudian dilarang oleh sistem MEQP. Lihat bagian bawah jawaban saya untuk beragam cara yang lebih baik untuk menghindari data Anda.