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