メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

AUTOSAR コードに対する Polyspace の実行

このトピックでは、Polyspace でのコンポーネント ベースの AUTOSAR コード検証方法について説明します。統合解析方法については、Polyspace で AUTOSAR コードのコンポーネント ベースの解析と統合解析のどちらかを選択するを参照してください。

AUTOSAR 対応の Polyspace® は、AUTOSAR ソフトウェア コンポーネントのコード実装に静的プログラム解析を実行します。解析では、潜在的なランタイム エラーや AUTOSAR XML (ARXML) 仕様との不一致を調査します。

AUTOSAR ソフトウェア コンポーネントのコード実装に対して Polyspace を実行するには、以下の情報を指定します。

  • ARXML フォルダー: このフォルダーは、AUTOSAR モデルを定義するすべての .arxml ファイルを含みます。ファイルは、データ型、ランナブル、イベントおよび AUTOSAR モデルのソフトウェア コンポーネントに関するその他の情報を指定します。

    Polyspace が解析できるのは、リリース 4.0 以降の AUTOSAR XML スキーマのみです。

  • ソース コード フォルダー: このフォルダーは、ソフトウェア コンポーネントの C コード実装を含みます。このフォルダーの .c ファイルは、AUTOSAR ランナブルを実装する関数や他の呼び出される関数を含みます。このフォルダーは、ソース ファイルで参照されるヘッダー ファイルを含むこともできます。

    別のフォルダーにあるヘッダー ファイルを参照する場合、その場所を個別に指定することができます。

解析では、ARXML ファイルを解析し、ソース ファイルを読み取り、各ソフトウェア コンポーネントの個別のモジュールをもつ Polyspace プロジェクトを作成します。その後、Polyspace Code Prover™ が各モジュールに対し、実行時のランタイム エラーや ARXML のデータ制約違反をチェックします。

このトピックでは、AUTOSAR ソフトウェア コンポーネントのコード実装に対して Polyspace を実行する方法を説明します。Polyspace デスクトップ製品のユーザー インターフェイス、またはコマンド ラインから Polyspace を実行できます。

  • ユーザー インターフェイスでは、解析は 2 つのステップで行われます。一つは、ARXML フォルダーおよびコード フォルダーからの Polyspace ワークスペースの作成、もう一つはプロジェクトに対する Code Prover の実行です。

  • コマンド ラインでは、解析は polyspace-autosar コマンドを使用して実行することができます。

例のファイル

このチュートリアルの手順に従うには、polyspaceroot\polyspace\examples\doc_cxx\polyspace_autosar に含まれるデモ ファイルを使用します。ここで、polyspaceroot は Polyspace インストール フォルダーです。たとえば、C:\Program Files\Polyspace\R2025a です。

Polyspace Platform ユーザー インターフェイスでの解析の実行

Polyspace Platform ユーザー インターフェイスでは、ソース コードおよび ARXML ファイルから Polyspace ワークスペース (.pswks) を作成できます。このワークスペース内では、AUTOSAR モデルの各ソフトウェア コンポーネントが、1 つのプロジェクト (.psprjx) に対応します。各プロジェクトに、コンポーネントの解析に必要なソース ファイルと構成が含まれています。各ソフトウェア コンポーネントは、それぞれの構成を使用して個別に解析できます。

ワークスペースの詳細については、Manage Related Projects in Polyspace Platform User Interface Using Workspacesを参照してください。

ARXML とソースの読み取り

