メインコンテンツ

AUTOSAR C++14 Rule A2-8-2

An implementation file name should reflect the logical entity for which it provides definitions.

R2021a 以降

説明

ルール定義

An implementation file name should reflect the logical entity for which it provides definitions.

根拠

そのファイル内で宣言されたエンティティの名前と実装ファイル名を一致させることにより、プロジェクト構造がわかりやすくなり、コードが読みやすくなります。

Polyspace 実装

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

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

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

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

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

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

Polyspace は、main() が実装されたファイルをチェックしません。

プロジェクトに空のソース ファイルが含まれている場合、ファイルの名前に一致する定義型がないため、Polyspace はこのルールに対する違反を報告します。空のソース ファイルを削除するか、テキスト ファイルとして名前を変更します。

トラブルシューティング

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

すべて展開する

username.h

#include <string>

class User
{
public:
	User();
    User(std::string s);
    std::string getUser();

private:
    std::string user;
};

username.cpp

#include "username.h" // Non-compliant

User::User() : user("") { }
User::User(std::string s): user(s) {}
std::string User::getUser()
{
	return user;
}

この例では、実装ファイル username.cpp の名前がルールに違反しています。これは、そのファイル内で定義されたクラス (User) の名前と一致していないためです。

チェック情報

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

バージョン履歴

R2021a で導入