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, bar, foo, и main.

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

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

Группа: Файл
Акроним: FCO
ЕГО Метрика: Нет