解析を実行する前に、AUTOSAR 仕様を使用して Polyspace ワークスペースを作成します。

  1. [プロジェクト] ツールストリップで、[新規][AUTOSAR からのワークスペース] を選択します。

    Menu showing option to create workspace from AUTOSAR specifications

    [AUTOSAR 仕様からワークスペースを作成] ウィンドウが開きます。

    Create workspace from AUTOSAR spec window

  2. [ワークスペース名] に、作成するワークスペースの名前を入力します。

  3. 既定の場所を使用しない場合は、[既定の場所を使用] をオフにして、[場所] に空のフォルダーのパスを指定します。

  4. 指定したフォルダー内にある、指定したワークスペース名と同じ名前を持つ pswks ファイルが、Polyspace で上書きされるようにする場合は、[既存のワークスペースの上書き] を選択します。

  5. [AUTOSAR ARXML フォルダーの指定] に、ARXML ファイルを格納する最上位フォルダーを指定します。[AUTOSAR ソース フォルダーを指定] セクションに、C/C++ ソース ファイルを含むすべてのフォルダーを指定します。ソース フォルダーを指定しない場合、Polyspace がエラーを発行します。

    このチュートリアルのファイルを使用する場合は、次のパスを入力します。

    • ARXML フォルダー: polyspaceroot\polyspace\examples\doc_cxx\polyspace_autosar\arxml

    • ソース フォルダー: polyspaceroot\polyspace\examples\doc_cxx\polyspace_autosar\code

  6. [AUTOSAR ヘッダーの生成] を選択して、解析で AUTOSAR Rte_ ヘッダーが生成されるようにします。

    通常のワークフローでは、生成されるヘッダーではなく独自の Rte_ ヘッダーを使用できます。エラーのトラブルシューティングのために、他の情報も指定しなければならない場合があります。たとえば、インクルード フォルダーのパスや、マクロ定義または詳細オプションなどです。

    • ソース フォルダー直下にないインクルード ファイルへのパスを指定するには、[追加のインクルード フォルダーを指定] フィールドを使用します。インクルード フォルダーのサブフォルダーを再帰的にインクルードする場合は、[サブフォルダー] を選択します。

      このフィールドは polyspace-autosar のオプション -I に対応します。

    • ソース ファイルにないデータ型やマクロの定義を指定するには、[追加のマクロ定義を指定] フィールドを使用します。定義を含むファイルを指定します。

      このフィールドは polyspace-autosar のオプション -include に対応します。

    • polyspace-autosar に関連付けられている詳細なコマンドライン オプションを指定するには、[詳細設定] フィールドを使用します。

      たとえば、コンパイラとターゲット アーキテクチャの指定が必要な場合があります。既定では、AUTOSAR 仕様から作成されるプロジェクトのコンパイルでは、gnu4.7 コンパイラと i386 アーキテクチャを使用します。visual11.0 コンパイラと x86_64 アーキテクチャを指定するには、次のオプションを入力します。

      -extra-project-options "-compiler visual11.0 -target x86_64"
      コンパイラ (-compiler) および ターゲット プロセッサ タイプ (-target) も参照してください。

  7. [開始] をクリックします。ソフトウェアにより ARXML 仕様と C コード実装が解析され、Polyspace ワークスペースが作成されます。[コマンド出力] で、プロジェクト作成プロセスの進行状況を確認します。

    AUTOSAR workspace created from specifications

  8. ワークスペースが正常に作成された後は、[この AUTOSAR プロジェクトのステータスを参照] をクリックすることで、AUTOSAR プロジェクトのステータスを確認できます。psar_project.xhtml ファイルに、Web ブラウザーでのワークスペース作成プロセスの概要が示されます。[AUTOSAR 仕様からワークスペースを作成] ウィンドウで、[開く] をクリックしてワークスペースの作成を完了します。個々のソフトウェア コンポーネントに対応するプロジェクト (Autosar project icon) が、プロジェクト内でグループ化されます。プロジェクト名は、ARXML で指定されているソフトウェア コンポーネントの完全修飾名と対応しています。AUTOSAR 対応の Polyspace の利点を参照してください。

Polyspace が ARXML 仕様の解析に失敗した場合や、コードでコンパイルの問題が発生した場合は、[進行状況] タブにある [コマンド出力] フィールドまたは [ステータス] フィールドで追加の詳細を確認します。問題をさらに調査し、ARXML ファイルまたはコードを適宜修正します。AUTOSAR コードの Polyspace 解析のトラブルシューティングを参照してください。

プロジェクトの構成

プロジェクトの作成後は、[構成] にあるオプションを使用して各プロジェクトを構成できます。たとえば、[静的解析] タブで [レポート] セクションのオプションを使用して、解析後にレポートを生成できます。Polyspace Platform ユーザー インターフェイスでオプションを指定する方法の詳細については、Polyspace Platform ユーザー インターフェイスでの Polyspace Code Prover のオプションを参照してください。

以下のセクションのオプションは、AUTOSAR の記述から生成されたプロジェクトには必要ありません。

  • 入力およびスタブ:ARXML ファイルの外部データ制約は、Polyspace プロジェクトの作成時に自動的に抽出されます。外部制約を明示的に指定することはできません。

  • マルチタスキング:各モジュールが 1 つのソフトウェア コンポーネントの実装を解析するため、Polyspace プロジェクトでマルチタスキング解析は実行できません。データ レースを検出するには、アプリケーション全体用に個別のプロジェクトを作成し、ソース フォルダーを明示的に追加します。マルチタスキングに関連する ARXML ファイルを指定して Bug Finder を実行します。詳細は、ARXML ファイルの選択 (-autosar-multitasking) を参照してください。

  • Code Prover 検証:AUTOSAR の記述から Polyspace プロジェクトを作成すると、main 関数が (psar_prove_main.c ファイルに) 生成されます。main 関数で、ソフトウェア コンポーネントにランナブル エンティティを実装する関数を呼び出します。Code Prover 解析には、この生成された main が必要です。この main 関数のプロパティは変更できません。

