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 は Polyspace インストール フォルダーです。たとえば、polyspacerootC:\Program Files\Polyspace\R2026a です。
Polyspace Platform ユーザー インターフェイスでの解析の実行
Polyspace Platform ユーザー インターフェイスでは、ソース コードおよび ARXML ファイルから Polyspace ワークスペース (.pswks) を作成できます。このワークスペース内では、AUTOSAR モデルの各ソフトウェア コンポーネントが、1 つのプロジェクト (.psprjx) に対応します。各プロジェクトに、コンポーネントの解析に必要なソース ファイルと構成が含まれています。各ソフトウェア コンポーネントは、それぞれの構成を使用して個別に解析できます。
ワークスペースの詳細については、Manage Related Projects in Polyspace Platform User Interface Using Workspacesを参照してください。
ARXML とソースの読み取り
解析を実行する前に、AUTOSAR 仕様を使用して Polyspace ワークスペースを作成します。
[プロジェクト] ツールストリップで、[新規] 、 [AUTOSAR からのワークスペース] を選択します。

[AUTOSAR 仕様からワークスペースを作成] ウィンドウに次の情報を入力します。
ワークスペース フォルダー名 – ワークスペース フォルダー名として
psar_workspaceを入力します。場所 – (オプション) 既定の場所をそのまま使用するか、[既定の場所を使用] をオフにしてフォルダーのパスを指定します。このチュートリアルでは、
C:\Polyspace_Projectsという場所を入力します。ワークスペース ファイル (
.pswksファイル) と生成されたその他のすべてのアーティファクトは、指定された場所にある指定された名前のサブフォルダーに保存されます。たとえば上記の例では、生成されるすべてのアーティファクトはフォルダーC:\Polyspace_Projects\psar_workspaceに保存されます。AUTOSAR ARXML フォルダー – ARXML ファイルを格納する最上位フォルダーを指定します。この例では
です。polyspaceroot\polyspace\examples\doc_cxx\polyspace_autosar\arxmlAUTOSAR ソース フォルダー – C/C++ ソース ファイルを含むすべてのフォルダーを指定します。この例では、フォルダー
を指定します。polyspaceroot\polyspace\examples\doc_cxx\polyspace_autosar\codeAUTOSAR ヘッダーの生成 – 解析で AUTOSAR
Rte_ヘッダーが生成されるようにするには、このオプションを選択します。通常のワークフローでは、生成されるヘッダーではなく独自のRte_ヘッダーを使用できます。
この例では、これは必要な最小限の指定です。AUTOSAR プロジェクトでは、エラーのトラブルシューティングのために、他の情報も指定しなければならない場合があります。たとえば、インクルード フォルダーのパスや、マクロ定義または詳細オプションなどです。
ソース フォルダー直下にないインクルード ファイルへのパスを指定するには、[追加のインクルード フォルダーを指定] フィールドを使用します。インクルード フォルダーのサブフォルダーを再帰的にインクルードする場合は、[サブフォルダー] を選択します。
このフィールドは
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"
コンパイル ツールチェーン (静的解析)およびターゲット プロセッサ タイプ (-target)も参照してください。
[開始] をクリックします。ソフトウェアにより ARXML 仕様と C コード実装が解析され、Polyspace ワークスペースが作成されます。[コマンド出力] セクションでプロジェクト作成の進行状況を追跡します。

