メインコンテンツ

比較ツール

Simulink モデル間の変更の差分生成およびマージを行う

説明

Simulink®比較ツールは、2 つの Simulink モデル間の差異を可視化してマージするための対話型ツールです。

共同作業の環境では、通常は次の場合にモデルを比較します。

  • 変更についてのピア レビューを求めるとき

  • コードのバージョンを共有する前やソース管理に送信する前

  • 問題がいつ発生したかを正確に特定するとき

  • 自身のローカルの変更を詳しく調べるとき

比較ツールを使用して次のことが可能です。

  • 任意のバージョンの Simulink の SLX と MDL のモデル ファイルについて変更を比較して確認する。必要に応じて、比較ツールでは比較レポートを開く前に SLX 形式を使用して現在のリリースでモデルが保存し直されます。

  • Simulink エディターで変更を可視化して強調表示する。

  • ピア レビュー用に送信する比較結果をエクスポートする。

  • マージ モードを使用して異なるモデルで変更を移植または復元する。

Simulink Model Comparison Tool

比較ツール を開く

次のいずれかの方法を使用して、比較するディスク上のファイルおよびフォルダーを選択できます。

  • Simulink エディター — Simulink エディターで開いているモデルをディスク上の別のモデルと比較するには、[モデル化] タブの [実行と管理] セクションで、[比較対象] をクリックします。

  • [ファイル] または [プロジェクト] パネル — ディスク上の 2 つのファイルを比較するには、両方のファイルを選択します。次に、右クリックして [選択したファイル/フォルダーを比較] を選択します。比較ツールで両方のファイルが開かれ、最初に選択したファイルが左側に表示されます。

    あるいは、ファイルを右クリックし、[比較対象] を選択します。次に、比較対象のファイルを選択します。

  • コマンド ウィンドウ — visdiff 関数を使用します。

ソース管理対象のファイルの場合、次のいずれかの方法を使用して、比較ツールを開いてリビジョン間の差異を把握できます。

  • [ファイル] または [プロジェクト] パネル — ファイルをその先祖と比較するには、ファイルを右クリックし、[ソース管理][変更を表示] を選択します。ファイルを別のリビジョンと比較するには、モデル ファイルを右クリックし、[リビジョンの表示] を選択します。[ログ] ダイアログ ボックスでリビジョンを選択し、[ローカルと比較] をクリックします。

  • [ソース管理] パネル — ファイルをその先祖と比較するには、[変更済みファイル] セクションでファイルを右クリックし、[変更を表示] を選択します。ファイルを別のリビジョンと比較するには、ファイルを右クリックし、[リビジョンの表示] を選択します。[ログ] ダイアログ ボックスでリビジョンを選択し、[ローカルと比較] をクリックします。

  • ブランチ マネージャー — 2 つの Git™ リビジョン間のファイルの変更を検査するには、ブランチ マネージャーを開きます。右クリックし、[ソース管理][ブランチ マネージャー] を選択します。[差分のコミット] ペインでファイルを右クリックし、[差分の表示] を選択します。

    Branch Manager with two selected commits in the commit graph and Show Differences context menu option in the right pane

すべて展開する

比較レポートを簡略化し、変更のサブセットに焦点を当てるには、[クイック フィルター] ペインを使用します。ツールストリップの [フィルター] セクションで [フィルター] をクリックします。

既定では、項目の配置変更、ラベルの位置、ブロックやラインのフォントと色の設定、システムの出力や表示の設定など、機能以外の変更は比較ツールで非表示になります。

Illustration shows the default filters applied on the comparison report with the Quick Filters pane open on the left.

  1. 機能以外の変更も含めたすべての変更を表示するには、[表示の変更] の横にリストされているフィルターをクリックしてクリアします。

    [リセット] ボタンを使用することで、いつでもフィルターを既定の設定にリセットできます。

  2. 特定のモデル要素またはパラメーターのみを表示するようにレポートを簡略化できます。

    • MATLAB® Function ブロックとモデル コンフィギュレーション セットへの変更のみを表示するには、[モデル要素] セクションで [すべて] チェックボックスをクリアします。次に、[MATLAB Function] チェックボックスと [モデル コンフィギュレーション セット] チェックボックスをオンにします。

      Illustration shows the MATLAB Function and Model Configuration Sets checkboxes selected in the panel on the left and the comparison report reflecting the changes on the right.

    • 特定のパラメーター (たとえば、[終了時間] パラメーター) に関連する変更のみを表示するには、[パラメーター名] セクションで [すべて] チェックボックスをクリアします。次に、[終了時間] チェックボックスをオンにします。

      Illustration shows the Stop Time checkbox selected in the pane on the left and the comparison report reflecting the changes on the right.

    • 特定のモデル要素に関連する変更を非表示にするには、比較レポートで非表示にする項目を右クリックし、[タイプが type のモデル要素をすべて非表示] を選択します。

      Hide option when right-clicking an item in the report

    • 特定のパラメーター名に関連する変更を非表示にするには、詳細な比較テーブルで非表示にするパラメーター名を右クリックし、[名前が name のパラメーターをすべて非表示] を選択します。

      Hide option when right-clicking an item in the detailed comparison table

    ヒント

    必要なチェックボックスを素早く探すには、[検索] フィールドを使用します。

    検索フィールドの横にある矢印ボタンを使用して、チェックボックスを名前順または可視性別に並べ替えることもできます。

  3. 現在の選択内容からフィルターを作成するには、[使用可能なフィルター] セクションの横にあるボタンをクリックします。

    次に、表示されたフィールドにフィルター名を指定します。

    • フィルターの名前を変更するには、名前を変更するフィルターを右クリックし、[名前の変更] を選択します。

    • フィルターを削除するには、削除するフィルターをポイントし、表示された赤い十字をクリックします。

    • フィルターを適用するには、フィルターをクリックします。

      [リセット] ボタンを使用することで、いつでもすべてのフィルターを既定の設定にリセットできます。

  4. フィルターをエクスポートして他のユーザーに共有できます。[使用可能なフィルター] セクションで縦に並んだ省略記号をクリックし、[エクスポート] を選択します。次に、エクスポートするフィルターを選択し、[エクスポート] をクリックします。

    共有後、別のユーザーは縦に並んだ省略記号の下の [インポート] を選択してフィルターをインポートできます。

