メインコンテンツ

AUTOSAR のランタイム環境関数の無効な使用

RTE 関数の引数が AUTOSAR 仕様に違反している

説明

このチェックでは、AUTOSAR のランタイム環境によって提供される関数 (Rte_ 関数) の呼び出しを評価します。このチェックは、実行時に関数の引数が AUTOSAR XML 仕様に違反している可能性があるかどうかを判別します。

このチェックが有効になるのは、Polyspace® ユーザー インターフェイスで、または polyspace-autosar コマンドを使用して、AUTOSAR ARXML 仕様に基づく Code Prover 解析を実行する場合のみです。詳細については、AUTOSAR コードに対する Polyspace の実行を参照してください。

このチェックの診断

[結果の詳細] ペインの情報を使用して、引数が AUTOSAR XML 仕様のデータ制約に違反しているかどうか、NULL 値になる可能性があるかどうかを判断します。明確なエラーを示す ! アイコンまたは潜在的なエラーを示す ? アイコンを確認します。

関数の引数ごとに、チェックでは以下の違反を調べます。

  • データ制約違反:

    この Rte_IWrite_step_out_e4 の呼び出しでは、2 番目の引数が、データ制約に従わなければならないデータ型を指しているとします。解析では、実行時に制約に違反する可能性があるかどうかをチェックします。

    Rte_IWrite_step_out_e4(self, arg);
    チェックでは、以下のようなメッセージが表示される可能性があります。このメッセージは、引数の値 (この場合は値 321) が制約範囲から外れていることを示しています。

    一般的に、解析では、それぞれの Rte_ 関数の引数が、その AUTOSAR データ型で許容された制約範囲内にあるかどうかを検証します。ARXML ファイルのデータ制約を参照することで、AUTOSAR データ型の値を制限します。たとえば、データ制約の指定は以下のようになります (AUTOSAR XML スキーマ version 4.0)。

    <DATA-CONSTR>
       <SHORT-NAME>n320to320</SHORT-NAME>
         <DATA-CONSTR-RULES>
           <DATA-CONSTR-RULE>
             <PHYS-CONSTRS>
               <LOWER-LIMIT INTERVAL-TYPE="CLOSED">-320</LOWER-LIMIT>
               <UPPER-LIMIT INTERVAL-TYPE="CLOSED">320</UPPER-LIMIT>
               <UNIT-REF DEST="UNIT">/jyb/types/units/NoUnit</UNIT-REF>
             </PHYS-CONSTRS>
           </DATA-CONSTR-RULE>
         </DATA-CONSTR-RULES>
    </DATA-CONSTR>
    ...
    <APPLICATION-PRIMITIVE-DATA-TYPE>
           <SHORT-NAME>Int_n320to320</SHORT-NAME>
           <CATEGORY>VALUE</CATEGORY>
           <SW-DATA-DEF-PROPS>
             <SW-DATA-DEF-PROPS-VARIANTS>
                <SW-DATA-DEF-PROPS-CONDITIONAL>
                    ...
                <DATA-CONSTR-REF DEST="DATA-CONSTR">types/app/constraints/n320to320
                </DATA-CONSTR-REF>
                    ...
                </SW-DATA-DEF-PROPS-CONDITIONAL>
            </SW-DATA-DEF-PROPS-VARIANTS>
        </SW-DATA-DEF-PROPS>
    </APPLICATION-PRIMITIVE-DATA-TYPE>

  • AUTOSAR 規格仕様に対する違反 (一部の RTE 関数の入力引数として未割り当てのポインターを渡すなど):

    この Rte_IWrite_step_out_e4 の呼び出しでは、2 番目の引数がポインターであるとします。解析では、このポインターが非 NULL であるかどうか、可能性のあるすべての実行パスに対してこのポインターが割り当てられているかどうかをチェックします。

    Rte_IWrite_step_out_e4(self,arg);
    チェックでは、以下のようなメッセージが表示される可能性があります。

    一般的に、解析では、Rte_ 関数のポインター引数が非 NULL であるかどうか、この引数が割り当てられているかどうかを検証します。

    これらの違反は、チェッカー [AUTOSAR 仕様に非準拠] でも検出されます。

結果情報

グループ: Other
言語: C
頭字語: AUTOSAR_USE

バージョン履歴

R2018a で導入