PHPCS的安裝配置及使用


良好的代碼規(guī)范可以提高代碼可讀性嗤军,降低團(tuán)隊(duì)溝通維護(hù)成本

1.PSR標(biāo)準(zhǔn)

PSR是PHP Standards Recommendation的簡(jiǎn)稱(chēng),這個(gè)是[php-fig](PHP Framework Interop Group)(https://github.com/php-fig)組織制定的一套規(guī)范梯找。至今,php-fig已經(jīng)發(fā)布了五個(gè)規(guī)范:

  • PSR-0:自動(dòng)加載標(biāo)準(zhǔn)录肯,該標(biāo)準(zhǔn)已被廢棄溉仑,使用PSR-4替代

  • PSR-1:基本的編碼風(fēng)格

  • PSR-2:編碼風(fēng)格(更嚴(yán)格)PSR-2中文說(shuō)明

  • PSR-3:日志記錄器接口

  • PSR-4:自動(dòng)加載

2.什么是PHPCS github地址

PHP Code Sniffer 是PEAR中的一個(gè)用PHP5寫(xiě)的一個(gè)PHP的代碼風(fēng)格檢測(cè)器,它根據(jù)預(yù)先設(shè)定好的PHP編碼風(fēng)格和規(guī)則姚淆,去檢查應(yīng)用中的代碼風(fēng)格情況是否有違反一組預(yù)先設(shè)置好的編碼標(biāo)準(zhǔn)孕蝉,內(nèi)置了ZEND,PEAR的編碼風(fēng)格規(guī)則腌逢,當(dāng)然也支持自己定制。PHP CodeSniffer 是確保代碼簡(jiǎn)潔一致的必不可少的開(kāi)發(fā)工具超埋,還可以幫助程序員減少一些語(yǔ)義錯(cuò)誤搏讶。

3.安裝PHPCS

①通過(guò)pear方式:
pear下載phpcs地址

pear install PHP_CodeSniffer-3.4.2
如果php版本小于php7,不要安裝最新版本的phpcs霍殴,php5.6建議安裝phpcs3.0.0

②通過(guò)composer方式:

composer global require "squizlabs/php_codesniffer=*"

③通過(guò)brew方式(mac推薦此種方式):

brew install php-code-sniffer

4.手動(dòng)方式使用PHPCS

phpcs  application/controller/Admin.php
phpcs  待檢測(cè)的文件

5.PHPStorm配置PHPCS(推薦此種方式媒惕,畢竟自動(dòng)的省事)

①打開(kāi)Phpstorm的設(shè)置頁(yè)(File->Setting或者Ctrl+Alt+s)
到Code Sniffer頁(yè)Setting->Languages and Frameworks->PHP->Code Sniffer
Mac配置的地址為Setting->Languages and Frameworks->PHP->Quality Tools

step1.png

②配置development environment,path就是php路徑下的phpcs.bat来庭,按下 Validate進(jìn)行驗(yàn)證妒蔚,驗(yàn)證成功后會(huì)有綠色文字提示。
PS:Mac電腦上是沒(méi)有bat文件滴月弛,正確的路徑為which phpcs命令找到的路徑肴盏。Mac版本如果在安裝后沒(méi)有移動(dòng)phpcs的位置,則可執(zhí)行文件的位置一般在/usr/local/Cellar/php-code-sniffer/3.4.2/bin/phpcs

step2.png

③配置PHPCS的標(biāo)準(zhǔn)
Setting->Editor->Inspections->PHP->Code Sniffer
Mac版本的配置位置為Setting->Editor->Inspections->PHP->Quality tools->Code Sniffer
在右邊的 Coding standard 按下刷新按鈕帽衙,成功的話(huà)菜皂,點(diǎn)擊下拉按鈕就會(huì)有可供選擇的標(biāo)準(zhǔn)。

step3.png

6.案例對(duì)比

改造前

        $validate = Validate::make($rule);
        $result   = $validate->check($params);
        if(!$result)
            return parent::returnData($params, $validate->getError(), ParamsConsts::STATUS_REQ_PARAM_MISSING);

        $dbSelect = Db::name('table_name')->where('is_del', ParamsConsts::DELETE_FALSE)->field(' name, email, tel, remark');

        $dbCount = clone $dbSelect;
        $resCount = $dbCount->count('aid'); unset($dbCount);

配置了PHPCS后的phpstorm界面

example.png

查看一下具體錯(cuò)誤

example.png

修改后

example.png

7.使用 phpcbf 腳本進(jìn)行修復(fù)

phpcbf 腳本修復(fù)  使用方式和phpcs一致
phpcbf  文件名
PS:只能處理代碼風(fēng)格等方式厉萝,不能處理命名與代碼實(shí)現(xiàn)規(guī)則恍飘,所以少部分需要人為去更正

8.常見(jiàn)錯(cuò)誤

①End of line character is invalid; expected "\n" but found "\r\n"
  換行符錯(cuò)誤榨崩,請(qǐng)切換成LF

②Expected 1 newline at end of file; 0 found
  請(qǐng)?jiān)谖募┪苍O(shè)置空白的新行

