miecheh / teamcity-clover
解析 clover.xml 并将代码覆盖率及 CRAP 指数报告给 TeamCity
Requires
- php: >=5.2.0
README
此小 PHP 脚本将 PHPUnit 的代码覆盖率信息集成到 TeamCity。脚本使用 服务消息 通知 TeamCity 构建指标(由于 teamcity-info.xml 的使用已被弃用,并且可能在 TeamCity 的未来版本中移除支持)。
默认情况下,这些指标将出现在 TeamCity GUI 中(特定构建的概述选项卡下,以及构建配置的统计选项卡下)。截至 TeamCity 9,您可以根据需要轻松添加自定义图表(见下文)。
此外,这些指标可以用来强制构建标准。例如,您可以更新构建配置以强制代码覆盖率不低于某个预定的阈值,或下降的百分比。有关更多信息,请参阅 TeamCity 文档。
安装
使用 composer 将 teamcity-clover 添加到您的项目中: composer require --dev micheh/teamcity-clover
。
或者手动将其添加到您的 composer.json
文件中:
"require-dev": { "micheh/teamcity-clover": "~0.6" }
要使用脚本而不使用 composer,请 下载当前版本 并将文件解压到 TeamCity 可以访问的位置。
使用方法
运行 PHPUnit 并确保使用 --coverage-clover
参数来创建 clover.xml。然后添加另一个构建步骤来运行 teamcity-clover.php
脚本,并将 clover.xml 的路径作为唯一参数提供,例如: php path/to/teamcity-clover.php %system.teamcity.build.tempDir%/clover.xml
。如果您使用的是来自 JetBrains Meta-Runner Power Pack 的 PHPUnit Meta-Runner,则上述路径是您找到 clover.xml 的位置。
映射
由于 TeamCity 和 PHPUnit 不提供相同的代码覆盖率信息,不同的属性必须进行匹配。代码覆盖率映射如下
TeamCity | PHPUnit | 统计键名称 |
---|---|---|
行 | 元素 | CodeCoverageAbsLTotal, CodeCoverageAbsLCovered, CodeCoverageL |
块 | 语句 | CodeCoverageAbsBTotal, CodeCoverageAbsBCovered, CodeCoverageB |
方法 | 方法 | CodeCoverageAbsMTotal, CodeCoverageAbsMCovered, CodeCoverageM |
类 | 类/特性 | CodeCoverageAbsCTotal, CodeCoverageAbsCCovered, CodeCoverageC |
自定义统计
除了代码覆盖率外,脚本还将向 TeamCity 报告自定义统计值。这些值默认情况下不会出现在 Web 界面中,但可用于自定义图表或构建失败条件。
CRAP 指数
PHPUnit为每个方法计算一个变化风险反模式(CRAP)指数,该指数取决于循环复杂度和代码覆盖率(更多信息请参阅StackOverflow上的这个问题)。脚本将报告总CRAP指数、平均值和最大值到TeamCity,以及CRAP指数等于或高于指定阈值(默认为30)的方法数量和百分比。您可以通过向脚本提供--crap-threshold <number>
参数来更改CRAP阈值。例如,要计算所有CRAP指数为20或以上的方法,请使用php teamcity-clover.php --crap-threshold 20 clover.xml
。将阈值设置为0以禁用CRAP指标的报告。
自定义统计键 | 描述 |
---|---|
CRAPAmount | 具有CRAP指数≥阈值的(默认:30)方法数量 |
CRAPPercent | 具有CRAP指数≥阈值的(默认:30)方法百分比 |
CRAPTotal | 总CRAP指数(所有CRAP指数的总和) |
CRAPAverage | 所有方法平均CRAP指数 |
CRAPMaximum | 报告的最高CRAP指数 |
其他指标
此外,以下各种指标也被报告到TeamCity
自定义统计键 | 描述 |
---|---|
文件 | 文件数量 |
LinesOfCode | 代码行数 |
NonCommentLinesOfCode | 非注释代码行数 |
自定义图表
除了自动创建的代码覆盖率图表外,您还可以通过更新<TeamCity 数据目录>/config/main-config.xml
来为自定义统计创建图表。例如
<graph title="Metrics" defaultFilters="showFailed" seriesTitle="Type"> <valueType key="Files" title="Files" /> <valueType key="CodeCoverageAbsCTotal" title="Classes" /> <valueType key="CodeCoverageAbsMTotal" title="Methods" /> </graph> <graph title="Lines" defaultFilters="showFailed" seriesTitle="Type"> <valueType key="LinesOfCode" title="Lines of code" /> <valueType key="NonCommentLinesOfCode" title="Non-Comment lines of code" /> </graph>
如果您使用TeamCity 9或更高版本,您还可以通过TeamCity网络界面直接添加自定义图表,而不是手动编辑项目XML。有关更多信息,请参阅TeamCity文档。
许可证
此存档中的文件在BSD-3-Clause许可证下授权。您可以在LICENSE.md中找到此许可证的副本。