このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
プログラムにより複数のモデルのクローン検出と置換をループで実行
この例では、プログラムを使用して 1 つのループで複数のモデルを個別に操作し、モデルのクローンの検出と置換を行う方法を説明します。クローン検出 API の詳細については、プログラムによるサブシステム クローンの検出と置換を参照してください。
この例では、クローンを置換するためのサブシステム参照としてライブラリ ファイル clones_library を使用し、5 つの Simulink® モデルのクローンをプログラムで検出して置換する方法を説明します。
1.モデルを開きます。
ex_detect_clones_A
ex_detect_clones_B
ex_detect_clones_C
ex_detect_clones_D
ex_detect_clones_E
clones_libraryモデルとライブラリ ファイルを現在の作業ディレクトリに保存します。
2.モデルを追加する配列を作成します。
modelList = {};
3.配列 modelList にモデルを追加します。
modelList{end+1,1} = 'ex_detect_clones_A';
modelList{end+1,1} = 'ex_detect_clones_B';
modelList{end+1,1} = 'ex_detect_clones_C';
modelList{end+1,1} = 'ex_detect_clones_D';
modelList{end+1,1} = 'ex_detect_clones_E';
modelList{end+1,1} = 'ex_detect_clones_F';
4.モデルの Results、ReplacementResults、equivalencyCheck の各オブジェクトを格納するコンテナーを定義します。
cloneResultsStorage = containers.Map();
cloneReplacementStorage = containers.Map();
equivalencyCheckStorage = containers.Map();
5.Settings クラスから作成された cloneDetectionSettings オブジェクトにライブラリ ファイルを追加します。
libName = 'clones_library';
cloneDetectionSettings = Simulink.CloneDetection.Settings();
cloneDetectionSettings = cloneDetectionSettings.addLibraries(libName);
6.ループを使用し、関数 Simulink.CloneDetection.findClones、関数 Simulink.CloneDetection.replaceClones、および関数 Simulink.CloneDetection.checkEquivalency を使用して、モデルを循環実行します。
for modelIndex = 1:length(modelList) modelName = modelList{modelIndex}; try cloneResults = Simulink.CloneDetection.findClones(modelName, cloneDetectionSettings); cloneResultsStorage(modelName) = cloneResults; cloneReplacementResults = Simulink.CloneDetection.replaceClones(cloneResults); cloneReplacementStorage(modelName) = cloneReplacementResults; equivalencyCheckResults = Simulink.CloneDetection.checkEquivalency(cloneReplacementResults); equivalencyCheckStorage(modelName) = equivalencyCheckResults; catch exception end end
個々のモデルについて、cloneResultsStorage、cloneReplacementStorage、および equivalencyCheckStorage の各オブジェクトの結果にアクセスできます。詳細については、プログラムによるサブシステム クローンの検出と置換を参照してください。