AUTOSAR C++14 Rule A7-1-8

Спецификатор нетипа должен быть помещен перед спецификатором типа в объявлении

Описание

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

Спецификатор нетипа должен быть помещен перед спецификатором типа в объявлении.

Объяснение

Не введите спецификаторы, включайте:

  • typedef.

  • friend.

  • constexpr.

  • register.

  • static.

  • extern.

  • thread-local.

  • mutable.

  • inline.

  • virtual.

  • explicit.

Чтобы сделать код более читаемым, поместите спецификаторы нетипа перед спецификаторами типа в объявлении.

Реализация Polyspace

Polyspace® отмечает объявления что спецификаторы нетипа места после спецификатора типа. Если больше чем один спецификатор нетипа следует за спецификатором типа, Polyspace отмечает самый правый спецификатор нетипа.

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

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

Примеры

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

Следующий пример демонстрирует реализацию Polyspace правила A7-1-8 AUTOSAR.

#include <cstdint>

typedef std::int32_t int1;  // Compliant
std::int32_t typedef int2;  // Noncompliant

class to_be_friend
{
    explicit to_be_friend(int); // Compliant
    static void* foo(void);     // Compliant
    void static* bar(void);     // Noncompliant
    virtual inline void i1(void) {}; // Compliant
    inline void virtual i2(void) {}; // Noncompliant
    constexpr static long long l1 = 0; // Compliant
    long long constexpr static l3 = 0; //Noncompliant
};
main()
{
    //...
}

Polyspace отмечает объявления, куда вы помещаете спецификаторы нетипа после спецификаторов типа. Объявление статического объекта l3 отмечается потому что спецификаторы нетипа static и constexpr помещаются после спецификатора типа long long. Нарушение подсвечено на самом правом спецификаторе нетипа, который является static.

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

Группа: объявление
Категория: необходимый, автоматизированный
Введенный в R2020a