主要内容

使用库克隆检测来识别数据类型匹配

R2026b

此示例说明如何以编程方式检测克隆,并确定库子系统的输入端口数据类型是否与模型中的克隆的输入端口数据类型匹配。有关克隆检测 API 的详细信息,请参阅Detect and Replace Subsystem Clones Programmatically。

此示例使用模型 ex_clone_datatype 和库文件 lib_datatype,说明如何确定库子系统与模型中的克隆之间的数据类型匹配。

将模型和库文件保存在当前工作目录中。

1.使用 Simulink.CloneDetection.Settings 类来创建一个对象。

    cloneDetectionSettings = Simulink.CloneDetection.Settings();

2.将库文件 lib_datatype 添加到 cloneDetectionSettings 对象。

    cloneDetectionSettings.Libraries = "lib_datatype"
cloneDetectionSettings = 

  Settings with properties:

                            IgnoreSignalName: 0
                         IgnoreBlockProperty: 0
                      ExcludeModelReferences: 0
                         ExcludeLibraryLinks: 0
                    ParamDifferenceThreshold: 50
    ReplaceExactClonesWithSubsystemReference: 0
                                   Libraries: {'/tmp/Bdoc26b_3351752_2719124/tp369dfc3a/slcheck-ex23244177/lib_datatype.slx'}
                                     Folders: {}
                     DetectClonesAcrossModel: 0
                      ExcludeInactiveRegions: 0
                               DataTypeCheck: 0

3.将 DataTypeCheck 设置为 1。

    cloneDetectionSettings.DataTypeCheck = 1
cloneDetectionSettings = 

  Settings with properties:

                            IgnoreSignalName: 0
                         IgnoreBlockProperty: 0
                      ExcludeModelReferences: 0
                         ExcludeLibraryLinks: 0
                    ParamDifferenceThreshold: 50
    ReplaceExactClonesWithSubsystemReference: 0
                                   Libraries: {'/tmp/Bdoc26b_3351752_2719124/tp369dfc3a/slcheck-ex23244177/lib_datatype.slx'}
                                     Folders: {}
                     DetectClonesAcrossModel: 0
                      ExcludeInactiveRegions: 0
                               DataTypeCheck: 1

4.使用 cloneDetectionSettings 对象执行函数 Simulink.CloneDetection.findClones。

    cloneResults = Simulink.CloneDetection.findClones('ex_clone_datatype',cloneDetectionSettings)
cloneResults = 

  Results with properties:

          Clones: [1×1 struct]
    ExceptionLog: {}

cloneResults 是 Simulink.CloneDetection.Results 类的对象,具有 Clones 和 ExceptionLog 两个属性。

5.查看克隆组。

    cloneResults.Clones.CloneGroups(1)
ans = 

  struct with fields:

         Name: 'lib_datatype/SS4'
      Summary: [1×1 struct]
    CloneList: {7×1 cell}

6.查看第一个克隆组的克隆列表。

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

  struct with fields:

             Name: 'Clone Region 1'
    PatternBlocks: {8×1 cell}
    DataTypeMatch: 0

CloneList 是一个结构体,其中包含字段 Name、PatternBlocks 和 DataTypeMatch。DataTypeMatch 字段为 0,表示库子系统的输入端口数据类型与 Clone Region 1 的输入端口数据类型不匹配。

另请参阅

主题