主要内容

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

创建带有自定义度量的布局

本示例展示了如何创建自定义度量并修改度量板的布局,使其仅显示有关模型的信息、自定义度量的结果以及其他自定义小组件。

创建自定义度量

您可以通过创建一个新的度量类,并在度量类的 algorithm 函数中度量计算的内容来定义自定义度量。

1.创建一个名为 nonvirtualblockcount 的新度量类。

slmetric.metric.createNewMetricClass('nonvirtualblockcount');

createNewMetricClass 函数在当前工作文件夹中创建一个名为 nonvirtualblockcount.m 的类。

2.在本例中,将 nonvirtualblockcount_orig.m 中定义的示例自定义度量的内容复制到度量类文件 nonvirtualblockcount.m 中。

copyfile nonvirtualblockcount_orig.m nonvirtualblockcount.m f

类定义中的 algorithm 函数定义了自定义度量的计算内容。示例文件 nonvirtualblockcount_orig.m 包含一个度量,用于计算当前模型中的非虚拟块的数量。

3.将自定义度量注册到模型度量库中。度量盘只能使用模型度量库中提供的度量。

[id_metric,err_msg] = slmetric.metric.registerMetric('nonvirtualblockcount');

请注意,自定义度量会一直保留在模型度量存储库中,直到您使用 slmetric.metric.unregisterMetric 函数取消注册该度量为止。

使用自定义小组件创建布局

度量盘布局

度量仪表板至少要求布局包含一个 'SystemInfo' 小组件和至少一个 slmetric.dashboard.Widgetslmetric.dashboard.CustomWidget 类型的小组件。

'SystemInfo' 小组件用于显示当前系统信息,包括:

  • 当前系统的名称。

  • 该模型的作者。

  • 对现有模型的修订。

  • 当您收集度量结果时。

1.创建一个新的配置对象。配置中包含度量仪表板用于排列小组件的布局。在本例中,将新配置的 Name 指定为 "Minimal"。有关配置对象的更多信息,请参阅 slmetric.dashboard.Configuration

dashboardconfig = slmetric.dashboard.Configuration.new(Name='Minimal')
dashboardconfig = 
  Configuration with properties:

        Name: 'Minimal'
    FileName: ''
    Location: ''

2.从配置中获取仪表盘布局。

layout = getDashboardLayout(dashboardconfig);

3.使用 addWidget 函数将 'SystemInfo' 小组件添加到布局中。

addWidget(layout,'SystemInfo')
ans = 
  Widget with properties:

    Title: ''
     Type: 'SystemInfo'
       ID: 'd32c10e1-51fd-490c-ae00-463d043e4f2f'

显示单个值

默认情况下,自定义小组件会在小组件标题旁边显示一个整数值。

1.通过将 widgetType 指定为 'Custom',向布局中添加自定义小组件 customWidget

customWidget = addWidget(layout,'Custom');

默认情况下,自定义小组件指定 VisualizationType 'SingleValue' 以在仪表板中显示单个整数值。

2.将自定义度量 'nonvirtualblockcount' 分配给自定义小组件。

customWidget.setMetricIDs('nonvirtualblockcount');

3.为自定义小组件指定标题。

customWidget.Title = 'Nonvirtual Block Count'
customWidget = 
  CustomWidget with properties:

    VisualizationType: 'SingleValue'
               Labels: {0×1 cell}
                Title: 'Nonvirtual Block Count'
                 Type: 'Custom'
                   ID: 'cf85635e-a467-4c13-a7e5-6813001e3123'

在度量板中使用新布局

1.将更新后的配置 dashboardconfig 保存为 XML 文件。XML 文件包含了仪表盘的全新极简布局。

save(dashboardconfig,'Filename','DashboardConfig.xml');

2.将 XML 文件设置为度量仪表板的活动配置。

slmetric.dashboard.setActiveConfiguration(fullfile(pwd,'DashboardConfig.xml'));

3.打开模型 vdp 的度量仪表板。

metricsdashboard vdp
Warning: The Metrics Dashboard and slmetric.Engine API will be removed in a future release.
For size, architecture, and complexity metrics, use the Model Maintainability Dashboard and metric.Engine API instead.
The Model Maintainability Dashboard and metric.Engine API can identify outdated metric results, analyze dependencies between files, and aggregate metrics across software units and components.
For more information, see <a href="matlab:helpview([docroot '/slcheck/collect-model-metric-data-1.html'])">Collect Model and Testing Metrics</a>

4.点击所有度量运行仪表板中的每个度量。

度量仪表板仅显示 'SystemInfo' 小组件和自定义度量 'nonvirtualblockcount' 的自定义小组件。

