php 代碼 自動檢查工具下載,PHP_CodeSniffer安裝和使用教程(自動代碼檢查規范工具)...

0d653b76724c4e34e9261419200361a6.png

在我們開發中都會講究代碼規范,若是個人開發者,代碼規范與否,只要自己看得懂便可以了,但是在團隊協作中,代碼規定尤為重要,下面,我們介紹一款PHP_CodeSniffer,自動檢查代碼規范的工具。

PHP_CodeSniffer是一款自動化的PHP代碼規范檢查工具。

CodeSniffer內置MySource、PEAR、PHPCS、PSR1、PSR2、Squiz和Zend等幾套代碼規范。

當然,你也可以新增自己的代碼規范。

PHP_CodeSniffer 倉庫地址:https://github.com/squizlabs/PHP_CodeSniffer

PHP_CodeSniffer 版本發布地址:http://pear.php.net/package/PHP_CodeSniffer

PHP_CodeSniffer包含兩個工具,phpcs用來檢查代碼規范,phpcbf用來糾正代碼規范。

1 安裝

PHP_CodeSniffer 有好幾種安裝方式。

1.1 可執行文件方式安裝

用git命令下載(或直接下載)倉庫源碼,然后直接執行:

git clone https://github.com/squizlabs/PHP_CodeSniffer.git

cd PHP_CodeSniffer

php bin/phpcs -h

php bin/phpcbf -h

要使用非最新版本,可以到PEAR下載,地址:http://pear.php.net/package/PHP_CodeSniffer/download

例如,要用2.9.1,PEAR下載之后解壓,執行的命令是:

php scripts/phpcs -h

php scripts/phpcbf -h

與 githuh 下載不同的是,執行文件在scripts目錄。

1.2 phar文件安裝方式

phar也就是php archive,把php文件打包成一個文件供服務。

Linux系統用命令下載phar文件:

curl -OL https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar

curl -OL https://squizlabs.github.io/PHP_CodeSniffer/phpcbf.phar

Windows系統用瀏覽器訪問上面的兩個鏈接,下載這兩個phar文件。

然后在phar文件的目錄里面執行:

php phpcs.phar -h

php phpcbf.phar -h

能看到phpcs和phpcbf的幫助信息,說明安裝成功。

說明:

這種方式要保證php可執行文件已經添加到PATH環境,不然就得指定絕對目錄

每次執行必須把這兩個.phar文件放到對應目錄,然后在那個目錄下運php phpcs.phar xxx行命令

1.3 pear安裝方式

如果本地安裝了pear(pear安裝方法),也可以通過pear來安裝PHP_CodeSniffer,命令:

pear install PHP_CodeSniffer

通過pear安裝后,CodeSniffer的規范文件會安裝在:/path/to/pear/PHP/CodeSniffer/src/Standards。

1.4 composer安裝方式

composer安裝也很方便,一個命令:

composer global require "squizlabs/php_codesniffer=*"

說明:這里需要composer命令已經在PATH環境變量中。

也可以在composer.json文件中使用:

{

"require-dev": {

"squizlabs/php_codesniffer": "3.*"

}

}

完成后執行命令:

./vendor/bin/phpcs -h

./vendor/bin/phpcbf -h

1.5 配置phpcs直接在命令行中執行

以上的方式中,除了pear安裝方式,其他方式要執行phpcs命令,都需要在前面加上php。

如果是Linux提供,因為php執行文件路徑已經在環境PATH中,所以把bin(或scripts) 的路徑加入PATH,就可以在終端執行phpcs命令了。

但是在Windows系統中,實際是執行phpcs.bat文件,這個文件又引用了同目錄下的phpcs文件。

在phpcs.bat中,我們需要配置兩個變量,才能在CMD中正確執行phpcs命令。

如下,需指定php.exe和phpcs文件的絕對位置:

if "%PHPBIN%" == "" set PHPBIN=D:\php56n\php.exe

if not exist "%PHPBIN%" if "%PHP_PEAR_PHP_BIN%" neq "" goto USE_PEAR_PATH

GOTO RUN

:USE_PEAR_PATH

set PHPBIN=%PHP_PEAR_PHP_BIN%

:RUN

"%PHPBIN%" "D:\www\PHP_CodeSniffer-2.9.1\scripts\phpcs" %*

然后把路徑D:\www\PHP_CodeSniffer-2.9.1\scripts\加入到PATH中,就可以在CMD中執行phpcs了。

說明:phpcbf也需要這樣的修改。

2 使用

上面我們看到 PHP_CodeSniffer 有兩個命令。

默認情況下,PHP_CodeSniffer 使用PEAR規范檢查代碼。

2.1 使用命令

