Number of Call Occurrences

Количество вызовов в теле функции

Описание

Эта метрика задает количество вызовов функции в теле функции.

Эта метрика включает:

  • Вызовы в недостижимом коде

  • Вызовы стандартных библиотечных функций

  • Вызовы конструкторов и деструкторов

Метрика исключает:

  • Вызовы через указатель функции

  • Вызовы assert. Polyspace® рассматривает assert как макрос и не функция

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

Примеры

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

int func1(void);
int func2(void);


int foo() {
    return (func1() + func1()*func1() + 2*func2());
}

В этом примере, количестве случаев вызова в foo 4.

#include<stdio.h>
int getVal(void);


void fillArraySize10(int *arr) {
    for(int i=0; i<10; i++)
        arr[i]=getVal();
}

int getVal(void) {
    int val;
    printf("Enter a value:");
    scanf("%d", &val);
    return val;
}

В этом примере, количестве случаев вызова в fillArraySize10 1.

#include <stdio.h>
int fibonacci(int);

void main() {
 int count;
 printf("How many numbers ?");
 scanf("%d",&count);
 fibonacci(count);
}

int fibonacci(int num)
{
   if ( num == 0 )
      return 0;
   else if ( num == 1 )
      return 1;
   else
      return ( fibonacci(num-1) + fibonacci(num-2) );
} 

В этом примере, количестве случаев вызова в fibonacci 2.

#include<iostream>
class A{
    public:
	A(){
		std::cout<<"Create A\n";
	}
	~A() = default;
	A(const A&)=default;
	A(A&&) = default;
	virtual void bar(){ std::cout<<"A";}
};
class B: public A{
    public:
	B() = default;
	 void bar() override {std::cout<<"B";}
};

void func(A& a){
	a.bar();
}

int main(){
	A obj;
	A obj2 = obj;
	B objB;
	func(obj);
	return 0;
}

В этом примере, количестве происшествий вызова в main три:

  1. Конструктор класса A в A obj;. Этот определяемый пользователем конструктор рассчитывает как вызов функции.

  2. Конструктор класса B в B objB;. Поскольку конструктор базового класса A является пользовательским, конструктор B количества как вызов функции даже при том, что B::B() объявляется как =default.

  3. Вызов функционального func.

Класс A использует или неявного конструктора копии по умолчанию. Вызов конструктора копии в A obj2 = obj; не рассчитывает как вызов функции.

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

Группа: Функция
Акроним: NCALLS
Метрика HIS: нет