亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 后端開發(fā) php教程 與Jenkins分析PHP項目

與Jenkins分析PHP項目

Feb 19, 2025 am 11:41 AM

Jenkins:PHP項目的持續(xù)集成與交付利器

Jenkins,這款開源自動化服務(wù)器,在PHP項目的持續(xù)集成和持續(xù)交付中扮演著關(guān)鍵角色,它能夠?qū)崟r檢測和解決bug,并持續(xù)反饋代碼質(zhì)量改進建議。

Jenkins與PHP工具集成的強大功能

Jenkins與眾多PHP項目工具兼容,包括PHP CodeSniffer、PHP MD、PHP CPD、PHP Depend、PHPLOC、PHPUnit和PHPDox等,每個工具都提供獨特的代碼分析見解和指標。Jenkins的優(yōu)勢在于它能夠生成圖表和概覽,比命令行檢索更有效地呈現(xiàn)問題,從而更輕松地識別和解決代碼中的問題。

除了已設(shè)置的工具外,Jenkins還會收集其他信息,例如PHP CodeSniffer、PHP MD和PHP CPD違規(guī)情況的概述,以及顯示每次構(gòu)建之間所有提交的“更改”概述。

Jenkins結(jié)果解讀:項目視圖和構(gòu)建視圖

Jenkins的結(jié)果來自不同的工具,并將放置在Jenkins GUI的不同位置。我們將瀏覽兩個不同的頁面。首先是項目視圖頁面,其頂部顯示項目名稱。在此頁面上,您可以獲得項目的總體概述,并可以輕松比較多個構(gòu)建。您可以通過從默認概述頁面單擊項目來訪問此頁面。除了項目視圖頁面外,我們還有構(gòu)建視圖頁面。您可以通過單擊側(cè)邊欄中的構(gòu)建編號來導航到此頁面。在這里,您可以查看有關(guān)此特定構(gòu)建的各種詳細信息。

本文將逐步介紹每個工具及其報告內(nèi)容。最后,我們還將查看Jenkins為我們收集的一些額外詳細信息。由于我們多次構(gòu)建相同的項目,因此我們的圖表中將顯示直線。在實際項目中,圖表會波動。

PHP CodeSniffer

CodeSniffer是一個工具,用于檢查您的代碼是否符合通用規(guī)則集或您自己的自定義規(guī)則集。在本例中,我們配置了希望根據(jù)PSR2測試我們的工具。我們在build.xml文件中定義了這一點。

<arg value="--standard=PSR2" />

在概述頁面上,您將看到一個名為“Checkstyle Trend”的圖表。此圖表表示每次構(gòu)建中PSR2問題的數(shù)量。在我們的代碼中,我們幾乎完全符合PSR2標準,因此我們的圖表只顯示一個問題。

Analyzing a PHP Project with Jenkins

頁面下方還有一個圖表,它結(jié)合了來自3個工具的數(shù)據(jù)。CodeSniffer是其中之一。

要查看問題所在位置,您可以單擊最新構(gòu)建的左側(cè)菜單中的“checkstyle warnings”,或者單擊特定構(gòu)建,然后單擊該特定構(gòu)建的“checkstyle warnings”。

Analyzing a PHP Project with Jenkins

在此頁面上,您可以清楚地看到問題的描述。請注意,您可以使用多個過濾器。在頂部欄中,您可以清楚地看到有多少問題是新的,有多少問題已修復。您可以單擊數(shù)字以清楚地查看更改。在摘要中,您可以快速查看按優(yōu)先級分類的問題。

PHP MD

MD代表Mess Detector(混亂檢測器)。此工具嘗試指示代碼中的幾個問題。這可能是潛在的錯誤、未使用的代碼或復雜的方法。有關(guān)可用檢查的完整列表,您可以查看此頁面。請注意,我們并非檢查每個規(guī)則。您可以在phpmd.xml文件中定義要檢查的規(guī)則。

與PHP CodeSniffer一樣,我們在項目視圖頁面上看到一個圖表,該圖表指示我們的混亂檢測如何隨著時間的推移而進展。

Analyzing a PHP Project with Jenkins

