搜尋
首頁後端開發php教程與Jenkins分析PHP項目

Jenkins:PHP項目的持續集成與交付利器

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

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

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

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

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

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

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

PHP CodeSniffer

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

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

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

Analyzing a PHP Project with Jenkins

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

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

Analyzing a PHP Project with Jenkins

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

PHP MD

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

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

Analyzing a PHP Project with Jenkins

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

Analyzing a PHP Project with Jenkins

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

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

Analyzing a PHP Project with Jenkins

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

PHP CPD

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

Analyzing a PHP Project with Jenkins

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

Analyzing a PHP Project with Jenkins

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

PHP Depend

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

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

Analyzing a PHP Project with Jenkins

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

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

Analyzing a PHP Project with Jenkins

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

PHPLOC

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

Analyzing a PHP Project with Jenkins

Analyzing a PHP Project with Jenkins

PHPUnit

Jenkins 中的大量統計數據是由 PHPUnit 生成的。僅在概述中,您將看到由 PHPUnit 數據生成的 3 個圖表。

Analyzing a PHP Project with Jenkins

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

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

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

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

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

Analyzing a PHP Project with Jenkins

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

Analyzing a PHP Project with Jenkins

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

PHPDox

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

Analyzing a PHP Project with Jenkins

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

Analyzing a PHP Project with Jenkins

其他頁面

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

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

Analyzing a PHP Project with Jenkins

結論

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

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

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

以上是與Jenkins分析PHP項目的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
在Laravel中使用Flash會話數據在Laravel中使用Flash會話數據Mar 12, 2025 pm 05:08 PM

Laravel使用其直觀的閃存方法簡化了處理臨時會話數據。這非常適合在您的應用程序中顯示簡短的消息,警報或通知。 默認情況下,數據僅針對後續請求: $請求 -

構建具有Laravel後端的React應用程序:第2部分,React構建具有Laravel後端的React應用程序:第2部分,ReactMar 04, 2025 am 09:33 AM

這是有關用Laravel後端構建React應用程序的系列的第二個也是最後一部分。在該系列的第一部分中,我們使用Laravel為基本的產品上市應用程序創建了一個RESTFUL API。在本教程中,我們將成為開發人員

簡化的HTTP響應在Laravel測試中模擬了簡化的HTTP響應在Laravel測試中模擬了Mar 12, 2025 pm 05:09 PM

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显著减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

php中的捲曲:如何在REST API中使用PHP捲曲擴展php中的捲曲:如何在REST API中使用PHP捲曲擴展Mar 14, 2025 am 11:42 AM

PHP客戶端URL(curl)擴展是開發人員的強大工具,可以與遠程服務器和REST API無縫交互。通過利用Libcurl(備受尊敬的多協議文件傳輸庫),PHP curl促進了有效的執行

在Codecanyon上的12個最佳PHP聊天腳本在Codecanyon上的12個最佳PHP聊天腳本Mar 13, 2025 pm 12:08 PM

您是否想為客戶最緊迫的問題提供實時的即時解決方案? 實時聊天使您可以與客戶進行實時對話,並立即解決他們的問題。它允許您為您的自定義提供更快的服務

Laravel中的通知Laravel中的通知Mar 04, 2025 am 09:22 AM

在本文中,我們將在Laravel Web框架中探索通知系統。 Laravel中的通知系統使您可以通過不同渠道向用戶發送通知。今天,我們將討論您如何發送通知OV

解釋PHP中晚期靜態結合的概念。解釋PHP中晚期靜態結合的概念。Mar 21, 2025 pm 01:33 PM

文章討論了PHP 5.3中介紹的PHP中的晚期靜態結合(LSB),允許靜態方法的運行時間分辨率調用以更靈活的繼承。 LSB的實用應用和潛在的觸摸

PHP記錄:PHP日誌分析的最佳實踐PHP記錄:PHP日誌分析的最佳實踐Mar 10, 2025 pm 02:32 PM

PHP日誌記錄對於監視和調試Web應用程序以及捕獲關鍵事件,錯誤和運行時行為至關重要。它為系統性能提供了寶貴的見解,有助於識別問題並支持更快的故障排除

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
1 個月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。