Клоны - это шаблоны моделирования, имеющие идентичные типы блоков и соединения. Приложение Clone Detector идентифицирует клоны через границы ссылочной модели. Приложение Clone Detector можно использовать для повторного использования компонентов путем создания блоков библиотеки из клонов подсистем и замены клонов ссылками на эти блоки библиотеки. С помощью этого инструмента можно также связать клоны в существующей библиотеке.
Существует два типа клонов: точные клоны и подобные клоны. Точные клоны имеют одинаковые типы блоков, соединения и значения параметров. Подобные клоны имеют одинаковые типы блоков и соединения, но могут иметь различные значения параметров блоков. Например, значение блока усиления может отличаться в аналогичных клонах, но должно быть одинаковым в точных клонах.
Точные клоны и подобные клоны могут иметь следующие отличия:
Два клона могут иметь разный порядок сортировки.
Длина сигнальных линий и местоположение и размер блоков могут отличаться, если соединения блоков одинаковы.
Блоки и сигналы могут иметь разные имена.
Чтобы обнаружить только точные клоны, для каждой проверки в инструменте «Идентификация клонов моделирования» задайте для параметра «Максимальное количество несопоставленных параметров блока» значение 0. Увеличение значения этого параметра увеличивает количество подобных клонов, которые может обнаружить инструмент.
После идентификации клонов их можно заменить ссылками на блоки библиотеки. Подобные клоны связаны с маскированными библиотечными подсистемами.
В этом примере показано, как использовать приложение Clone Detector для идентификации точных клонов и подобных клонов, а затем заменить их ссылками на библиотечные блоки.
Открытие модели ex_clone_detection. В командной строке MATLAB ® введите:
addpath(fullfile(docroot,'toolbox','simulink','examples')) ex_clone_detection


Сохраните модель в рабочей папке. Для доступа к приложению модель должна быть открыта.
На вкладке Приложения щелкните Детектор клонов. Либо в командной строке MATLAB введите:
clonedetection("ex_clone_detection")Приложение открывает вкладку Детектор клонов. В этом примере рассматривается каждый раздел.

Приложение отображает информацию на нескольких панелях. В меню «Вид» можно выбрать три панели. Панелями являются:
Помощь. Выберите для доступа к панели справки, содержащей обзор рабочего процесса обнаружения клонов.
Результаты. Выберите для просмотра панели Действия и результаты обнаружения клонов.
Свойства. Выберите для просмотра панели «Свойства обнаруженного клона».
Параметры для обнаружения клонов можно настроить с помощью раскрывающегося меню «Параметры».
Выберите Игнорировать различия в > Имена сигналов, чтобы идентифицировать и классифицировать клоны, если имена сигналов отличаются.
Выберите «Игнорировать различия» > «Свойства блока», чтобы идентифицировать и классифицировать клоны, если свойства блока отличаются. Дополнительные сведения о свойствах блока см. в разделе Задание свойств блока.
Щелкните Исключить компоненты (Exclude Components), чтобы получить доступ к опциям Исключить привязки модели (Exclude model references), Исключить связи библиотеки (Exclude library Links) и Исключить неактивные Включение опции Исключить неактивные и закомментированные области (Exclude inactive and committed out regions) определяет клоны номеров переменных из-за блока Источник исполнения (Variant Source) в модели. Дополнительные сведения см. в разделе Исключение подсистем и ссылочных моделей из обнаружения клонов. Включение опций Исключить привязки модели (Exclude model references) и Исключить связи библиотеки (Exclude library Links) приведет к идентификации меньшего количества клонов в зависимости от модели.
Щелкните Сопоставить образцы с библиотеками (Match Patterns with Libraries) и выберите внешнюю библиотеку для поиска клонов. Дополнительные сведения см. в разделе Идентификация и замена клонов в библиотеках моделей.
Максимальное число несопоставленных параметров блока: 50 по умолчанию. Это представляет количество параметров, которые могут изменяться в подсистемах и по-прежнему классифицироваться как аналогичные клоны. Вы можете уменьшить это число, чтобы идентифицировать и классифицировать меньшее количество подобных клонов. Если установить нулевое значение, будут идентифицированы только точные клоны.
Чтобы найти клоны в модели, щелкните подсистему, которую требуется проанализировать. В разделе Обнаружить (Detect) имя выбранной подсистемы отображается в разделе Найти клоны (Find Clones) на вкладке Система (System). Используйте штифт для запоминания выбранных элементов.

