Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

コードの解析とソフトウェアインザループのテスト

コード解析とソフトウェアインザループのテストの概要

コードを解析してエラーを検出し、標準への準拠をチェックして、長さや循環的複雑度などの主要メトリクスを評価します。通常、手書きコードの場合は、静的コード解析でランタイム エラーの有無をチェックし、要件に対してコードを評価するテスト ケースを実行して、コード カバレッジを評価します。結果に基づいて、コードを調整してテストを追加します。生成されたコードの場合は、同じテスト ケースとベースライン結果を使用し、コードを実行するとモデルに対して同等の結果が得られることを示します。コード カバレッジとモデル カバレッジを比較します。テスト結果に基づいて、テストを追加し、モデルを変更してコードを再生成します。

欠陥、メトリクス、MISRA C:2012 を対象としてコードを解析

このワークフローでは、モデルが MISRA® C:2012 準拠のコードを生成するかどうかをチェックする方法と、コード メトリクス、コードの欠陥、MISRA 準拠に関して、生成されたコードをチェックする方法を説明します。より厳密に MISRA に準拠するコードをモデルから生成するには、コード生成アドバイザーとモデル アドバイザーを使用します。コードが MISRA に準拠しているかどうかをチェックするには、Polyspace® MISRA C:2012 チェッカー機能とレポート生成機能を使用します。この例では、モデル simulinkCruiseErrorAndStandardsExample を使用します。モデルを開くには、次を行います。

  1. プロジェクトを開きます。

    path = fullfile(matlabroot,'toolbox','shared','examples',...
    'verification','src','cruise')
    run(fullfile(path,'slVerificationCruiseStart'))

  2. プロジェクトから、モデル simulinkCruiseErrorAndStandardsExample を開きます。

コード ジェネレーター チェックの実行

モデルからコードを生成する前に、より厳密に MISRA C に準拠し、Polyspace との互換性がより高いコードを生成するために実行できる手順があります。この例では、コード生成アドバイザーを使用して、コード生成前にモデルをチェックする方法を説明します。

  1. Compute target speed を右クリックして [C/C++ コード][コード生成アドバイザー] を選択します。

  2. [コード生成アドバイザー] フォルダーを選択します。右側のペインで、[Polyspace][選択した目的 - 優先順位] に移動します。[MISRA C:2012 ガイドライン] オブジェクティブは既に選択されています。

  3. [選択したチェックを実行] をクリックします。

    コード生成アドバイザーが、MISRA C:2012 準拠や Polyspace コード解析に推奨されないブロックやコンフィギュレーション設定があるかどうかをチェックします。このモデルでは、互換性のないブロックのチェックはパスしますが、MISRA 準拠や Polyspace チェックと互換性のないコンフィギュレーション設定がいくつか存在します。

  4. パスしなかったチェックをクリックします。[パラメーターの変更] を選択してパラメーターの変更を受け入れます。

  5. [このチェックを実行] を選択してチェックの実行に戻ります。

モデル アドバイザー チェックの実行

モデルからコードを生成する前に、より厳密に MISRA C に準拠し、Polyspace との互換性がより高いコードを生成するために実行できる手順があります。この例では、コードを生成する前に、モデル アドバイザーを使用してモデルをチェックする方法を説明します。

  1. [コード生成アドバイザー] ウィンドウの下部で、[モデル アドバイザー] を選択します。

  2. [タスク別] フォルダーで、[MISRA C:2012 のモデリング標準] アドバイザー チェックを選択します。

  3. [選択したチェックを実行] をクリックして結果を確認します。

  4. いずれかのタスクが失敗した場合は、推奨される変更を行って、MISRA モデリング ガイドラインがパスするまでチェックを再実行します。

コードの生成と解析

