メインコンテンツ

AUTOSAR C++14 Rule A7-1-8

A non-type specifier shall be placed before a type specifier in a declaration

説明

ルール定義

非型指定子は宣言内で型指定子の前に配置するものとします。

根拠

非型指定子を以下に示します。

  • typedef.

  • friend.

  • constexpr.

  • register.

  • static.

  • extern.

  • thread-local.

  • mutable.

  • inline.

  • virtual.

  • explicit.

コードを読みやすくするには、宣言内で非型指定子を型指定子の前に配置します。

Polyspace 実装

Polyspace® は、非型指定子が型指定子の後ろに配置されている宣言にフラグを設定します。複数の非型指定子が型指定子の後ろに続いている場合、Polyspace は、右端の非型指定子にフラグを設定します。

トラブルシューティング

ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。

すべて展開する

次の例では、AUTOSAR ルール A7-1-8 の Polyspace 実装を示します。

#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 の宣言にはフラグが設定されます。これは、非型指定子の staticconstexpr が型指定子 long long の後ろに配置されているためです。違反は、右端の非型指定子 (static) で強調表示されます。

チェック情報

グループ: 宣言
カテゴリ: Required、Automated

バージョン履歴

R2020a で導入