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

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

Описание

Это начинает работу, функциональное определение определяет, вызвана ли функция где-нибудь в коде. Эта проверка отключена, если ваш код не содержит функцию 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