AUTOSAR C++14 Rule A11-3-1
フレンド宣言を使用してはなりません。
説明
ルール定義
フレンド宣言を使用してはなりません。
根拠
関数をクラスのフレンドとして宣言して、クラスのスコープ外にあるクラスのプライベート メンバーにアクセスします。
class A
{
int data;
public:
// operator+ can access private members of class A such as data
friend A const operator+(A const& lhs, A const& rhs);
};フレンド関数を含むコードは保守が難しくなる可能性があります。たとえば、クラス myClass にフレンド クラス anotherClass がある場合、myClass のデータ メンバーを変更するときに、anotherClass のメンバー関数でそのデータ メンバーを使用しているすべてのインスタンスを見つける必要があります。
Polyspace 実装
ルール チェッカーでは、friend キーワードのすべての使用にフラグを設定します。
チェッカーは、AUTOSAR C++ 14 リリース 18-03 (2018 年 3 月) の仕様に従います。ただし、AUTOSAR C++14 の 18-10 以降のリリースでは、operator== などの比較演算子の例外を許可しています。ルール チェッカーが比較演算子の使用にフラグを設定する場合は、結果を正当化するコメントを追加します。詳細は、以下を参照してください。
Polyspace ユーザー インターフェイスでのバグ修正または正当化による結果への対処 (Polyspace ユーザー インターフェイスで結果をレビューする場合)。
Polyspace Access でのバグ修正または正当化による結果への対処 (Polyspace Access) (Web ブラウザーで結果をレビューする場合)。
コードへの注釈付けと既知の結果または許容可能な結果の非表示 (IDE で結果をレビューする場合)
トラブルシューティング
ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: メンバー アクセス制御 |
| カテゴリ: Required、Automated |
バージョン履歴
R2019a で導入