AUTOSAR C++14 Rule A8-4-8
説明
ルール定義
Output parameters shall not be used.
根拠
関数に非 const 参照またはポインター パラメーターとして変数を渡し、その変数に関数の出力値を格納することができます。次に例を示します。
void func(const T* input_var, T* output_var); //declaration
void func(const T* input_var, T* output_var)
{
    *output_var = *input_var % 2;
}ただし関数宣言からは、出力パラメーター output_var が func に値を渡してから出力を格納するのか (in-out パラメーター)、あるいは output_var が出力だけを格納するのか (out パラメーター) どうかは明確にわかりません。そのため、たとえば関数で非 NULL パラメーターが想定されているときに NULL パラメーターを渡すなど、開発者がパラメーターを誤って使用する可能性があります。 
戻り値を使用して関数の出力を格納してください。戻り値は意図を明確にして、渡されたパラメーターが不適切に使用されることを防止します。次に例を示します。
T* func(const T* input_var)
{
    return *input_var % 2;
}Polyspace 実装
Polyspace® は、以下の要素のパラメーター リストでの非 const 参照またはポインターの使用のすべてにフラグを設定します。
- 関数 ( - main()を除く)。
- クラスのコンストラクターと演算子。 
コードに関数宣言と関数定義が含まれている場合、Polyspace は関数定義内で違反にフラグを設定します。
メモ
Polyspace は、そのパラメーターが出力パラメーターとして使用されていない場合でも、パラメーター リストで非 const 参照またはポインターにフラグを設定します。
トラブルシューティング
ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: 宣言子 | 
| カテゴリ: Required、Automated | 
バージョン履歴
R2021a で導入