ইসিজি সম্মতি: কীভাবে করবেন?


10

ম্যাজেন্টো 1 এরcoding standard জন্য একটির মতো কিছু রয়েছে যা বলা হয় ECGযেখানে অসংখ্য জিনিস এড়ানো উচিত বা এমন পদ্ধতিগুলি ব্যবহার করা উচিত নয়।

আসুন একটি তালিকা তৈরি করার চেষ্টা করুন যা আপনার কোডগুলিতে "ত্রুটি" বা "সতর্কতা" ছুঁড়েছে এমন সমস্ত কেসকে কভার করে।

নীচে আপনি সমস্ত সম্ভাব্য সতর্কতা সহ একটি তালিকা পাবেন। আমি নিয়মিত বিরতিতে এই পোস্টটি আপডেট করব এবং প্রদত্ত এবং উত্তোলিত উত্তরগুলির লিঙ্ক করব।

দ্রষ্টব্য: দয়া করে সদৃশ উত্তরগুলি এড়ানোর চেষ্টা করুন;)

ডাউনলোড: https://github.com/magento-ecg/coding- স্ট্যান্ডার্ড


ইসিজি স্নিফস

ক্লাস

Mysql4

Mysql4 ক্লাসগুলি অপ্রচলিত।

অবজেক্ট ইনস্ট্যান্টেশন

ডাইরেক্ট অবজেক্ট ইনস্ট্যান্টিয়েশন (ক্লাস% s) ম্যাজেন্টোতে নিরুৎসাহিত করা হয়েছে।

protected $disallowedClassPrefixes = array(
    'Mage_',
    'Enterprise_',
);

...

পিএইচপি

যাও

গোটো ব্যবহার নিরুৎসাহিত করা হয়।

...

নামস্থান

"" এর জন্য নেমস্পেস। $ ব্যতিক্রমধর্ম শ্রেণি নাম। '"শ্রেণি নির্দিষ্ট করা হয়নি।

...

বেসরকারী ক্লাস সদস্য

প্রাইভেট ক্লাসের সদস্য সনাক্ত হয়েছে।

...

var

প্রাইভেট ক্লাসের সদস্য সনাক্ত হয়েছে।

...

কর্মক্ষমতা

সংগ্রহ গণনা

একটি ম্যাজেন্টো ডেটা সংগ্রহের অপ্রয়োজনীয় লোড। পরিবর্তে getSize () পদ্ধতিটি ব্যবহার করুন।

FetchAll

ফ্যাচএল () বড় ডেটা সেটগুলির জন্য মেমরি অদক্ষ হতে পারে।

...

GetFirstItem

getFirstItem () সংগ্রহ লোডের ফলাফলকে একটি আইটেমের মধ্যে সীমাবদ্ধ করে না।

লুপ

অ্যারে আকারের গণনা ফাংশন% s লুপটিতে সনাক্ত হয়েছে

মডেল এলএসডি পদ্ধতি% s লুপটিতে সনাক্ত হয়েছে

লুপটিতে ডেটা লোড% s পদ্ধতি সনাক্ত করা হয়েছে

protected $countFunctions = array(
    'sizeof',
    'count'
);
protected $modelLsdMethods = array(
    'load',
    'save',
    'delete'
);

নিরাপত্তা

ACL

% S শ্রেণিতে% s () ACL পদ্ধতি অনুপস্থিত।

const PARENT_CLASS_NAME = 'Mage_Adminhtml_Controller_Action';
const REQUIRED_ACL_METHOD_NAME = '_isAllowed';

...

নিরুত্সাহিত কাজ

public $forbiddenFunctions = array(
    '^is_dir' => null,
    '^is_file$' => null,
    '^pathinfo$' => null,
);

...

নিষিদ্ধ ফাংশন

public $forbiddenFunctions = array(
    '^assert$' => null,
    '^bind_textdomain_codeset$' => null,
    '^bindtextdomain$' => null,
    '^bz.*$' => null,
    '^call_user_func$' => null,
    '^call_user_func_array$' => null,
    '^chdir$' => null,
    '^chgrp$' => null,
    '^chmod$' => null,
    '^chown$' => null,
    '^chroot$' => null,
    '^com_load_typelib$' => null,
    '^copy$' => null,
    '^create_function$' => null,
    '^curl_.*$' => null,
    '^cyrus_connect$' => null,
    '^dba_.*$' => null,
    '^dbase_.*$' => null,
    '^dbx_.*$' => null,
    '^dcgettext$' => null,
    '^dcngettext$' => null,
    '^dgettext$' => null,
    '^dio_.*$' => null,
    '^dirname$' => null,
    '^dngettext$' => null,
    '^domxml_.*$' => null,
    '^exec$' => null,
    '^fbsql_.*$' => null,
    '^fdf_add_doc_javascript$' => null,
    '^fdf_open$' => null,
    '^fopen$' => null,
    '^fsockopen$' => null,
    '^ftp_.*$' => null,
    '^fwrite$' => null,
    '^gettext$' => null,
    '^gz.*$' => null,
    '^header$' => null,
    '^highlight_file$' => null,
    '^ibase_.*$' => null,
    '^id3_set_tag$' => null,
    '^ifx_.*$' => null,
    '^image.*$' => null,
    '^imap_.*$' => null,
    '^ingres_.*$' => null,
    '^ircg_.*$' => null,
    '^ldap_.*$' => null,
    '^link$' => null,
    '^mail$' => null,
    '^mb_send_mail$' => null,
    '^mkdir$' => null,
    '^move_uploaded_file$' => null,
    '^msession_.*$' => null,
    '^msg_send$' => null,
    '^msql$' => null,
    '^msql_.*$' => null,
    '^mssql_.*$' => null,
    '^mysql_.*$' => null,
    '^odbc_.*$' => null,
    '^opendir$' => null,
    '^openlog$' => null,
    '^ora_.*$' => null,
    '^ovrimos_.*$' => null,
    '^parse_ini_file$' => null,
    '^parse_str$' => null,
    '^parse_url$' => null,
    '^parsekit_compile_string$' => null,
    '^passthru$' => null,
    '^pcntl_.*$' => null,
    '^posix_.*$' => null,
    '^pfpro_.*$' => null,
    '^pfsockopen$' => null,
    '^pg_.*$' => null,
    '^php_check_syntax$' => null,
    '^popen$' => null,
    '^print_r$' => null,
    '^printf$' => null,
    '^proc_open$' => null,
    '^putenv$' => null,
    '^readfile$' => null,
    '^readgzfile$' => null,
    '^readline$' => null,
    '^readlink$' => null,
    '^register_shutdown_function$' => null,
    '^register_tick_function$' => null,
    '^rename$' => null,
    '^rmdir$' => null,
    '^scandir$' => null,
    '^session_.*$' => null,
    '^set_include_path$' => null,
    '^set_ini$' => null,
    '^set_time_limit$' => null,
    '^setcookie$' => null,
    '^setlocale$' => null,
    '^setrawcookie$' => null,
    '^shell_exec$' => null,
    '^sleep$' => null,
    '^socket_.*$' => null,
    '^stream_.*$' => null,
    '^sybase_.*$' => null,
    '^symlink$' => null,
    '^syslog$' => null,
    '^system$' => null,
    '^touch$' => null,
    '^trigger_error$' => null,
    '^unlink$' => null,
    '^vprintf$' => null,
    '^mysqli.*$' => null,
    '^oci_connect$' => null,
    '^oci_pconnect$' => null,
    '^quotemeta$' => null,
    '^sqlite_popen$' => null,
    '^time_nanosleep$' => null,
    '^base64_decode$' => null,
    '^base_convert$' => null,
    '^basename$' => null,
    '^chr$' => null,
    '^convert_cyr_string$' => null,
    '^dba_nextkey$' => null,
    '^dns_get_record$' => null,
    '^extract$' => null,
    '^fdf_.*$' => null,
    '^fget.*$' => null,
    '^fread$' => null,
    '^fflush$' => null,
    '^get_browser$' => null,
    '^get_headers$' => null,
    '^get_meta_tags$' => null,
    '^getallheaders$' => null,
    '^getenv$' => null,
    '^getopt$' => null,
    '^headers_list$' => null,
    '^hebrev$' => null,
    '^hebrevc$' => null,
    '^highlight_string$' => null,
    '^html_entity_decode$' => null,
    '^ibase_blob_import$' => null,
    '^id3_get_tag$' => null,
    '^import_request_variables$' => null,
    '^ircg_nickname_unescape$' => null,
    '^ldap_get_values$' => null,
    '^mb_decode_mimeheader$' => null,
    '^mb_parse_str$' => null,
    '^mcrypt_decrypt$' => null,
    '^mdecrypt_generic$' => null,
    '^msg_receive$' => null,
    '^ngettext$' => null,
    '^ob_get_contents$' => null,
    '^ob_get_flush$' => null,
    '^rawurldecode$' => null,
    '^shm_get_var$' => null,
    '^stripcslashes$' => null,
    '^stripslashes$' => null,
    '^token_get_all$' => null,
    '^unpack$' => null,
    '^convert_uudecode$' => null,
    '^iconv_mime_decode$' => null,
    '^iconv_mime_decode_headers$' => null,
    '^iconv_mime_encode$' => null,
    '^iconv_set_encoding$' => null,
    '^php_strip_whitespace$' => null,
    '^addcslashes$' => null,
    '^addslashes$' => null,
    '^escapeshellarg$' => null,
    '^escapeshellcmd$' => null,
    '^gettype$' => null,
    '^var_dump$' => null,
    '^tempnam$' => null,
    '^realpath$' => null,
    '^linkinfo$' => null,
    '^lstat$' => null,
    '^stat$' => null,
    '^lchgrp$' => null,
    '^lchown$' => null,
    '^show_source$' => null,
    '^is_executable$' => null,
    '^is_link$' => null,
    '^is_readable$' => null,
    '^is_writable$' => null,
    '^is_writeable$' => null,
    '^is_uploaded_file$' => null,
    '^glob$' => null,
    '^ssh2_.*$' => null,
    '^delete$' => null,
    '^file.*$' => null,
);

ফাইল অন্তর্ভুক্ত করুন

"% s" বিবৃতি সনাক্ত হয়েছে। ফাইল ম্যানিপুলেশন নিরুৎসাহিত করা হয়।

... বিবৃতি কোনও ফাংশন নয়, কোনও বন্ধনীর প্রয়োজন নেই।

... ইউআরএল পাস করা নিষিদ্ধ।

... প্রতিযোগিতা নিষিদ্ধ।

... ভিতরে ভেরিয়েবলগুলি নিরাপত্তাহীন।

public $urlPattern = '#(https?|ftp)://.*#i';

...

ভাষা গঠন

ব্যাক কোট স্ট্রিং ধ্রুবকের ভুল ব্যবহার। পিছনে উদ্ধৃতিগুলি সর্বদা স্ট্রিংয়ের অভ্যন্তরে থাকা উচিত।

% S ভাষা নির্মাণের ব্যবহারকে নিরুৎসাহিত করা হয়েছে।

    return array(
        T_EXIT,
        T_ECHO,
        T_PRINT,
        T_BACKTICK
    );

...

superglobal

% S সুপারগ্লোবালের সরাসরি ব্যবহার সনাক্ত করা হয়েছে।

public $superGlobalErrors = array(
    '$GLOBALS',
    '$_GET',
    '$_POST',
    '$_SESSION',
    '$_REQUEST',
    '$_ENV'
);
public $superGlobalWarning = array(
    '$_FILES',
    '$_COOKIE',
    '$_SERVER',
);

SQL

কাঁচা প্রশ্ন

সম্ভাব্য কাঁচা এসকিউএল বিবরণ% s সনাক্ত হয়েছে

public $statements = array(
    'SELECT',
    'UPDATE',
    'INSERT',
    'CREATE',
    'DELETE',
    'ALTER',
    'DROP'
);
public $queryFunctions = array(
    'query',
    'raw_query'
);

...

ধীর অনুসন্ধান

সম্ভাব্য ধীর এসকিউএল বিবরণ% s সনাক্ত হয়েছে

সম্ভাব্য ধীর এসকিউএল পদ্ধতি% s সনাক্ত হয়েছে

public $adapterMethods = array(
    'group',
    'having',
    'distinct',
    'addLikeEscape',
    'escapeLikeValue',
    'union',
    'orHaving',
);
public $rawStatements = array(
    'GROUP BY',
    'HAVING',
    'DISTINCT',
    'LIKE',
    'UNION',
);

...

স্ট্রিংস

Regex

% S এ সম্ভাব্য নির্বাহযোগ্য নিয়মিত অভিব্যক্তি। নিশ্চিত করুন যে প্যাটার্নটিতে "ই" সংশোধক নেই

public $functions = array(
    'preg_replace',
);

...

স্ট্রিং কনক্যাট

দুটি স্ট্রিং সংহত করতে + অপারেটরের ব্যবহার সনাক্ত করা হয়েছে

...

স্ট্রিং পজিশন

সনাক্তকারী অপারেটর ===% s ফাংশনের রিটার্ন মান পরীক্ষার জন্য ব্যবহৃত হয় না

public $functions = array(
    'strpos',
    'stripos',
);

জন্য সম্পর্কিত প্রশ্ন ও উত্তর answers


এই পোস্টটি সম্পর্কে LOL, আপনি প্রায় একটি দস্তাবেজ লিখেছেন :)
PЯINCƏ

@ প্রিন্স অন্য কেউ এটি সম্পূর্ণ করতে কিছুটা সহায়তা করতে পারে: পি
এসভি

আমার মনে হয় না :)
PЯINCƏ

স্ট্রিপস্ক্ল্যাশেস () এর কোন বিকল্প? @ এসভি 3 এ জাতীয় বর্ণনামূলক প্রশ্ন ও উত্তরগুলির জন্য ধন্যবাদ :)
কিয়ুর শাহ

@ কেয়ারশাহ নং হয় হয় সতর্কতা উপেক্ষা করুন বা "আগে" এড়ানোর চেষ্টা করুন :) আপনি কোন ক্ষেত্রে এটি ব্যবহার করেন? প্রশ্ন হিসাবে এটি যোগ করতে পারেন?
এসভি 3 ই

