自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

PHP開發(fā)必備 PHP持續(xù)集成工具介紹(上)

開發(fā) 后端
在本文中,將介紹在目前軟件工程中經(jīng)常用到的持續(xù)集成概念,并且會介紹在PHP開發(fā)中,如何能用好PHP目前開源的一些持續(xù)集成管理工具,去管理好項(xiàng)目。

在本文中,將介紹在目前軟件工程中經(jīng)常用到的持續(xù)集成概念,并且會介紹在PHP開發(fā)中,如何能用好PHP目前開源的一些持續(xù)集成管理工具,去管理好項(xiàng)目。

持續(xù)集成的概念

持續(xù)集成的概念是在現(xiàn)代軟件工程中提出的,最早見于敏捷開發(fā)方法論中,大師Martin Fowler對持續(xù)集成是這樣定義的:持續(xù)集成是一種軟件開發(fā)實(shí)踐,即團(tuán)隊(duì)開發(fā)成員經(jīng)常集成它們的工作,通常每個成員每天至少集成一次,也就意味著每天可能會發(fā)生多次集成。每次集成都通過自動化的構(gòu)建(包括編譯,發(fā)布,自動化測試)來驗(yàn)證,從而盡快地發(fā)現(xiàn)集成錯誤。許多團(tuán)隊(duì)發(fā)現(xiàn)這個過程可以大大減少集成的問題,讓團(tuán)隊(duì)能夠更快的開發(fā)內(nèi)聚的軟件。

下面介紹PHP中的持續(xù)集成工具:

PHPUNIT

首先,PHPUNIT是PHP中的單元測試?yán)鳎?xiàng)目地址在:http://www.phpunit.it。它

能自動運(yùn)行你編寫的單元測試代碼,并給出是否通過的結(jié)果。安裝步驟如下,可以使用PHP中的PEAR安裝:

  1. sudo apt-get install php5-curl php-pear php5-dev  
  2. sudo pear upgrade pear  
  3. sudo pear channel-discover pear.phpunit.de  
  4. sudo pear channel-discover components.ez.no  
  5. sudo pear channel-discover pear.symfony-project.com  
  6. sudo pear install phpunit/PHPUnit 

 之后,就可以在命令行下,以如下格式執(zhí)行phpunit:

Phpunit 單元測試的php文件名.php

此外,還可以執(zhí)行如下命令,生成單元測試的覆蓋報告:

phpunit --coverage-html ../CodeCoverage

這將在指定的目錄中生成單元測試的覆蓋報告,比如這個例子中,將在目錄CodeCoverage中生成單元測試覆蓋報告,如下圖:

PHP開發(fā)必備 PHP持續(xù)集成工具介紹(上)
▲點(diǎn)擊看大圖

如果點(diǎn)上圖的每一個PHP文件,還可以具體看到每個文件的單元測試覆蓋情況,如下圖:

PHP開發(fā)必備 PHP持續(xù)集成工具介紹(上)
▲點(diǎn)擊看大圖

從上圖中,可以看到每個PHP文件中,調(diào)用的方法的單元測試覆蓋情況,還可以看到具體哪些代碼行是已經(jīng)單元測試覆蓋過,哪些沒有覆蓋過(綠色表示已經(jīng)覆蓋,橙色表示還沒覆蓋),如下圖:

PHP開發(fā)必備 PHP持續(xù)集成工具介紹(上)
▲點(diǎn)擊看大圖

PHP CodeSniffer

PHP CodeSniffer是一個PHP的代碼風(fēng)格檢測器,它根據(jù)預(yù)先設(shè)定好的PHP編碼風(fēng)格和規(guī)則,去檢查應(yīng)用中的代碼風(fēng)格情況,內(nèi)置了ZEND,PEAR的編碼風(fēng)格規(guī)則,當(dāng)然開發(fā)者也可以進(jìn)行自定義。項(xiàng)目的地址在:http://pear.php.net/package/PHP_CodeSniffer/redirected,安裝方法如下:

  1. sudo pear install PHP_CodeSniffer  
  2. phpcs --standard=Zend c:\phpcode 

 其中phpcs –standard后指定了使用Zend的建議代碼風(fēng)格標(biāo)準(zhǔn)進(jìn)行檢查,***一個參數(shù)是要檢查的PHP文件所在的目錄。運(yùn)行后,檢查的一個效果圖如下圖所示:

PHP CodeSniffer
▲點(diǎn)擊查看大圖

PHP Depend

