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标准,因此我们的图表只显示一个问题。
页面下方还有一个图表,它结合了来自3个工具的数据。CodeSniffer是其中之一。
要查看问题所在位置,您可以单击最新构建的左侧菜单中的“checkstyle warnings”,或者单击特定构建,然后单击该特定构建的“checkstyle warnings”。
在此页面上,您可以清楚地看到问题的描述。请注意,您可以使用多个过滤器。在顶部栏中,您可以清楚地看到有多少问题是新的,有多少问题已修复。您可以单击数字以清楚地查看更改。在摘要中,您可以快速查看按优先级分类的问题。
PHP MD
MD代表Mess Detector(混乱检测器)。此工具尝试指示代码中的几个问题。这可能是潜在的错误、未使用的代码或复杂的方法。有关可用检查的完整列表,您可以查看此页面。请注意,我们并非检查每个规则。您可以在phpmd.xml文件中定义要检查的规则。
与PHP CodeSniffer一样,我们在项目视图页面上看到一个图表,该图表指示我们的混乱检测如何随着时间的推移而进展。
要找出问题所在,您可以单击左侧菜单中的“pmd warnings”以转到最新构建。如果您希望查看不同的构建,请单击一个构建,然后选择“pmd warnings”。您将到达一个类似于PHP CodeSniffer页面的页面。
在顶部,您可以再次看到有多少问题是新的,有多少问题已修复。除此之外,您还可以看到每个问题的优先级。
在详细信息页面中,您可以获得有关在何处找到问题的更多信息。有许多选项卡可用于以不同的方式提供相同的信息。例如,您可以单击“types”以了解有关每种类型的更多信息。
如您所见,“UnusedFormalParameter”是我们最大的问题。通过单击它,我们将再次看到哪些文件有未使用的参数。
PHP CPD
CPD代表Copy Paste Detector(复制粘贴检测器)。此工具将分析所有代码并查找多个重复行。如果您有很多重复行,则可能意味着您应该重写某些部分,以便在多个类之间共享逻辑。在项目视图页面上,我们将再次看到所有构建中的总体进度。
在左侧菜单中,我们可以单击“duplicate code”以获取所发现问题的概述。与之前一样,单击构建以获取有关该构建的更多信息。您会注意到概述看起来与之前的页面类似。让我们单击“details”选项卡以获取更多信息。
如您所见,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已转换为两个图像。
我建议您阅读此工具的官方文档以充分理解这两个图表。有关金字塔的更多信息,您可以查看此链接。有关抽象不稳定性图表的更多信息,您可以查看此链接。
您可以通过单击特定构建,然后在左侧菜单中选择“JDepend”来获取更多详细信息。您将获得如下概述。
此页面的解释也相当庞大而复杂,因此我将您引导至官方文档,其中对所有内容进行了解释。
PHPLOC
PHPLOC是一个快速测量项目大小的工具。它向您显示代码的总行数、静态方法的总数等。在左侧菜单中,您可以单击“plots”以获取此工具的结果。您可以使用11个图表来查找此信息。下面,您将看到一个图表的屏幕截图,该图表指示代码和注释的总行数以及方法、类、特性和函数的总数。
PHPUnit
Jenkins 中的大量统计数据是由 PHPUnit 生成的。仅在概述中,您将看到由 PHPUnit 数据生成的 3 个图表。
第一个图表指示有多少代码被测试覆盖。在本例中,为 71.1%。为了生成此覆盖率,后台使用了 xdebug。
第二个图表指示您的 CRAP 水平。CRAP 代表更改风险分析和预测。通过检查代码的复杂性以及对代码执行的测试量来计算 CRAP。如果您浏览了 PHP MD 规则,您可能已经注意到 PHP MD 也能够检查代码的复杂性,但没有考虑单元测试。请阅读此处以了解 PHP MD 如何计算您的复杂性。
最后的图表显示了有多少测试成功以及有多少测试失败。在本例中,它们都成功了。
在我们的左侧栏菜单中,我们有两个由 PHPUnit 生成的项目。第一个是 Crap。在此页面上,您可以看到几个图表的概述,这些图表指示您当前的 CRAP 水平有多高。在底部,您实际上会看到哪些方法被标记为 CRAP。您会注意到一列指示覆盖率和复杂性。
第二个菜单项是“clover HTML report”。在此页面中,您可以按目录概述有多少内容被您的单元测试覆盖。
您可以单击目录以深入了解您的源代码。如果您到达一个文件,您可以打开该文件并逐行查看有多少内容被覆盖。使用颜色,它指示哪些部分正在测试,哪些部分没有测试。将鼠标悬停在一行上会指示您的单元测试已调用该行多少次。
在本例中,我们可以清楚地看到 if 语句中的部分没有被单元测试调用。在本例中这是正确的。此方法只执行 GET 请求,而不执行 POST 请求。如果我们在单元测试中实现 POST 请求,则此 if 语句将被标记为绿色。这样,您可以轻松发现单元测试中任何缺失的部分。
PHPDox
有很多工具可以根据您的代码和注释生成文档。PHPDox 只是另一个可以为您执行此任务的工具。在左侧菜单中,您可以单击“API Documentation”以转到您的文档。PHPDox 的好处是它还包括所有其他工具的结果。
通过顶部的导航,您可以获得所有类的概述,但您也可以深入研究一个类并获得所有方法和描述的概述。您还可以查看文件的历史记录和源代码。
其他页面
除了我们在之前的文章中设置的工具外,Jenkins还会为您收集其他信息。我们安装的违规插件会创建一个额外的页面,该页面显示PHP CodeSniffer、PHP MD和PHP CPD的概述。
您还可以单击特定构建,并在左侧菜单中找到名为“changes”的菜单项。如果您转到此页面,您将看到在先前构建和此构建之间进行的所有提交的概述。如果未进行任何更改,则页面将为空白。
结论
在本文中,我们仔细研究了从所有工具获得的指标类型。您检索到的所有信息也可以在命令行上检索。Jenkins 的优势在于您可以创建图表和概述,这些图表和概述可以更好地表示问题。
在最后一部分中,我们将更换一些工具并添加一些额外的指标。我们还将研究如何分析我们的 CSS、JavaScript 和 HTML 代码。
(此处省略FAQ部分,因为FAQ部分内容与文章主体内容重复性较高,且篇幅较长,为了避免重复,此处予以省略。)
以上是与Jenkins分析PHP项目的详细内容。更多信息请关注PHP中文网其他相关文章!

