色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

php codesniffer 使用

今天我們來(lái)聊一下PHP代碼檢查器——PHP CodeSniffer(以下簡(jiǎn)稱PHPCS)的使用。

簡(jiǎn)單來(lái)說(shuō),PHPCS就是一個(gè)靜態(tài)分析工具,可以幫助我們檢查代碼質(zhì)量,發(fā)現(xiàn)潛在的問(wèn)題,并且可以通過(guò)一些標(biāo)準(zhǔn)化規(guī)則強(qiáng)制保持代碼風(fēng)格的一致性。

PHPCS可以通過(guò)安裝PEAR包或Composer包來(lái)進(jìn)行安裝,這里以Composer為例:

composer require squizlabs/php_codesniffer --dev

上述命令會(huì)將PHPCS作為一個(gè)本地依賴包安裝在項(xiàng)目中,并且只在開(kāi)發(fā)環(huán)境中使用。

安裝完成后,PHPCS會(huì)默認(rèn)支持一些標(biāo)準(zhǔn)化規(guī)則,比如PSR2,PEAR等等,也可以通過(guò)安裝擴(kuò)展包的方式添加其他的規(guī)則。

我們可以通過(guò)執(zhí)行以下命令來(lái)檢查一個(gè)PHP文件:

./vendor/bin/phpcs path/to/file.php

執(zhí)行完命令后,PHPCS會(huì)返回一些關(guān)于代碼風(fēng)格、結(jié)構(gòu)等方面的錯(cuò)誤信息,比如:

FILE: /path/to/file.php
--------------------------------------------------------------------------------
FOUND 3 ERRORS AFFECTING 3 LINES
--------------------------------------------------------------------------------
 1 | ERROR | [x] Expected 1 blank line before statement; 0 found
 7 | ERROR | [x] Spaces must be used to indent lines; tabs are not allowed
 8 | ERROR | [x] Opening brace should be on a new line
--------------------------------------------------------------------------------

上述代碼檢查結(jié)果意味著:

  • 第1行代碼應(yīng)該在之前多加一個(gè)空白行;
  • 第7行縮進(jìn)使用了Tab鍵,而不是空格;
  • 第8行開(kāi)括號(hào)應(yīng)該在新一行。

除了單個(gè)文件檢查,PHPCS還支持檢查整個(gè)目錄或整個(gè)項(xiàng)目:

./vendor/bin/phpcs path/to/directory
./vendor/bin/phpcs path/to/project --standard=

PHPCS也支持自定義規(guī)則,規(guī)則可以通過(guò)編寫(xiě)PHP代碼來(lái)實(shí)現(xiàn),也可以通過(guò)XML文件來(lái)實(shí)現(xiàn)。這里以編寫(xiě)PHP代碼的方式為例,簡(jiǎn)單介紹一下規(guī)則的基本使用方法:

首先創(chuàng)建一個(gè)名為"MyCustomRuleset"的類文件:

<?php
namespace MyRuleset;
use PHP_CodeSniffer\Sniffs\Sniff;
use PHP_CodeSniffer\Files\File;
class MyCustomRuleset implements Sniff
{
public function register()
{
return array(
T_CLASS,
T_INTERFACE,
T_TRAIT,
);
}
public function process(File $file, $stackPtr)
{
// check for the presence of ClassInterfaceTrait.foo() methods.
// report an error on all methods called foo() outside of foreach() loops
}
}

上述代碼定義了一個(gè)名為MyCustomRuleset的類,實(shí)現(xiàn)了PHP_CodeSniffer\Sniffs\Sniff接口,定義了register()和process()兩個(gè)方法。

  • register()方法返回一個(gè)數(shù)組,表示我們希望檢查的Token類型,這里表示檢查所有的類、接口、Trait。
  • process()方法是PHPCS真正進(jìn)行檢查的方法,它接收$file和$stackPtr兩個(gè)參數(shù),$file表示當(dāng)前文件的信息,$stackPtr表示當(dāng)前的Token的位置。

PHPCS會(huì)調(diào)用我們實(shí)現(xiàn)的register()方法,查找所有需要檢查的Token類型,并且對(duì)每個(gè)Token調(diào)用一次process()方法,在這個(gè)方法中我們可以編寫(xiě)自己的規(guī)則實(shí)現(xiàn)。

大概介紹了一下PHPCS的使用,這是一個(gè)非常實(shí)用的工具,可以幫助我們發(fā)現(xiàn)代碼中原本不易被發(fā)現(xiàn)的問(wèn)題,保持代碼風(fēng)格一致,提高代碼質(zhì)量。