コンパイル前のキーワードの削除または置き換え
Polyspace® コンパイラは ANSI® C99 規格 (ISO/IEC 9899:1999) に厳密に準拠しています。この規格からの逸脱がコンパイラで許容されている場合、Polyspace の既定のオプションを使用したコンパイルではコンパイラをエミュレートできません。たとえば、Polyspace の既定では認識されない特定の非 ANSI キーワードをコンパイラに許容させることができます。
コンパイラを厳密にエミュレートするには、ターゲットおよびコンパイラのオプションを指定します。それでも認識されないキーワードによってコンパイル エラーが発生する場合は、検証の目的のみでそれらのキーワードを削除したり、置き換えたりすることができます。オプション [プリプロセッサ定義] (-D) を使用すると、単純な置き換えができます。関数の属性といった、スペースで区切られたキーワードのグループを削除するなどの複雑な置き換えには、オプション [前処理済みファイルに適用するコマンド/スクリプト] (-post-preprocessing-command) を使用します。
認識されないキーワードの削除
解析の目的で、サポートされていないキーワードをコードから削除できます。たとえば、far および 0x キーワード (0x は絶対アドレスより優先されます) を削除するには、次の手順に従います。
次のテンプレートを
C:\Polyspace\myTpl.plという名前を付けて保存します。Perl regex の概要を参照してください。
[構成] ペインで、 [環境設定] を選択します。
[前処理済みファイルに適用するコマンド/スクリプト] の右側にある
をクリックします。[ファイルを開く] ダイアログ ボックスを使用して、
C:\Polyspaceに移動します。[ファイル名] フィールドで、
myTpl.plと入力します。[開く] をクリックします。[前処理済みファイルに適用するコマンド/スクリプト] フィールドに
C:\Polyspace\myTpl.plが表示されます。
認識されない関数の属性の削除
解析の目的で、サポートされていない関数の属性をコードから削除できます。
汎用コンパイラを指定して以下のコードに対して検証を実行する場合、noreturn 属性によるコンパイル エラーを確認できます。コードは GNU® コンパイラを使用してコンパイルされます。
void fatal () __attribute__ ((noreturn));
void fatal (/* ... */)
{
/* ... */ /* Print error message. */ /* ... */
exit (1);
}属性が認識されず、その属性がコード解析に影響しない場合、検証の目的でその属性をコードから削除できます。たとえば、次の Perl スクリプトを使用して、noreturn 属性を削除できます。
while ($line = <STDIN>)
{
# __attribute__ ((noreturn))
# Remove far keyword
$line =~ s/__attribute__\ \(\(noreturn\)\)//g;
# Print the current processed line to STDOUT
print $line;
}オプション [前処理済みファイルに適用するコマンド/スクリプト] (-post-preprocessing-command) を使用してスクリプトを指定します。