长URL(通常用关键字和跟踪参数都混乱)可以阻止访问者。 URL缩短脚本提供了解决方案,创建了简洁的链接,非常适合社交媒体和其他平台。 这些脚本对于单个网站很有价值

在Facebook在2012年通过Facebook备受瞩目的收购之后,Instagram采用了两套API供第三方使用。这些是Instagram Graph API和Instagram Basic Display API。作为开发人员建立一个需要信息的应用程序

Laravel使用其直观的闪存方法简化了处理临时会话数据。这非常适合在您的应用程序中显示简短的消息,警报或通知。 默认情况下,数据仅针对后续请求: $请求 -

这是有关用Laravel后端构建React应用程序的系列的第二个也是最后一部分。在该系列的第一部分中,我们使用Laravel为基本的产品上市应用程序创建了一个RESTFUL API。在本教程中,我们将成为开发人员

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

PHP客户端URL(curl)扩展是开发人员的强大工具,可以与远程服务器和REST API无缝交互。通过利用Libcurl(备受尊敬的多协议文件传输库),PHP curl促进了有效的执行

您是否想为客户最紧迫的问题提供实时的即时解决方案? 实时聊天使您可以与客户进行实时对话,并立即解决他们的问题。它允许您为您的自定义提供更快的服务

2025年的PHP景观调查调查了当前的PHP发展趋势。 它探讨了框架用法,部署方法和挑战,旨在为开发人员和企业提供见解。 该调查预计现代PHP Versio的增长


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3汉化版
中文版,非常好用

Dreamweaver CS6
视觉化网页开发工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中