要找出問題所在,您可以單擊左側(cè)菜單中的“pmd warnings”以轉(zhuǎn)到最新構(gòu)建。如果您希望查看不同的構(gòu)建,請單擊一個構(gòu)建,然后選擇“pmd warnings”。您將到達一個類似于PHP CodeSniffer頁面的頁面。

Analyzing a PHP Project with Jenkins

在頂部,您可以再次看到有多少問題是新的,有多少問題已修復。除此之外,您還可以看到每個問題的優(yōu)先級。

在詳細信息頁面中,您可以獲得有關(guān)在何處找到問題的更多信息。有許多選項卡可用于以不同的方式提供相同的信息。例如,您可以單擊“types”以了解有關(guān)每種類型的更多信息。

Analyzing a PHP Project with Jenkins

如您所見,“UnusedFormalParameter”是我們最大的問題。通過單擊它,我們將再次看到哪些文件有未使用的參數(shù)。

PHP CPD

CPD代表Copy Paste Detector(復制粘貼檢測器)。此工具將分析所有代碼并查找多個重復行。如果您有很多重復行,則可能意味著您應(yīng)該重寫某些部分,以便在多個類之間共享邏輯。在項目視圖頁面上,我們將再次看到所有構(gòu)建中的總體進度。

Analyzing a PHP Project with Jenkins

在左側(cè)菜單中,我們可以單擊“duplicate code”以獲取所發(fā)現(xiàn)問題的概述。與之前一樣,單擊構(gòu)建以獲取有關(guān)該構(gòu)建的更多信息。您會注意到概述看起來與之前的頁面類似。讓我們單擊“details”選項卡以獲取更多信息。

Analyzing a PHP Project with Jenkins

如您所見,CompanyFilter類中有58行也位于UserFilter和TimeCategoryFilter類中。根據(jù)此數(shù)據(jù),您可以決定需要某種處理所有3個類的大部分內(nèi)容的BaseFilter或?qū)崿F(xiàn)服務(wù)。解決方案取決于您的情況,PHP CPD 只告訴您它在哪里發(fā)現(xiàn)了問題。

PHP Depend

PHP Depend可能是最難理解的指標。PHP Depend對您的代碼庫執(zhí)行靜態(tài)代碼分析。它生成2個圖像和一個概述頁面。您可能注意到,在項目視圖頁面的頂部,有一些HTML應(yīng)該顯示圖像。

圖像未顯示的事實意味著您必須切換Jenkins配置中的開關(guān)。轉(zhuǎn)到“manage jenkins”,然后轉(zhuǎn)到“Configure Global Security”。有一個選擇框,您可以使用它來配置“markup formatter”。將其設(shè)置為“Safe HTML”并保存您的設(shè)置。如果您現(xiàn)在返回到項目視圖頁面,您會注意到HTML已轉(zhuǎn)換為兩個圖像。

Analyzing a PHP Project with Jenkins

我建議您閱讀此工具的官方文檔以充分理解這兩個圖表。有關(guān)金字塔的更多信息,您可以查看此鏈接。有關(guān)抽象不穩(wěn)定性圖表的更多信息,您可以查看此鏈接。

您可以通過單擊特定構(gòu)建,然后在左側(cè)菜單中選擇“JDepend”來獲取更多詳細信息。您將獲得如下概述。

Analyzing a PHP Project with Jenkins

此頁面的解釋也相當龐大而復雜,因此我將您引導至官方文檔,其中對所有內(nèi)容進行了解釋。

PHPLOC

PHPLOC是一個快速測量項目大小的工具。它向您顯示代碼的總行數(shù)、靜態(tài)方法的總數(shù)等。在左側(cè)菜單中,您可以單擊“plots”以獲取此工具的結(jié)果。您可以使用11個圖表來查找此信息。下面,您將看到一個圖表的屏幕截圖,該圖表指示代碼和注釋的總行數(shù)以及方法、類、特性和函數(shù)的總數(shù)。

Analyzing a PHP Project with Jenkins

Analyzing a PHP Project with Jenkins

PHPUnit

Jenkins 中的大量統(tǒng)計數(shù)據(jù)是由 PHPUnit 生成的。僅在概述中,您將看到由 PHPUnit 數(shù)據(jù)生成的 3 個圖表。

Analyzing a PHP Project with Jenkins

