AUTOSAR C++14 Rule A3-1-6
Trivial accessor and mutator functions should be inlined
説明
ルール定義
Trivial accessor and mutator functions should be inlined.
根拠
インライン関数は関数呼び出しの実行時オーバーヘッドを回避できますが、コードが増大する可能性があります。アクセサー (getter) メソッドまたはミューテーター (setter) メソッドはトリビアルであり、コードの増大は問題になりません。このようなメソッドは、不要な関数呼び出しオーバーヘッドを避けるためインラインにできます。また、クラス定義の内部と外部で複数の構文要素の繰り返しを避けることもできます。
クラス内部で定義されるメソッドは暗黙的にインライン メソッドと見なされます。クラス外部のメソッドは、inline キーワードを使用することにより明示的にインラインにできます。
Polyspace 実装
メソッドがトリビアルかどうかを判断するため、チェッカーでは以下の条件を使用します。
アクセサー メソッドは、パラメーターがなく、非静的データ メンバーまたは非静的データ メンバーへの参照を返す 1 つの
returnステートメントを含む場合、トリビアルです。メソッドの戻り値の型は、データ メンバーの型と正確に一致するか、その型への参照でなければなりません。
ミューテーター メソッドは、戻り値の型が
voidで、パラメーターが 1 つ、非静的データ メンバーにパラメーターを代入する 1 つの代入ステートメントを含む場合、トリビアルです。パラメーター型は、データ メンバーの型と正確に一致するか、その型への参照でなければなりません。
チェッカーは、inline キーワードが付いていないクラス外部で定義されたトリビアル アクセサー メソッドとミューテーター メソッドにフラグを設定します。
チェッカーは、テンプレート メソッドやバーチャル メソッドにはフラグを設定しません。
トラブルシューティング
ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: 基本概念 |
| カテゴリ: Advisory、Automated |
バージョン履歴
R2020b で導入