AUTOSAR プロジェクトの構成が完了したら、その構成を外部に保存します。プロジェクトの構成をエクスポートするには、[エクスポート][すべての構成のエクスポート] を選択し、構成をエクスポートする場所を選択します。エクスポートのオプションについての詳細は、Share and Reuse Configuration Variantsを参照してください。

コードの検証

各プロジェクトが持つ独自の構成のセットで、プロジェクトを個別に検証します。プロジェクトを検証するには、プロジェクトを右クリックして [RTE がないことの証明] を選択します。プロジェクトの検証では、ARXML 仕様に照らして対応するソフトウェア コンポーネントのコード実装がチェックされます。また、ランタイム エラーがないかどうかもチェックされます。AUTOSAR 対応の Polyspace の利点を参照してください。

ワークスペースの更新による、その後の変更の反映

コードまたは ARXML 仕様を更新した場合、ワークスペースを更新することで、それらの変更を反映させることができます。ワークスペースを更新すると、Polyspace によってプロジェクトが上書きされ、更新されたコードおよび ARXML 仕様を使用してプロジェクトが再作成されます。プロジェクトに対して行った構成の変更が失われないようにするには、ワークスペースを更新する前に、プロジェクトの構成をエクスポートします。Share and Reuse Configuration Variantsを参照してください。

AUTOSAR ワークスペースを更新するには、ワークスペースを右クリックして、[AUTOSAR ワークスペースの更新] を選択します。いずれかのプロジェクトを右クリックして、ワークスペースを更新することもできます。

ワークスペースを更新したら、構成を確認します。必要に応じて、前に保存した構成をインポートします。

特定のソフトウェア コンポーネントに対してのみコードを変更した場合、影響を受けるプロジェクトのみが再作成されます。他のソフトウェア コンポーネントに対応するプロジェクトは変更されません。

Polyspace デスクトップ ユーザー インターフェイスでの解析の実行

古い Polyspace デスクトップ ユーザー インターフェイスでは、複数のプロジェクトからなるワークスペースを作成する代わりに、1 つの Polyspace プロジェクトを作成します。プロジェクトの各モジュールには、1 つのソフトウェア コンポーネントを実装するソース ファイルが含まれます。検証は、単一のモジュールに対して行うことも、すべてのモジュールに対してまとめて行うこともできます。

Example of running all modules in project together

ARXML とソースの読み取り

プロジェクトを AUTOSAR 仕様から作成しなければならないことを前もって指定します。

  1. [ファイル][新規作成] を選択します。[プロジェクト – プロパティ] ウィンドウで、[AUTOSAR 仕様から作成] を選択します。

  2. [AUTOSAR ARXML フォルダーの指定] フィールドに、ARXML ファイルを含む最上位フォルダーを指定します。[AUTOSAR ソース フォルダーを指定] セクションに、C/C++ ソース ファイルを含むすべてのフォルダーを指定します。

    このチュートリアルのファイルを使用する場合は、次のパスを入力します。

    • ARXML フォルダー: polyspaceroot\polyspace\examples\doc_cxx\polyspace_autosar\arxml

    • ソース フォルダー: polyspaceroot\polyspace\examples\doc_cxx\polyspace_autosar\code

  3. [詳細設定] フィールドにオプション -generate-autosar-headers を入力して、解析で AUTOSAR Rte_ ヘッダーが生成されるようにします。

    通常のワークフローでは、生成されるヘッダーではなく独自の Rte_ ヘッダーを使用できます。エラーのトラブルシューティングのために、他の情報も指定しなければならない場合があります。たとえば、インクルード フォルダーのパスや、マクロ定義または詳細オプションなどです。

    • ソース フォルダー直下にないインクルード ファイルへのパスを指定するには、[追加のインクルード フォルダーを指定] フィールドを使用します。

      このフィールドは polyspace-autosar のオプション -I に対応します。

    • ソース ファイルにないデータ型やマクロの定義を指定するには、[追加のマクロ定義を指定] フィールドを使用します。定義を含むファイルを指定します。

      このフィールドは polyspace-autosar のオプション -include に対応します。

    • polyspace-autosar に関連付けられている詳細なコマンドライン オプションを指定するには、[詳細設定] フィールドを使用します。

      次に例を示します。

      • コンパイラとターゲット アーキテクチャの指定が必要な場合があります。既定では、AUTOSAR 仕様から作成されるプロジェクトのコンパイルでは、gnu4.7 コンパイラと i386 アーキテクチャを使用します。

        visual11.0 コンパイラと x86_64 アーキテクチャを指定するには、次のオプションを入力します。

        -extra-project-options "-compiler visual11.0 -target x86_64"
        コンパイラ (-compiler) および ターゲット プロセッサ タイプ (-target) も参照してください。

    • ソース ヘッダーで見つかったものを使用する代わりに、解析で AUTOSAR ヘッダー (Rte_ ヘッダー、Os.hCompiler.h など) を生成するように指定することもできます。その場合は、オプション -generate-autosar-headers を使用します。

  4. [開始] をクリックします。ARXML 仕様と C コード実装が解析され、Polyspace プロジェクトが作成されます。[コマンド出力] で、プロジェクト作成プロセスの進行状況を確認します。

  5. プロジェクトが正常に作成された後は、[プロジェクト ステータス] ペインで See this AUTOSAR project status をクリックすることで、AUTOSAR プロジェクトのステータスを確認できます。psar_project.xhtml ファイルに、Web ブラウザーでのプロジェクト作成プロセスの概要が示されます。[AUTOSAR 情報を使用してプロジェクトを作成] ウィンドウで、[閉じる] をクリックしてプロジェクトの作成を完了します。個々のソフトウェア コンポーネントに対応するモジュールが、プロジェクト内でグループ化されます。モジュール名は、ARXML で指定されているソフトウェア コンポーネントの完全修飾名に対応しています。AUTOSAR 対応の Polyspace の利点を参照してください。