第一個圖表指示有多少代碼被測試覆蓋。在本例中,為 71.1%。為了生成此覆蓋率,后臺使用了 xdebug。

第二個圖表指示您的 CRAP 水平。CRAP 代表更改風險分析和預測。通過檢查代碼的復雜性以及對代碼執(zhí)行的測試量來計算 CRAP。如果您瀏覽了 PHP MD 規(guī)則,您可能已經(jīng)注意到 PHP MD 也能夠檢查代碼的復雜性,但沒有考慮單元測試。請閱讀此處以了解 PHP MD 如何計算您的復雜性。

最后的圖表顯示了有多少測試成功以及有多少測試失敗。在本例中,它們都成功了。

在我們的左側(cè)欄菜單中,我們有兩個由 PHPUnit 生成的項目。第一個是 Crap。在此頁面上,您可以看到幾個圖表的概述,這些圖表指示您當前的 CRAP 水平有多高。在底部,您實際上會看到哪些方法被標記為 CRAP。您會注意到一列指示覆蓋率和復雜性。

第二個菜單項是“clover HTML report”。在此頁面中,您可以按目錄概述有多少內(nèi)容被您的單元測試覆蓋。

Analyzing a PHP Project with Jenkins

您可以單擊目錄以深入了解您的源代碼。如果您到達一個文件,您可以打開該文件并逐行查看有多少內(nèi)容被覆蓋。使用顏色,它指示哪些部分正在測試,哪些部分沒有測試。將鼠標懸停在一行上會指示您的單元測試已調(diào)用該行多少次。

Analyzing a PHP Project with Jenkins

在本例中,我們可以清楚地看到 if 語句中的部分沒有被單元測試調(diào)用。在本例中這是正確的。此方法只執(zhí)行 GET 請求,而不執(zhí)行 POST 請求。如果我們在單元測試中實現(xiàn) POST 請求,則此 if 語句將被標記為綠色。這樣,您可以輕松發(fā)現(xiàn)單元測試中任何缺失的部分。

PHPDox

有很多工具可以根據(jù)您的代碼和注釋生成文檔。PHPDox 只是另一個可以為您執(zhí)行此任務(wù)的工具。在左側(cè)菜單中,您可以單擊“API Documentation”以轉(zhuǎn)到您的文檔。PHPDox 的好處是它還包括所有其他工具的結(jié)果。

Analyzing a PHP Project with Jenkins

通過頂部的導航,您可以獲得所有類的概述,但您也可以深入研究一個類并獲得所有方法和描述的概述。您還可以查看文件的歷史記錄和源代碼。

Analyzing a PHP Project with Jenkins

其他頁面

除了我們在之前的文章中設(shè)置的工具外,Jenkins還會為您收集其他信息。我們安裝的違規(guī)插件會創(chuàng)建一個額外的頁面,該頁面顯示PHP CodeSniffer、PHP MD和PHP CPD的概述。

您還可以單擊特定構(gòu)建,并在左側(cè)菜單中找到名為“changes”的菜單項。如果您轉(zhuǎn)到此頁面,您將看到在先前構(gòu)建和此構(gòu)建之間進行的所有提交的概述。如果未進行任何更改,則頁面將為空白。

Analyzing a PHP Project with Jenkins

結(jié)論

在本文中,我們仔細研究了從所有工具獲得的指標類型。您檢索到的所有信息也可以在命令行上檢索。Jenkins 的優(yōu)勢在于您可以創(chuàng)建圖表和概述,這些圖表和概述可以更好地表示問題。

在最后一部分中,我們將更換一些工具并添加一些額外的指標。我們還將研究如何分析我們的 CSS、JavaScript 和 HTML 代碼。

(此處省略FAQ部分,因為FAQ部分內(nèi)容與文章主體內(nèi)容重復性較高,且篇幅較長,為了避免重復,此處予以省略。)

以上是與Jenkins分析PHP項目的詳細內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔相應(yīng)法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

PHP變量范圍解釋了 PHP變量范圍解釋了 Jul 17, 2025 am 04:16 AM

