PHP_CodeSniffer基本介紹

在維護程式時,最糟的狀況,莫過於該程式中毫無一行註解。最後,維護者可能必須要一行行追程式,已瞭解該程式的處理流程。或者,程式碼毫無編排、命名方式(全都是 i,x,y 等無意義字母)。這…維護時就是一件累人的工作…

也許,會有人要求必須在程式內寫註解(如phpDoc)。不過,又該如何確保程式內是否真的寫?或者…程式碼的撰寫風格是否有符合團體所要求的?

於是,需要一些工具來協助。以PHP為例,可以使用PHP_CodeSniffer

首先,看一下PHP_CodeSniffer官方網站上的定義
PHP_CodeSniffer is a PHP5 script that tokenises and "sniffs" PHP, JavaScript and CSS files to detect violations of a defined coding standard. It is an essential development tool that ensures your code remains clean and consistent. It can also help prevent some common semantic errors made by developers.
有注意到嗎?PHP_CodeSniffer不支援PHP4

如何安裝PHP_CodeSniffer

PHP_CodeSniffer的安裝非常簡單,一行指令就結束…
  1. pear install PHP_CodeSniffer  

如何使用PHP_CodeSniffer

基本操作分為兩種…
  1. # 檢查單一程式  
  2. phpcs /prog/myprog.php  
  3. # 檢查整個目錄下的程式  
  4. phpcs /prog/  
PHP_CodeSniffer能呈現什麼資訊?以及有哪些報表模式?不妨直接看官網上Reporting內的各式呈現方式。當中,還有SVN Blame耶(請見Printing an SVN Blame Report標題)
註:Blame,在tortoisesvn(小烏龜)中,中文翻譯為『譴責』 XD

在實務中,coding standards有很多種。說不定還有屬於自己的,或者因為採用某framework,因此必須符合該framework的規範。因此,PHP_CodeSniffer提供設定,讓我們在執行檢查時,能切換不同的coding standards作為檢查的依據。以下,則列出相關的操作

查詢目前安裝哪些coding standards

  1. phpcs -i  
  2. The installed coding standards are MySource, PEAR, PHPCS, Squiz, Zend and CodeIgniter  

設定coding standards

執行檢查時,切換不同的coding standards作為檢查的依據
  1. $ phpcs --standard=PEAR /prog/myprog.php  

更換預設所使用的coding standards

當然,也可以設定預設值。以下範例,將預設coding standards更換為我後續安裝的CodeIgniter
  1. phpcs --config-set default_standard CodeIgniter  
  2. # 註:執行本參數,需要寫入的權限  

顯示是哪支sniff code所檢查

做後續調整設定時,會需要使用本參數
  1. phpcs -s /prog/myprog.php  


以上,只是列出最基本的操作。PHP_CodeSniffer的使用不只如此。想多瞭解並加以利用者,務必參考官網上的說明

留言