php - 如何读取/改进 PHP 计算的 C.R.A.P 指数

标签 php unit-testing phpunit

我刚开始使用 PHPUnit 及其丰富多彩的代码覆盖率报告。我理解所有的数字和百分比,除了一个:C.R.A.P 指数。谁能给我一个可靠的解释,解释它的含义,如何分析它以及如何降低它?

最佳答案

@Toader Mihai offered a solid explanation. (+1 来 self )

如何降低:

编写不太复杂的代码或编写更好的测试代码。 (见下图)

更好的测试代码?

在这种情况下,这只是意味着:更高的代码覆盖率,通常会导致编写更多的测试。

更简单的代码?

例如:将您的方法重构为更小的方法:

// Complex
function doSomething() {
    if($a) {
        if($b) {
        }
        if($c) {
        }
    } else {
        if($b) {
        }
        if($c) {
        }
    }
}

// 3 less complex functions
function doSomething() {
    if($a) {
        doA();
    } else {
        doNotA();
    }
}

function doA() {
    if($b) {
    }
    if($c) {
    }
}

function doNotA() {
    if($b) {
    }
    if($c) {
    }
}

(只是一个简单的例子,我相信你会找到更多资源)

其他资源:

首先让我提供一些额外的资源:

Creators blog post about the crap index

以防万一:Cyclomatic complexity explained .如果您想知道,PHP_CodeSniffer 和 PHPMD 等工具会告诉您该数字。

虽然由您来决定什么数字是“好的”,但一个经常建议的数字(即有点高恕我直言)是 30 的废话索引,导致如下图:

alt text (您可以在此处获取 .ods 文件:https://www.dropbox.com/s/3bihb9thlp2fyg8/crap.ods?dl=1)

关于php - 如何读取/改进 PHP 计算的 C.R.A.P 指数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4731774/

相关文章:

php - 需要在托管服务器上为我的 php 文件运行 cron 作业

php - 确定 MySQL Select 的逻辑 - 预订系统

unit-testing - 使用 Midje 测试音色日志输出

PHPUnit 模拟函数?

php - 从 PHPUnit 的几次执行中聚合代码覆盖率

php - 单元测试 : Specific testing & Flow of Control

PhpStorm、PHPUnit 和 setcookie

php - mysql 检查两个表的结果?

javascript - PHP:关联数组到数值数组

ruby-on-rails - 在 Controller 中使用 using 方法测试辅助方法