PHP變量作用域常見問題及解決方法包括:1.函數(shù)內(nèi)部無法訪問全局變量,需使用global關(guān)鍵字或參數(shù)傳入;2.靜態(tài)變量用static聲明,只初始化一次并在多次調(diào)用間保持值;3.超全局變量如$_GET、$_POST可在任何作用域直接使用,但需注意安全過濾;4.匿名函數(shù)需通過use關(guān)鍵字引入父作用域變量,修改外部變量則需傳遞引用。掌握這些規(guī)則有助于避免錯誤并提升代碼穩(wěn)定性。

如何在PHP中牢固地處理文件上傳? 如何在PHP中牢固地處理文件上傳? Jul 08, 2025 am 02:37 AM

要安全處理PHP文件上傳需驗證來源與類型、控制文件名與路徑、設(shè)置服務(wù)器限制并二次處理媒體文件。1.驗證上傳來源通過token防止CSRF并通過finfo_file檢測真實MIME類型使用白名單控制;2.重命名文件為隨機字符串并根據(jù)檢測類型決定擴展名存儲至非Web目錄;3.PHP配置限制上傳大小及臨時目錄Nginx/Apache禁止訪問上傳目錄;4.GD庫重新保存圖片清除潛在惡意數(shù)據(jù)。

在PHP中評論代碼 在PHP中評論代碼 Jul 18, 2025 am 04:57 AM

PHP注釋代碼常用方法有三種:1.單行注釋用//或#屏蔽一行代碼,推薦使用//;2.多行注釋用/.../包裹代碼塊,不可嵌套但可跨行;3.組合技巧注釋如用/if(){}/控制邏輯塊,或配合編輯器快捷鍵提升效率,使用時需注意閉合符號和避免嵌套。

發(fā)電機如何在PHP中工作? 發(fā)電機如何在PHP中工作? Jul 11, 2025 am 03:12 AM

AgeneratorinPHPisamemory-efficientwaytoiterateoverlargedatasetsbyyieldingvaluesoneatatimeinsteadofreturningthemallatonce.1.Generatorsusetheyieldkeywordtoproducevaluesondemand,reducingmemoryusage.2.Theyareusefulforhandlingbigloops,readinglargefiles,or

撰寫PHP評論的提示 撰寫PHP評論的提示 Jul 18, 2025 am 04:51 AM

寫好PHP注釋的關(guān)鍵在于明確目的與規(guī)范,注釋應(yīng)解釋“為什么”而非“做了什么”,避免冗余或過于簡單。1.使用統(tǒng)一格式,如docblock(/*/)用于類、方法說明,提升可讀性與工具兼容性;2.強調(diào)邏輯背后的原因,如說明為何需手動輸出JS跳轉(zhuǎn);3.在復雜代碼前添加總覽性說明,分步驟描述流程,幫助理解整體思路;4.合理使用TODO和FIXME標記待辦事項與問題,便于后續(xù)追蹤與協(xié)作。好的注釋能降低溝通成本,提升代碼維護效率。

快速PHP安裝教程 快速PHP安裝教程 Jul 18, 2025 am 04:52 AM

ToinstallPHPquickly,useXAMPPonWindowsorHomebrewonmacOS.1.OnWindows,downloadandinstallXAMPP,selectcomponents,startApache,andplacefilesinhtdocs.2.Alternatively,manuallyinstallPHPfromphp.netandsetupaserverlikeApache.3.OnmacOS,installHomebrew,thenrun'bre

如何通過php中的索引訪問字符串中的字符 如何通過php中的索引訪問字符串中的字符 Jul 12, 2025 am 03:15 AM

在PHP中獲取字符串特定索引字符可用方括號或花括號,但推薦方括號;索引從0開始,超出范圍訪問返回空值,不可賦值;處理多字節(jié)字符需用mb_substr。例如:$str="hello";echo$str[0];輸出h;而中文等字符需用mb_substr($str,1,1)獲取正確結(jié)果;實際應(yīng)用中循環(huán)訪問前應(yīng)檢查字符串長度,動態(tài)字符串需驗證有效性,多語言項目建議統(tǒng)一使用多字節(jié)安全函數(shù)。

學習PHP:初學者指南 學習PHP:初學者指南 Jul 18, 2025 am 04:54 AM

易于效率,啟動啟動tingupalocalserverenverenvirestoolslikexamppandacodeeditorlikevscode.1)installxamppforapache,mysql,andphp.2)uscodeeditorforsyntaxssupport.3)

See all articles