कोड डुप्लिकेट की जांच के लिए इस्तेमाल किए जाने वाले Magento 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
यह फ़ाइल testuite / Magento / Test / Php / LiveCodeTest.php निष्पादित करेगा
जब आप इस फ़ाइल को खोलते हैं, तो आपको विभिन्न प्रकार के कोड मुद्दों की जांच करने के लिए अलग-अलग फ़ंक्शन मिलेंगे। जो कार्य निष्पादित किया जाएगा वह है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
फ़ंक्शन देव / परीक्षणों / स्थिर / टेस्टसुइट / Magento / टेस्ट / Php / _files / phpcpd / ब्लैकलिस्ट स्थान .txt
में जोड़ी गई किसी भी फ़ाइल के लिए जाँच करेगा । यह फ़ाइल को पढ़ेगा और कॉपी पेस्ट कोड डिटेक्शन प्रक्रिया से बाहर करने के लिए सभी फ़ोल्डरों की अनदेखी करेगा।
सभी ब्लैकलिस्ट फ़ाइलों / फ़ोल्डरों को कोड में जोड़ने के बाद, यह कोड से नीचे चलेगा।
$result = $copyPasteDetector->run([BP]);
यह कोड देव / परीक्षणों / स्थिर / रूपरेखा / Magento / TestFramework / CodingStandard / Tool / CopyPasteDetector.php फ़ाइल के run
कार्य को निष्पादित करेगा ।
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"
इसने उन सभी कोड डुप्लिकेट को भी छोड़ दिया है जो कोड द्वारा 13 लाइनों से कम हैं
--min-lines 13
इस कमांड निष्पादन के लिए आउटपुट testCopyPaste
फ़ंक्शन में परिभाषित फ़ाइल में जोड़ा जाएगा । कॉपी-पेस्ट का पता लगाने के लिए फ़ाइल नाम है phpcpd_report.xml पर स्थित देव / परीक्षण / स्थिर / रिपोर्ट स्थान।
कमांड के सफल निष्पादन के बाद, आउटपुट को रिपोर्ट फ़ाइलों में जोड़ा जाएगा।