モデル準拠チェックが完了したら、コードを生成できます。Polyspace を使用すると、コードが MISRA C:2012 に準拠しているかどうかをチェックし、MISRA C:2012 との準拠を示すレポートを生成できます。

  1. Simulink® エディターで、Compute target speed を右クリックして、[C/C++ コード][このサブシステムをビルド] を選択します。

  2. 調整可能なパラメーターの既定の設定を使用して、[ビルド] を選択します。

  3. コードが生成されたら、Compute target speed を右クリックして、[Polyspace][オプション] を選択します。

  4. [構成] (Polyspace Bug Finder) ボタンをクリックします。このオプションを使用すると、Polyspace コンフィギュレーション ウィンドウで、より高度な Polyspace 解析オプションを選択できます。

  5. 同じペインで、[コード メトリクスの計算] (Polyspace Bug Finder) を選択します。このオプションは、生成されたコードのコード メトリクス計算をオンにします。

  6. Polyspace コンフィギュレーション ウィンドウを保存して閉じます。

  7. モデルから、Compute target speed を右クリックして、[Polyspace][検証][選択したサブシステムについて生成されたコード] を選択します。

    Polyspace Bug Finder™ が、MISRA チェックと欠陥チェックのサブセットを対象として、生成されたコードを解析します。解析の進行状況は、MATLAB コマンド ウィンドウで確認できます。解析が完了すると、Polyspace 環境が開きます。

結果の確認

生成されたコードの Polyspace 解析を実行後、Polyspace 環境に、静的コード解析の結果が表示されます。

  1. ルール 8.7 のツリーを展開してさまざまな結果をクリックしていきます。

    ルール 8.7 では、関数またはオブジェクトがローカルである場合、その関数およびオブジェクトをグローバルにしてはならないと定められています。8.7 の違反をクリックしていくと、これらの結果の参照先が、他のコンポーネントでも使用している CruiseOnOff などの変数であることがわかります。コードまたはモデルに注釈を付けて、それぞれの結果を正当化できます。ただし、このモデルはより大きいプログラムの一部であるため、解析の構成を変更して MISRA ルールのサブセットのみをチェックすることもできます。

  2. モデルで、Compute target speed を右クリックして、[Polyspace][オプション] を選択します。

  3. [検証設定] (Polyspace Bug Finder) オプションを [プロジェクト コンフィギュレーション] に設定します。このオプションを使用すると、Polyspace コンフィギュレーションで MISRA ルールのサブセットを選択できます。

  4. [構成] ボタンをクリックします。

  5. Polyspace コンフィギュレーション ウィンドウの [コーディング規約およびコード メトリクス] ペインで、[MISRA C:2012 のチェック] (Polyspace Bug Finder) チェック ボックスをオンにし、ドロップダウン リストから [single-unit-rules] を選択します。これで、Polyspace は、単一単位に該当する MISRA C:2012 ルールのみをチェックします。

  6. Polyspace コンフィギュレーション ウィンドウを保存して閉じます。

  7. 新しい構成で解析を再実行します。

    Polyspace で前にルールが表示されていたのは、モデルが単独で解析されたためです。Polyspace がチェックしたルールを単一単位サブセットに限定したところ、違反は 2 つだけ見つかりました。

このモデルが親モデルに統合されたら、MISRA C:2012 の残りのルールを追加できます。

レポートの生成

MISRA C:2012 への準拠を示し、生成されたコード メトリクスに関してレポートするには、結果をエクスポートしなければなりません。この節では、解析後にレポートを生成する方法を説明します。解析を実行するたびにレポートを生成する場合は、レポートの生成 (Polyspace Bug Finder)を参照してください。

  1. 結果をまだ開いていない場合は、Polyspace 環境で開きます。

  2. ツール バーから、[レポート][レポートの実行] を選択します。

  3. レポートの種類として [BugFinderSummary] を選択します。

  4. [レポートの実行] をクリックします。

    レポートは結果と同じフォルダーに保存されます。

  5. レポートを開くには、[レポート][レポートを開く] を選択します。

関連するトピック