ম্যাজেন্টো 2 এক্সটেনশনে কোডের নকল কীভাবে চেক করবেন?


15

আমি ম্যাজেন্টো 2 এ একটি মডিউল তৈরি করেছি এবং এখন আমি এটি ম্যাজেন্টো মার্কেটপ্লেসে জমা দেওয়ার চেষ্টা করছি। আমার এক্সটেনশনটি ব্যবসায়িক পর্যালোচনা এবং প্রযুক্তিগত পর্যালোচনা থেকে উত্তীর্ণ হয়েছে তবে আমি কিউএ পর্যালোচনা নিয়ে সমস্যার মুখোমুখি।

আমি ম্যাজেন্টো মার্কেটপ্লেস থেকে একটি মেইল ​​পেয়েছি যাতে উল্লেখ করা হয়েছে যে আমার এক্সটেনশনে আমার কোড নকল ছিল। নীচে মেইলের নমুনা দেওয়া হল।

কোড মানের সমস্যা: সিপিডি: এই এক্সটেনশানে সদৃশ কোড রয়েছে।

আমি যখন মার্কেটপ্লেস অ্যাকাউন্টে আমার পণ্যটিতে গিয়ে প্রযুক্তিগত প্রতিবেদনটি যাচাই করেছিলাম, আমি নীচে পেয়েছি।

কোড সদৃশ সনাক্ত

এই এক্সটেনশনে এমন কোড রয়েছে যা ম্যাজেন্টো কোডবেস থেকে সরাসরি অনুলিপি করা হয়েছে। এটি ম্যাজেন্টো বিকাশকারী চুক্তির ৩.১ এবং ৯.১ বি এর সরাসরি লঙ্ঘন।

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

আমার অন্যান্য এক্সটেনশনের জন্য এই সমস্যাটি এড়াতে আমার সেটআপে কোড নকলের জন্য কীভাবে চেক করতে পারি?

উত্তর:


6

ম্যাজেন্টো 2 সেটআপ ফোল্ডার

কোড এক্সটেনশন সহ চেকের জন্য পদক্ষেপ -1

/dev/tests/static/testsuite/Magento/Test/Php/_files/phpcpd/blacklist
rename common.txt--

কমান্ডের নিচে স্টেপ -২ রান করুন

php bin/magento dev:tests:run static

পদক্ষেপ -3 সদৃশ কোড দেখুন

dev/tests/static/report
phpcpd_report.xml

এখন চেক করুন phpcpd_report.xml


1
হ্যালো নিখিল, আপনি কি দয়া করে বিশদটি ব্যাখ্যা করতে পারেন
সাগর ডোবারিয়া

6

কোড সদৃশতা যাচাই করতে ব্যবহৃত ম্যাজেন্টো 2 কমান্ডের কিছু বর্ণনা এখানে দেওয়া হল।

কোড সদৃশ / অনুলিপি-পরীক্ষা করার জন্য আদেশটি নীচে রয়েছে।

php bin/magento dev:tests:run static

এই কমান্ডটি প্রথমে dev/tests/staticফোল্ডারে যাবে। এখানে আপনি এই পরীক্ষার স্যুটটির জন্য ডিক্লারেশন ফাইল phpunit.xML.dist দেখতে পাবেন ।

<testsuites>
    <testsuite name="Less Static Code Analysis">
        <file>testsuite/Magento/Test/Less/LiveCodeTest.php</file>
    </testsuite>
    <testsuite name="Javascript Static Code Analysis">
        <file>testsuite/Magento/Test/Js/LiveCodeTest.php</file>
    </testsuite>
    <testsuite name="PHP Coding Standard Verification">
        <file>testsuite/Magento/Test/Php/LiveCodeTest.php</file>
    </testsuite>
    <testsuite name="Code Integrity Tests">
        <directory>testsuite/Magento/Test/Integrity</directory>
    </testsuite>
    <testsuite name="Xss Unsafe Output Test">
        <file>testsuite/Magento/Test/Php/XssPhtmlTemplateTest.php</file>
    </testsuite>
</testsuites>

এই ফাইলটিতে আপনি উপরের কোডটি পাবেন যা বিভিন্ন কোড পরীক্ষার জন্য কোন ফাইলটি নির্বাহ করতে হবে তা সংজ্ঞায়িত করবে।

সঙ্কুচিত করতে আপনি দেখতে পাবেন PHP Coding Standard Verification testsuiteএটি ফাইল টেস্টসুইট / ম্যাজেন্টো / টেস্ট / পিএইচপি / লাইভকোডেস্ট.পিএফ চালাবে

আপনি যখন এই ফাইলটি খুলবেন, আপনি বিভিন্ন ধরণের কোডের সমস্যাগুলি পরীক্ষা করতে বিভিন্ন ফাংশন পাবেন। যে ফাংশনটি কার্যকর করা হবে তা হ'লtestCopyPaste

