Клоны моделируют шаблоны, которые имеют идентичные типы блока и связи. Приложение Clone Detector идентифицирует клоны через контуры модели, на которые ссылаются. Можно использовать приложение Clone Detector, чтобы снова использовать компоненты путем создания библиотечных блоков из клонов подсистемы и заменяющий клоны на ссылки на те библиотечные блоки. Можно также использовать инструмент, чтобы соединиться с клонами в существующей библиотеке.
Существует два типа клонов: точные клоны и подобные клоны. Точные клоны имеют идентичные типы блока, связи и значения параметров. Подобные клоны имеют идентичные типы блока и связи, но у них могут быть различные значения параметров блоков. Например, значение блока Gain может отличаться в подобных клонах, но должно быть тем же самым в точных клонах.
Точные клоны и подобные клоны могут иметь эти различия:
Два клона могут иметь различный отсортированный порядок.
Длина сигнальных линий и местоположения и размера блоков может отличаться, если связи блока являются тем же самым.
Блоки и сигналы могут иметь различные имена.
Чтобы обнаружить только точные клоны, для каждой регистрации инструмента Identify Modeling Clones, устанавливают Maximum Number of Unmatched Block Parameters на 0
. Увеличение этого значения параметров увеличивает число подобных клонов, которые может потенциально обнаружить инструмент.
После того, как вы идентифицируете клоны, можно заменить их на ссылки на библиотечные блоки. Подобные клоны соединяются с подсистемами библиотеки маскированными.
В этом примере показано, как использовать приложение Clone Detector, чтобы идентифицировать точные клоны и подобные клоны, и затем заменить их на ссылки на библиотечные блоки.
Откройте модель ex_clone_detection
. В командной строке MATLAB®, введите:
addpath(fullfile(docroot,'toolbox','simulink','examples')) ex_clone_detection
Сохраните модель в свою рабочую папку. Модель должна быть открыта, чтобы получить доступ к приложению.
На вкладке Apps нажмите Clone Detector. В качестве альтернативы на командной строке MATLAB войдите:
clonedetection("ex_clone_detection")
Приложение открывает вкладку Clone Detector. Этот пример берет вас через каждый раздел.
Информация об отображениях приложения о нескольких панелях. Можно выбрать три из панелей в соответствии с меню View. Панели:
Справка. Выберите, чтобы получить доступ к панели справки, которая содержит обзор рабочего процесса обнаружения клонов.
Results. Выберите, чтобы просмотреть панель Результатов и Обнаружение клонов.
Свойства. Выберите, чтобы просмотреть панель Detected Clone Properties.
Можно настроить параметры для обнаружения клонов при помощи Settings выпадающее меню.
Выберите Ignore differences in > Signal Names, чтобы идентифицировать и классифицировать клоны, когда имена сигнала будут отличаться.
Выберите Ignore differences in > Block Properties, чтобы идентифицировать и классифицировать клоны, когда свойства блока будут отличаться. Для получения дополнительной информации о свойствах блока, смотрите Specify Block Properties (Simulink).
Нажмите Exclude Components, чтобы получить доступ к Exclude model references, Exclude library Links и опциям Exclude inactive and commented out regions. Включение опции Exclude inactive and commented out regions идентифицирует переменные клоны номера из-за блока Variant Source в модели. Для получения дополнительной информации смотрите, Исключают подсистемы и модели, на которые ссылаются, от обнаружения клонов. Включение Exclude model references и опций Exclude library Links приведет к идентификации меньшего количества клонов, в зависимости от модели.
Нажмите Match Patterns with Libraries и выберите внешнюю библиотеку, чтобы искать клоны. Для получения дополнительной информации смотрите Идентификацию и Заменяющий Клоны в Библиотеках Модели.
Maximum number of unmatched block parameters является 50
по умолчанию. Это представляет количество параметров, которые могут варьироваться среди подсистем и все еще быть классифицированы как подобные клоны. Можно сократить это количество, чтобы идентифицировать и классифицировать меньше подобных клонов. При обнулении значения, идентифицирует только точные клоны.
В разделе Detect, во вкладке Find Clones in System, вводят ex_clone_detection
как модель, чтобы идентифицировать клоны в. Переключите контакт, чтобы получить доступ к другим подсистемам, чтобы идентифицировать клоны в.
Нажмите Find Clones, чтобы идентифицировать клоны.
Цвет подсистем изменяется, чтобы отразить подобные и точные идентифицированные клоны. Красное выделение представляет точные клоны, и различные оттенки синего выделения представляют подобные клоны.
После идентификации клонов можно анализировать результаты обнаружения клонов и внести изменения в модель по мере необходимости. Анализировать результаты:
В панели Clone Detection Action and Results, на панели Logs, кликают по гиперссылке.
Новое окно открывает результаты обнаружения клонов с интегрированным отчетом относительно идентифицированных клонов, типов клонов, параметров обнаружения и исключений в обнаружении клонов.
В панели Clone Detection Action and Results кликните по вкладке Map Clone Groups to Library.
Список групп клонов отображен.
Нажмите >
символ рядом с Exact Clone Group 1
видеть все подсистемы, которые являются точными клонами, количеством блоков и различиями в блоке. Повторите то же самое для Similar Clone Group 1
и Similar Clone Group 2
.
Кликните по вкладке Model Hierarchy. Кликните по гиперссылкам, чтобы подсветить подсистемы, которые присутствуют в модели.
На вкладке Map Clone Groups to Library расширьте Similar Clone Group 1
и кликните по гиперссылке View Parameter Difference.
На панели Detected Clone Properties нажмите ex_clone_detection/SS5/G9
гиперссылка, которая открывает блок G9
усиления в подсистеме
SS5
, где можно получить доступ к параметру, которые отличаются от базовой подсистемы.
Измените значение параметра усиления от A
к B
и нажмите Find Clones. Это реклассифицирует Similar Clone Group 1
к Exact Clone Group 2
потому что вы разрешили различие в подсистемах и преобразовали его в точный клон.
Под панелью Refactor Benefits можно считать процент различных типов клонов существующим.
В панели Clone Detection Actions and Results, во вкладке Map Clone Groups to Library, выбирают клоны, которые требуется осуществить рефакторинг. Выберите все группы клонов для рефакторинга, чтобы уменьшать 22.5806%
из повторного использования модели.
Можно использовать имя библиотеки по умолчанию или поменять имя файла библиотеки и его местоположения на вкладке Map Clone Groups to Library прежде заменяющий клоны.
Нажмите Replace Clones.
Модель пересмотрена, и клоны заменяются ссылками на newLibraryFile
файл библиотеки в вашей рабочей директории.
Можно восстановить модель к ее исходной настройке с клонами путем нажатия кнопки Restore, найденной в журнале детектора клона, который был сгенерирован на вкладке Logs панели Clone Detector Actions and Results.
Откройте библиотеку ex_clone_library
. В командной строке MATLAB, введите:
addpath(fullfile(docroot,'toolbox','simulink','examples')) ex_clone_library
Нажмите Settings > Match Patterns with Libraries и выберите ex_clone_library.slx
. Затем нажмите Find Clones.
Идентификация и рефакторинг клонов во внешних библиотеках должны быть сделаны отдельно из модели. Во время модели, осуществляющей рефакторинг только точные клоны в библиотеках, будут замененные ссылки библиотеки.
Нажмите Replace Clones.
Модель пересмотрена с точными замененными клонами.
Если у вас есть лицензия Simulink Test™, можно нажать Check Equivalency. Окно открывается и отображения, что текущая модель была успешно пересмотрена в эквивалентную модель.