【发布时间】:2021-02-24 23:47:28
【问题描述】:
我正在开发一个自定义应用程序来解析clover.xml 报告。
只是想知道是否有人知道获得Classes and Traits 总覆盖率百分比的正确公式。
这是我找到的 Lines 和 Functions&Methods 覆盖率的公式:
// TPC = (coveredconditionals + coveredstatements + coveredmethods) / (conditionals + statements + methods)
phpMetric.project = (((phpMetric.coveredconditionals + phpMetric.coveredstatements + phpMetric.coveredmethods) / (phpMetric.conditionals + phpMetric.statements + phpMetric.methods))) * 100;
// Lines coverage formula - LTPC = (coveredstatements / statements) * 100
phpMetric.lines = ((phpMetric.coveredstatements / phpMetric.statements)* 100);
// Functions and Methods coverage formula - FMTPC = (coveredmethods / methods) * 100
phpMetric.functions = ((phpMetric.coveredmethods / phpMetric.methods)* 100);
这是来自 clover.xml 的 metrics
<metrics files="10070" loc="1354443" ncloc="1110810" classes="8575" methods="46082" coveredmethods="31707" conditionals="0" coveredconditionals="0" statements="561696" coveredstatements="371009" elements="607778" coveredelements="402716"/>
更新:
我想从报告中提取的信息是列Classes and Traits,即总覆盖率%。
谢谢!
【问题讨论】:
-
你到底想从 xml 中提取什么?
-
@JackFleeting - 我正在尝试提取每个覆盖类别的整体覆盖数据,例如:行覆盖、函数和方法覆盖以及类和特征。对于行和函数/方法,我已经从 xml 中获取了数据,但对于类覆盖率我没有。
-
恐怕还不清楚,因为我不知道这些东西是什么。关注 xml:你有一个名为
<metrics>的元素,它具有多个属性(files、loc、ncloc等),每个属性都有一个属性值(10070、1354443和1110810,分别等)。为了创建报告,您需要具体提取其中哪些? -
是的,这就是我要找的。例如:在元素
metrics中,我们有方法信息:methods="46117" coveredmethods="31733"- 我如何提取总覆盖率:TCP = (coveredmethods / methods) * 100。不幸的是,我没有将coveredClasses 标识到元素metrics中。不确定如何/在哪里是被覆盖的类元素或其他东西。该元素的值是classes="8579",但不是coveredClasses。谢谢@JackFleeting
标签: php xml phpunit code-coverage clover