Parasoft MISRA Compliance アーティファクトは、MISRA 開発ガイドラインへの準拠を直ちに証明できる、DTP インフラストラクチャのアセットの集合です。MISRA Compliance アーティファクトは、あらゆる MISRA 標準をサポートするために適合させることができますが、デフォルトでは MISRA C:2012 用に構成されています。このアーティファクトは Automotive Compliance Pack for DTP 5.4.1 に同梱されています。Compliance Pack のダウンロードおよびライセンス情報については、Parasoft 製品テクニカル サポート センターまでお問い合わせください。
このセクションの内容:
背景
MISRA は、自動車向けアプリケーション用のセーフティ クリティカルなソフトウェアを開発する業界を支援するための技術ガイドラインとして始まりました。以降、MISRA 標準は、他のセーフティ クリティカルな業界における組込ソフトウェア開発組織によって採用されています。MISRA C:2012 は C 言語による開発のための最新の実装であり、159 のベース ガイドラインがあります。Amendment 1 は 14 の補完ガイドラインであり、これらを足すと合計で 173 になります。
MISRA 準拠を達成するための課題の 1 つは、準拠を証明するための標準化された手法が存在しないことでした。この問題に対応するために、MISRA は「MISRA Compliance 2016: Achieving Compliance with MISRA Coding Standards」を公表しました。これは 「MISRA 準拠」のより具体的な定義を提供し、MISRA 標準の準拠を証明するために必要な成果物を明示しています。
Parasoft の MISRA Compliance アーティファクトは、MISRA ガイドラインに対してコード解析を実行し、MISRA Compliance 2016 で定義された以下のレポート仕様を満たすようにデータを適合させます。
Guideline Enforcement Plan
Guideline Enforcement Plan (GEP) は、各 MISRA ガイドラインを表示し、どのようにコンプライアンスがチェックされるかを示します。Parasoft での MISRA コンプライアンスのコンテキストでは、GEP は MISRA ガイドラインを Parasoft コード解析ルールおよび DTP の機能にマッピングします。
Guideline Re-categorization Plan
Guideline Re-categorization Plan (GRP) は、MISRA ガイドラインの分類に対する合意された変更を文書化します。ガイドラインは Mandatory (必須)、Required (必要)、および Advisory (推奨) に分類されます。ガイドラインが真に適用されない場合、4 番目のカテゴリ Disapplied (不適用) も使用されることがあります。
準拠を達成するには、すべての「必須」ガイドラインに従う必要があります。「必要」ガイドラインは従うべきガイドラインですが、文書化された例外が許容されます (Deviations レポートを参照)。「推奨」ガイドラインはベスト プラクティスと見なされます。
「必要」および「推奨」のガイドラインは、より厳格なカテゴリに再分類できます (たとえば「推奨」から「必須」)。しかし、厳格性が低下するカテゴリに (つまり「不適用」に) 再分類できるのは「推奨」ガイドラインだけです。
Deviations Report
「逸脱 (deviation)」は、文書化されたガイドライン違反であり、違反が残ることを許可する論理的根拠です。Parasoft の MISRA 準拠のコンテキストでは、逸脱は抑制されたコード解析違反です。逸脱がレポートで文書化され、安全性に影響にしない場合、プロジェクトは逸脱がありつつも準拠していると見なすことができます。
Guideline Compliance Summary
Guideline Compliance Summary (GCS) は、全般的なプロジェクトの準拠についての主要な記録です。GCS には、各ガイドライン、そのコンプライアンス レベル、逸脱あるいは再分類などのエントリがあります。Parasoft MISRA Compliance 拡張に同梱の MISRA Compliance Report はこの要件を満たします。
詳細については MISRA Compliance 2016: Achieving Compliance with MISRA Coding Standards を参照してください。
前提条件
MISRA Compliance アーティファクトに加えて、以下の Parasoft 製品が必要です:
- Enterprise ライセンスの DTP および DTP Enterprise Pack 5.4.1
- フロー解析ライセンスが有効化された C++test 10.4.1 (Standard または Professional)
基本的な操作手順
- MISRA C:2012 テスト コンフィギュレーション (C++test に同梱) を使って C++test でコードを解析し、違反を DTP にレポートします。
- DTP Extension Designer に Automotive Compliance Pack for DTP 5.4.1 をインストールします。MISRA Compliance アセットもインストールされます。
- DTP 環境に MISRA DTP ワークフローをデプロイし、DTP インターフェイスに MISRA ダッシュボードとウィジェットを追加します。
- ウィジェットとレポートを利用して、修正が必要なコードを特定したり、監査のためにレポートを出力したりします。
100% 準拠の達成
MISRA C:2012 によると、静的解析では推進できないガイドラインが一部あります。結果として、DTP は 169 のガイドラインに対して 100% の準拠をレポートします。
MISRA Compliance 拡張アセット
Parasoft MISRA Compliance アーティファクトは、MISRA C:2012 の準拠を証明するために必要なドキュメントの作成に役立ちます。以下のアセットが含まれます。
- コンプライアンス カテゴリとガイドライン: これらのファイルは、DTP インターフェイスに MISRA Compliance オプション (ウィジェット設定など) を追加します。
- ダッシュボード テンプレート: このファイルは、定義済みの MISRA 関連ウィジェットを含む MISRA C:2012 ダッシュボードの追加を可能にします。
- モデルとプロファイル: これらのファイルは、MISRA 準拠を証明するために必要なコンプライアンス レポートを推進します。詳細については「プロファイル構成」を参照してください。
- DTP ワークフロー: これは、MISRA ガイドラインのコンテキストで違反を表示するウィジェット、レポート、処理ロジックを含む DTP Enterprise Pack アーティファクトです。
DTP ワークフローのインストールとデプロイ
- MISRA Compliance アーティファクトは、Automotive Compliance Pack の一部としてインストールされます。詳細については「インストール」を参照してください。
- DTP の設定メニュー (歯車のアイコン) から [Extension Designer] を選択します。
- [サービス] タブをクリックし、サービス カテゴリを選択します。任意のサービス カテゴリにアーティファクトをデプロイできます。また、新しいカテゴリを作成することもできます (「サービスの使用」を参照)。ただし、DTP ワークフロー サービス カテゴリにアーティファクトをデプロイすることを推奨します。
- 既存のサービスにアーティファクトをデプロイするか、新しいサービスを追加できます。サービスにデプロイしたアーティファクトの数は、全般的なパフォーマンスに影響します。詳細については「Extension Designer のベスト プラクティス」を参照してください。既存のサービスを選択し、ステップ 6 まで継続するか、または [サービスの追加] をクリックします。
- サービスの名前を指定して [確認] をクリックします。
- タブ インターフェイスによって、サービス内でアーティファクトを配置できます。複数のタブにまたがってアーティファクトを配置してもシステムのパフォーマンスには影響しません。タブをクリックし (または [+] ボタンをクリックして新しいタブを追加し)、縦の三点メニューをクリックします。
- [読み込み] > [ライブラリ] > [Workflows] > [Automotive] > [MISRA Compliance] を選択し、空いている任意の箇所をクリックしてサービスにアーティファクトを追加します。
- [デプロイ] をクリックし、DTP 環境へのアーティファクトのデプロイを完了します。
- DTP に戻ってダッシュボードをリフレッシュします。
これで、MISRA ダッシュボードとウィジェットを追加できるだけでなく、MISRA レポートにアクセスできるようになりました。
MISRA ダッシュボードの追加
MISRA ダッシュボードは、MISRA アーティファクトの一部として提供されるカスタム ウィジェットを表示するように設定されています。このダッシュボードには、MISRA C:2012 のコンテキストでコード解析データを表示するように設定されたネイティブの DTPの ウィジェットも含まれます。このセクションの情報は「ダッシュボードの追加」にも記載されています。
- [ダッシュボードの追加] をクリックして名前を指定します。
- (オプション) 以下の情報を指定して、ダッシュボードのデフォルト ビューを設定できます:
- [フィルター] ドロップダウン メニューで、プロジェクトに関連するフィルターを選択します。フィルターは、DTP に格納されたデータをカスタマイズして表示できるラン コンフィギュレーション セットを表します。詳細については「DTP の概念」を参照してください。
- [期間] ドロップダウン メニューで時間の範囲を指定します。
- [ベースライン ビルド] および [ターゲット ビルド] ドロップダウン メニューで、ビルド範囲を指定します。
- [テンプレートからダッシュボードを作成] オプションを有効化し、ドロップダウン メニューから MISRA C Compliance を選択します。
- [作成] をクリックしてダッシュボードの追加を完了します。
MISRA C:2012 アーティファクトに同梱されたウィジェットの詳細については「MISRA Compliance ウィジェットの表示 」を参照してください。
既存のダッシュボードにウィジェットを手動で追加する
アーティファクトに同梱された MISRA ウィジェットは、既存のダッシュボードに追加することもできます。ダッシュボードにウィジェットを追加する方法については「ウィジェットの追加」を参照してください。アーティファクトのデプロイ後、[ウィジェットの追加] オーバーレイの MISRA カテゴリに MISRA ウィジェットが表示されます。
MISRA Compliance - Percentage、MISRA Compliance - Status、および MISRA Violations by Category - TreeMap ウィジェットを追加するときに以下の情報を指定します。
タイトル | [タイトル] フィールドでウィジェット名を変更できます。 |
---|---|
フィルター | ドロップダウン メニューから特定のフィルターまたはダッシュボード設定を選択します。詳細については「フィルターの作成と管理」を参照してください。 |
ターゲット ビルド | ドロップダウン メニューから特定のビルドを選択します。ダッシュボード全体について選択されたビルドがデフォルトで選択されます。ビルドの詳細については「ビルド管理の使用」を参照してください。 |
カテゴリ | この設定は MISRA Compliance - Guidelines by Status および MISRA Compliance - Status ウィジェットで利用可能です。ドロップダウン メニューから個々のカテゴリまたは [すべて] を選択します。 |
Compliance Profile | コンプライアンス プロファイルを指定します (「プロファイルの設定」を参照)。コンプライアンス プロファイル データは、コンプライアンス レポートを生成するために使用されます。 |
MISRA Compliance ウィジェットの表示
各ウィジェットは、テスト データと解析データの異なるビューを提供することで、MISRA 準拠の達成を助けます。MISRA Compliance DTP ワークフローには以下のウィジェットが同梱されています。
MISRA Compliance - Status Widget
このウィジェットは、コンプライアンスの全般的なステータスを表示します。現在のコンプライアンス ステータスを表示するために、このウィジェットの複数のインスタンスを追加し、異なるプロファイルを使用するように設定できます。たとえば、適用されないガイドラインのプロファイルなどです。ウィジェットをクリックすると、MISRA Compliance Report が開きます。
このウィジェットは 5 種類のステータスを表示できます:
Compliant (準拠) コードはすべてのガイドラインを満たしており、ガイドライン カテゴリからの逸脱や変更はありません。 | |
Missing Rule(s) in Analysis (見つからないルールが解析に存在) プロファイル で文書化された Parasoft コード解析ルールが、指定のビルドに含まれていませんでした。すべてのルールが C++test で有効化されていることを確認し、解析を再実行してください。 | |
Compliant With Deviations (逸脱があるが準拠) コードはすべてのガイドラインを満たしていますが、逸脱が適用されています。逸脱は、許容可能であるとユーザーが判断した違反です (逸脱の詳細については「Deviations Report」を参照してください)。 | |
Compliant With Violations (違反があるが準拠) コードはすべての「必須」および「必要」のガイドラインを満たしていますが、「推奨」ガイドラインの違反があります。 | |
Not Compliant (準拠していない) コードはすべての「必須」および「必要」のガイドラインを満たしていません。 |
MISRA Compliance - Percentage Widget
このウィジェットは、MISRA 準拠の達成度をパーセントで表示します。達成度は プロファイル で推進されるガイドラインの数に基づきます。ウィジェットをクリックすると、MISRA Compliance Report が開きます。
MISRA Compliance - Guidelines by Status
このウィジェットは、個々のガイドライン カテゴリ (必須、必要、推奨) またはすべてのカテゴリについて、コンプライアンス ステータスを表示します
円グラフには、最大で 5 個まで、選択したカテゴリについて異なるガイドライン ステータスを表示できます:
緑 | コードが準拠しているガイドライン。 |
黄 | コードが逸脱しているが、まだ準拠していると見なされるガイドライン。 逸脱とは、Parasoft 静的解析ルールに準じてガイドラインに従っていないが、ソフトウェアの安全性に影響しないため許容範囲と見なされる状態のことです。逸脱は、抑制された Parasoft 静的解析ルールを表します。 |
オレンジ | ガイドラインを推進する静的解析ルールに違反があるが、コードが準拠していると見なされるガイドライン。 このステータスになるのは推奨ガイドラインだけです。 |
赤 | コードが準拠していないガイドライン。 |
栗色 | プロファイル で指定されたガイドラインです。ただし、ガイドラインを推進する Parasoft ルールがありません。 |
以下の操作を行うことができます。
- 円グラフ上にマウス ポインタを置くと、詳細が表示されます。
- グラフ セクションをクリックすると、カテゴリとステータスでフィルタリングされた MISRA Compliance Report が開きます。
- 違反の数をクリックすると、カテゴリとステータスでフィルタリングされた MISRA Compliance Report が開きます。
- 逸脱の数をクリックすると、ウィジェットで選択したカテゴリでフィルタリングされた Deviations Report が開きます。
MISRA Violations by Category - TreeMap Widget
このウィジェットは、MISRA のカテゴリ (強制、必須、推奨) ごとに、静的解析違反が集中している箇所を表示します。このウィジェットは、違反がレポートされた各カテゴリ内のガイドライン (たとえば Dir 4.6、Rule 14.3、etc.) も表示します。最後に、各ガイドラインを推進する Parasoft ルールも表示されます。タイルの大きさは、ルールごとにレポートされた静的解析違反の数に比例します。
このウィジェットは、モデル プロファイル で確立された階層を利用して、ルール、ガイドライン、およびカテゴリを相関させます。タイル上にマウス ポインタを置くと、各ルール-ガイドライン-カテゴリに関連する違反の数が表示されます。
違反エクスプローラー で違反を見るには、ルールをクリックします。
MISRA Compliance レポートの表示
MISRA Compliance Report は、MISRA コンプライアンス ステータスの概要を提供し、準拠を証明するための主要文書の役割を果たします。
以下の操作を行うことができます。
- ドロップダウン メニューを使って、MISRA カテゴリまたはコンプライアンス ステータスでソートします。
- [Guideline] 列でガイドラインのリンクをクリックして Guideline Enforcement Plan を開きます。ガイドラインを推進する Parasoft コード解析ルールをレビューできるように、リンクから特定のガイドラインに直接移動します。
- 違反エクスプローラー で違反を確認するには、[違反の数]、[コード内抑制]、[DTP 抑制] 列のリンクをクリックします。
- MISRA Compliance サブ レポートの 1 つを開きます。
- プリンター印刷に適した PDF 形式のレポートをエクスポートするには、[Download PDF] をクリックします。
MISRA Compliance Report には、以下のサブ レポートが含まれます:
Guideline Enforcement Plan
Guidelines Enforcement Plan (GEP) は、MISRA ガイドラインを推進するために使用する静的解析ルールを表示します。各ガイドラインをどのように推進するかをユーザーに説明することを目的とします。
このレポートは、コンプライアンス プロファイルで指定されたデータを使用します (「プロファイルの設定」を参照)。プロファイルでは、[Compiler] フィールドに注釈を追加できます。たとえば、「エラーなし」や、計画を文書化するために適用される特定のコンパイラ設定などです。これらの注釈は [Compiler ] 列に表示されます。
[Analysis Tool] 列には静的解析ルールが表示されます。[Manual Review] 列には、コンパイラと解析ツールによって適用される自動チェックに加えて、実行される手動検証が表示されます。
Guideline Re-categorization Plan
MISRA ガイドライン カテゴリを変更した場合 (「プロファイルの設定」を参照)、そのカテゴリは処理されてこのレポートに表示されます。ガイドライン再分類計画の詳細については MISRA 標準を参照してください。
Deviations Report
標準からの逸脱が文書化され、ソフトウェアの安全性に影響しない限り、コードは違反があっても MISRA 準拠であることができます。逸脱とは、コード中で直接抑制されたコード解析ルール、または DTP の違反エクスプローラーで抑制されたコード解析ルールです。コード中で違反を抑制する方法については、C++test のドキュメントを参照してください。DTP で違反を抑制する方法については、違反エクスプローラーのドキュメントの「違反の抑制」を参照してください。
抑制と [非表示] 優先度
5.4 より前のバージョンの DTP では、静的解析違反を抑制する唯一の方法は優先度を [非表示] に設定することでした。この方法は違反を非表示にしますが、真のプログラム的な抑制ではありません。[非表示] 優先度でマークされた違反を本当に抑制に変換できます。詳細については 5.4.0 リリースノートの「アップグレードについての注意事項」を参照してください。
MISRA Compliance Report で Deviations Report リンクをクリックすると、Deviation Report が開きます。
Deviations Report は、すべてのガイドラインの ID とヘッダーを表示しますが、抑制されたガイドラインには追加情報を表示します。
このレポートは、MISRA カテゴリでフィルタリングできます。また、[Only Deviations] オプションを有効化して逸脱だけを表示することもできます。
ビルド監査レポート
このレポートは、コード解析違反の概要を表示するほか、ビルドに関連したテスト結果とカバレッジ情報も表示します。また、データのアーカイブをダウンロードすることもできます。これは、定期的な監査で MISRA への準拠を証明するために使用できるアーティファクトです。
アーカイブをダウンロードするには、ビルドがロックされていなければなりません。このレポートの詳細については「ビルド監査レポート」を参照してください。
プロファイルの設定
MISRA Compliance DTP ワークフローには、MISRA C:2012 への準拠をモニタリングするように設定されたモデル プロファイル (「モデル プロファイルの使用」を参照) が同梱されています。モデル プロファイルには、コンプライアンス レポートを生成するために必要な情報が含まれます (「MISRA Compliance レポートの表示」を参照)。たとえば、コンパイラ、ガイドラインの分類、再分類を指定するためのフィールドなどです。ユーザー独自の目標を達成するためにガイドラインを再分類したい場合、または独自のレポート用に追加メタデータを指定したい場合、このプロファイルを変更できます。変更は Guideline Re-categorization Plan で反映されます。
デフォルト プロファイルの複製を作成して複製を変更することを推奨します。
- [プロファイルのエクスポート] をクリックして複製をダウンロードします。
- 複製の名前を変更し、[プロファイルのインポート] をクリックします。
- 複製を選択してアップロードします。
- ガイドラインをクリックし、変更を指定します。MISRA カテゴリを変更している場合、以下の文字列が利用可能です:
- Mandatory (必須)
- Required (必要)
- Advisory (推奨)
Disapplied (不適用)
Mandatory および/または Required のガイドラインの厳格性を低下させることは、MISRA がまとめた要件によって Parasoft Guideline Re-categorization Plan Report でのガイドラインの不正使用になります (Guideline Re-categorization Plan を参照)。Required および Advisory のガイドラインの厳格性を強化することは許されます。
- [保存] をクリックします。
MISRA Compliance のアップグレード
DTP をアップグレードするときに拡張を更新できます。拡張は上位互換であるように設計されていますが、新しいバージョンの DTP での動作は保証されません。拡張を適切に動作させるには、最新バージョンのアーティファクトをインストールすること、および以前のバージョンを削除することを強く推奨します。
- 「インストール」のセクションで説明しているように、Automotive Compliance Pack の最新バージョンをインストールします。
- 設定メニュー (歯車のアイコン) から [Extension Designer] を選択します。
- DTP ワークフロー コンプライアンス カテゴリ (または古い MISRA アーティファクトのサービスを含むカテゴリ) を展開し、サービス をクリックします。
- MISRA フローを含むタブをクリックし、すべてのノードを削除します。マウスを使ってすべてのノードをクリックしてドラッグ選択するか、キーボード ショートカットのすべて選択を使用できます。
- 縦の三点メニューから [読み込み] > [ライブラリ] > [Workflows] > [Automotive] > [MISRA Compliance] を選択して新しい MISRA Compliance アーティファクトをインポートします。
- [デプロイ] をクリックし、新しい MISRA アセットのデプロイを完了します。
- [構成] タブをクリックし、古い拡張の削除ボタン (ゴミ箱のアイコン) をクリックします。