③Inline control structures are not allowed
  請(qǐng)修改語(yǔ)句的結(jié)構(gòu),比如if后面加上{},不要直接在if后一行直接寫(xiě)代碼

④Line exceeds 120 characters; 
  請(qǐng)將語(yǔ)句長(zhǎng)度限制在120字節(jié)以?xún)?nèi)

⑤Expected 1 space after IF keyword;
  請(qǐng)刪除語(yǔ)句末尾多余的空格

9. 在命令行執(zhí)行以下兩條命令章母,設(shè)置默認(rèn)的代碼規(guī)范

phpcs --config-set default_standard PSR2
phpcbf --config-set default_standard PSR2

使用PHPCS+Git鉤子保障團(tuán)隊(duì)開(kāi)發(fā)代碼風(fēng)格一致
https://segmentfault.com/a/1190000015971297

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末母蛛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子乳怎,更是在濱河造成了極大的恐慌彩郊,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件舞肆,死亡現(xiàn)場(chǎng)離奇詭異焦辅,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)椿胯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)筷登,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人哩盲,你說(shuō)我怎么就攤上這事前方。” “怎么了廉油?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵惠险,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我抒线,道長(zhǎng)班巩,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任嘶炭,我火速辦了婚禮抱慌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘眨猎。我一直安慰自己抑进,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布睡陪。 她就那樣靜靜地躺著寺渗,像睡著了一般。 火紅的嫁衣襯著肌膚如雪兰迫。 梳的紋絲不亂的頭發(fā)上信殊,一...
    開(kāi)封第一講書(shū)人閱讀 51,598評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音逮矛,去河邊找鬼鸡号。 笑死,一個(gè)胖子當(dāng)著我的面吹牛须鼎,可吹牛的內(nèi)容都是我干的鲸伴。 我是一名探鬼主播府蔗,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼汞窗!你這毒婦竟也來(lái)了姓赤?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤仲吏,失蹤者是張志新(化名)和其女友劉穎不铆,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體裹唆,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡誓斥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了许帐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片劳坑。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖成畦,靈堂內(nèi)的尸體忽然破棺而出距芬,到底是詐尸還是另有隱情,我是刑警寧澤循帐,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布框仔,位于F島的核電站,受9級(jí)特大地震影響拄养,放射性物質(zhì)發(fā)生泄漏离斩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一瘪匿、第九天 我趴在偏房一處隱蔽的房頂上張望捐腿。 院中可真熱鬧,春花似錦柿顶、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至聂薪,卻和暖如春家乘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背藏澳。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工仁锯, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人翔悠。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓业崖,卻偏偏與公主長(zhǎng)得像野芒,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子双炕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容