国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

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

與Jenkins分析PHP項目

Feb 19, 2025 am 11:41 AM

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

Jenkins,這款開源自動化服務器,在PHP項目的持續(xù)集成和持續(xù)交付中扮演著關鍵角色,它能夠實時檢測和解決bug,並持續(xù)反饋代碼質量改進建議。

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

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

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

Jenkins結果解讀:項目視圖和構建視圖

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

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

PHP CodeSniffer

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

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

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

Analyzing a PHP Project with Jenkins

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

要查看問題所在位置,您可以單擊最新構建的左側菜單中的“checkstyle warnings”,或者單擊特定構建,然後單擊該特定構建的“checkstyle warnings”。

Analyzing a PHP Project with Jenkins

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

PHP MD

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

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

Analyzing a PHP Project with Jenkins

要找出問題所在,您可以單擊左側菜單中的“pmd warnings”以轉到最新構建。如果您希望查看不同的構建,請單擊一個構建,然後選擇“pmd warnings”。您將到達一個類似於PHP CodeSniffer頁面的頁面。

Analyzing a PHP Project with Jenkins

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

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

Analyzing a PHP Project with Jenkins

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

PHP CPD

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

Analyzing a PHP Project with Jenkins

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

Analyzing a PHP Project with Jenkins

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

PHP Depend

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

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

Analyzing a PHP Project with Jenkins

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

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

Analyzing a PHP Project with Jenkins

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

PHPLOC

PHPLOC是一個快速測量項目大小的工具。它向您顯示代碼的總行數(shù)、靜態(tài)方法的總數(shù)等。在左側菜單中,您可以單擊“plots”以獲取此工具的結果。您可以使用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 如何計算您的複雜性。

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

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

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

Analyzing a PHP Project with Jenkins

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

Analyzing a PHP Project with Jenkins

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

PHPDox

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

Analyzing a PHP Project with Jenkins

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

Analyzing a PHP Project with Jenkins

其他頁面

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

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

Analyzing a PHP Project with Jenkins

結論

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

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

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

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

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

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創(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的API進行版本控制的最佳實踐是什麼? 對基於PHP的API進行版本控制的最佳實踐是什麼? Jun 14, 2025 am 12:27 AM

基於toversionaphp,useUrl deuseUrl specteringforclarityAndEsofRouting,單獨的codetoavoidConflicts,dremecateOldVersionswithClearCommunication,andConsiderCustomHeadeSerlySerallyWhennEnncelsy.startbyplacingtheversionIntheUrl(E.G.,epi/api/v

如何在PHP中實施身份驗證和授權? 如何在PHP中實施身份驗證和授權? Jun 20, 2025 am 01:03 AM

tosecurelyhandleauthenticationandationallizationInphp,lofterTheSesteps:1.AlwaysHashPasswordSwithPassword_hash()andverifyusingspasspassword_verify(),usepreparedStatatementStopreventsqlineptions,andStoreSeruserDatain usseruserDatain $ _sessiveferterlogin.2.implementrole-2.imaccessccsccccccccccccccccccccccccc.

PHP中有哪些弱參考(弱圖),何時有用? PHP中有哪些弱參考(弱圖),何時有用? Jun 14, 2025 am 12:25 AM

PHPdoesnothaveabuilt-inWeakMapbutoffersWeakReferenceforsimilarfunctionality.1.WeakReferenceallowsholdingreferenceswithoutpreventinggarbagecollection.2.Itisusefulforcaching,eventlisteners,andmetadatawithoutaffectingobjectlifecycles.3.YoucansimulateaWe

PHP中的程序和麵向對象的編程範例之間有什麼區(qū)別? PHP中的程序和麵向對象的編程範例之間有什麼區(qū)別? Jun 14, 2025 am 12:25 AM

procemal and object-tiriendedprogromming(oop)inphpdiffersimplessintustructure,可重複使用性和datahandling.1.procedural-Progrogursmingusesfunctimesfunctionsormanized sequalized sequalized sequiential,poiperforsmallscripts.2.OpporganizesCodeOrganizescodeOdeIntsocloceSandObjects,ModelingReal-Worlden-Worlden

如何在PHP中安全地處理文件上傳? 如何在PHP中安全地處理文件上傳? Jun 19, 2025 am 01:05 AM

要安全處理PHP中的文件上傳,核心在於驗證文件類型、重命名文件並限制權限。 1.使用finfo_file()檢查真實MIME類型,僅允許特定類型如image/jpeg;2.用uniqid()生成隨機文件名,存儲至非Web根目錄;3.通過php.ini和HTML表單限製文件大小,設置目錄權限為0755;4.使用ClamAV掃描惡意軟件,增強安全性。這些步驟有效防止安全漏洞,確保文件上傳過程安全可靠。

PHP中==(鬆散比較)和===(嚴格的比較)之間有什麼區(qū)別? PHP中==(鬆散比較)和===(嚴格的比較)之間有什麼區(qū)別? Jun 19, 2025 am 01:07 AM

在PHP中,==與===的主要區(qū)別在於類型檢查的嚴格程度。 ==在比較前會進行類型轉換,例如5=="5"返回true,而===要求值和類型都相同才會返回true,例如5==="5"返回false。使用場景上,===更安全應優(yōu)先使用,==僅在需要類型轉換時使用。

如何與PHP的NOSQL數(shù)據(jù)庫(例如MongoDB,Redis)進行交互? 如何與PHP的NOSQL數(shù)據(jù)庫(例如MongoDB,Redis)進行交互? Jun 19, 2025 am 01:07 AM

是的,PHP可以通過特定擴展或庫與MongoDB和Redis等NoSQL數(shù)據(jù)庫交互。首先,使用MongoDBPHP驅動(通過PECL或Composer安裝)創(chuàng)建客戶端實例並操作數(shù)據(jù)庫及集合,支持插入、查詢、聚合等操作;其次,使用Predis庫或phpredis擴展連接Redis,執(zhí)行鍵值設置與獲取,推薦phpredis用於高性能場景,Predis則便於快速部署;兩者均適用於生產(chǎn)環(huán)境且文檔完善。

如何在PHP( - , *, /,%)中執(zhí)行算術操作? 如何在PHP( - , *, /,%)中執(zhí)行算術操作? Jun 19, 2025 pm 05:13 PM

PHP中使用基本數(shù)學運算的方法如下:1.加法用 號,支持整數(shù)和浮點數(shù),也可用於變量,字符串數(shù)字會自動轉換但不推薦依賴;2.減法用-號,變量同理,類型轉換同樣適用;3.乘法用*號,適用於數(shù)字及類似字符串;4.除法用/號,需避免除以零,並註意結果可能是浮點數(shù);5.取模用%號,可用於判斷奇偶數(shù),處理負數(shù)時餘數(shù)符號與被除數(shù)一致。正確使用這些運算符的關鍵在於確保數(shù)據(jù)類型清晰並處理好邊界情況。

See all articles