以下命令用默認規范來來檢查文件和目錄。

$ phpcs /path/to/code/myfile.php # 檢查文件

$ phpcs /path/to/code # 檢查目錄和子目錄下的所有文件

$ phpcs -l /path/to/code # 檢查目錄下的所有文件,不包括子目錄

$ phpcs /path/to/code/myfile.inc /path/to/code/my_dir # 檢查文件和目錄

2.2 檢查結果

默認情況下,檢查結果包含錯誤和警告,如下:

$ phpcs /path/to/code/myfile.php

FILE: /path/to/code/myfile.php

--------------------------------------------------------------------------------

FOUND 5 ERROR(S) AND 1 WARNING(S) AFFECTING 5 LINE(S)

--------------------------------------------------------------------------------

2 | ERROR | Missing file doc comment

20 | ERROR | PHP keywords must be lowercase; expected "false" but found

| | "FALSE"

47 | ERROR | Line not indented correctly; expected 4 spaces but found 1

47 | WARNING | Equals sign not aligned with surrounding assignments

51 | ERROR | Missing function doc comment

88 | ERROR | Line not indented correctly; expected 9 spaces but found 6

--------------------------------------------------------------------------------

如果不要顯示警告,加個-n參數:

$ phpcs -n /path/to/code/myfile.php

僅顯示檢查結果概要:

$ phpcs --report=summary /path/to/code

2.3 指定規范

可以使用 — standard參數指定一個或多個規范來檢查。

$ phpcs --standard=PEAR /path/to/code/myfile.inc # 使用內置規范

$ phpcs --standard=/path/to/MyStandard /path/to/code/myfile.inc # 使用指定路徑下的規范

$ phpcs --standard=PEAR,PHPCS,/path/to/MyStandard file.php # 使用多個規范

$ phpcs --config-set default_standard Squiz # 修改默認規范為Squiz(原本是PEAR)

查看現有規范:

$ phpcs -i

2.4 查看幫助

$ phpcs -h

更多PHP相關知識,請訪問PHP中文網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/541773.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/541773.shtml
英文地址,請注明出處:http://en.pswp.cn/news/541773.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

國際象棋之跳馬程序

問題描述: 假設國際象棋棋盤有5*5共25個格子。設計一個程序,使棋子從初始位置(棋盤格編號為1的位置)開始跳馬,能夠把棋盤的格子全部走一遍,每個格子只允許走一次。要求: 1) 輸出一個解(用二維數組來記錄馬跳的過程,即[步號,棋盤格編號],左上角為第一步起點)&#xf…

kafka安裝使用

版本:kafka_2.11-0.10.1.0 (之前安裝2.10-0.10.0.0,一直出問題) 安裝Springboot結合Kafka的使用安裝 下載并解壓代碼 wget http://mirrors.cnnic.cn/apache/kafka/0.10.0.0/kafka_2.10-0.10.0.0.tgz #http://kafka.apache.org/downloadstar -zxvf kafka…

php獲取上傳文件路徑 fakepath,JavaScript_js獲取上傳文件的絕對路徑實現方法,在html中input type=file - phpStudy...

