exponenta event banner

Правило AUTOSAR C++ 14 A0-1-2

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

Описание

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

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

Объяснение

Неиспользованное возвращаемое значение может указывать на ошибку кодирования или недосмотр.

Перегруженные операторы исключены из этого правила, так как их использование должно эмулировать встроенные операторы, которые могут не использовать их возвращаемое значение.

Внедрение Polyspace

Средство поиска ошибок и средство проверки кода проверяют это правило кодирования по-разному. Анализ может дать различные результаты.

Поиск неисправностей

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

Примеры

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

#include <iostream>
#include <new>

int assignMemory(int * ptr){
     int res = 1;
     ptr = new (std::nothrow) int;
     if(ptr==NULL) {
         res = 0;
     }
     return res;
}

void main() {
    int val;
    int status;
    
    assignMemory(&val);   //Noncompliant
    status = assignMemory(&val); //Compliant
    (void)assignMemory(&val); //Compliant
    
}

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

Возвращаемое значение из третьего вызова приводится к void. Отливка в void указывает на преднамеренное неиспользование возвращаемого значения и не может являться надзором за кодированием.

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

Группа: Вопросы, не зависящие от языка
Категория: Обязательно, Автоматизировано
Представлен в R2019a