Я создал модуль в Magento 2 и сейчас пытаюсь отправить его на Magento Marketplace. Мое продление перешло из бизнес-обзора и технического обзора, но у меня возникли проблемы с проверкой качества.
Я получил письмо от торговой площадки Magento, в котором говорилось, что в моем расширении дублируется код. Ниже приведен образец письма.
Проблемы с качеством кода: CPD: это расширение содержит дублированный код.
Когда я зашел в свой продукт на учетной записи Marketplace и проверил технический отчет, я обнаружил ниже.
Дубликаты кода обнаружены
Это расширение содержит код, который непосредственно скопирован из кодовой базы Magento. Это является прямым нарушением разделов 3.1 и 9.1b Соглашения разработчика Magento.
File: vendor/module/vendor-module-1.0.0.0/Block/Adminhtml/Module/Edit/Tab/Stores.php
Line: 58
File: magento/module-checkout-agreements/magento-module-checkout-agreements-100.0.6.0/Block/Adminhtml/Agreement/Edit/Form.php
Line: 122
File: magento/module-cms/magento-module-cms-100.0.7.0/Block/Adminhtml/Block/Edit/Form.php
Line: 100
File: vendor/module/vendor-module-1.0.0.0/Block/Adminhtml/Module/Renderer/Files.php
Line: 49
File: magento/framework/magento-framework-100.0.16.0/Data/Form/Element/Image.php
Line: 86
File: vendor/module/vendor-module-1.0.0.0/Model/ResourceModel/AbstractCollection.php
Line: 2
File: magento/module-cms/magento-module-cms-100.0.7.0/Model/ResourceModel/AbstractCollection.php
Line: 6
Есть ли способ проверить наличие дублирования кода на моей установке, чтобы избежать этой проблемы для других моих расширений?
источник
Вот некоторое описание команды Magento 2, используемой для проверки дублирования кода.
Команда для проверки дублирования кода / копирования-вставки приведена ниже.
Эта команда сначала перейдет в
dev/tests/static
папку. Здесь вы можете увидеть файл объявления phpunit.xml.dist для этого набора тестов.В этом файле вы найдете приведенный выше код, который определит, какой файл выполнять для различных тестов кода.
Чтобы сузить, вы можете увидеть
PHP Coding Standard Verification
testsuite
Это будет выполнять файл testsuite / Magento / Test / Php / LiveCodeTest.phpКогда вы откроете этот файл, вы найдете разные функции для проверки на наличие различных типов проблем с кодом. Функция, которая будет выполнена
testCopyPaste
Здесь вы найдете код, который будет использоваться для внесения в черный список любых файлов / папок из этой проверки кода.
Эта
foreach
функция будет проверять наличие любого.txt
файла, добавленного в папку dev / tests / static / testsuite / Magento / Test / Php / _files / phpcpd / blacklist . Он прочтет файл и проигнорирует все папки, которые будут исключены из процесса обнаружения кода копирования-вставки.После добавления всех файлов / папок черного списка в код он будет запущен под кодом.
Этот код будет выполнять
run
функцию файла dev / tests / static / framework / Magento / TestFramework / CodingStandard / Tool / CopyPasteDetector.php .Здесь код добавляет все
blacklisted
папки / файлы в--exclude
список.После этого он запустит
vendor/bin/phpcpd
команду.Вот в самой команде Magento есть
исключил все
Test
файлы по кодуЭто также пропустило все дубликаты кода, которые меньше чем 13 строк кода
Выходные данные для выполнения этой команды будут добавлены в файл, определенный в
testCopyPaste
функции. Имя файла для обнаружения копирования-вставки: phpcpd_report.xml, расположенный в папке dev / tests / static / report location.После успешного выполнения команды выходные данные будут добавлены в файлы отчетов.
источник