js獲取上傳文件的絕對路徑實現方法在html中function upload() {var filename document.getElementById("importFile").value;// 這時的filename不是 importFile 框中的值alert(filename);}如上面的代碼,用文件上傳對話框選擇文件后,如果選擇&…

在Bootstrap中使用類的按鈕類型

Bootstrap has 7 different types of buttons with contextual classes from which we can create buttons easily by using these classes (.btn-default, .btn-success, .btn-danger, .btn-primary, .btn-info, .btn-warning, .btn-link). Bootstrap具有上下文類型的 7種不同…

php json encode中文亂碼,php json_encode中文亂碼如何解決

php encode中文亂碼的解決辦法:首先打開相應的PHP文件;然后使用正則語句“preg_replace("#\\\u([0-9a-f]{4})#ie","iconv(UCS-2BE, UTF-8...)”將編碼替換成中文即可。本文列舉3個方法,實現json_encode()后的string顯示中文問…

鄉村圖景(轉載)

轉自: http://cul.qq.com/a/20160205/046437.htm 我丈夫家在湖北孝感孝昌縣的一個村子。2005年第一次過年回到他家,印象最深的就是嫂子。我暗自問當時的男友,“哥哥盡管算不上特別帥氣,但為何找了這么難看的嫂子?”后來才發現&…

stl向量最大值_C ++ STL中向量的最小和最大元素

stl向量最大值Given a vector and we have to find the smallest (minimum) and largest (maximum) elements. 給定一個向量,我們必須找到最小(最小)和最大(最大)元素。 查找向量的最小和最大元素 (Finding vectors minimum & maximum elements) To find minim…

oracle如何設置備份計劃任務,Oracle數據庫設置任務計劃備份一周的備份記錄

Oracle 數據庫備份:--保留最近一周的備份記錄;正文:開始代碼如下:echo 設置備份文件存放文件夾...set "tbufE:\Cway\backup"echo 設置備份文件名(以星期幾命名,即備份文件只保存最近一周)...set name%date%set name%nam…

索引(轉載自百度百科)

Oracle索引 編輯本詞條缺少信息欄、名片圖,補充相關內容使詞條更完整,還能快速升級,趕緊來編輯吧!在oracle索引是一種供服務器在表中快速查找一個行的數據庫結構。合理使用索引能夠大大提高數據庫的運行效率。目錄 1 概念及作用 2…

阿姆斯特朗數_阿姆斯特朗的功能依賴公理 數據庫管理系統

阿姆斯特朗數Armstrong axioms are a complete set of inference rules or axioms, introduced and developed by William W. Armstrong in 1974. The inference rules are sound which is used to test logical inferences of functional dependencies. The axiom which also …

ORACLE JOB 失敗 查看,Oracle JOB異常中斷原因分析

注釋今天研發同事找我確認 PKG_WMS.proc_TaskMain 存儲的 job 是否還在運行,竟發現 dba_jobs.NEXT_DATE4000/1/1,如下看看究竟原因吧~JOB 信息:參數:BROKEN : 中斷標記 ,N 啟動、Y 中斷 --> DBMS_JOBS.BROKEN(job_id,TRUE/FA…

ruby打印_Ruby程序打印一個數字的乘法表

ruby打印打印乘法表 (Printing multiplication table) This requires a very simple logic where we only have to multiply the number with digits from 1 to 10. This can be implemented by putting the multiplication statement inside a loop. We have mentioned two wa…

步驟1:JMeter 錄制腳本接口測試

JMeter 常用測試方法簡介 1.下載安裝 http://jmeter.apache.org/download_jmeter.cgi 安裝JDK,配置環境變量JAVA_HOME. 系統要求:JMeter2.11 需要JDK1.6以上的版本支持運行 2.學習Jmeter元件 http://jmeter.apache.org/usermanual/component_reference.h…

模擬斷電oracle數據不一致,Oracle數據庫案例整理-Oracle系統運行時故障-斷電導致數據文件狀態變為RECOVER...

1.1 現象描述異常斷電,數據庫數據文件的狀態由ONLINE變為RECOVER。系統顯示如下信息:SQL> select file_name ,tablespace_name ,online_status from dba_data_files;FILE_NAME---------------------------------------------------------------…

python日歷模塊_Python日歷模塊| prmonth()方法與示例

python日歷模塊Python calendar.prmonth()方法 (Python calendar.prmonth() Method) prmonth() method is an inbuilt method of the calendar module in Python. It works on simple text calendars and prints the calendar of the given month of the given year. Also, the…

多例模式

多例:只是單例的一種延伸 不必過于在意各種模式的名字,重要的是學會融會貫通,把生產的car放到集合中 類似JDBC 的連接池 把連接對象放到池中 多例模式特點: 1. 多例類可以有多個實例 2. 多例類必須自己創建自己的實例&a…

Oracle public view,【易錯概念】以太坊Solidity函數的external/internal,public/private,view/pure/payable區別...

1. 函數類型:內部(internal)函數和外部(external)函數函數類型是一種表示函數的類型。可以將一個函數賦值給另一個函數類型的變量,也可以將一個函數作為參數進行傳遞,還能在函數調用中返回函數類型變量。 函數類型有兩類:- 內部(i…

c-style字符字符串_C字符串-能力問題與解答

c-style字符字符串C programming String Aptitude Questions and Answers: In this section you will find C Aptitude Questions and Answers on Strings, String is the set of characters and String related Aptitude Questions and Answers you will find here. C編程Stri…

PHP Smarty template for website

/******************************************************************************* PHP Smarty template for website* 說明:* 之前一直在想將MVC的方式加在PHP做的網站上,這樣比較好處理,相對來說比較好* 處理…

ftp連接oracle服務器,使用SSL加密連接FTP - 架建SSL安全加密的FTP服務器(圖)_服務器應用_Linux公社-Linux系統門戶網站...

四、使用SSL加密連接FTP啟用Serv-U服務器的SSL功能后,就可以利用此功能安全傳輸數據了,但FTP客戶端程序必須支持SSL功能才行。 如果我們直接使用IE瀏覽器進行登錄則會出現圖4顯示的錯誤信息,一方面是以為沒有修改默認的端口21為990&#xff0…