Клоны моделируют шаблоны, которые имеют идентичные типы блока и связи. Можно осуществить рефакторинг модель путем создания библиотечных блоков из этих шаблонов клона и заменяющий клоны на ссылки на библиотечные блоки, которые позволяют вам снова использовать компоненты. Для получения дополнительной информации о клонах, смотрите, Включают Повторное использование Компонента при помощи Обнаружения клонов.
Можно искать клоны в подсистеме или где угодно в модели.
Клоны подсистемы: Идентифицирует клоны только в подсистемы.
Клоны где угодно: Идентифицирует клоны где угодно в модели.
В этом примере показано, как использовать приложение Clone Detector и API, чтобы идентифицировать клоны где угодно в вашей модели, и затем заменить их на ссылки на библиотечные блоки.
Откройте модель mClonesAnywhereSimilar
. В MATLAB® командная строка, введите:
addpath(fullfile(docroot,'toolbox','simulink','examples')) mClonesAnywhereSimilar
Сохраните модель в текущей рабочей директории.
На вкладке Apps нажмите Clone Detector. В качестве альтернативы в командной строке MATLAB, введите:
clonedetection("mClonesAnywhereSimilar")
Чтобы настроить параметры для обнаружения клонов, нажмите Settings. Под Clone anywhere settings нажмите Detect Clones Across Model.
Minimum Region Size и Minimum Clone Group Size установлены в 2 по умолчанию. Параметр Minimum Region Size представляет минимальные блоки, необходимые на область клона, и параметр Minimum Clone Group Size представляет минимальные случаи клона, должен был задать его как группу клонов.
Нажмите Find Clones, чтобы идентифицировать клоны.
Приложение подсвечивает клоны. Точные клоны подсвечены в красных и подобных клонах, подсвечены в синем.
Клоны, подсвеченные в этом примере, включают клоны, идентифицированные в подсистем и блока Simulink, соединенного с подсистемой.
Нажмите Replace Clones.
Приложение осуществляет рефакторинг модель и заменяет клоны на ссылки на newLibraryFile
файл библиотеки в вашей рабочей директории. Приложение заменяет блоки клона Simulink за пределами подсистем с соединенными блоками Subsystem.
Примечание
Только Точный рефакторинг клона поддерживается.
Используйте 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
Чтобы искать клоны где угодно в модели, установите 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 по умолчанию. Можно изменить их значения.
Чтобы найти клоны, выполните функциональный 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 обнаружения клонов смотрите, Обнаруживают и Клоны Подсистемы Замены Программно.