MISRA C:2012 Rule 17.7

Должно использоваться значение, возвращаемое функцией, не имеющей пустого типа возврата

Описание

Определение правила

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

Объяснение

Можно непреднамеренно вызвать функцию с не- void возвращает тип, но не использует возврата значение. Поскольку компилятор разрешает вызов, вы можете не поймать пропуск. Это правило запрещает вызовы не в void функция, в которой возвращаемое значение не используется. Если вы не намерены использовать возврат значение функции, явно приведите возврат значение к void.

Реализация Polyspace

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

Шашка не помечает функции memcpy, memset, memmove, strcpy, strncpy, strcat, strncat потому что эти функции просто возвращают указатель на свои первые аргументы.

Поиск и устранение проблем

Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».

Примеры

расширить все

unsigned int cutOff(unsigned int val) {
    if (val > 10 && val < 100) {
        return val;
    }
    else {
        return 0;
    }
}

unsigned int getVal(void);

void func2(void) {
    unsigned int val = getVal(), res;
    cutOff(val);           /* Non-compliant */
    res = cutOff(val);     /* Compliant */
    (void)cutOff(val);     /* Compliant */
}

В этом примере правило нарушается, когда возвращаемое значение cutOff не используется впоследствии.

Правило не нарушается, когда возвращаемое значение является:

  • Назначена другой переменной.

  • Явное приведение к void.

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

Группа: Функция
Категория: Требуемая
Категория AGC: Читаемость
Введенный в R2014b