更改小组件显示度量结果的方式

默认情况下,自定义小组件使用 VisualizationType 'SingleValue'

当您运行 'SingleValue' 小组件的度量时,该小组件只会在 Title 小组件旁边显示一个整数值。

不过,您可以将自定义小组件的可视化类型更改为条形图、径向仪表或分布热图。有关详细信息,请参阅slmetric.dashboard.CustomWidget

显示柱状图

bar chart.png

要使自定义小组件以条形图形式显示度量结果:

  • VisualizationType 指定为 'BarChart'

  • 使用 Labels 属性为条形图中的每个条形提供标签。标签必须由元胞数组指定,标签的数量必须等于与该小组件关联的度量 ID 的数量。

  • 使用 setHeight 函数设置小组件的高度,使小组件显示在布局中。

向布局中添加一个新的自定义小组件 barChartWidget

barChartWidget = addWidget(layout,'Custom');
barChartWidget.VisualizationType = 'BarChart';
barChartWidget.Title = 'Bar Chart';
barChartWidget.setMetricIDs({'nonvirtualblockcount','mathworks.metrics.SimulinkBlockCount'})
barChartWidget.Labels = {'Nonvirtual Block Count','Block Count'};
barChartWidget.setHeight(220);

在这个示例中,自定义小组件会为每个度量 ID 显示一个条形图。条形图使用自定义度量 'nonvirtualblockcount' 和 Simulink® Check™ 度量 'mathworks.metrics.SimulinkBlockCount' 的度量 ID。要查看可用度量的列表,请使用 slmetric.metric.getAvailableMetrics 函数。有关详细信息,请参阅模型度量

显示径向仪表

要使自定义小组件以径向仪表显示度量结果:

  • VisualizationType 指定为 'RadialGauge'

  • 提供一个介于 0 和 1 之间的度量结果值。径向量规仅支持 0 到 1 之间的值。

创建一个名为 randomnumber 的新度量类。

slmetric.metric.createNewMetricClass('randomnumber');

在本例中,将 randomnumber_orig.m 中定义的示例自定义度量的内容复制到度量类文件 randomnumber.m 中。

copyfile randomnumber_orig.m randomnumber.m f

注册示例自定义度量。自定义度量定义中的 algorithm 函数指定一个度量值 res.Value,该值是 0 到 1 之间的随机数。

slmetric.metric.registerMetric('randomnumber');

向布局中添加一个新的自定义小组件 gaugeWidget

gaugeWidget = addWidget(layout,'Custom');
gaugeWidget.VisualizationType = 'RadialGauge';
gaugeWidget.Title = 'Radial Gauge';
gaugeWidget.setMetricIDs('randomnumber');

显示分布热图

heat_map.png

要使自定义小组件以分布热图的形式显示度量结果:

  • VisualizationType 指定为 'DistributionHeatmap'

  • 以正整数数组的数组提供度量结果值。分布热图仅支持正整数值数组。

向布局中添加一个新的自定义小组件 heatmapWidget

heatmapWidget = addWidget(layout,'Custom');
heatmapWidget.VisualizationType = 'DistributionHeatmap';
heatmapWidget.Title = 'Distribution Heat Map';
heatmapWidget.setMetricIDs('mathworks.metrics.SimulinkBlockCount');

在这个示例中,自定义小组件显示了度量 'mathworks.metrics.SimulinkBlockCount' 的度量结果。度量 'mathworks.metrics.SimulinkBlockCount' 返回模型及其模型中的块数。

保存更新后的布局并查看度量仪表板

要保存更新后的布局并查看度量仪表板,请输入:

save(dashboardconfig,'Filename','DashboardConfig.xml');
slmetric.dashboard.setActiveConfiguration(fullfile(pwd,'DashboardConfig.xml'));
metricsdashboard vdp
Warning: The Metrics Dashboard and slmetric.Engine API will be removed in a future release.
For size, architecture, and complexity metrics, use the Model Maintainability Dashboard and metric.Engine API instead.
The Model Maintainability Dashboard and metric.Engine API can identify outdated metric results, analyze dependencies between files, and aggregate metrics across software units and components.
For more information, see <a href="matlab:helpview([docroot '/slcheck/collect-model-metric-data-1.html'])">Collect Model and Testing Metrics</a>

取消注册自定义度量

请注意,自定义度量会一直保留在模型度量存储库中,直到您使用 slmetric.metric.unregisterMetric 函数取消注册这些度量为止。

slmetric.metric.unregisterMetric('nonvirtualblockcount');
slmetric.metric.unregisterMetric('randomnumber');

另请参阅

| | | |

主题