Найдите клоны где угодно в модели

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

Можно искать клоны в подсистеме или где угодно в модели.

  • Клоны подсистемы: Идентифицирует клоны только в подсистемы.

  • Клоны где угодно: Идентифицирует клоны где угодно в модели.

В этом примере показано, как использовать приложение Clone Detector и API, чтобы идентифицировать клоны где угодно в вашей модели, и затем заменить их на ссылки на библиотечные блоки.

Идентифицируйте клоны при помощи приложения

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

    addpath(fullfile(docroot,'toolbox','simulink','examples'))
    mClonesAnywhereSimilar

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

  3. На вкладке Apps нажмите Clone Detector. В качестве альтернативы в командной строке MATLAB, введите:

    clonedetection("mClonesAnywhereSimilar")
  4. Чтобы настроить параметры для обнаружения клонов, нажмите Settings. Под Clone anywhere settings нажмите Detect Clones Across Model.

    Minimum Region Size и Minimum Clone Group Size установлены в 2 по умолчанию. Параметр Minimum Region Size представляет минимальные блоки, необходимые на область клона, и параметр Minimum Clone Group Size представляет минимальные случаи клона, должен был задать его как группу клонов.

  5. Нажмите Find Clones, чтобы идентифицировать клоны.

  6. Приложение подсвечивает клоны. Точные клоны подсвечены в красных и подобных клонах, подсвечены в синем.

    Клоны, подсвеченные в этом примере, включают клоны, идентифицированные в подсистем и блока Simulink, соединенного с подсистемой.

  7. Нажмите Replace Clones.

    Приложение осуществляет рефакторинг модель и заменяет клоны на ссылки на newLibraryFile файл библиотеки в вашей рабочей директории. Приложение заменяет блоки клона Simulink за пределами подсистем с соединенными блоками Subsystem.

    Примечание

    Только Точный рефакторинг клона поддерживается.

Идентифицируйте клоны программно

  1. Используйте Simulink.CloneDetection.Settings класс, чтобы создать объект.

     cloneDetectionSettings = Simulink.CloneDetection.Settings()
     cloneDetectionSettings = 
                                IgnoreSignalName: 0
                             IgnoreBlockProperty: 0
                          ExcludeModelReferences: 0
                             ExcludeLibraryLinks: 0                      
                  FindClonesRecursivelyInFolders: 1
                        ParamDifferenceThreshold: 50
        ReplaceExactClonesWithSubsystemReference: 0
                                       Libraries: {}
                                         Folders: {}
                         DetectClonesAcrossModel: 0
                          ExcludeInactiveRegions: 0
  2. Чтобы искать клоны где угодно в модели, установите DetectClonesAcrossModel к 1.

    cloneDetectionSettings.DetectClonesAcrossModel = 1
    cloneDetectionSettings = 
    
                                IgnoreSignalName: 0
                             IgnoreBlockProperty: 0
                          ExcludeModelReferences: 0
                             ExcludeLibraryLinks: 0
                          SelectedSystemBoundary: []
                  FindClonesRecursivelyInFolders: 1
                        ParamDifferenceThreshold: 50
        ReplaceExactClonesWithSubsystemReference: 0
                                       Libraries: {}
                                         Folders: {}
                         DetectClonesAcrossModel: 1
                          ExcludeInactiveRegions: 0
                               MinimumRegionSize: 2
                           MinimumCloneGroupSize: 2

    MinimumRegionSize и MinimumCloneGroupSize установлены в 2 по умолчанию. Можно изменить их значения.

  3. Чтобы найти клоны, выполните функциональный Simulink. CloneDetection.findClones использование cloneDetectionSettings объект.

    cloneResults = Simulink.CloneDetection.findClones('mClonesAnywhereSimilar',cloneDetectionSettings)
    cloneResults = 
    
              Clones: [1×1 struct]
        ExceptionLog: ''
    cloneResults.Clones = 
      Results with properties:
    
            Summary: [1×1 struct]
        CloneGroups: [1×2 struct]

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

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте