কীভাবে পিএইচপি কোডস্নিফায়ারে কিছু কোডিং স্ট্যান্ডার্ড ত্রুটি উপেক্ষা করবেন


14

আমাদের একটি পিএইচপি 5 ওয়েব অ্যাপ্লিকেশন রয়েছে এবং আমরা বর্তমানে পিএইচপি কোডস্নিফারকে মূল্যায়ন করছি যাতে জোর করে কোডের মানদণ্ড খুব বেশি মাথা ব্যথার কারণ না করে কোডের মান উন্নত করে কিনা তা নির্ধারণ করার জন্য evalu যদি মনে হয় এটি ভাল হয় তবে আমরা একটি এসভিএন প্রি-কমিট হুক যুক্ত করব যাতে দেব শাখায় প্রতিশ্রুতিবদ্ধ সমস্ত নতুন ফাইল কোডিং স্ট্যান্ডার্ড গন্ধ থেকে মুক্ত হয় ensure

কোনও বিশেষ ধরণের ত্রুটি উপেক্ষা করার জন্য কি পিএইচপি কোডসনিফার কনফিগার করার কোনও উপায় আছে? বা পরিবর্তে এটি একটি সতর্কতা হিসাবে একটি নির্দিষ্ট ত্রুটি হিসাবে চিকিত্সা পেতে?

সমস্যাটি প্রদর্শনের জন্য এখানে একটি উদাহরণ:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div>
    <?php
    echo getTabContent('Programming', 1, $numX, $numY);

    if (isset($msg)) {
        echo $msg;
    }
    ?>
</div>
</body>
</html>

এবং এটি PHP_CodeSniffer এর আউটপুট:

> phpcs test.php 

-------------------------------------------------- ------------------------------
ফান্ড 2 ত্রুটি (গুলি) এবং 1 সতর্কতা (গুলি) 3 লাইন (গুলি)
-------------------------------------------------- ------------------------------
  1 | সতর্কতা | লাইন 85 টি অক্ষর ছাড়িয়ে গেছে; 121 টি অক্ষর ধারণ করে
  9 | ত্রুটি | অনুপস্থিত ফাইল ডক মন্তব্য
 11 | ত্রুটি | লাইন ভুলভাবে ইন্ডেন্ট করা; প্রত্যাশিত 0 স্পেস, পাওয়া 4
-------------------------------------------------- ------------------------------

" লাইন ভুলভাবে ভুলভাবে যুক্ত করা হয়েছে " ত্রুটি নিয়ে আমার একটি সমস্যা আছে । আমার ধারণা এটি ঘটেছে কারণ আমি পিএইচপি ইন্ডেন্টেশনটি এইচটিএমএল ইনডেন্টেশনের সাথে মিশ্রিত করছি। কিন্তু এটি এটিকে আরও পঠনযোগ্য করে তোলে তাই না? ( এই মুহুর্তে এমভিসি ফ্রেমওয়ার্কে যাওয়ার মতো বিশ্রামাগার আমার নেই বলে মনে করে )) সুতরাং আমি দয়া করে এটি উপেক্ষা করতে চাই।


1
আইএমও এখানে থাকা একটি প্রোগ্রামিং প্রশ্নটির চেয়ে অনেক বেশি .. এটি যেহেতু একটি ইউটিলিটির মতো "লিন্ট" সম্পর্কে যা বেশিরভাগ হার্ড-কোর প্রোগ্রামারদের পক্ষে আগ্রহী, অগত্যা ওয়েবমাস্টারদের নয়। তবে এটি সুন্দরভাবে জিজ্ঞাসা করা হয়েছে এবং ফর্ম্যাট করা হয়েছে, তাই আমরা এটি আপাতত রাখতে পারি।
জেফ আতউড

2
লাইন 1 সতর্কতা সম্পর্কে: আমি কি এইচটিএমএল 5 ডক্টইপি ব্যবহারের পরামর্শ দিতে পারি?
লুস্কুবাল

আপনার মতামতের জন্য ধন্যবাদ জেফ - আমি এটি সরিয়ে খুশি। আমি যখন প্রশ্নটি তৈরি করেছি তখন সম্ভবত কোনও পিএইচপি ট্যাগ ছিল না তখন আমার বুঝতে হবে :-)।
টম

@ লুইসুবল - তিনি, ভাল পরামর্শ; আপনার ভাবনার মত ;-)
টম

উত্তর:


11

আমি " লাইন ভুলভাবে ভুলভাবে ত্রুটিযুক্ত " ত্রুটি অপসারণের জন্য একটি সমাধান পেয়েছি তবে প্রথমে আমার বলা উচিত যে ড্রাগনমন্ত্যাঙ্কের একটি দুর্দান্ত পয়েন্ট রয়েছে - আপনার পিএইচপি এবং এইচটিএমএল মিশ্রিত হওয়া উচিত নয়। এটি মাথা ব্যথার একটি রেসিপি is তবে দুর্ভাগ্যক্রমে আমি মনে করি পিএইচপি এবং এইচটিএমএল মিশ্রণ খুব সাধারণ, বিশেষত লিগ্যাসি সফ্টওয়্যারগুলিতে।

দ্রুত এবং নোংরা ফিক্স ধরে নেওয়া যে আমরা phpcsডিফল্ট কোডিং মান (যা পিয়ার স্ট্যান্ডার্ড) ব্যবহার করছি তা সম্পর্কিত প্রাসঙ্গিক ফাইলটি সরিয়ে ফেলা হয়। PEAR মান অবস্থান খুঁজুন আমার জন্য ব্যবহার উবুন্টু , এটা এখানে ছিল:

> cd /usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/WhiteSpace

ScopeIndentSniff.phpফাইলটির নাম পরিবর্তন করুন যাতে কোড ইন্ডেন্টেশন যাচাই করে এমন স্নিফ আর কার্যকর করা হবে না:

> sudo mv ScopeIndentSniff.php ScopeIndentSniff.php.bk

কাজ শেষ হয়েছে - এখন ইন্ডেন্টেশনটি চেক করা হবে না এবং " লাইন ভুলভাবে ভুলভাবে যুক্ত করা " ত্রুটি ঘটবে না ( এবং আপনার কোডটি আদর্শ হবে না এবং এ জাতীয় উচ্চমানের হবে না! )।


উপরের সমাধানটি বেশ শৌখিন - ক্লিনারটি হ'ল একটি নতুন কোডিং স্ট্যান্ডার্ড তৈরি করা যা আপনার চেরি বাছাই করা কাস্টমাইজেশন বাদে সমস্ত পিয়ার স্ট্যান্ডার্ড ব্যবহার করে। এটি খুব দ্রুত। এখানে কিভাবে ব্যবহার করে এটি করতে হয় getIncludedSniffs()এবং getExcludedSniffs()কিছু phpcsনামকরণ নিয়মাবলী:

Go to the directory where the phpcs coding standards are defined:
> cd /usr/share/php/PHP/CodeSniffer/Standards

Create a new directory for your new standard:
> sudo mkdir PEARish
> cd PEARish

Create your new standard by saving the following in the file:
> sudo emacs PEARishCodingStandard.php
<?php
class PHP_CodeSniffer_Standards_PEARish_PEARishCodingStandard extends PHP_CodeSniffer_Standards_CodingStandard
{
    public function getIncludedSniffs()
    {
      return array('PEAR');
    }

    public function getExcludedSniffs()
    {
      return array('PEAR/Sniffs/WhiteSpace/ScopeIndentSniff.php');
    }
}
?>

পতাকাটি phpcsব্যবহার করে আপনার নতুন কাস্টমাইজড কোডিং মানটি পরীক্ষা করুন --standard। উদাহরণ স্বরূপ:

> phpcs --standard=PEARish Test.php

একবার এটি কাজ হয়ে গেলে আপনি আপনার নতুন মানটিকে ডিফল্ট হিসাবে সেট করতে পারেন যার অর্থ --standardপ্রতিবার আপনি যখন পতাকা ব্যবহার করবেন তখন আপনার প্রয়োজন হবে না phpcs:

> sudo phpcs --config-set default_standard PEARish

দেখুন phpcs ম্যানুয়াল আরও তথ্যের জন্য।


এটি সত্যিই সহজ ছিল - আমি এই উত্তরটি উটের কেস ফাংশন নামকরণ ত্রুটির সাথে "ক্লাসটি কমপক্ষে একটি স্তরের নামস্থানে থাকতে হবে" এর লাইনে উপস্থিত ত্রুটিগুলি অপসারণ করতে ব্যবহার করেছি। আমি যতটা পারি পিএসআর 2 ব্যবহার করছি তবে একটি ম্যাজেন্টো সাইট সম্পাদনা করছি, আমি প্রতিটি ফাংশনটির নাম পরিবর্তন করে নাম সারণি সাজানোর মতো অবস্থানে নেই।
ডেভ চাইল্ড

7

আপনি এইচটিএমএল মিশ্রিত আপনার পিএইচপি কোড দিয়ে পিএইচপিসিএস চলমান অনেকগুলি সমস্যার মধ্যে চলে যাবেন। আপনি খাঁটি পিএইচপি স্ক্রিপ্টগুলি পার্স করার সময় পিএইচপিসিএস কেবলমাত্র কার্যকর। অন্তর্নির্মিত কোডিং মানগুলি পিএইচপি / এইচটিএমএল মিশ্রিত নয়, খাঁটি পিএইচপি চারপাশে নির্মিত are

একটি বিকল্প হ'ল আপনার নিজস্ব কাস্টম মান তৈরি করা এবং তার পরিবর্তে এটি ব্যবহার করা। কাস্টম স্ট্যান্ডার্ডটি কোডের মিশ্রণের বিষয়টি বিবেচনা করবে, তবে এটি সম্ভবত লিখতে ব্যথা হবে।

অন্য বিকল্পটি হ'ল টেম্প্লেটিং সিস্টেমটি ব্যবহার করা যেহেতু আপনি বলেছিলেন যে আপনি কোনও কাঠামোর দিকে যেতে চান না। স্মার্ট এবং টুইগ উভয়ই এমভিসি কাঠামোর বাইরে ব্যবহার করা যায়। এর মধ্যে একটিতে যান এবং তারপরে PHPCS কেবলমাত্র .PHP ফাইলগুলি পার্স করুন, টেম্পলেট ফাইলগুলি নয়।

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