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