Как OpenClover считает филиалы? - PullRequest
0 голосов
/ 20 января 2020

Код:

public class Branches {
    public double justOneIf(int a) {
        double result;
        if (a > 0) {
            result = 1.0d;
        } else {
            result = -1.0d;
        }
        return result;
    }

    public String switches(int x) {
        String result;
        switch (x) {
            case 0: {
                result = "zero";
                break;
            }
            case 1: {
                result = "one";
                break;
            }
            case 2: {
                result = "two";
                break;
            }
            default: {
                result = "kill all humans";
            }
        }
        return result;
    }

    public int deepIf(int x) {
        int y;
        if (x == 0) {
            y = 1;
        } else {
            if (x > 0) {
                y = 2;
            } else {
                y = 3;
            }
        }
        return y;
    }
}

В отчете OpenClover (версия 4.4.1) я получил метрики для этого класса:

Code metrics
Branches:6
...

Почему здесь шесть веток? Как клевер это считает?

1 Ответ

0 голосов
/ 21 января 2020

Я понял. Все довольно просто: один «IF» означает 2 ветви. Только это.

Покрытие ветви

Покрытие ветви (или «покрытие принятия решения») - это метрика покрытия кода, которая измеряет, какие возможные ветки в структурах управления потоком выполняются. Clover делает это путем записи, если логическое выражение в структуре управления оценивается как true и false во время выполнения.

...