學習使用PHP CodeSniffer(一)

2021-04-22 00:44:10 字數 4338 閱讀 7886

認識php_codesniffer

php_codesniffer是pear中的乙個用php5寫的用來檢查嗅探php**是否有違反一組預先設定好的編碼標準的乙個包,它是確保你的**簡潔一致的必不可少的開發工具,甚至還可以幫助程式設計師減少一些語義錯誤。

安裝php_codesniffer

如果你的web伺服器上已經安裝了php和pear,那麼直接執行下列命令就可以安裝php_codesniffer。

$ pear install php_codesniffer

安裝後,你可以在命令列敲入命令phpcs來呼叫php_codesniffer檢查**,預設情況下,php_codesniffer採用的是pear的

編碼標準;你現在就可以嘗試一下用它來檢查你的**是否符合編碼標準,如:

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

如果要檢查乙個目錄,則應使用下列命令:

$ phpcs /path/to/code

php_codesniffer的使用方法

使用php_codesniffer的主程式是phpcs,它的具體使用方法我們可以通過在命令列執行下列命令來獲得phpcs的相關引數及

相應的使用資訊。

$ phpcs -h

使用php_codesniffer檢查檔案或檔案目錄

使用php_codesniffer的最簡單的方式是直接給phpcs傳遞乙個路徑。如果路徑是指向乙個檔案目錄,那麼php_codesniffer會檢查該檔案目錄及其也有了目錄中的所有檔案。如果你不希望檢查所有子目錄,你可以加上-l(locally)引數,這樣它只會檢查當前目錄中的檔案。

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

$ phpcs /path/to/code/my_dir

你也可以同時指定多個檔案或目錄以供php_codesniffer檢查。

$ phpcs /path/to/code/myfile.inc /path/to/code/my_dir
控制php_codesniffer輸出的檢查結果

php_codesniffer在檢查完檔案之後會給你乙個錯誤報告,列出所有檔案中違反編碼標準的錯誤和警告資訊。

如果你不想在輸出的檢查結果中包含警告資訊(warning),你可以給phpcs加上-n引數。

預設情況下,檢查完檔案後php_codesniffer會輸出所有的錯誤和警告資訊的列表,通常是很長的,尤其是在檢查比較多的檔案的時候,列表很長而且速度很快,你根本看不到什麼。這個時候你可能只需要知道每個檔案各自都有多少個錯誤和警告資訊,你可以使用 --report=summary 引數。

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

此外,php_codesniffer還可以將檢查結果以xml,csv和類似於checkstyle輸出結果的格式輸出,這樣方便你在你自己的指令碼中對檢查結果進步分析處理或者提供給支援checkstyle的應用程式處理。

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

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

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

注:在以csv格式輸出檢查結果時,輸出結果的第一行指示了檢查結果資訊的順序(即哪一列對就著什麼資訊)。

另外,php_codesniffer在處理過程中不輸出任何資訊直到處理結束輸出檢查結果。在處理比較多的檔案時,有可能需要等待比較長的時間,如果你想知道在此過程中發生了什麼事情,你可以在執行php_codesniffer時帶上-v引數,這樣php_codesniffer在處理過程中會輸出當前正在處理的檔案的名稱,所包含的行數和識別符號的個數。

$ phpcs /path/to/code/codesniffer -v

設定php_codesniffer的相關配置選項

php_codesniffere有提供一些配置選項,某些編碼標準只有在設定了配置選項後才能使用。要設定乙個hp_codesniffer配置選項,可以使用:

$ phpcs --config-set

你可以使用下列命令刪除任意的配置選項,使它恢復到初始值。

$ phpcs --config-delete

使用下列檢視配置選項的當前設定

$ phpcs --config-show

下列是php_codesniffer的配置選項列表及其設定方法:

default_standard  預設的編碼標準

report_format     預設的錯誤報告格式

show_warnings     是否預設顯示錯誤報告中的警告(warning)資訊

tab_width         預設的tab寬度相當於幾個空格

