このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
プログラムにより複数のモデルのクローン検出と置換をループで実行
この例では、プログラムを使用して 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
の各オブジェクトの結果にアクセスできます。詳細については、プログラムによるサブシステム クローンの検出と置換を参照してください。