PHP Depend(http://pdepend.org/)是一個PHP中靜態(tài)代碼分析的工具。它可以用來檢查你的PHP項(xiàng)目中的代碼規(guī)模和復(fù)雜程度。安裝方法如下:

  1. sudo pear channel-discover pear.pdepend.org  
  2. sudo pear install pdepend/PHP_Depend-beta 

 使用的一個例子如下:

pdepend --jdepend-xml=../jdepend.xml --jdepend-chart=../dependencies.svg --overview-pyramid=../overview-pyramid.svg

上面會生成一個XML文件,兩個SVG的圖形文件。其中XML文件說明了項(xiàng)目中各PHP文件的互相依賴調(diào)用(引用)情況及每個方法、函數(shù),類的代碼行,一個例子如下:

  1. <?xml version=”1.0” encoding=”UTF-8”?>  
  2. <metrics noc=”3” nof=”0” noi=”0” nom=”6”>  
  3. <package name=”+global” noc=”17” nof=”0” noi=”0” nom=”237”>  
  4. <class name=”data_container”nom=”55”>  
  5. <file name=”/home/case-study/libs/data/container.php”/>  
  6. </class>  
  7. <class name=”data_download” nom=”10”>  
  8. <file name=”/home/case-study/libs/data/download.php”/>  
  9. </class

 其中的noc含義是類的代碼的行書,nof為函數(shù)的代碼行數(shù),noi為接口代碼行數(shù),nom為方法method代碼行數(shù)。

接下來我們來看下產(chǎn)生的一張SVG圖,該圖如下所示:

PHP CodeSniffer

這張圖的反映了項(xiàng)目中包的依賴性度量情況。其基本理論來源于Robert C. Martin的論文(http://www.objectmentor.com/resources/articles/oodmetrc.pdf)中所介紹的關(guān)于軟件中模塊依賴性和穩(wěn)定性的度量。其中,提到了如下概念:

Afferent Couplings (Ca)

依賴于被分析package的其他package的數(shù)量,用于衡量pacakge的職責(zé)。

簡單來說,即有多少其他的包或模塊調(diào)用了被分析的包或模塊。

Efferent Couplings (Ce)

被分析package的類所依賴的其他package的數(shù)量,用于衡量package的獨(dú)立性。

即它調(diào)用了多少其他包。

Abstractness (A)

被分析package中的抽象類和接口與所在package所有類數(shù)量的比例,取值范圍為0-1。如果該值為0,證明包中沒任何抽象類,有的只是具體實(shí)現(xiàn)邏輯方法的類,如果該值為1,則包中只有抽象類或接口了

Instability (I)

I=Ce/(Ce+Ca),用于衡量package的不穩(wěn)定性,取值范圍為0到1。I=0表示最穩(wěn)定,I=1表示最不穩(wěn)定。

Distance (D)

用于衡量package在穩(wěn)定性和抽象性之間的平衡??梢钥吹?,最理想的情況是A+I越趨近1的,這樣能獲得抽象性和穩(wěn)定性的***平衡。

此外,介紹php depend中生成的另外一張圖的含義,圖片如下:

PHP CodeSniffer

在這張圖中,最上面的ANDC表示繼承其他類的平均數(shù)目,即項(xiàng)目中有多少類是繼承其他的類;AHH是繼承其他類的層次數(shù)。CALLS是方法被調(diào)用的總的次數(shù),F(xiàn)ANOUT是類所引用的類型數(shù)目。而CYCLO是圈復(fù)雜度(關(guān)于圈復(fù)雜度的解析,請參考(http://en.wikipedia.org/wiki/Cyclomatic_complexity)。LOC是代碼行數(shù),NOM是項(xiàng)目中的方法的數(shù)目,NOC為項(xiàng)目中類的數(shù)目,NOP為項(xiàng)目中包的數(shù)目。

根據(jù)上圖中標(biāo)明的除法規(guī)則,可以計(jì)算出相關(guān)的數(shù)據(jù)。更多的請參考php depend手冊(http://pdepend.org/documentation/handbook/reports/overview-pyramid.html)的詳細(xì)解析。

【編輯推薦】

  1. 草根語言PHP的進(jìn)化史
  2. 中國應(yīng)用開源腳本語言PHP的水平如何?
  3. 是什么造成PHP遠(yuǎn)程文件包含漏洞產(chǎn)生
  4. AJAX/PHP/JQuery/CSS設(shè)計(jì)拖拉式購物車
責(zé)任編輯:于鐵 來源: IT168
相關(guān)推薦

2011-05-12 14:11:12

2017-02-27 18:24:34

交付開發(fā)工具

2019-04-18 10:35:30

持續(xù)集成工具Buddy

2012-02-23 10:22:03

JavaTeamCity

2023-09-04 13:26:27

PHP開發(fā)工具

2011-05-19 11:03:02

PHPDwoo

2020-12-15 11:34:35

持續(xù)集成工具

2023-03-19 11:47:57

Taro小程序持續(xù)集

2011-11-30 09:11:03

PHP

2012-07-04 15:05:14

ibmdw

2015-08-06 09:22:19

開源持續(xù)集成服務(wù)器工具

2017-02-27 18:35:23

集成交付部署

2016-08-05 17:19:37

持續(xù)集成持續(xù)交付系統(tǒng)運(yùn)維

2015-12-02 14:56:07

Docker開發(fā)模式持續(xù)集成

2017-10-19 09:47:55

容器化微服務(wù)集成

2021-03-31 09:00:00

管道集成工具

2018-01-12 08:29:11

持續(xù)集成工具

2011-06-15 16:58:26

PHP

2011-05-19 10:39:12

2009-06-14 18:05:58

ibmdwWebSphere
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號