搜索
首页后端开发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
继续使用PHP:耐力的原因继续使用PHP:耐力的原因Apr 19, 2025 am 12:23 AM

PHP仍然流行的原因是其易用性、灵活性和强大的生态系统。1)易用性和简单语法使其成为初学者的首选。2)与web开发紧密结合,处理HTTP请求和数据库交互出色。3)庞大的生态系统提供了丰富的工具和库。4)活跃的社区和开源性质使其适应新需求和技术趋势。

PHP和Python:探索他们的相似性和差异PHP和Python:探索他们的相似性和差异Apr 19, 2025 am 12:21 AM

PHP和Python都是高层次的编程语言,广泛应用于Web开发、数据处理和自动化任务。1.PHP常用于构建动态网站和内容管理系统,而Python常用于构建Web框架和数据科学。2.PHP使用echo输出内容,Python使用print。3.两者都支持面向对象编程,但语法和关键字不同。4.PHP支持弱类型转换,Python则更严格。5.PHP性能优化包括使用OPcache和异步编程,Python则使用cProfile和异步编程。

PHP和Python:解释了不同的范例PHP和Python:解释了不同的范例Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP和Python:深入了解他们的历史PHP和Python:深入了解他们的历史Apr 18, 2025 am 12:25 AM

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

在PHP和Python之间进行选择:指南在PHP和Python之间进行选择:指南Apr 18, 2025 am 12:24 AM

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

PHP和框架:现代化语言PHP和框架:现代化语言Apr 18, 2025 am 12:14 AM

PHP在现代化进程中仍然重要,因为它支持大量网站和应用,并通过框架适应开发需求。1.PHP7提升了性能并引入了新功能。2.现代框架如Laravel、Symfony和CodeIgniter简化开发,提高代码质量。3.性能优化和最佳实践进一步提升应用效率。

PHP的影响:网络开发及以后PHP的影响:网络开发及以后Apr 18, 2025 am 12:10 AM

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP类型提示如何起作用,包括标量类型,返回类型,联合类型和无效类型?PHP类型提示如何起作用,包括标量类型,返回类型,联合类型和无效类型?Apr 17, 2025 am 12:25 AM

PHP类型提示提升代码质量和可读性。1)标量类型提示:自PHP7.0起,允许在函数参数中指定基本数据类型,如int、float等。2)返回类型提示:确保函数返回值类型的一致性。3)联合类型提示:自PHP8.0起,允许在函数参数或返回值中指定多个类型。4)可空类型提示:允许包含null值,处理可能返回空值的函数。

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脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

DVWA

DVWA

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