public function testCopyPaste()
{
    $reportFile = self::$reportDir . '/phpcpd_report.xml';
    $copyPasteDetector = new CopyPasteDetector($reportFile);

    if (!$copyPasteDetector->canRun()) {
        $this->markTestSkipped('PHP Copy/Paste Detector is not available.');
    }

    $blackList = [];
    foreach (glob(__DIR__ . '/_files/phpcpd/blacklist/*.txt') as $list) {
        $blackList = array_merge($blackList, file($list, FILE_IGNORE_NEW_LINES));
    }

    $copyPasteDetector->setBlackList($blackList);

    $result = $copyPasteDetector->run([BP]);

    $output = "";
    if (file_exists($reportFile)) {
        $output = file_get_contents($reportFile);
    }

    $this->assertTrue(
        $result,
        "PHP Copy/Paste Detector has found error(s):" . PHP_EOL . $output
    );
}

এখানে, আপনি একটি কোড পাবেন যা এই কোড চেক থেকে কোনও ফাইল / ফোল্ডারকে কালো তালিকাভুক্ত করতে ব্যবহৃত হবে।

foreach (glob(__DIR__ . '/_files/phpcpd/blacklist/*.txt') as $list) {
    $blackList = array_merge($blackList, file($list, FILE_IGNORE_NEW_LINES));
}

এই foreachফাংশনটি ডিভ / টেস্টস / স্ট্যাটিক / টেস্টুয়েট / ম্যাজেন্টো / টেস্ট / পিএইচপি / _ ফাইলস / পিএইচসিপিডি / ব্ল্যাকলিস্টের লোকেশনে.txt যুক্ত যে কোনও ফাইলের জন্য যাচাই করবে । এটি ফাইলটি পড়বে এবং অনুলিপি করে কপি পেস্ট কোড সনাক্তকরণ প্রক্রিয়া থেকে বাদ দিতে সমস্ত ফোল্ডার।

কোডে সমস্ত ব্ল্যাকলিস্ট ফাইল / ফোল্ডার যুক্ত করার পরে, এটি কোডের নীচে চলবে।

$result = $copyPasteDetector->run([BP]);

এই কোড চালানো হবে runফাংশন দেব / পরীক্ষার / স্ট্যাটিক / ফ্রেমওয়ার্ক / Magento / TestFramework / CodingStandard / টুল / CopyPasteDetector.php ফাইল।

public function run(array $whiteList)
{
    $blackListStr = ' ';
    foreach ($this->blacklist as $file) {
        $file = escapeshellarg(trim($file));
        if (!$file) {
            continue;
        }
        $blackListStr .= '--exclude ' . $file . ' ';
    }

    $vendorDir = require BP . '/app/etc/vendor_path.php';
    $command = 'php ' . BP . '/' . $vendorDir . '/bin/phpcpd' . ' --log-pmd ' . escapeshellarg(
            $this->reportFile
        ) . ' --names-exclude "*Test.php" --min-lines 13' . $blackListStr . ' ' . implode(' ', $whiteList);

    exec($command, $output, $exitCode);

    return !(bool)$exitCode;
}

এখানে কোড তালিকায় সমস্ত blacklistedফোল্ডার / ফাইল যুক্ত করে --exclude

এর পরে এটি vendor/bin/phpcpdকমান্ড চালাবে ।

এখানে কমান্ড নিজেই Magento আছে

Testকোড অনুসারে সমস্ত ফাইল বাদ দেয়

--names-exclude "*Test.php" 

এটি কোড অনুসারে ১৩ টি লাইনের চেয়ে কম সমস্ত কোড সদৃশও এড়িয়ে গেছে

--min-lines 13

এই কমান্ড কার্যকর করার জন্য আউটপুট testCopyPasteফাংশনে সংজ্ঞায়িত ফাইলে যুক্ত করা হবে । অনুলিপি-পেস্ট সনাক্তকরণের ফাইলের নামটি phpcpd_report.xML যা dev / টেস্টস / স্থির / প্রতিবেদনের স্থানে অবস্থিত।

কমান্ডটি সফলভাবে প্রয়োগের পরে, ফাইলগুলি প্রতিবেদন করতে আউটপুট যুক্ত করা হবে।


- আপনি কোড অনুলিপি এর এই প্রশ্নের কোনো সমাধান পরামর্শ দিতে পারেন magento.stackexchange.com/q/191829/20064
পীযূষ

হ্যালো @ নিখিল আপনি কি দয়া করে আমাকে বলতে পারেন যে "এই এক্সটেনশানে সদৃশ কোড রয়েছে" এর মতো ত্রুটিটি নির্দেশ করে। পিএইচসিপিডি_রেপোর্ট.এক্সএমএল
এমিপ্রো টেকনোলজিস প্রাইভেট। লিমিটেড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.