メインコンテンツ

AUTOSAR C++14 Rule A9-6-1

Data types used for interfacing with hardware or conforming to communication protocols shall be trivial, standard-layout and only contain members of types with defined sizes

説明

ルール定義

Data types used for interfacing with hardware or conforming to communication protocols shall be trivial, standard-layout and only contain members of types with defined sizes.

根拠

ハードウェアと連携している場合や通信プロトコルに準拠している場合は、使用するデータ型のレイアウトを一貫性のある標準化されたものにする必要があります。このようなタスクでは、レイアウトとサイズが、ハードウェアまたはソフトウェアに依存しないデータ型を使用してください。

サイズが明確に定義された型は、ヘッダー <cstdint> にリストされます。このようなデータ型の例として、int16_8int32_t などの型が挙げられます。boolwchar_t、ポインターなどの型はこのリストから除外されます。ハードウェアとインターフェイスで接続している場合や通信プロトコルに準拠している場合は、除外された型の使用を避けてください。

列挙型の使用は、enum の基礎となるデータ型のサイズが明確に定義されている場合にのみ許可されます。このようなタスクでのビットフィールドの使用は、潜在型のサイズが明確に定義されている場合にのみ許可されます。

Polyspace 実装

Polyspace® は、ビット フィールドで次の 2 つのデータ型とは異なるデータ型が使用されている場合に、このルールの違反を報告します。

  • 列挙型

  • 符号なし整数型

トラブルシューティング

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

すべて展開する

#include <cstdint>
enum class E1: std::uint8_t {
	E11,
	E12,
	E13
};
enum class E2{
	E21,
	E22,
	E23
};
class hwInterface{
public:
	std::int32_t A:2; //Noncompliant- signed integer
	std::uint8_t B:2U; //Compliant 
	E1 field1:2; //Compliant

	char D:2;//Noncompliant
	E2 field2:2; //Compliant
};

この例では、Polyspace が、ビットフィールドでの enums 型と符号なし整数型以外の、あらゆる型の使用にフラグを設定します。たとえば、std::int32_tchar の使用にはフラグが設定されます。Polyspace は、std::uint8_t や、E1E2 などの列挙型の使用にはフラグを設定しません。

チェック情報

グループ: クラス
カテゴリ: Required、Partially automated

バージョン履歴

R2019a で導入