Щелкните Найти клоны (Find Clones), чтобы определить клоны.
Цвет подсистем изменяется для отражения идентифицированных аналогичных и точных клонов. Красное выделение представляет точные клоны, а различные оттенки синего выделения представляют аналогичные клоны.

После идентификации клонов можно проанализировать результаты обнаружения клонов и внести необходимые изменения в модель. Для анализа результатов:
На панели «Действия и результаты обнаружения клонов» на панели «Журналы» щелкните гиперссылку.
Новое окно открывает результаты обнаружения клонов с интегрированным отчетом об идентифицированных клонах, типах клонов, параметрах обнаружения и исключениях в обнаружении клонов.
На панели Действия и результаты обнаружения клонов (Clone Detection Actions and Results) щелкните вкладку Сопоставить группы клонов с библиотекой (Map Clone Groups to Library).
Отображается список групп клонов.
Щелкните значок > символ рядом с Exact Clone Group 1 чтобы увидеть все подсистемы, которые являются точными клонами, количество блоков и различия блоков. Повторить то же самое для Similar Clone Group 1 и Similar Clone Group 2.
Перейдите на вкладку Иерархия модели (Model Hierarchy). Щелкните гиперссылки, чтобы выделить подсистемы, присутствующие в модели.
На вкладке «Сопоставить группы клонов с библиотекой» разверните Similar Clone Group 1 и щелкните гиперссылку «Просмотр разности параметров».
На панели «Свойства обнаруженного клона» нажмите кнопку ex_clone_detection/SS5/G9 гиперссылка, которая открывает блок усиления G9 в подсистеме SS5, где можно получить доступ к параметру, отличному от подсистемы опорной структуры.
Изменение значения параметра усиления с A кому B и нажмите кнопку Найти клоны. Это реклассифицирует Similar Clone Group 1 кому Exact Clone Group 2 потому что вы устранили разницу в подсистемах и преобразовали ее в точный клон.
На панели «Преимущества рефактора» можно определить процент различных типов имеющихся клонов.
На панели Действия по обнаружению клонов и результаты (Clone Detection Actions and Results) на вкладке Сопоставить группы клонов с библиотекой (Map Clone Groups to Library) выберите клоны, которые требуется изменить. Выберите все группы клонов для рефакторинга, чтобы уменьшить 22.5806% повторного использования модели.

Перед заменой клонов можно использовать имя библиотеки по умолчанию или изменить имя файла библиотеки и его расположение на вкладке «Сопоставить группы клонов с библиотекой».
Щелкните Заменить клоны (Replace Clones).
Модель перефакторизируется, и клоны заменяются ссылками на newLibraryFile файл библиотеки в рабочей папке.
Чтобы восстановить исходную конфигурацию модели с клонами, нажмите кнопку Восстановить (Restore) в журнале детекторов клонов, который был создан на вкладке Журналы (Logs) панели Действия и результаты детектора клонов (Clone Detector Actions and Results).
Открыть библиотеку ex_clone_library. В командной строке MATLAB введите:
addpath(fullfile(docroot,'toolbox','simulink','examples')) ex_clone_library
Щелкните Параметры > Сопоставить образцы с библиотеками и выберите ex_clone_library.slx. Затем нажмите кнопку Найти клоны.
Примечание
Идентификация и рефакторинг клонов во внешних библиотеках должны выполняться отдельно от модели. Во время рефакторинга модели заменяются только точные клоны в библиотеках.
Щелкните Заменить клоны (Replace Clones).
Модель подвергается рефакторизации с заменой точных клонов.
При наличии лицензии Simulink Test™ можно нажать кнопку Проверить эквивалентность. Откроется окно, в котором будет показано, что текущая модель успешно преобразована в эквивалентную модель.