ARXML 仕様と C コード実装が解析され、Polyspace プロジェクトが作成されます。プロジェクトの各モジュールは、ソフトウェア コンポーネントを 1 つ実装する C ファイルを参照します。モジュール名は、ARXML で指定されているソフトウェア コンポーネントの完全修飾名と対応します。AUTOSAR 対応の Polyspace の利点を参照してください。

ARXML 仕様の解析に失敗した場合またはコードでコンパイルの問題が発生した場合は、[コマンド出力] または [プロジェクト ステータス] タブに表示されている追加の詳細を確認します。問題をさらに調査し、ARXML ファイルまたはコードを適宜修正します。AUTOSAR コードの Polyspace 解析のトラブルシューティングを参照してください。

プロジェクトの構成

プロジェクトを作成すると、既定の解析オプションの一部を変更できます。たとえば、[レポート] セクションのオプションを使用して、解析後にレポートを生成できます。オプションの指定方法についての詳細は、Polyspace 解析オプションの指定を参照してください。

以下のセクションのオプションは、AUTOSAR の記述から生成されたプロジェクトには必要ありません。

  • 入力およびスタブ:ARXML ファイルの外部データ制約は、Polyspace プロジェクトの作成時に自動的に抽出されます。外部制約を明示的に指定することはできません。

  • マルチタスキング:各モジュールが 1 つのソフトウェア コンポーネントの実装を解析するため、Polyspace プロジェクトでマルチタスキング解析は実行できません。データ レースを検出するには、アプリケーション全体用に個別のプロジェクトを作成し、ソース フォルダーを明示的に追加します。マルチタスキングに関連する ARXML ファイルを指定して Bug Finder を実行します。詳細は、ARXML ファイルの選択 (-autosar-multitasking) を参照してください。

  • Code Prover 検証:AUTOSAR の記述から Polyspace プロジェクトを作成すると、main 関数が (psar_prove_main.c ファイルに) 生成されます。main 関数で、ソフトウェア コンポーネントにランナブル エンティティを実装する関数を呼び出します。Code Prover 解析には、この生成された main が必要です。この main 関数のプロパティは変更できません。

コードの検証

モジュールを個別または一括で検証します。

  • 単体のモジュールを検証するには、モジュールを選択して [Code Prover の実行] をクリックします。

  • すべてのモジュールを検証するには、[Code Prover の実行] の横のドロップダウン リストから [すべてのモジュールを実行] を選択します。

モジュールの検証では、ARXML 仕様に照らして対応するソフトウェア コンポーネントのコード実装をチェックし、ランタイム エラーがないかどうかもチェックします。AUTOSAR 対応の Polyspace の利点を参照してください。

後の変更に関するプロジェクトの更新

