AUTOSAR C++14 Rule A0-1-3
Every function defined in an anonymous namespace, or static function with internal linkage, or private member function shall be used
説明
ルール定義
Every function defined in an anonymous namespace, or static function with internal linkage, or private member function shall be used.
根拠
匿名の名前空間で定義された関数と内部リンクを含む静的関数は、それらが定義されたコンパイル ユニット内部でしか呼び出すことができません。同様に、プライベート メンバー関数は、それらが属しているクラス実装内部でしか呼び出すことができません。このいずれの場合も、このような関数の目的は、後でプロジェクトに統合する外部コードではなく、現在のソース コードでのみ使用することです。このような関数を使用しない場合は、不十分なソフトウェア設計や現在のコード ベース内のロジックの不足と見なされます。
メモ
ソース コード内で明示的に関数を呼び出せば、実行時にその呼び出しまで到達できなくても、このルールを満たしていることになります。別のルールの M0-1-1 では、到達不能なすべてのコード出現がチェックされます。
Polyspace 実装
ソース コード内で定義された関数が明示的に呼び出されず、次のカテゴリのいずれかに属している場合は、チェッカーがその関数定義にフラグを設定します。
匿名の名前空間で定義された関数
内部リンクを含む静的関数
クラス定義の外部で定義されたプライベート メンバー関数
チェッカーは、クラス定義の内部で定義された呼び出されないプライベート メンバー関数にフラグを設定しません。
既定の Polyspace® as You Code 解析では、チェッカーがクラス定義の外部で定義されたプライベート メンバー関数にフラグを設定しません。Polyspace as You Code 解析で非アクティブにされるチェッカー (Polyspace Access)を参照してください。
トラブルシューティング
ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: 言語に依存しない問題 |
| カテゴリ: Required、Automated |
バージョン履歴
R2020b で導入