Обнаружьте клоны программно на многоуровневых моделях через другие папки

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

Этот пример демонстрирует, как использовать API обнаружения клонов, чтобы идентифицировать клоны в шести моделях Simulink®, существующих в папке. ПРИМЕЧАНИЕ: API Clone Detector не поддерживают заменяющий клоны в многоуровневых моделях.

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

    addpath(fullfile(docroot,'toolbox','simulink','examples'))
    ex_clone_detection_A
    ex_clone_detection_B
    ex_clone_detection_C
    ex_clone_detection_D
    ex_clone_detection_E
    ex_clone_detection_F

Сохраните модели в writeable папку.

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

     cloneDetectionSettings = Simulink.CloneDetection.Settings();

3. Добавьте путь папки с моделями к cloneDetectionSettings объект.

     cloneDetectionSettings.Folders = {'D:\models'}
cloneDetectionSettings = 

  Settings with properties:

                            IgnoreSignalName: 0
                         IgnoreBlockProperty: 0
                      ExcludeModelReferences: 0
                         ExcludeLibraryLinks: 0
                      ExcludeInactiveRegions: 0
                     DetectClonesAcrossModel: 0
              FindClonesRecursivelyInFolders: 1
                    ParamDifferenceThreshold: 50
    ReplaceExactClonesWithSubsystemReference: 0
                                   Libraries: {}
                                     Folders: {'D:\models'}

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

    cloneResults = Simulink.CloneDetection.findClones(cloneDetectionSettings)
cloneResults = 

  Results with properties:

          Clones: [1×1 struct]
    ExceptionLog: ''

cloneResults объект Simulink.CloneDetection.Results класс, который имеет два свойства, Clones и ExceptionLog.

5. Просмотрите Clones.Summary поле .

    cloneResults.Clones.Summary
ans = 

  struct with fields:

                 CloneGroups: 4
               SimilarClones: 18
                 ExactClones: 8
                      Clones: 26
    PotentialReusePercentage: [1×1 struct]

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

5. Посмотрите детали первой группы клонов.

    cloneResults.Clones.CloneGroups(1)
ans = 

  struct with fields:

         Name: 'Exact Clone Group 1'
      Summary: [1×1 struct]
    CloneList: {5×1 cell}

6. Просмотрите сводные данные первой группы клонов.

    cloneResults.Clones.CloneGroups(1).Summary
ans = 

  struct with fields:

    ParameterDifferences: [1×1 struct]
                  Clones: 5
          BlocksPerClone: 5
               CloneType: 'Exact'
         BlockDifference: 0

7. Просмотрите список клонов первой группы клонов.

     cloneResults.Clones.CloneGroups(1).CloneList
ans =

  5×1 cell array

    {'ex_clone_detection_A/Subsystem'}
    {'ex_clone_detection_B/Subsystem'}
    {'ex_clone_detection_C/Subsystem'}
    {'ex_clone_detection_D/Subsystem'}
    {'ex_clone_detection_F/Subsystem'}

Точно так же можно найти результаты других групп клонов с помощью перечисленных выше шагов.

Похожие темы

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