主要内容

本页采用了机器翻译。点击此处可查看英文原文。

以编程方式收集模型可维护性度量

本示例展示了如何收集模型可维护性仪表板中使用的度量数据,生成报告,并使用该报告来评估模型设计工件。

如果工程中的模型很大、很复杂或难以阅读,则该设计可能难以测试和维护。使用度量结果来确定是否要重构设计以识别更小的可测试单元,或者重构模型以提高可读性。

收集和访问度量结果

打开工程

打开一个包含要分析的模型的工程。对于此示例,在 MATLAB® 命令行窗口中输入:

openProject("cc_CruiseControl");

有关如何为您的工件创建工程的信息,请参阅 创建工程以使用模型设计和模型测试仪表板

收集度量结果

创建一个 metric.Engine 对象。您可以使用 metric.Engine 对象来收集当前工程的度量数据。

metric_engine = metric.Engine();

创建用于模型可维护性的度量标识符数组。

maintainabilityMetrics = getAvailableMetricIds(metric_engine,...
App="DashboardApp",...
Dashboard="ModelMaintainability");

模型可维护性仪表板可以收集工程中 Units组件 的度量结果。要控制仪表板将哪些对象分类为单元或组件,请参阅将模型按层级结构分类为组件或单元。您可以收集工程中每个单元和组件的结果,也可以一次收集一个单元或组件的结果。

例如,假设您想收集单元 cc_ControlMode 的结果。创建一个数组,该数组标识工程中模型文件的路径和模型的名称。

unit = [fullfile(pwd,"models","cc_ControlMode.slx"),"cc_ControlMode"];

使用 execute 函数收集单元 cc_ControlMode 的可维护性度量结果。

execute(metric_engine,maintainabilityMetrics,ArtifactScope=unit);

访问和查看度量结果

使用 getMetrics 函数访问度量结果。在这个示例中,存储度量 slcomp.SimulinkSignalLines 和单位 cc_ControlMode 的结果。

results_SignalLines = getMetrics(metric_engine,"slcomp.SimulinkSignalLines",...
ArtifactScope=unit);

模型可维护性度量 slcomp.SimulinkSignalLines 决定模型每一层中 Simulink® 信号线的数量。有关模型可维护性度量的更多信息,请参阅 模型可维护性度量

getMetrics 函数返回一个 metric.Result 对象,其中包含指定度量的度量结果。

使用 disp 函数显示模型层和信号线数量,它们分别位于 metric.Result 对象的 ArtifactsValue 属性中。结果在您的计算机上可能以不同的顺序显示。

for n=1:length(results_SignalLines)

    disp([' Model Layer: ', results_SignalLines(n).Artifacts.Name])
    disp(['Signal Lines: ', num2str(results_SignalLines(n).Value)])
    disp(newline);

end
 Model Layer: Transitions_From_DISABLED
Signal Lines: 11
 Model Layer: Target_Speed_Calculator
Signal Lines: 18
 Model Layer: Switch Case Action
Subsystem
Signal Lines: 1
 Model Layer: Switch Case Action
Subsystem
Signal Lines: 23
 Model Layer: Control_Mode_StateMachine
Signal Lines: 60
 Model Layer: Transitions_From_THROTTLE_OVERRIDE
Signal Lines: 14
 Model Layer: Switch Case Action
Subsystem2
Signal Lines: 1
 Model Layer: cc_ControlMode
Signal Lines: 14
 Model Layer: wasActiveOnce
Signal Lines: 12
 Model Layer: cc_ControlMode_DisableTransition
Signal Lines: 10
 Model Layer: Transitions_From_ACTIVE
Signal Lines: 14
 Model Layer: Switch Case Action
Subsystem1
Signal Lines: 1
 Model Layer: Switch Case Action
Subsystem2
Signal Lines: 1
 Model Layer: cc_ControlMode_DeactivateTransition
Signal Lines: 10
 Model Layer: Switch Case Action
Subsystem4
Signal Lines: 1
 Model Layer: Switch Case Action
Subsystem3
Signal Lines: 1
 Model Layer: check_speed_range
Signal Lines: 6
 Model Layer: Switch Case Action
Subsystem1
Signal Lines: 1
 Model Layer: isFirstStep
Signal Lines: 2
 Model Layer: Transitions_From_ENABLED
Signal Lines: 20

代码输出显示模型层 Control_Mode_StateMachine 包含 60 Simulink 信号线。根据这些结果,考虑重新构建该模型层以提高可读性。

生成报告

生成一个报告文件,其中包含在 metric_engine 中收集的模型可维护性结果。默认情况下,报告文件类型为 PDF。在本例中,请将报告文件类型指定为 HTML。

generateReport(metric_engine,Dashboard="ModelMaintainability",Type="html-file");

将度量结果保存到报告文件中,以便无需打开工程或仪表板即可访问这些结果。

或者,您可以打开模型可维护性仪表板来查看结果并探索工件。要通过编程方式访问模型可维护性仪表板,请输入:

modelDesignDashboard

另请参阅

| | | | |

主题