メインコンテンツ

AUTOSAR C++14 Rule A2-8-1

A header file name should reflect the logical entity for which it provides declarations.

R2021a 以降

説明

ルール定義

A header file name should reflect the logical entity for which it provides declarations.

根拠

そのファイル内で宣言されたエンティティの名前とヘッダー ファイル名を一致させることにより、#include 命令がわかりやすくなり、コードが読みやすくなります。

Polyspace 実装

Polyspace® は、classstructnamespace の名前などの関連する宣言型の名前に照らしてヘッダー ファイル名をチェックします。名前が一致しなかった場合は、Polyspace が、ヘッダー ファイルの 1 行目の先頭の文字にフラグを設定します。

  • 名前の比較では大文字と小文字が区別されません。たとえば、myheadermyHeader と一致します。

  • 名前の比較では以下が無視されます。

    • アンダースコア文字 '_'。たとえば、myheadermy_Header と一致します。

    • 接頭辞文字 'C'、'M'、'T'、または接尾辞文字 'T'。この比較では、接頭辞文字と接尾辞文字のどちらかが無視されますが、両方は無視されません。たとえば、myheaderCmyHeader および myHeader_T と一致しますが、CmyHeader_T とは一致しません。

    • ファイル名内のハイフン文字 '-'。たとえば、my-header.h という名前のファイルは、_myHeader という名前の struct と一致します。

トラブルシューティング

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

すべて展開する

myheader.h


//Noncompliant - header name does not match the class name
#include <memory> 
#include <string>

class myClass
{
	virtual ~myClass()=default;
};

class Player : public myClass
{
	std::string Name;
	int Rank;
};

file.cpp

#include "myheader.h"

int main(){
  return 0;
}

この例では、ヘッダー ファイル myheader.h の名前がルールに違反しています。これは、そのヘッダー ファイル内で宣言された基底クラス (myClass) の名前と一致していないためです。

チェック情報

グループ: 構文規則
カテゴリ: Required、Non-automated

バージョン履歴

R2021a で導入