উত্তর:


6

নিষিদ্ধ ফাংশন

ফাইলটি আছে()

ফাংশন file_exists () ব্যবহার নিষিদ্ধ

ত্রুটিপূর্ণ:

if (!file_exists($filePath)) {
    ...
}

সঠিক:

$io = new Varien_Io_File();
if (!$io->fileExists($filePath)) {
    ...
}

অথবা

$validatorNot = new Zend_Validate_File_NotExists($path);
if ($validatorNot->isValid($file)) {
    ...
}

5

GetFirstItem

getFirstItem () সংগ্রহ লোডের ফলাফলকে একটি আইটেমের মধ্যে সীমাবদ্ধ করে না।

ত্রুটিপূর্ণ:

$collection = Mage::getModel('catalog/category')
    ->load(41)
    ->getProductCollection()
    ->addAttributeToSelect('weight');

$product = $collection->getFirstItem();
$weight  = $product->getData('weight');

সঠিক:

দখল ডেটার আগে সীমা প্রয়োগ করুন।

$collection->getSelect()->limit(1)

অথবা

$collection->setPageSize(1, 1)

Expamples:

750 পণ্য সহ সংগ্রহ ...

আগে সীমাবদ্ধ না করে:

  • মোট Incl। ওয়াল সময় (মাইক্রোসেকস): 2,116,522 মাইক্রোস্যাকস
  • মোট Incl। সিপিইউ (মাইক্রোস্যাকস): 2,101,688 মাইক্রোস্যাকস
  • মোট Incl। মেমুউজ (বাইটস): 4,783,504 বাইট
  • মোট Incl। পিকমেমউস (বাইটস): 4,363,112 বাইট
  • ফাংশন কলগুলির সংখ্যা: 104,187

ব্যবহার সহ getSelect()->limit(1):

  • মোট Incl। ওয়াল সময় (মাইক্রোসেকস): 149,803 মাইক্রোসেকস
  • মোট Incl। সিপিইউ (মাইক্রোস্যাকস): 131,405 মাইক্রোসেকস
  • মোট Incl। মেমুউজ (বাইটস): 2,384,840 বাইট
  • মোট Incl। পিকমেমউস (বাইটস): 1,827,112 বাইট
  • ফাংশন কলগুলির সংখ্যা: 5,327

ব্যবহারের সাথে setPageSize(1, 1)

  • মোট Incl। ওয়াল সময় (মাইক্রোসেকস): 155,025 মাইক্রোসেকস
  • মোট Incl। সিপিইউ (মাইক্রোস্যাকস): 136,191 মাইক্রোস্যাকস
  • মোট Incl। মেমুউজ (বাইটস): 2,413,128 বাইট
  • মোট Incl। পিকমেমউস (বাইটস): 1,856,064 বাইট
  • ফাংশন কলগুলির সংখ্যা: 5,515

বিঃদ্রঃ:

আপনি যদি আগে আপনার সংগ্রহ সীমাবদ্ধ করেন তবে এই সতর্কতাটি এখনও পপ আপ হবে। এই বার্তাটি থেকে মুক্তি পেতে $collection->getLastItem()পরিবর্তে ব্যবহার করুন।


Data access method LIMIT detected outside of Resource Modelসীমা ব্যবহার করার সময় আমি পাচ্ছি
অমিত প্যাটেল


5

নিষিদ্ধ ফাংশন

curl_xyz

কার্ল_ইনিট (), কার্ল_সেটপ্ট (), কার্ল_এক্সেক (), কার্ল_ক্লোজ () ফাংশন ব্যবহার নিষিদ্ধ

ত্রুটিপূর্ণ:

$ch = curl_init();
curl_setopt($connection, CURLOPT_HTTPHEADER, $header);
curl_setopt($connection, CURLOPT_POSTFIELDS, $request);
curl_setopt($connection, CURLOPT_URL, $url);
$response = curl_exec($ch);
curl_close($ch);

সঠিক:

$options = array(
    CURLOPT_HTTPHEADER => $header,
    CURLOPT_POSTFIELDS => $request
);

$curl = new Varien_Http_Adapter_Curl();
$curl->setOptions($options);
$curl->write(Zend_Http_Client::GET, $url, Zend_Http_Client::HTTP_0);
$response = $curl->read();
$responseBody = Zend_Http_Response::extractBody($response);
$curl->close();

আমি উপরে কোড ব্যবহার করেছি এবং এটি আমাকে ত্রুটি দিচ্ছে Uncaught Error: Class 'Custom\Rma\Helper\Varien_Http_Adapter_Curl' not found। ক্লাসটি কীভাবে ব্যবহার করব আমি এটি বিক্রেতাকে পেয়েছি তবে ভাগ্য নেই।
নিতিন পাওয়ার

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