Клоны моделируют шаблоны, которые имеют идентичные типы блока и связи. Приложение Clone Detector идентифицирует клоны через модель или в подсистеме контуры. Можно использовать приложение Clone Detector или команды MATLAB программно к компонентам повторного использования путем создания библиотечных блоков шаблонов клона и заменяющий клоны на ссылки на те библиотечные блоки. Можно также использовать его, чтобы соединить клоны от существующей библиотеки.
Существует два типа клонов: точные клоны и подобные клоны. Точные клоны имеют идентичные типы блока, связи и значения параметров. Подобные клоны имеют идентичные типы блока и связи, но у них могут быть различные значения параметров блоков. Например, значение блока Gain может отличаться в подобных клонах, но должно быть тем же самым в точных клонах.
Точные клоны и подобные клоны могут иметь эти различия:
Два клона могут иметь различный отсортированный порядок.
Длина сигнальных линий и местоположения и размера блоков может отличаться, если связи блока являются тем же самым.
Блоки и сигналы могут иметь различные имена.
После того, как вы идентифицируете клоны, можно заменить их на ссылки на библиотечные блоки. Подобные клоны соединяются с подсистемами библиотеки маскированными.
Поддержки приложений Clone Detector две опции для обнаружения клонов в модели. Можно искать клоны в подсистеме или где угодно в модели с помощью Настроек обнаружения клонов.
Клоны подсистемы: Идентифицирует клоны только в подсистемы.
Клоны где угодно: Идентифицирует клоны где угодно в модели.
В этом примере показано, как использовать приложение 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.
Нажмите Replace Exact Clones With Subsystem References, чтобы найти и заменить точные клоны с блоками ссылки подсистемы.
Нажмите 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 Clones Across Model, чтобы включить обнаруживают клоны где угодно через модель. Можно выбрать значения Minimum Region Size и Minimum Clone Group Size, чтобы обнаружить клоны с этими блоками соответствия. Размер по умолчанию установлен в 2
.
Чтобы найти клоны в модели, нажмите на подсистему, которую вы хотите проанализировать. В разделе Detect выбранное имя подсистемы появляется под вкладкой Find Clones in System. Используйте контакт, чтобы помнить выбор.
Нажмите Find Clones, чтобы идентифицировать клоны.
Цвет подсистем изменяется, чтобы отразить подобные и точные идентифицированные клоны. Красное выделение представляет точные клоны, и различные оттенки синего выделения представляют подобные клоны.
После идентификации клонов можно анализировать результаты обнаружения клонов и внести изменения в модель по мере необходимости. Анализировать результаты:
В панели Clone Detection Results and Actions, на вкладке Clone Results, отображен список групп клонов.
Нажмите >
символ рядом с Exact Clone Group 1
видеть все подсистемы, которые являются точными клонами, количеством блоков и различиями в блоке. Повторите то же самое для Similar Clone Group 1
и Similar Clone Group 2
.
В панели Clone Detection Actions and Results кликните по вкладке Logs. Кликните по гиперссылке на панели Logs.
Новое окно открывает результаты обнаружения клонов с интегрированным отчетом относительно идентифицированных клонов, типов клонов, параметров обнаружения и исключений в обнаружении клонов.
Кликните по вкладке Model Hierarchy. Кликните по гиперссылкам, чтобы подсветить конкретные подсистемы в модели. Чтобы вернуться к выделению всех клонов, на вкладке Clone Results, нажимают Highlight all clones.
На вкладке Clone Results расширьте 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, во вкладке Clone Results, выбирают клоны, которые требуется осуществить рефакторинг. Выберите все группы клонов для рефакторинга, чтобы уменьшать 22.5806%
из повторного использования модели.
Можно использовать имя библиотеки по умолчанию или поменять имя файла библиотеки и его местоположения на вкладке Clone Results прежде заменяющий клоны.
Нажмите Replace Clones.
Модель пересмотрена, и клоны заменяются ссылками на newLibraryFile
файл библиотеки в вашей рабочей директории.
Можно восстановить модель к ее исходной настройке с клонами путем нажатия кнопки Restore, найденной в журнале детектора клона, который был сгенерирован на вкладке Logs панели Clone Detector Results and Actions.
Откройте библиотеку 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. Окно открывается и отображения, что текущая модель была успешно пересмотрена в эквивалентную модель.