AUTOSAR C++14 Rule A0-1-2

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

Описание

Управляйте определением

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

Объяснение

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

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

Реализация Polyspace

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

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

Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.

Примеры

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

#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