メインコンテンツ

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

以前の標準から新しい標準への正当化のインポート

メモ

このワークフローは、Polyspace® Bug Finder™ のみに適用されます。

以前に使用していた標準からその標準の新しいバージョンに移行すると、Polyspace によって自動的に、以前の標準のレビュー情報がインポートされます。以前の標準から新しい標準への正当化のインポートは、次の標準でサポートされています。

  • MISRA C™:2004 から MISRA C:2012 へのコメントと注釈のインポート。

  • MISRA C:2004 および MISRA C:2012 から MISRA C:2023 へのコメントと注釈のインポート。

  • MISRA™ C++:2008 および AUTOSAR C++14 から MISRA C++:2023 へのコメントと注釈のインポート。Polyspace は MISRA C++2008 ルールと AUTOAR C++14 ルールの注釈を MISRA C++:2023 の対応するルールに自動的にインポートします。

Polyspace は、以前の標準から次のレビュー情報を自動的にインポートします。

  • ユーザー インターフェイスから追加された [状態][重大度][コメント] の値。

  • コード注釈を使用して追加された正当化。

コメントのインポートの一般的なルールについては、以前の Polyspace 解析からレビュー情報をインポートを参照してください。

プロジェクトに次のソース コードがあり、MISRA C:2012 解析を実行するとします。

#include <stdint.h>
#include <complex.h>
void foo() {
	uint16_t u16x = 0, u16y = 0;
	uint32_t u32x = 0, u32y = 0;
	u32x * (u16x + u16y);         
	u32x = (u16x + u16y) + u32x; 
	u32x += (u32y + u16y);

}

void bar() {
	_Complex float cx;
	_Complex double dx;
	float f;
	double d;

	cx + f;         
	cx + d;         
}
Polyspace は MISRA C:2012 ルールおよび命令に対する 16 件の違反を検出します。命令 4.6 の違反を正当化するとします。

Results list for MISRA C:2012 showing justifications for violations of Directive 4.6

同じプロジェクトで MISRA C:2023 コーディング ルールの違反をチェックするように移行すると、Polyspace によって MISRA C:2012 の結果に提供された正当化が自動的にインポートされます。

Results list for MISRA C:2023 showing imported justifications for violations of Directive 4.6

以前の MISRA C 標準から新しい MISRA C 標準に移行する際には、Polyspace によって正当化と注釈がインポートされます。現行の解析で新旧両方の MISRA C 標準の違反をチェックした場合は、以前の MISRA C 違反に正当化と注釈がインポートされます。

同じ新しい MISRA C 結果への複数の MISRA C:2004 注釈のマッピング

コード ブロック構文または複数行の注釈構文を使用して MISRA C:2004 ルールおよび命令の違反を正当化し、複数の違反を同じ MISRA C:2012 ルールまたは MISRA C:2023 ルールにマッピングする場合、Polyspace ではそれぞれの正当化をインポートしません。代わりに、Polyspace は [ステータス][重大度]、および [コメント] の値を 1 セットだけインポートして、それらの値を特定の MISRA C:2012 ルール違反または MISRA C:2023 ルール違反のすべてのインスタンスに適用します。

たとえば、コードを解析して MISRA C:2004 Rule 16.3 および 16.5 への違反を検出したとします。各ルールに対して異なるステータスと説明コメントを入力する注釈構文を使用して、それらの結果を正当化できます。


//polyspace-begin misra2004:16.3 [Status 1] "Explanatory comment 1"
//polyspace-begin misra2004:16.5 [Status 2] "Explanatory comment 2"

/*code block start;*/
/* This block of code contains violations of
MISRA C:2004 rules 16.3 and 16.5 */
/*code block end;*/

//polyspace-end misra2004:16.3 
//polyspace-end misra2004:16.5 
 

これらの違反は MISRA C:2012 Rule 8.2 にマッピングされます。注釈付きのコードを MISRA C:2012 標準に照らしてチェックする場合、Polyspace では (MISRA C:2004 Rule 16.3 に関する) 注釈の最初の行だけをインポートして、すべての MISRA C:2012 Rule 8.2 の結果に適用します。(MISRA C:2004 Rule 16.5 に関する) 注釈の 2 行目は無視されます。[結果のリスト] ペインにおいて、MISRA C:2012 Rule 8.2 の違反はすべて [ステータス] 列が Status 1[コメント] 列が "Explanatory comment 1" に設定されます。

メモ

[出力の概要] ペインでは、インポートされた注釈が元の注釈と競合する結果すべてに警告メッセージが表示されます。MISRA C:2004 注釈をインポートした後、正当化されたステータスが調査予定または修正予定の結果に対して割り当てられていないことをチェックします。

参考

|

トピック