メインコンテンツ

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

初期相互依存関係の分析に基づくコマンド ラインでのPolyspace 解析のモジュール化

1 つのアプリケーションのコード ベース全体の解析には、アプリケーションのサイズによっては時間がかかることがあります。

大きなアプリケーションの場合、Polyspace® では次のように対応できます。

  • アプリケーションを、検証に要する時間がそれぞれ短い複数のモジュールに分割する。

  • 検証にかかる時間と検証の精度のトレードオフを考慮して、モジュールの数を指定する。

多数の小さなモジュールを使用すると、分析を高速に実行できます。分割中は、クロスモジュール参照が自動的に最小限に抑えられます。ただし、モジュールの数が増えると、検証中に必要なクロスモジュール参照が増加し、その結果として精度が低下することになります。

基本的なオプション

次のバッチ コマンドを使用してアプリケーションを複数のモジュールに分割できます。

polyspace-modularize [target_folder] {option1,option2,...}
使用可能な基本的なオプションの説明を以下の表に示します。

オプション説明
target_folderソース ファイルを処理する初回実行の結果を含むフォルダー。既定では、polyspace-modularize の実行元のフォルダーです。
-o=output_folder分割されたアプリケーションの出力フォルダー。既定では、polyspace-modularize の実行元のフォルダーです。
-gui=max_nPolyspace 検証環境には、モジュール化選択肢ウィンドウが表示され、選択可能なモジュールの最大数の事前定義された制限値が示されます。新しい制限値 max_n を指定する場合に、このオプションを使用します。
-matlab=max_nモジュール化選択肢ウィンドウのデータ キャッシュが存在しない場合は、キャッシュ project_name_max_n.m を作成します。

キャッシュにより、モジュール化選択肢ウィンドウの表示にかかる時間を短縮できます。

project_name は、-prog オプションにより使用される値です。

max_n は、選択できるモジュール数の上限値です。

キャッシュが既に存在している場合は、アクションは実行されません。

-modules=nアプリケーションを n 個のモジュールに分割します。モジュール化選択肢ウィンドウで n に関連付けられている灰色の領域をクリックする動作と同等です。
-max-complexity=max_c指定された最大複雑度 max_c を基準にしてアプリケーションを複数のモジュールに分割します。

関数の複雑度は、関数のサイズに関連する数値です。モジュールの複雑度は、モジュール内の関数の複雑度の合計です。アプリケーションの分割時に、モジュールの複雑度が max_c を超えてはならないという制約に基づいて、関数および変数へのクロスモジュール参照の使用が最小限に抑えられます。

max_c を十分に大きな値に設定すると、元の分割されていないアプリケーションと同等の 1 つのモジュールのみが生成されます。

分割中のモジュール複雑度の制限

すべての関数の複雑度を強制的に 1 にするには、次のコマンドを実行します。

polyspace-modularize -uniform-complexities

結果フォルダーの名前

既定では、モジュール化結果フォルダーには projectName_kk_module という名前が付けられます。

  • kk は、-max-complexity に指定する最大複雑度引数またはモジュール数のいずれかになります。

i 番目のモジュールの、結果フォルダーの命名を制御するには、-stem オプションを使用します。

polyspace-modularize -stem=stem_format

stem_format は文字列です。文字列内の # 文字と @ 文字は、次のように処理されます。

  • # — 分割のモジュール数に置き換えられます。

  • @-max-complexity の引数に置き換えられます。

たとえば、MyName という名前を使用し、この名前がプロジェクト名をオーバーライドするものの、モジュール番号は含まない場合には、以下を実行します。

polyspace-modularize -stem=MyName

モジュール依存関係グラフでの循環の禁止

既定では、モジュール依存関係グラフには循環を含めることができます。ただし場合によっては、非循環グラフの方が適切な結果を得られることがあります。次のコマンドを使用します。

polyspace-modularize -forbid-cycles