依赖分析范围和限制
分析范围
Dependency Analyzer识别项目或模型所需的文件和附加组件。分析涵盖了广泛的依赖关系,包括模型引用、子系统引用、链接库、MATLAB®而且C / c++
代码,Stateflow®图表、数据文件、s -函数和需求文档。
当依赖分析程序遇到MATLAB代码时,例如在模型或块回调中,或在.m
files函数,它尝试识别它引用的文件。有关更多信息,请参见分析的局限性.
对于MATLAB根文件夹下的文件,Dependency Analyzer只显示所需的产品。2022世界杯八强谁会赢?它不分析依赖关系。
Dependency Analyzer识别用户定义的附加组件中的依赖项,以及代码生成或MATLAB代码在模型参数中引入的依赖项。这些选项在默认情况下是关闭的,因为它们对于大型设计来说可能很耗时。
要指定分析的范围,在Dependency Analyzer工具条中,单击分析并选择以下一个或多个选项:
选项 | 默认的 | 描述 |
---|---|---|
C / c++代码 | 在 | 分析由C / c++ 代码文件。 |
附加组件 | 从 | 分析插件内部的依赖关系。 |
模型参数 | 从 | 分析MATLAB代码在模型块参数中引入的相关性。 |
生成的代码的可追溯性 | 从 | 分析由模型生成的代码引入的依赖关系。 |
分析的局限性
依赖分析有特定于MATLAB代码分析的局限性:
Dependency Analyzer仅在函数输入参数为文字字符向量或字符串时识别它们:
负载(“mydatafile”)加载mydatafile
如果将文件名定义为变量并将其传递给函数,则Dependency Analyzer无法识别依赖项。在下面的示例中,由于没有执行代码,所以Dependency Analyzer没有值
str
.Dependency Analyzer可能会报告一个缺失的依赖项。str =“mydatafile”;负载(str);
负载
,如打开外部文件
,xlsread
,importdata
,dlmread
,eval
,或imread
.依赖分析程序并不总是自动确定类型。根据调用对象方法的方式,Dependency Analyzer可能会混淆方法和函数,并报告缺少依赖项。
在MATLAB中,可以用两种不同的方式调用对象方法。例如,对于一个对象
p
,您可以调用该方法addFile
使用函数表示法:p = currentProject;addFile (p,“myfile”);
p = currentProject;p.addFile (“myfile”);
p
显然,Dependency Analyzer可能会将使用函数表示法的方法调用与函数调用混淆。分析报告addFile
作为一个缺失的依赖项。为了克服这个限制,可以使用点表示法来调用方法或使用实参来显式声明函数中的变量类型:
函数myfunction (p)参数pmatlab.project.Project结束addFile (p,“myfile”);结束
Dependency Analyzer不会向使用方法调用引用的类报告依赖项。
在分析文件时,Dependency Analyzer不考虑调用它的上下文。当一个文件
一个
调用一个文件B
时,依赖项分析程序不知道使用的数据B
但中定义一个
.Dependency Analyzer将此数据报告为一个丢失的文件。要解决这个限制,可以使用函数输入参数显式传递此数据。例如,当您分析一个Simulink时®如果子系统在链接到数据字典的模型中引用,并且子系统使用您在数据字典中定义的枚举,则分析不能访问枚举,并将此数据报告为缺失文件。
Dependency Analyzer可能不会报告模型所需的某些块集。
依赖分析程序无法检测对任何文件(如定点设计器™)不引入依赖关系的块集。
要包含分析无法检测到的依赖项,请添加向项目引入依赖项的文件。要从模型创建项目,请参见从一个模型创建一个项目.
Dependency Analyzer可能无法检测到所需的支持包。它列出了所需的附加组件,包括应用程序和工具箱。
Dependency Analyzer可能不会报告屏蔽块中动态内容的依赖关系。
动态掩码可以根据被掩码块的参数,修改被掩码子系统,改变被掩码块的依赖关系。如果动态掩码位于库中,则Dependency Analyzer无法检测动态更改。
依赖分析不支持从MATLAB函数块调用的Simulink函数。
一些MathWorks®2022世界杯八强谁会赢?产品和附加组件共享代码和Simulink库。Dependency Analyzer可能会报告它们之间的依赖关系。
要调查共享代码在何处使用,请在属性面板,2022世界杯八强谁会赢?节,指一个产品下共享之间的功能:然后点击搜索文件夹图标.
Dependency Analyzer分析项目代码而不评估其内容,因此:
Dependency Analyzer不会在执行的函数中添加全局变量。
Dependency Analyzer分析逻辑语句中的代码,即使它没有被执行。在下面的例子中,代码没有被执行,但是Dependency Analyzer报告了一个对Simulink缺少的依赖项。
如果假load_system (vdp)结束