Simulink モデルを比較する場合、出力引数を指定してコマンド ラインで比較レポートを操作できます。

2 つのモデル ファイルを比較し、比較オブジェクトを返します。

comparison = visdiff(modelname1,modelname2);

モデル比較レポートですべてのフィルターを無効にすることができます。

filter(comparison,"unfiltered");

比較レポートをファイルにパブリッシュするには、比較オブジェクトで publish を使用します。パブリッシュされるレポートの既定の形式は HTML です。publish では、ファイルは現在のフォルダーに filename1_filename2.html として保存されます。

file = publish(comparison);
web(file)

myreport という名前の PDF 比較レポートを作成します。レポートを comparisonresults フォルダーに保存します。

file = publish(comparison,format="PDF",Name="myreport",OutputFolder="comparisonresults");
web(file)

サポートされているレポート形式は HTML、PDF、DOCX です。

visdiff を使用して継続的インテグレーション ワークフローでレポートを生成する方法の説明については、GitHub プル リクエストへのモデル比較レポートの添付を参照してください。

関連する例

パラメーター

すべて展開する

モデル比較レポート内の差分間を移動します。

比較対象の 2 つのモデルの左右を入れ替えて、比較解析を再度実行します。

既定では、比較ツールは、選択した最初のファイルを [左] ペインに配置し、2 番目のファイルを [右] ペインに配置します。ファイルの絶対パスを表示するには、各ファイル名の横にある [ファイルの詳細を表示] の下矢印を展開します。

ファイルがソース管理対象の場合、ツールはブランチ名やタグなどのソース管理情報を表示します。

Small arrow next to the compared revisions in the Right pane

モデルが最新でない場合は、変更されたモデルの変更を保存または破棄し、[リフレッシュ] をクリックして比較解析を再度実行します。

比較レポート内の項目を検索できる [検索] ダイアログ ボックスを開きます。

[リンク スクロール] を有効にすると、[左] のモデルと [右] のモデル間のスクロールが同期されます。

ヒント

レポートに、モデル間で場所を移動した項目が含まれており、比較レポートのまったく異なる部分に表示される場合は、これらの変更をより簡単に確認できるように、[リンク スクロール] をクリアします。

既定では、比較対象の 2 つのモデルが比較レポートの右側に表示され、レポートの左側に対応するモデルが上に、右側に対応するモデルが下に表示されます。このツールでは、Simulink エディター内のモデルまたは [モデル コンフィギュレーション パラメーター] ダイアログ ボックス内のモデルで現在選択されている比較レポート ノードが強調表示されます。

モデル内の強調表示を制御するには、[常に強調表示] をクリアし、代わりに [今すぐ強調表示] ボタンを使用します。

[今すぐ強調表示] をクリックすると、Simulink エディター内のモデルまたは [モデル コンフィギュレーション パラメーター] ダイアログ ボックス内のモデルで現在選択されている比較レポート ノードが強調表示されます。

クイック フィルターを使用すると、比較レポートを簡略化し、関心のある項目に焦点を絞ることができます。

既定では、レポートには機能の変更のみが表示されます。項目の配置変更、ラベルの位置、ブロックやラインのフォントと色の設定、システムの出力や表示の設定など、機能以外の変更はレポートで非表示になります。機能以外の変更も含め、すべての差分を調べるには、フィルター をクリアします。

比較結果を印刷可能なレポート (HTML、WORD、PDF) またはワークスペース変数として保存します。

[マージ モード] をクリックすると、[Target] という 3 つ目のペインが開きます。このペインには、[左] のモデルと [右] のモデルの変更を選択して [Target] ファイルに保存できるようにするオプションのボタンが用意されています。

プログラムでの使用

すべて展開する

visdiff("mymodel.slx","yourmodel.slx") は、MATLAB コマンド ウィンドウから比較ツールを開きます。

詳細

すべて展開する

アルゴリズム

比較ツールは、1 つの Simulink モデルと別のモデル間の項目を照合するために、ブロックと線の接続性、場所、パラメーターなどのさまざまなモデル プロパティに依存するヒューリスティックなアルゴリズムを使用します。ヒューリスティックなアルゴリズムにより、効率性と精度のバランスが取れた一致を提案することで、計算コストの高いモデル比較解析のコストを削減します。

メモ

解析では、以前は対応していたセクション同士が分岐した場合にそれらのセクション間の一致を検出できない可能性があります。

バージョン履歴

R2008b で導入

すべて展開する