Parasoft MISRA Compliance アーティファクトは、MISRA 開発ガイドラインへの準拠を直ちに証明できる、DTP インフラストラクチャのアセットの集合です。MISRA Compliance アーティファクトは、あらゆる MISRA 標準をサポートするために適合させることができますが、デフォルトでは MISRA C:2012 用に構成されています。このアーティファクトは Automotive Compliance Pack に同梱されています。Compliance Pack のダウンロードおよびライセンス情報については、Parasoft 製品テクニカル サポート センターまでお問い合わせください。
このセクションの内容:
概要
Parasoft の MISRA Compliance アーティファクトは、MISRA ガイドラインに対してコード解析を実行し、MISRA Compliance 2020 で定義された以下のレポート仕様を満たすようにデータを適合させます。
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 Report
「逸脱 (deviation)」は、文書化されたガイドライン違反であり、違反が残ることを許可する論理的根拠です。Parasoft の MISRA 準拠のコンテキストでは、逸脱は抑制されたコード解析違反です。逸脱がレポートで文書化され、安全性に影響にしない場合、プロジェクトは逸脱がありつつも準拠していると見なすことができます。
Guideline Compliance Summary
Guideline Compliance Summary (GCS) は、全般的なプロジェクトの準拠についての主要な記録です。GCS には、各ガイドライン、そのコンプライアンス レベル、逸脱あるいは再分類などのエントリがあります。Parasoft MISRA Compliance 拡張に同梱の MISRA Compliance Report はこの要件を満たします。
詳細については MISRA Compliance 2020: Achieving Compliance with MISRA Coding Standards を参照してください。
前提条件
このコンプライアンス アーティファクトは、フロー解析ライセンスが有効化された C/C++test (Standard または Professional) で実行されたコード解析をサポートします。
基本的な操作手順
- MISRA C:2012 テスト コンフィギュレーションを使って C++test でコードを解析し、違反を DTP にレポートします。
- DTP Extension Designer に Automotive Compliance Pack をインストールします。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 オプション (ウィジェット設定など) を追加します。
- テスト コンフィギュレーション: これらのファイルは、どのコード解析ルールを実行するかを指定します。ローカル テスト コンフィギュレーションを実行するか、または DTP にアップロードされたテスト コンフィギュレーションを実行するように C++test を設定できます。
- ダッシュボード テンプレート: このファイルは、定義済みの MISRA 関連ウィジェットを含む MISRA C:2012 ダッシュボードの追加を可能にします。
- モデルとプロファイル: これらのファイルは、MISRA 準拠を証明するために必要なコンプライアンス レポートを推進します。詳細については「Profile Configuration」を参照してください。
- DTP ワークフロー: これは、MISRA ガイドラインのコンテキストで違反を表示するウィジェット、レポート、処理ロジックを含む DTP Enterprise Pack アーティファクトです。
DTP ワークフローのインストールとデプロイ
- MISRA Compliance アーティファクトは、Automotive Compliance Pack の一部としてインストールされます。詳細については「インストール」を参照してください。
- DTP の設定メニュー (歯車のアイコン) から [Extension Designer] を選択します。
- [サービス] タブをクリックし、サービス カテゴリを選択します。既存のサービスにアーティファクトをデプロイするか、新しいサービスを追加できます。DTP ワークフロー カテゴリ内のサービスに Compliance Pack のアーティファクトをデプロイすることをお勧めします。
サービスにデプロイされるアーティファクトの数は、全体のパフォーマンスに影響します(詳細はについては「Extension Designer のベスト プラクティス」を参照してください)。既存のサービスにアーティファクトを配置する場合は、そのサービスを選択してステップ 4 に進みます。アーティファクトに新しいサービスを追加する場合は、[サービスの追加] をクリックしてサービスの名前を指定し、[確認] をクリックします。 - サービス内のタブ インターフェイスを使用して、アーティファクトを整理することができます。サービス内の複数のタブにまたがってアーティファクトを配置してもシステムのパフォーマンスには影響しません。タブをクリックし (または [+] ボタンをクリックして新しいタブを追加し)、右上の縦の三点メニューから [読み込み] を選択します。
- [Local] > [Flows] > [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 ウィジェットで利用可能です。ドロップダウン メニューから個々のカテゴリまたは [すべて] を選択します。 |
コンプライアンス プロファイル | コンプライアンス プロファイルを指定します (「Profile Configuration」を参照)。コンプライアンス プロファイル データは、コンプライアンス レポートを生成するために使用されます。 |
MISRA Compliance ウィジェットの表示
各ウィジェットは、テスト データと解析データの異なるビューを提供することで、MISRA 準拠の達成を助けます。MISRA Compliance DTP ワークフローには以下のウィジェットが同梱されています。
MISRA Compliance - Status Widget
このウィジェットは、コンプライアンスの全般的なステータスを表示します。現在のコンプライアンス ステータスを表示するために、このウィジェットの複数のインスタンスを追加し、異なるプロファイルを使用するように設定できます。たとえば、適用されないガイドラインのプロファイルなどです。ウィジェットをクリックすると、MISRA Compliance Report が開きます。
このウィジェットは 5 種類のステータスを表示できます:
- Compliant (準拠): コードはすべてのガイドラインを満たしており、ガイドライン カテゴリからの逸脱や変更はありません。
- Not Compliant (準拠していない): コードはすべての「必須」および「必要」のガイドラインを満たしていません。
- Missing Rule(s) in Analysis (見つからないルールが解析に存在): プロファイル で文書化された Parasoft コード解析ルールが、指定のビルドに含まれていませんでした。すべてのルールが C++test で有効化されていることを確認し、解析を再実行してください。
- Compliant With Deviations (逸脱があるが準拠): コードはすべてのガイドラインを満たしていますが、逸脱が適用されています。逸脱は、許容可能であるとユーザーが判断した違反です (逸脱の詳細については「Suppressions and False Positives」を参照してください)。
- Compliant With Violations (違反があるが準拠): コードはすべての「必須」および「必要」のガイドラインを満たしていますが、「推奨」ガイドラインの違反があります。
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 コード解析ルールをレビューできるように、リンクから特定のガイドラインに直接移動します。
- 違反エクスプローラー で違反を確認するには、[違反の数] 列のリンクをクリックします。
- 違反エクスプローラー で違反を確認するには、[逸脱の数] 列のリンクをクリックします。
- MISRA Compliance サブ レポートの 1 つを開きます。
- プリンター印刷に適した PDF 形式のレポートをエクスポートするには、[PDF のダウンロード] をクリックします。「ナビゲーション バーへの画像の追加」で説明するように DTP にカスタム グラフィックを追加した場合、PDF にもカスタム グラフィックが表示されます。
MISRA Compliance Report には、以下のサブ レポートが含まれます:
Guideline Enforcement Plan
Guidelines Enforcement Plan (GEP) は、MISRA ガイドラインを推進するために使用する静的解析ルールを表示します。各ガイドラインをどのように推進するかをユーザーに説明することを目的とします。
このレポートは、コンプライアンス プロファイルで指定されたデータを使用します (「Profile Configuration」を参照)。プロファイルでは、[Compiler] フィールドに注釈を追加できます。たとえば、「エラーなし」や、計画を文書化するために適用される特定のコンパイラ設定などです。これらの注釈は [Compiler ] 列に表示されます。
[Analysis Tool] 列には静的解析ルールが表示されます。[Manual Review] 列には、コンパイラと解析ツールによって適用される自動チェックに加えて、実行される手動検証が表示されます。
Guideline Re-categorization Plan
MISRA ガイドライン カテゴリを変更した場合 (「Profile Configuration」を参照)、そのカテゴリは処理されてこのレポートに表示されます。ガイドライン再分類計画の詳細については MISRA 標準を参照してください。
デフォルトでは、このレポートには、コードのビルドに使用されるコンパイラは含まれていません。コンパイラをプロファイルに追加して、このレポートに表示されるようにできます。プロファイルの変更方法については「Profile Configuration」を参照してください。
Deviations Report
MISRA Compliance Report で Deviations Report リンクをクリックすると、Deviation Report が開きます。
Deviations Report は、すべてのガイドラインの ID とヘッダーを表示しますが、抑制されたガイドラインには追加情報を表示します。以下の操作を行うことができます。
- MISRA カテゴリ (All、Mandatory、Required、Advisory、Disapplied) でレポートをフィルタリングします
- [Only Deviations] オプションを有効化して、逸脱がない違反を非表示にします。
- [Hide Modification History] オプションを有効化して、逸脱の変更履歴を非表示にします。
ビルド監査レポート
メインの MISRA Compliance Report はビルド監査レポートにリンクしており、選択したビルドで DTP に送信されたコード解析、テスト結果、およびカバレッジ情報にアクセスできます。また、データのアーカイブをダウンロードすることもできます。これは、定期的な監査で MISRA への準拠を証明するために使用できるアーティファクトです。ビルド監査レポートは、DTP に付属する標準レポートであり、MISRA コンプライアンスに固有のものではありません。
アーカイブをダウンロードするには、ビルドがロックされていなければなりません。このレポートの詳細については「ビルド監査レポート」を参照してください。
抑制と誤検知
抑制とは、許容可能と判断されたコード解析違反を指します。いっぽう、誤検知とは、解析ルールで説明されているコーディング パターンに一致するが、アプリケーション実行時に実際の欠陥にはつながらない違反です。MISRA は、違反を抑制し、根拠を文書化することを許可しています。これらの違反はDeviations Reportに追加されます。MISRA 標準は、コード解析ツールが違反を誤ってレポートしたとき、違反を誤検知としてマークすることも許可しています。
抑制
標準からの逸脱が文書化され、ソフトウェアの安全性に影響しない限り、コードは違反があっても MISRA 準拠であることができます。逸脱とは、コード中で直接抑制されたコード解析ルール、または DTP の違反エクスプローラーで抑制されたコード解析ルールです。コード中で違反を抑制する方法については、C++test のドキュメントを参照してください。DTP で違反を抑制する方法については、違反エクスプローラーのドキュメントの「違反の抑制」を参照してください。
誤検知
ツールが誤って違反をレポートした場合、誤検知としてマークします。すると、コンプライアンス ウィジェットおよびレポートからそれらの違反が除外されます。
- 違反エクスプローラー ビューを開き、検索結果テーブルで違反を選択します。違反エクスプローラー ビューにアクセスするには、メインの MISRA Compliance Report で [違反の数] 列のリンクをクリックします (「Viewing MISRA Compliance Reports」を参照)。
- アクション パネルの [優先度] タブをクリックし、[以降の解析実行では、選択された違反を抑制します] オプションをオンにします。
- [理由] フィールドに「
false positive
」と入力し、後ろに違反に関する任意の注記を入力します。 - [適用] をクリックして変更を保存します。
DTP が次のビルドを受信したとき、抑制情報が処理されます。[抑制の詳細] フィールドのメッセージが「false positive」で始まる場合、違反は Deviation レポートを含む MISRA Compliance レポートから除外されます。
C/C++test で抑制を適用し、抑制の理由として「false positive
」を指定することでも、違反を誤検知としてマークできます。抑制を MISRA Compliance レポートから除外するには、理由が false positive
で始まっている必要があります。違反の抑制方法の詳細については C++test のドキュメントを参照してください。
プロファイルの設定
MISRA Compliance DTP ワークフローには、MISRA C:2012 への準拠をモニタリングするように設定されたモデル プロファイル (「モデル プロファイルの使用」を参照) が同梱されています。モデル プロファイルには、コンプライアンス レポートを生成するために必要な情報が含まれます (「Viewing MISRA Compliance Reports」を参照)。たとえば、コンパイラ、ガイドラインの分類、再分類を指定するためのフィールドなどです。ユーザー独自の目標を達成するためにガイドラインを再分類したい場合、または独自のレポート用に追加メタデータを指定したい場合、このプロファイルを変更できます。変更は Guideline Re-categorization Plan で反映されます。
デフォルト プロファイルの複製を作成して複製を変更することを推奨します。
- [プロファイルのエクスポート] をクリックして複製をダウンロードします。
- 複製の名前を変更し、[プロファイルのインポート] をクリックします。
- 複製を選択してアップロードします。
- ガイドラインをクリックし、変更を指定します。MISRA カテゴリを変更している場合、以下の文字列が利用可能です:
- Mandatory (必須)
- Required (必須)
- Advisory (推奨)
Disapplied (不適用)
Mandatory および/または Required のガイドラインの厳格性を低下させることは、MISRA がまとめた要件によって Parasoft Guideline Re-categorization Plan Report でのガイドラインの不正使用になります (Guideline Re-categorization Plan を参照)。Required および Advisory のガイドラインの厳格性を強化することは許されます。
- [保存] をクリックします。