Estimated Function Coupling

Мера сложности между уровнями дерева вызова

Описание

Эта метрика обеспечивает аппроксимированную меру сложности между разными уровнями дерева вызова. Метрика задана как:

number of call occurrencesnumber of function definitions + 1

Если существует больше функциональных определений, чем вызовы функции, предполагаемый результат связи функции отрицателен.

Эта метрика:

  • Вызовы функции количеств и функциональные определения в текущем файле только.

    Это не считает функциональные определения в заголовочном файле включенными в текущий файл.

  • Обработки static и inline функции как любая другая функция.

Примеры

развернуть все

void checkBounds(int *);
int getUnboundedValue();

int getBoundedValue(void) {
    int num = getUnboundedValue();
    checkBounds(&num);
    return num;
}

void main() {
    int input1=getBoundedValue(), input2= getBoundedValue(), prod;
    prod = input1 * input2;
    checkBounds(&prod);
}

В этом примере, существуют:

  • 5 вызовите случаи. Оба getBoundedValue и checkBounds называются дважды и getUnboundedValue называется однажды.

  • 2 функциональные определения. main и getBoundedValue заданы.

Поэтому Предполагаемой функциональной связью является 5 - 2 + 1 = 4.

int foobar(int a, int b){ 
    return a+b; 
} 

int bar(int b){ 
    return b+2; 
} 

int foo(int a){ 
    return a<<2; 
} 

int main(int x){ 
    foobar(x,x+2); 
    return 0; 
}

В этом примере показано, как можно получить отрицательный предполагаемый результат связи функции. В этом примере вы видите:

  • 1 вызов функции в main.

  • 4 заданные функции: foobarпанель, foo, и main.

Поэтому предполагаемой функциональной связью является 1 - 4 + 1 = -2.

Метрическая информация

Группа: файл
Акроним: FCO
Метрика HIS: нет