コードまたは ARXML 仕様を更新した場合、モジュールを再解析できます。最初に、プロジェクトを右クリックして、[AUTOSAR プロジェクトの更新] を選択します。プロジェクトを再度作成して、モジュールに検証を再実行します。

特定のソフトウェア コンポーネントに対してのみコードを変更した場合、影響を受けるモジュールのみが再度作成されます。他のソフトウェア コンポーネントに対応するモジュールは変更されません。

プログラムによる Polyspace の実行

ARXML およびソース コード フォルダーのパスを指定して polyspace-autosar コマンドを実行します。このコマンドは、ARXML ファイルとソース ファイルを解析して Polyspace ワークスペース (.pswks) を作成し、ワークスペース内のすべてのプロジェクトを解析して、ランタイム エラーや ARXML のデータ制約違反がないかどうかをチェックします。

最初の実行では、ARXML ファイルとソース ファイルへのパスを明示的に指定します。後の実行では、前回の実行で作成された psar_project.xhtml ファイルを指定します。解析は、前回の実行後に ARXML ファイルとソース ファイルに加えられた変更を検出し、ソフトウェア コンポーネントの実装が変更されたプロジェクトのみを再解析します。ARXML 仕様が前回の解析後に変更された場合は、新しい解析ですべてのプロジェクトが再解析されます。

たとえば、.bat スクリプトで以下のコマンドを実行できます。最初の実行で、このスクリプトは現在のフォルダーにある arxml フォルダーの ARXML 仕様および code フォルダーの C ソース ファイルを調査します。結果は現在のフォルダーの polyspace フォルダーに保存されます。後の実行では、解析は psar_project.xhtml ファイルから前回の結果を再利用し、前回の実行後に変更されたソフトウェア コンポーネントに関してのみ結果を更新します。

echo off
set POLYSPACEROOT="C:\Program Files\Polyspace\R2025a"

set POLYSPACE_AUTOSAR_PATH="C:\Program Files\Polyspace\R2025a\polyspace\bin\polyspace-autosar"
set POLYSPACE_EXAMPLE_PATH="C:\Program Files\Polyspace\R2025a\polyspace\examples\doc_cxx\polyspace_autosar"

IF NOT EXIST polyspace\psar_project.xhtml (
"%POLYSPACE_AUTOSAR_PATH%" -create-project polyspace -arxml-dir "%POLYSPACE_EXAMPLE_PATH%\arxml" -sources-dir "%POLYSPACE_EXAMPLE_PATH%\code" -generate-autosar-headers -output-platform-project
) ELSE (
"%POLYSPACE_AUTOSAR_PATH%\polyspace-autosar" -update-project polyspace\psar_project.xhtml
)
Pause
または、.psprj プロジェクト ファイルを作成することもできます。ARXML ファイルで指定されているソフトウェア コンポーネントは、このプロジェクトに含まれる個々のモジュールに対応しています。
echo off
set POLYSPACE_AUTOSAR_PATH=C:\Program Files\Polyspace\R2025a\polyspace\bin
set POLYSPACE_EXAMPLE_PATH=C:\Program Files\Polyspace\R2025a\polyspace\examples\doc_cxx\polyspace_autosar

IF NOT EXIST polyspace\psar_project.xhtml (
"%POLYSPACE_AUTOSAR_PATH%\polyspace-autosar" -create-project polyspace -arxml-dir "%POLYSPACE_EXAMPLE_PATH%\arxml" -sources-dir "%POLYSPACE_EXAMPLE_PATH%\code" -generate-autosar-headers
) ELSE (
"%POLYSPACE_AUTOSAR_PATH%\polyspace-autosar" -update-project polyspace\psar_project.xhtml
)
Pause

MATLAB® スクリプトを使用して AUTOSAR ソフトウェア コンポーネントのコード実装に対して Code Prover を実行することもできます。polyspaceAutosar を参照してください。

AUTOSAR コードに対する Polyspace の結果のレビュー

解析を実行した後、その結果をユーザー インターフェイスで直接レビューします。Polyspace Code Prover は、以下の問題をはじめ、AUTOSAR ソフトウェア コンポーネントのさまざまな問題をチェックします。

[結果のリスト] ペインに、特定された問題のレッド チェック、グリーン チェック、イエロー チェックがリストされます。[結果の詳細] ペイン内の各チェックは、パラメーター指定にリンクされています。

または、ファイル psar_project.xhtml で概要をレビューします。AUTOSAR コードに対する Polyspace の結果のレビューの完全なワークフローについては、AUTOSAR コードに対する Polyspace の結果のレビューを参照してください。

参考

| | | |

トピック