Function not called

Функция задана, но не вызвана

Описание

Это начинает работу, функциональное определение определяет, вызвана ли функция где-нибудь в коде. Эта проверка отключена, если ваш код не содержит main функция.

Используйте эту проверку, чтобы удовлетворить требованиям ISO® 26262 о функциональном покрытии. Например, см. таблицу 15 ISO 26262, части 6.

Примечание

Эта проверка не включена по умолчанию. Чтобы включить эту проверку, необходимо задать соответствующую опцию анализа. Для получения дополнительной информации смотрите Detect uncalled functions (-uncalled-function-checks).

Примеры

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

#define max 100
int var;
int getValue(void);
int getSaturation(void);

void reset() {
    var=0;
}

void main() {
    int saturation = getSaturation(),val;
    for(int index=1; index<=max; index++) {
        val = getValue();
        if(val>0 && val<10)
            var += val;
        if(var > saturation)
            var=0;
    }
}

В этом примере, функциональном reset задан, но не назван. Поэтому серая проверка Function not called появляется на определении reset.

Коррекция: вызовите функцию

Одна возможная коррекция должна вызвать функциональный reset. В этом примере, вызов функции reset служит той же цели как инструкция var=0;. Поэтому замените инструкцию на вызов функции.

#define max 100

int var;
int getValue(void);
int getSaturation(void);

void reset() {
    var=0;
}

void main() {
    int saturation = getSaturation(),val;
    for(int index=1; index<=max; index++) {
        val = getValue();
        if(val>0 && val<10)
            var += val;
        if(var > saturation)
            reset();
    }
}

#define max 100

int var;
int numberOfResets;
int getValue();
int getSaturation();

void updateCounter() {
  numberOfResets++;
}

void reset() {
  updateCounter();
  var=0;
}

void main() {
  int saturation = getSaturation(),val;
  for(int index=1; index<=max; index++) {
    val = getValue();
    if(val>0 && val<10)
      var += val;
    if(var > saturation) {
      numberOfResets++;
      var=0;
    }
  }
}

В этом примере, функциональном reset задан, но не назван. Начиная с функционального updateCounter называется только от reset, серая ошибка Function not called появляется на определении updateCounter.

Коррекция: вызовите функцию

Одна возможная коррекция должна вызвать функциональный reset. В этом примере, вызов функции reset служит той же цели как инструкции в ветви if(var > saturation). Поэтому замените инструкции на вызов функции.

#define max 100

int var;
int numberOfResets;
int getValue(void);
int getSaturation(void);

void updateCounter() {
  numberOfResets++;
}

void reset() {
  updateCounter();
  var=0;
}

void main() {
  int saturation = getSaturation(),val;
  for(int index=1; index<=max; index++) {
    val = getValue();
    if(val>0 && val<10)
      var += val;
    if(var > saturation)
      reset();
  }
}

Проверяйте информацию

Группа: Поток данных
Язык: C | C++
Акроним: FNC