編寫高效PHP代碼之質量保證

jopen 10年前發布 | 30K 次閱讀 PHP PHP開發

我們要完成一個高質量、高標準的項目,不僅要重視編碼和測試,還包括管理協作和項目完善。 本文將介紹一些確保項目達到高標準的工具,其中包括phploc、phpcpd、phpmd、phpdocumentor、phing等。

一、使用靜態分析工具測量質量

我們用靜態分析測量代碼而不運行它。實際上,我們將這些工具用于評估代碼、讀取文件、衡量它所寫的要素。使用這些工具,可以幫助我們對代碼庫有一個完整的層次化的認識,甚至在代碼庫變得更大、更復雜的時候也能掌握。

靜態分析工具是項目過程中的一個關鍵組成部分,但是,只有定期使用它們,并以理想的方式進行每一次提交,靜態分析工具才真正顯示出價值。這些工具涵蓋了代碼的所有方面,從計數類和計算行數,到識別哪里有提示使用復制和粘貼的類似代碼段。然后我們來看看靜態分析工具在代碼質量中兩個特別關鍵的問題上如何幫助我們:編碼標準和文檔。

1、phploc

phploc:https://github.com/sebastianbergmann/phploc

PHP代碼行(phploc)可能并不是一個非常有趣的靜態分析工具,但它確實給了我們一些有趣的信息,特別是隨著時間的推移當我們反復運行它的時候。phploc提供項目拓撲結構以及尺寸的相關信息。

例如測試一個標準的WordPress版本,我們只需使用如下命令:

$ phploc wordpress

2、phpcpd

phpcpd:https://github.com/sebastianbergmann/phpcpd

PHP復制粘貼器(phpcpd)看起來是一個在代碼中尋找類似模式的工具,我們使用它是為了在代碼庫中識別代碼在何處被復制或粘貼。這是常規構建過程中的一個非常有用的工具,但是從輸出中獲得正確的編號會讓項目與項目有所不同。

同樣,如果我們測試WordPress,可以使用下面的命令:

$ phpcpd wordpress

 

3、phpmd

phpmd:http://phpmd.org/

PHP項目消息探測器(phpmd)是一個試圖量化所謂開發老手所說的“代碼發出的氣味”的工具。它使用一系列指標尋找似乎失衡的項目元素。該工具生成大量的輸出,其中大部分都是好的建議,下面是一個要求phpmd在WordPress中檢查命名混亂的命令:

$ phpmd wordpress/  text naming

 

二、編碼標準

編碼標準是一個在很多開發團隊中引起激烈爭論的話題,既然縮進和使用空格并未影響代碼的運行,那為什么我們要創建格式化的規則并且嚴格遵守呢?事實上,當我們已經習慣于某個編碼風格,而且代碼以我們期望的方式排列時,它會變得更加容易閱讀。但是,在實際開發過程中,很容易忘記規則,所以需要工具區檢查所有的代碼。

1、使用PHP代碼探測器檢查編碼標準

PHP代碼探測器:http://pear.php.net/package/PHP_CodeSniffer

首先,你需要在服務器上安裝這個工具。無論它在開發機器還是開發服務器上,這完全取決于你所擁有的可用資源。

安裝后,就可以使用下面的命令測試代碼了:

phpcs --standard=PEAR robot.php

 

2、查看違反編碼標準的地方

PHP代碼探測器有幾個非常重要的報表樣式,你可以用它們看著所用代碼庫的“重點”、我們將這些以詳細報表的同樣方式輸出到屏幕上,它們也可以生成其他格式。

要生成一個匯總報表,只需這樣做:

phpcs --standard=PEAR --report=summary *

3、查看PHP代碼探測器標準

有幾個編碼標準是PHP代碼探測器默認運行的,你可以生成或設置任何自己的標準。若想看到有哪些可用的標準,你可以運行具有-i開關的phpcs。

$ phpcs -i

 

三、文檔和代碼

使用phpDocumentor將注釋轉換為文檔。

phpDocumentor:http://www.phpdoc.org/

例如:

phpdoc -t docs -o HTML:Smarty:PHP -d .

四、源代碼管理

常用源代碼管理工具:

Subversion:http://subversion.apache.org/

Git:http://git-scm.com/

五、自動部署

Phing:http://www.phing.info/

Phing 是一個基于Apache ANT 的項目構建系統。Phing使用基于XML的配置,默認保存在一個名為build.xml的文件中。

我們給這個項目命令,并定義一系列屬于這個項目的任務,還可以指定哪些任務被默認運行,都可以通過Phing進行配置。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!