我刚开始使用 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 的废话索引,导致如下图:
(您可以在此处获取 .ods 文件:https://www.dropbox.com/s/3bihb9thlp2fyg8/crap.ods?dl=1)
关于php - 如何读取/改进 PHP 计算的 C.R.A.P 指数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4731774/