Stworzyłem moduł w Magento 2 i teraz próbuję go przesłać na Magento Marketplace. Moje rozszerzenie przeszło z przeglądu biznesowego i technicznego, ale mam problemy z przeglądem kontroli jakości.
Otrzymałem wiadomość z rynku Magento z informacją, że mam duplikację kodu w moim rozszerzeniu. Poniżej znajduje się próbka wiadomości.
Problemy z jakością kodu: CPD: To rozszerzenie zawiera zduplikowany kod.
Kiedy poszedłem do mojego produktu na koncie Marketplace i sprawdziłem raport techniczny, znalazłem poniżej.
Wykryto duplikaty kodu
To rozszerzenie zawiera kod, który jest kopiowany bezpośrednio z bazy kodu Magento. Stanowi to bezpośrednie naruszenie sekcji 3.1 i 9.1b umowy dewelopera 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
Czy jest jakiś sposób, aby sprawdzić duplikację kodu w mojej instalacji, aby uniknąć tego problemu w przypadku innych rozszerzeń?
źródło
Oto opis komendy Magento 2 używanej do sprawdzania duplikacji kodu.
Polecenie sprawdzenia duplikacji kodu / kopiuj-wklej znajduje się poniżej.
To polecenie najpierw przejdzie do
dev/tests/static
folderu. Tutaj możesz zobaczyć plik deklaracji phpunit.xml.dist dla tego zestawu testów.W tym pliku znajdziesz powyższy kod, który określi, który plik ma zostać wykonany dla różnych testów kodu.
W celu zawężenia możesz zobaczyć
PHP Coding Standard Verification
testsuite
To spowoduje uruchomienie pliku testsuite / Magento / Test / Php / LiveCodeTest.phpPo otwarciu tego pliku znajdziesz różne funkcje do sprawdzania różnych rodzajów problemów z kodem. Funkcja, która zostanie wykonana to
testCopyPaste
Tutaj znajdziesz kod, który zostanie użyty do umieszczenia na czarnej liście dowolnego pliku / folderu z tej kontroli kodu.
Ta
foreach
funkcja sprawdzi, czy.txt
plik jest dodany w lokalizacji dev / test / static / testsuite / Magento / Test / Php / _files / phpcpd / blacklist . Odczyta plik i zignoruje wszystkie foldery, aby wykluczyć z procesu wykrywania kodu wklejania kopii.Po dodaniu wszystkich plików / folderów z czarnej listy do kodu, będzie on działał poniżej kodu.
Ten kod wykona
run
funkcję pliku dev / test / static / framework / Magento / TestFramework / CodingStandard / Tool / CopyPasteDetector.php .Tutaj kod dodaje wszystkie
blacklisted
foldery / pliki z--exclude
listy.Następnie uruchomi
vendor/bin/phpcpd
polecenie.Tutaj w samym poleceniu ma Magento
wykluczono wszystkie
Test
pliki według koduPominął również wszystkie duplikaty kodu, które mają mniej niż 13 linii według kodu
Dane wyjściowe do wykonania tego polecenia zostaną dodane do pliku zdefiniowanego w
testCopyPaste
funkcji. Nazwa pliku do wykrywania wklejania kopii to phpcpd_report.xml znajdująca się w lokalizacji dev / test / static / report .Po pomyślnym wykonaniu polecenia dane wyjściowe zostaną dodane do plików raportów.
źródło