下面伪代码的圈复杂度是"4“。
Read A
Read B
IF A > 0 THEN
IF B = 0 THEN
Print “No values”
ELSE
Print B
IF A > 21 THEN
Print A
ENDIF
ENDIF
ENDIF
我们怎么计算呢?我听说它是条件的#+ 1?我们是否将这些else语句计算在内?我很困惑。
编辑:案例2:如果我们有:
IF (x < y)
statment 1
IF (x < z)
statemnt 2
圈复杂度是什么? 2
我希望比现在更高效地解析JSON对象。目前,我正在运行一个基于范围的for循环来索引键值元素(见下文)。是否可以遍历JSON对象中的所有记录并解析特定的字段w/o循环?
#include "nlohmann/json.hpp"
using json = nlohmann::json;
json myObj = json::parse(apiResponse);
for (auto& element : myObj.items()) {
if (element.key() == "batters") {
for (auto&am
我想计算下面代码的圈复杂度。
int test(int a, int b)
{
int result = 0;
if (a == 0 && b == 0)
result = -1;
else
result = a * b;
return result;
}
Mathwork的Polyspace工具计算值为2。Eclipse的Visual studio和Metrics插件显示3。哪一个是正确的?
JavaScript不要在循环中创建函数,这会显示出圈复杂度。我无法绕过JSHint的错误消息。下面是我使用的循环:
var keys = document.querySelectorAll('#calculator span');
var operators = ['+', '-', 'x', '÷'];
var decimalAdded = false;
for (var i = 0; i < keys.length; i++) {
keys[i].onclick = function (e) {
我必须找到这段代码的控制流图和圈复杂度,然后建议一些白盒测试用例和黑盒测试用例。但我在为代码创建CFG时遇到了问题。
也希望能在测试用例上得到一些帮助。
private void downShift(int index)
{
// index of "child", which will be either index * 2 or index * 2 + 1
int childIndex;
// temp storage for item at index where shifting begins
Comparable temp = the
我用Visual Studio Code Metrics做了一些测试。由于我可以计算圈复杂度,每个if,while,for运算符的复杂度都会增加1。我有下一个简单的方法:
static bool ContainsNegative(int a, int b, int c, int d)
{
if (a < 0 || b < 0 || c < 0 || d < 0) return false;
return true;
}
但是对于它来说,圈复杂度是5,而不是2(方法为1+if为1)。我的问题是-这是因为代码度量将if运算符中
我必须为只包含如下计算结果的Cobol程序计算圈复杂度:
EVALUATE x
WHEN x<0 ...
WHEN x=0 ...
WHEN x between 1 and 10 ...
WHEN OTHER ...`
END EVALUATE.`
我还必须为只包含如下IF语句的Cobol程序计算圈复杂度:
IF x<0 ...
ELSE IF x=0 ...
ELSE ...
计算CC的算法是什么?耽误您时间,实在对不起。
让我们想象一个简单的构造:
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_first: {
// some code
}
break;
case R.id.btn_second: {
// some code
}
break;
case R.id.btn_third: {
// some cod
我写了一个纸牌库小游戏。为了演示如何使用它,我还编写了一个爆炸猫纸牌游戏作为示例。
我使用CodeClimate来确定圈复杂度。在爆炸的小猫游戏中,这种方法的复杂度太高(6):
def play_card(self, card: KittenCard, player: Player = None, target: Player = None):
if card.selfcast and player is None:
raise Exception("You must pass a player who owns the card!")
if c
我正在读一本关于可测试JS的书,其中有一章是关于圈复杂度的,但它并没有真正说明如何计算它。它只是说
圈复杂度是一种度量代码中独立路径数量的方法。
并给出了这个例子,说明它的圈复杂度为2:
function sum(a, b) {
if (typeof(a) !== typeof(b)) {
throw new Error("Cannot sum different types!");
} else {
return a + b;
}
}
因此,我想知道这个合成的例子是否具有3的圈复杂度:
function made
根据圈复杂度的基本规则,以下代码的复杂度应为2(只有一个分支点-- for循环)。
function SumArray(array_to_sum) {
var sum = 0;
for (var i = 0; i < array_to_sum.length; i++) {
sum += array_to_sum[i];
}
return sum;
}
许多现代框架等都提供数据映射功能,例如jQuery.each()或Underscore.js框架中的大多数方法。考虑以下代码:
function SumArray(array_to_sum)