AUTOSAR C++14 Rule A0-1-2

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

Описание

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

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

Объяснение

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

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

Реализация Polyspace

Bug Finder и Code Prover по-разному проверяют это правило кодирования. Анализы могут привести к различным результатам.

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

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

Примеры

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

#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