このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
Polyspace 解析制約の XML ファイル形式
Polyspace® 解析の精度を高めるために、グローバル変数、関数入力、およびスタブ関数に制約を指定できます。Polyspace デスクトップ製品のユーザー インターフェイスまたはコマンド ラインで、制約を XML ファイルとして指定できます。一般的なワークフローについては、Polyspace 解析の外的制約の指定を参照してください。
このトピックでは、制約 XML ファイルのスキーマの詳細について説明します。通常、この情報は制約 XML をゼロから作成する場合にのみ必要です。検証を一度実行すると、ソフトウェアによって自動的に結果フォルダーにテンプレート制約ファイル drs-template.xml
が生成されます。制約 XML ファイルをゼロから作成する代わりに、このテンプレート XML ファイルを編集すると制約をより簡単に指定できます。例については、次を参照してください。
XML タグの意味についての別の説明は、Polyspace 解析の外的制約を参照してください。
また、このトピックの情報や
の基となる XML スキーマを確認することもできます。ここで、polyspaceroot
\polyspace\drs
は Polyspace インストール フォルダーです。たとえば、polyspaceroot
C:\Program Files\Polyspace\R2019a
です。
構文説明 — XML 要素
制約ファイルには、以下の XML 要素が含まれます。
<global>
要素 — グローバル スコープを宣言します。XML ファイルのルート要素です。<file>
要素 — ファイル スコープを宣言します。<global>
要素で囲まれていなければなりません。任意の変数または関数宣言を囲むことができます。競合を防ぐため、静的変数は file 要素で囲まなければなりません。<scalar>
要素— 整数または浮動小数点の変数を宣言します。認識される任意の要素で囲まれる場合がありますが、いずれの要素も囲むことはできません。初期、永続、グローバルのアサートを変数に設定します。<pointer>
要素 — ポインター変数を宣言します。他の任意の変数宣言 (この要素自体も含む) を囲み、参照されるオブジェクトを定義できます。ポインターに書き込む値 (NULL またはそれ以外)、割り当てられるオブジェクトの個数、参照されるオブジェクトの初期化方法を指定します。<array>
要素 — 配列変数を宣言します。他の任意の変数定義 (この要素自体も含む) を囲み、配列のメンバーを定義できます。<struct>
要素 — 構造体変数またはオブジェクト (クラスのインスタンス) を宣言します。他の任意の変数定義 (この要素自体も含む) を囲み、構造体のフィールドを定義できます。<function>
要素 — 関数またはクラス メソッドのスコープを宣言します。任意の変数定義を囲み、関数の引数と戻り値を定義できます。引数は、arg1, arg2, …argn
と指定します。戻り値は、return
を呼び出す必要があります。
各 XML 要素内の特定のフィールドについては、以下の注意事項があります。
(*) — フィールドは、GUI によってのみ使用されます。これらのフィールドについて、検証が範囲を受け入れることは必須ではありません。フィールド line には、ソース コード内で変数が宣言されている場所の行番号が含まれます。
complete_type
には、完全な変数型の文字列が含まれます。base_type
は、GUI で最小値と最大値を計算するために使用されます。フィールド comment は、任意のノードについて情報を追加するために使用します。(**) — フィールド name は、スコープ要素
<file>
および<function>
(関数ポインターを除く) の場合は必須です。他の要素の場合、name は、ルート シンボルまたはstruct
フィールドを宣言する場合に指定しなければなりません。(***) — 複数の属性を変数に適用する場合、各属性はスペースで区切らなければなりません。static 属性のみ必須です。これは、名前が同じ複数の静的変数についての競合を避けるためです。1 つの属性を複数回定義しても影響はありません。
(****) — この要素は GUI によってのみ使用されます。どの
init
モードが現在の要素について許可されるのかを (型に基づいて) 判断します。値は、マスクとして機能します。以下の値を加算して、どのモードが許可されるのかを指定します。1
:モード "NO
" が許可されます。2
:モード "INIT
" が許可されます。4
:モード "PERMANENT
" が許可されます。8
:モード "MAIN_GENERATOR
" が許可されます。
たとえば、値 "
10
" は、モード "INIT
" と "MAIN_GENERATOR
" が許可されることを意味します。この値がどのように計算されるのかについては、有効なモードと既定値を参照してください。(*****) — ポインターのサブ要素 (つまり、参照されるオブジェクト) は、
init_pointed
が SINGLE、MULTI、SINGLE_CERTAIN_WRITE または MULTI_CERTAIN_WRITE に等しい場合にのみ考慮されます。(******) — SINGLE_CERTAIN_WRITE と MULTI_CERTAIN_WRITE は、スタブ関数のパラメーターおよび戻り値に対して、それらがポインターである場合にのみ使用できます。パラメーターまたは戻り値が構造体であり、その構造体にポインター フィールドがある場合は、そのポインター フィールドにも使用できます。
<file>
要素
フィールド | 構文 |
---|---|
name | filepath_or_filename |
comment | string |
<scalar>
要素
フィールド | 構文 |
---|---|
name (**) | name |
line (*) | line |
base_type (*) | intx |
Attributes (***) | volatile |
complete_type (*) | type |
init_mode | MAIN_GENERATOR |
init_modes_allowed (*) | single value (****) |
init_range | range disabled |
global_ assert | YES |
assert_range | range disabled |
comment (*) | string |
<pointer>
要素
フィールド | 構文 |
---|---|
Name (**) | name |
line (*) | line |
Attributes (***) | volatile |
complete_type (*) | type |
init_mode | MAIN_GENERATOR |
init_modes_allowed (*) | single value (****) |
initialize_ pointer | 以下が可能です。NULL |
number_ allocated | single value disabled |
init_pointed (******) |
|
comment | string |
<array>
要素および <struct>
要素
フィールド | 構文 |
---|---|
Name (**) | name |
line (*) | line |
complete_type (*) | type |
attributes (***) | volatile |
comment | string |
<function>
要素
フィールド | 構文 |
---|---|
Name (**) | name |
line (*) | line |
main_generator_called | MAIN_GENERATOR |
attributes (***) | static |
comment | string |
有効なモードと既定値
スコープ | タイプ | 初期化モード | Gassert モード | ポインターの初期化 | 初期化の割り当て | 既定の設定 | |
---|---|---|---|---|---|---|---|
グローバル変数 | 基本データ型 | 非修飾/ static/ const スカラー | MAIN_ GENERATOR IGNORE INIT | YES NO | main ジェネレーターに依存 | ||
PERMANENT | 無効 | ||||||
Volatile スカラー | PERMANENT | 無効 | PERMANENT min..max | ||||
Extern スカラー | INIT | YES NO | INIT min..max | ||||
PERMANENT | 無効 | ||||||
struct | struct のフィールド | フィールドの型を参照 | |||||
配列 | 配列の要素 | 要素の型を参照 | |||||
グローバル変数 | ポインター | 非修飾/ static/ const スカラー | MAIN_ GENERATOR IGNORE INIT | 以下が可能です。NULL Not NULL NULL | NONE SINGLE MULTI | main ジェネレーターに依存 | |
Volatile ポインター | サポート なし | サポート なし | サポート なし | ||||
Extern ポインター | IGNORE INIT | 以下が可能です。NULL Not NULL NULL | NONE SINGLE MULTI | INIT は以下が可能です。 NULL max MULTI | |||
参照される volatile スカラー | サポート なし | サポート なし | |||||
参照される extern スカラー | INIT | サポート なし | INIT min..max | ||||
参照されるその他のスカラー | MAIN_ GENERATOR INIT | サポート なし | MAIN_ GENERATOR 依存 | ||||
参照されるポインター | MAIN_ GENERATOR INIT/ | サポート なし | 以下が可能です。NULL Not NULL NULL | NONE SINGLE MULTI | MAIN_ GENERATOR 依存 | ||
参照される関数 | サポート なし | サポート なし | |||||
関数パラメーター | Userdef (ユーザー定義) 関数 | スカラー パラメーター | MAIN_ GENERATOR INIT | サポート なし | INIT min..max | ||
ポインター パラメーター | MAIN_ GENERATOR INIT | サポート なし | 以下が可能です。NULL Not NULL NULL | NONE SINGLE MULTI | INIT は以下が可能です。 NULL max MULTI | ||
その他のパラメーター | パラメーター タイプを参照 | ||||||
スタブ関数 | スカラー パラメーター | 無効 | サポート なし | ||||
ポインター パラメーター | 無効 | 無効 | NONE SINGLE MULTI SINGLE_CERTAIN_WRITE MULTI_CERTAIN_WRITE | MULTI | |||
参照されるパラメーター | PERMANENT | サポート なし | PERMANENT min..max | ||||
参照される定数パラメーター | 無効 | サポート なし | |||||
関数の戻り値 | Userdef (ユーザー定義) 関数 | 戻り値 | 無効 | サポート なし | 無効 | 無効 | |
スタブ関数 | スカラーの戻り値 | PERMANENT | サポート なし | PERMANENT min..max | |||
ポインターの戻り値 | PERMANENT | サポート なし | 以下が可能です。NULL Not NULL NULL | NONE SINGLE MULTI SINGLE_CERTAIN_WRITE MULTI_CERTAIN_WRITE | PERMANENT 以下が可能です。 NULL 最大値 MULTI |