Запустите обнаружение клонов программно в цикле на многоуровневых моделях

В этом примере показано, как программно обнаружить и заменить клоны на моделях кратного в цикле путем работы с моделями индивидуально. Для получения дополнительной информации о API Обнаружения клонов, смотрите, Обнаруживают и Клоны Замены Программно.

В этом примере показано, как обнаружить и заменить клоны программно для пяти моделей Simulink® с помощью файла библиотеки TestLib_1 как ссылка подсистемы, чтобы заменить клоны.

1. В командной строке MATLAB®, введите:

     addpath(fullfile(docroot,'toolbox','simulink','examples'))
     ex_clone_detection_A
     ex_clone_detection_B
     ex_clone_detection_C
     ex_clone_detection_E
     ex_clone_detection_F
     TestLib_1

Сохраните модели и файл библиотеки в текущей рабочей директории.

2. Создайте массив, чтобы добавить модели в:

     modelList = {};

3. Добавьте модели в modelList массив:

      modelList{end+1,1} = 'ex_clone_detection_A';
      modelList{end+1,1} = 'ex_clone_detection_B';
      modelList{end+1,1} = 'ex_clone_detection_C';
      modelList{end+1,1} = 'ex_clone_detection_E';
      modelList{end+1,1} = 'ex_clone_detection_F';

4. Задайте контейнеры, чтобы сохранить Results, ReplacementResults и equivalencyCheck объект для моделей.

     cloneResultsStorage = containers.Map();
     cloneReplacementStorage = containers.Map();
     equivalencyCheckStorage = containers.Map();

5. Добавьте файл библиотеки в cloneDetectionSettings объект создается из Settings класс.

     libName = 'TestLib_1';
     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 объекты для отдельных моделей. Для получения дополнительной информации смотрите, Обнаруживают и Клоны Замены Программно.

Похожие темы