zend_ca_path      zend編碼標準所使用的配置選項,指向zend code analyzer(zend編碼分析器)所在的路徑

預設情況下,如果命令列沒有指定編碼標準,php_codesniffere會使用pear作為編碼標準。你可以通過下列命令來修改預設的編碼標準。

$ phpcs --config-set default_standard zend

預設情況下,即如果命令列沒有提供報表輸出格式的引數,php_codesniffere會使用完全錯誤報**式輸出檢查結果。你可以通過下列命令來修改檢查結果的預設輸出格式。

$ phpcs --config-set report_format summary

預設情況下,php_codesniffere輸出結果會輸出錯誤和警告資訊,你可以在執行phpcs帶上-n去掉警告資訊,也可以通過設定show_warnings來決定預設是要顯示還是不顯示。

$ phpcs --config-set show_warnings 0

預設情況下,php_codesniffere不會將檢查過的檔案中的tab替換成空格。在命令列指定乙個tab寬度可以使用php_codesniffere在檢查時替換掉被檢查檔案中的tab。你可以設定config-set使php_codesniffere預設替換tab成空格。

$ phpcs --config-set tab_width 4

注:在php_codesniffere已經被設定成預設替換tab成空格時,在命令列指定tab_width為0會讓php_codesniffere停止替換tab。

zend編碼標準包含乙個使用zend code analyzer(zend編碼分析器)的sniff,使用

zend_ca_path配置選項告訴zend code analyzer的路徑。

$ phpcs --config-set zend_ca_path /path/to/zendcodeanalyzer

指定php_codesniffer所需檢查的檔案型別(副檔名)

預設情況下,php_codesniffer會檢查.inc和.php檔案。也就是說,如果你指定了乙個目錄讓php_codesniffer檢查,那麼只有以inc和php為副檔名的檔案才會被檢查。你可以在命令列通過extensions引數來設定哪一類副檔名的檔案需要php_codesniffer檢查。

$ phpcs --extensions=php /path/to/code         只檢查該目錄中以php為副檔名的檔案

$ phpcs --extensions=php,inc,lib /path/to/code 檢查該目錄中所有以php,inc,lib為副檔名的檔案

注:此引數對在命令列直接指定檔案(而不是檔案目錄)的情況不適用,因為這種情況下php_codesniffer將會忽略掉所有檔案的副檔名。

$ phpcs --extensions=inc sgl_06x/www/index.php sgl_06x/www/rpc/server.php 雖然指定了inc,仍然會檢查php檔案

忽略掉檔案的副檔名是php_codesniffer的乙個特性,也是唯一的一種檢查沒有副檔名檔案的方法。如果給phpcs的是乙個檔案目錄作為引數,那麼這個目錄中的所以沒有副檔名的檔案將不會被檢查,如果要檢查,只能乙個乙個檢查。

讓php_codesniffer在檢查大量檔案時忽略掉其中的某些特殊的檔案

在php_codesniffer對大量檔案進行檢查時,我們可能不想php_codesniffer檢查其中的某些特殊的檔案。你可以使用ignore引數指定檔名的匹配模式,所有檔名與模式匹配的檔案都會被忽略掉而不檢查。  

$ phpcs --ignore=*/tests/*,*/data/* /path/to/code

php_codesniffer所使用的編碼標準

(待續)

MySQL使用學習使用 mysql學習使用

1 mysql學習 1 安裝 ubuntu下直接安裝 apt get install mysql server 2 檢查伺服器是否啟動 sudo netstat tap grep mysql,如果啟動成功,出現以下資訊 tcp00localhost.localdomain mysql listen ...

學習使用CSDN markdown使用

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...

學習使用PIVOT

假設有這樣的乙個需求 有乙個表中儲存了某個部門的各個員工的每一年的各類薪金,記錄儲存格式如 員工姓名 薪金數目 薪金種類 年份 現在要求根據員工的姓名進行查詢,查詢出某些員工各個年份的薪金總數,出來的結果要求 columnname 年份 員工1姓名 員工2姓名 columnvalue 年份 薪金總數...