ワークスペースが正常に作成された後は、[この AUTOSAR ワークスペースのステータスを参照] をクリックすることで、AUTOSAR プロジェクトのステータスを確認できます。
psar_project.xhtmlファイルに、Web ブラウザーでのワークスペース作成プロセスの概要が示されます。[AUTOSAR 仕様からワークスペースを作成] ウィンドウで、[開く] をクリックしてワークスペースの作成を完了します。個々のソフトウェア コンポーネントに対応するプロジェクト (
) が、ワークスペース内でグループ化されます。プロジェクト名は、ARXML で指定されているソフトウェア コンポーネントの完全修飾名と対応しています。AUTOSAR 対応の Polyspace の利点を参照してください。
Polyspace が ARXML 仕様の解析に失敗した場合や、コードでコンパイルの問題が発生した場合は、[AUTOSAR 仕様からワークスペースを作成] ウィンドウの [進行状況] タブにある [コマンド出力] フィールドまたは [ステータス] フィールドで追加の詳細を確認します。問題をさらに調査し、ARXML ファイルまたはコードを適宜修正します。AUTOSAR コードの Polyspace 解析のトラブルシューティングを参照してください。
プロジェクトの構成
プロジェクトの作成後は、[構成] にあるオプションを使用して各プロジェクトを構成できます。たとえば、[静的解析] タブで [レポート] セクションのオプションを使用して、解析後にレポートを生成できます。Polyspace Platform ユーザー インターフェイスでオプションを指定する方法の詳細については、Polyspace Platform ユーザー インターフェイスでの Polyspace Code Prover のオプションを参照してください。
以下のセクションのオプションは、AUTOSAR の記述から生成されたプロジェクトには必要ありません。
コード制約の構成:ARXML ファイルの外部データ制約は、Polyspace プロジェクトの作成時に自動的に抽出されます。外部制約を明示的に指定することはできません。
マルチタスキング チェックの構成:各プロジェクトが 1 つのソフトウェア コンポーネントの実装を解析するため、Polyspace ワークスペースではマルチタスキング解析は実行できません。データ レースを検出するには、アプリケーション全体用に個別のプロジェクトを作成し、ソース フォルダーを明示的に追加します。マルチタスキングに関連する ARXML ファイルを指定して Bug Finder を実行します。詳細については、
ARXML ファイルの選択 (-autosar-multitasking)を参照してください。ライブラリの検証の構成: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 の実行
ARXML およびソース コード フォルダーのパスを指定して polyspace-autosar コマンドを実行します。このコマンドは、ARXML ファイルとソース ファイルを解析して、複数のプロジェクト (.psprjx) をもつ 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\R2026a" set POLYSPACE_AUTOSAR_PATH="C:\Program Files\Polyspace\R2026a\polyspace\bin\polyspace-autosar" set POLYSPACE_EXAMPLE_PATH="C:\Program Files\Polyspace\R2026a\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 -update-verification ) ELSE ( "%POLYSPACE_AUTOSAR_PATH%\polyspace-autosar" -update-project polyspace\psar_project.xhtml ) Pause
MATLAB® スクリプトを使用して AUTOSAR ソフトウェア コンポーネントのコード実装に対して Code Prover を実行することもできます。polyspaceAutosar を参照してください。
AUTOSAR コードに対する Polyspace の結果のレビュー
解析を実行した後、ツールストリップから [レビュー] パースペクティブを開き、その結果を Polyspace Platform ユーザー インターフェイスで直接レビューします。Polyspace Code Prover は、以下の問題をはじめ、AUTOSAR ソフトウェア コンポーネントのさまざまな問題をチェックします。
[結果のリスト] ペインに、特定された問題のレッド チェック、グリーン チェック、イエロー チェックがリストされます。[結果の詳細] ペイン内の各チェックは、パラメーター指定にリンクされています。
あるいは、polyspace-autosar をコマンド ラインから実行している場合は、ファイル psar_project.xhtml で検証結果の概要を確認できます。このファイルは、解析を実行するマシン上のプロジェクト フォルダー内にあります。Polyspace Platform ユーザー インターフェイスから AUTOSAR プロジェクトまたはワークスペースに対して Polyspace Code Prover 解析を実行する場合、解析結果はファイル psar_project.xhtml に表示されません。
AUTOSAR コードに対する Polyspace の結果のレビューの完全なワークフローについては、AUTOSAR コードに対する Polyspace の結果のレビューを参照してください。
参考
AUTOSAR ランナブルが実装されていません | AUTOSAR ランナブルの実装の無効な結果 | AUTOSAR のランタイム環境関数の無効な使用 | polyspaceAutosar | polyspace-autosar