通过使用模型度量编程接口定制度量仪表板。定制仪表板扩展了您使用模型度量来评估模型和代码是否符合大小、复杂性和可读性需求的能力。您可以执行以下指标仪表板定制:
配置遵从性度量以获得遵从性并在Model Advisor配置上发布度量数据。
通过添加自定义指标、删除小部件和配置现有小部件来定制仪表板布局。
通过指定度量阈值将度量数据分类为兼容,警告和非符合程序。
使用Metrics Dashboard和度量api来获取遵从性,并在Model Advisor配置或现有检查组(如MISRA检查)上发布度量数据。有关如何创建自定义配置文件的信息,请参见使用模型Advisor配置编辑器定制模型Advisor.在您设置了Model Advisor配置之后,按照以下步骤指定您想要获得遵从性和问题度量数据的检查组:
1.要打开模型,请在MATLAB命令提示符下,输入此命令:
vdp
2.打开默认配置并保存相应的slmetric.config.configuration.
对象指向基本工作区。
metricconfig = slmetric.config.Configuration.openDefaultConfiguration ();
3.创建一个单元格数组,值
,它指定模型顾问检查组ID对于MAAB, High-Integrity和MISRA检查组。
的值maab
对应于MAAB检查的子集。
的值hisl_do178
对应于高完整性系统检查的子集。
的值_system_by task_misra_c.
是个检查组IDMISRA检查组MISRA C建模标准:2012
.
值= {“maab”,“hisl_do178”,'_system_by task_misra_c'};
获取Model Advisor检查组ID对于一组检查,打开Model Advisor Configuration Editor并选择包含所需一组检查的文件夹。的检查组ID显示在信息选项卡。有关Model Advisor配置编辑器的更多信息,请参见使用模型Advisor配置编辑器定制模型Advisor.
4.要设置配置,请传递值
单元格数组etmetricfamileyparametervalues.
方法。的“ModelAdvisorStandard”
字符串是您必须提供给的标准字符串etmetricfamileyparametervalues.
方法。
etmetricfamileyparametervalues(metricconfig,“ModelAdvisorStandard”,价值观);
5.打开Metrics Dashboard布局的默认配置(即,Metrics Dashboard附带的配置)。
dashboardconfig = slmetric.dashboard.Configuration.openDefaultConfiguration ();
6.获得slmetric.dashboard.Layout
对象的slmetric.dashboard.Configuration
目的。
布局= getDashboardLayout (dashboardconfig);
7.获取布局对象中的小部件对象。
layoutWidget = getWidgets(布局);
8.从布局图中获取合规组。
complianceGroup = layoutWidget (3);
的slmetric.dashboard.Layout
对象包含以下对象:
一个slmetric.dashboard.Container.
对象,该对象包含slmetrics.dashboard.widget.
类型的对象系统信息
.下图中红色的数字1表示系统信息
小部件。
一个slmetric.dashboard.group.
具有标题的对象大小.
一个slmetrics.dashboard.Group
具有标题的对象建模指南合规性.
一个slmetrics.dashboard.Group
具有标题的对象体系结构.
在图中,红色的数字1、2、3和4表示它们在layoutWidget
数组中。
9.建模指南遵从性组包含两个容器。顶部的容器装着高完整性和MAAB遵从性和检查问题小部件。红色数字3.1.1、3.1.2和3.1.3表示三个小部件在第一个容器中的顺序。第二个容器包含代码分析警告和诊断的警告小部件。
删除高完整性合规小部件。
Compualcecontainers = GetWidgets(合规性群组);CompulianCecontainerWidgets = GetWidgets(合规性(1));合规(1).RemoveWidget(合规(合规)(1));
10.度量ID为配置的MISRA检查遵从度量“mathworks.metrics.ModelAdvisorCheckCompliance。_SYSTEM_By Task_misra_c”
.
misraComplianceMetricID =“mathworks.metrics.ModelAdvisorCheckCompliance。_SYSTEM_By Task_misra_c”;
的度量ID对于配置的检查合规性度量是表单<家庭ID>.<模型顾问检查组ID>.
为Model Advisor遵从性配置的度量使用<家庭ID>mathworks.metrics.ModelAdvisorCheckCompliance
.已配置的检查遵从性度量计算为选定的Model Advisor通过的Model Advisor检查的比例检查组ID.
模型的顾问检查组ID,_system_by task_misra_c.
,是检查组IDMISRA检查组MISRA C建模标准:2012
.
获取Model Advisor检查组ID对于一组检查,打开Model Advisor Configuration Editor并选择包含所需一组检查的文件夹。的检查组ID显示在信息选项卡。有关Model Advisor配置编辑器的更多信息,请参见使用模型Advisor配置编辑器定制模型Advisor.
有关配置的遵从性度量的更多信息,请参见模型指标.
11.创建一个自定义小部件,用于可视化MISRA检查遵从性度量。
MISRAWIDGET =合规性(1).addwidget(“自定义”,1);misrawidget.title =(“MISRA”);misraWidget。VisualizationType =“RadialGauge”;misrawidget.setmetricids(misracompliancemetricid);misrawidget.setwidths(slmetric.dashboard.width.medium);
12.条形图Widget当前可视化高完整性和MAAB检查组。将此小部件指向公制IDMISRA检查问题和MAAB检查问题。
misraIssuesMetricID =“mathworks.metrics.ModelAdvisorCheckIssues。_SYSTEM_By Task_misra_c”;maabIssuesMetricID =“mathworks.metrics.ModelAdvisorCheckIssues.maab”;etmetricids(合规性协商会(3),......({misraIssuesMetricID, maabIssuesMetricID}));complianceContainerWidgets(3)。标签= {“MISRA”,“MAAB”};
的度量ID对于配置的检查合规性度量是表单<家庭ID>.<模型顾问检查组ID>.
为Model Advisor遵从性问题配置的度量使用<家庭ID>mathworks.metrics.modelAdvisorCheckissues.
.已配置的检查遵从性问题度量计算所选Model Advisor报告的问题数量检查组ID.
模型的顾问检查组ID,_system_by task_misra_c.
,是检查组IDMISRA检查组MISRA C建模标准:2012
.maab
是一个检查组ID对应于MAAB检查的子集。
获取Model Advisor检查组ID对于一组检查,打开Model Advisor Configuration Editor并选择包含所需一组检查的文件夹。的检查组ID显示在信息选项卡。有关Model Advisor配置编辑器的更多信息,请参见使用模型Advisor配置编辑器定制模型Advisor.
有关配置的遵从性度量的更多信息,请参见模型指标.
13.要在此时运行和查看指标仪表板,请在MATLAB命令窗口中输入以下代码行。的保存
命令将API信息序列化为XML文件。的slmetric.config.setActiveConfiguration
和slmetric.dashboard.setActiveConfiguration
命令用于设置激活的配置对象。
保存(metricconfig,“文件名”,“MetricConfig.xml”);保存(dashboardconfig,'文档名称',“DashboardConfig.xml”);slmetric.config.setActiveConfiguration (fullfile (pwd,“MetricConfig.xml”));slmetric.dashboard.setActiveConfiguration (fullfile (pwd,“DashboardConfig.xml”));
14.要打开Metrics Dashboard,请在MATLAB命令窗口中输入以下代码。
metricsdashboardvdp
15.单击所有指标按钮运行所有指标。指标仪表板显示MISRA检查的结果,而不是高完整性检查。
16.关闭Metrics Dashboard。
创建一个计数非virtual块的自定义度量标准。要在指标仪表板上显示此度量标准,请指定小部件。将其添加到大小组。
1.使用CreateNewMetricClass.
函数,创建一个名为nonvirtualblockcount
.函数创建一个文件,nonvirtualblockcount.m
,在当前的工作文件夹中。该文件包含构造函数和空度量算法方法。对于此示例,请确保您处于可写文件夹中。
classname =“nonvirtualblockcount”;slmetric.metric.createNewMetricClass(名称);
2.要编写度量算法,请打开nonvirtualblockcount.m
文件并将度量添加到文件中。对于本例,文件nonvirtualblockcount_orig.m.
包含创建计数非虚块的指标的逻辑。把这个文件复制到nonvirtualblockcount.m
.
拷贝文件nonvirtualblockcount_orig.m.nonvirtualblockcount.mf
3.在度量存储库中注册新度量。
[id_metric, err_msg] = slmetric.metric.registerMetric(名称);
新的非虚拟块计数度量具有度量IDnonvirtualblockcount
.
要查看公制引擎的可用指标,请使用slmetric.metric.getAvailableMetrics
.
avabablemetricids = slmetric.metric.getavailableMetrics.
4.删除表示Simulink块计数度量的窗口小部件。金宝app此小部件是大小组中的第一个。尺寸组是秒layoutWidget
数组中。
sizeGroup = layoutWidget (2);sizeGroupWidgets = sizeGroup.getWidgets ();sizeGroup.removeWidget (sizeGroupWidgets (1));
5.添加显示非维尺寸块计数度量的窗口小部件。对于自定义窗口小部件,默认可视化类型是单个值。如果要使用不同的可视化类型,请为此指定不同的值VisualizationType
财产。
newWidget = sizeGroup.addWidget (“自定义”,1);newWidget.Title =('非宽恕块计数');newWidget.setMetricIDs (“nonvirtualblockcount”);newWidget.setWidths (slmetric.dashboard.Width.Medium);newWidget.setHeight (70);
6.指定组中是否有行将自定义小部件与其他小部件分隔开来。这些命令指定小部件右侧有一行。
s.top = false;s.bottom = false;s.left = false;s.right = true;newWidget。setSeparators([s, s, s]);
7.要在示例中的此时运行并查看Metrics Dashboard,请在MATLAB命令窗口中输入以下代码行。的保存
命令将API信息序列化为XML文件。的slmetric.config.setActiveConfiguration
和slmetric.dashboard.setActiveConfiguration
命令用于设置激活的配置对象。
保存(metricconfig,“文件名”,“MetricConfig.xml”);保存(dashboardconfig,'文档名称',“DashboardConfig.xml”);slmetric.config.setActiveConfiguration (fullfile (pwd,“MetricConfig.xml”));slmetric.dashboard.setActiveConfiguration (fullfile (pwd,“DashboardConfig.xml”));
8.要打开Metrics Dashboard,请在MATLAB命令窗口中输入以下代码。
metricsdashboardvdp
9.单击所有指标按钮运行所有指标。指标仪表板显示非维块块计数度量而不是Simulink块计数度量的结果。金宝app
10.关闭Metrics Dashboard。
对于非虚拟块计数和MISRA度量,指定度量阈值。通过指定这些值,您可以按如下方式对度量数据进行分类,从而访问模型的质量:
兼容-在可接受范围内的度量数据。
警告-需要审查的度量数据。
非符合性 - 要求您修改模型的公制数据。
1.进入slmetric.config.ThresholdConfiguration.
对象在slmetric.config.configuration.
对象metricconfig
.创建相应的slmetric.config.ThresholdConfiguration.
对象(TC.
)。
TC = GetthresholdConfigurations(MetricConfig);
2.添加两个slmetric.config.threshold.
对象TC.
.每个slmetric.config.threshold.
对象包含默认值slmetric.config.Classification
符合符合的对象。指定符合标准范围。
T1 = addThreshold(TC, misraIssuesMetricID,'聚合value');c = getClassifications(t1);C.Range.Start =无穷;c.range.end = 0;C.Range.IncludeStart = 0;C.Range.IncludeEnd = 1;T2 = AddThreshold(TC,MISRACOMPLISCEMETRICID,'聚合value');C = getClassifications (T2);C.Range.Start = 1;C.Range.End =正;C.Range.IncludeStart = 1;C.Range.IncludeEnd = 0;
3.为每一个slmetric.config.threshold.
对象,指定警告范围。
C = addClassification (T1,'警告');c.range.start = 0;C.Range.End =正;C.Range.IncludeStart = 0;C.Range.IncludeEnd = 1;c = AddClassification(T2,'警告');C.Range.Start =无穷;C.Range.End = 1;C.Range.IncludeStart = 0;C.Range.IncludeEnd = 0;
这些命令指定,如果MISRA检查有问题,则模型状态为警告。如果没有问题,则模型状态是兼容的。
4.添加一个第三slmetric.config.threshold.
反对TC.
.为此指定符合、警告和不符合的范围slmetric.config.threshold.
目的。
T3 = addThreshold (TC),“nonvirtualblockcount”,'聚合value');c = getClassifications(t3);C.Range.Start =无穷;c.range.end = 20;C.Range.IncludeStart = 1;C.Range.IncludeEnd = 1;C = AddClassification(T3,'警告');c.range.start = 20;c.range.end = 30;C.Range.IncludeStart = 0;C.Range.IncludeEnd = 1;C = AddClassification(T3,“不合格”);C.Range.Start = 30;C.Range.End =正;C.Range.IncludeStart = 0;C.Range.IncludeEnd = 1;
这些命令指定符合的范围小于或等于20。警告范围从20到30,但不包括30。不符合范围大于30。
5.保存配置对象。这些命令将API信息序列化为XML文件。
保存(metricconfig,“文件名”,“MetricConfig.xml”);保存(dashboardconfig,'文档名称',“DashboardConfig.xml”);
6.设置活动配置。
slmetric.config.setActiveConfiguration (fullfile (pwd,“MetricConfig.xml”));slmetric.dashboard.setActiveConfiguration (fullfile (pwd,“DashboardConfig.xml”));
7.对于您的模型,打开Metrics Dashboard。
metricsdashboardvdp
对于MISRA检查合规问题,规格为黄色,因为86.1%的支票通过。任何小于100%的百分比是一个警告。条形图还显示出黄色,因为该模型包含三个MISRA检查问题。任何大于零的数字都是警告。
的Nonvirtual块计数窗口小部件在符合标准范围内,因为有11个非横向块。
8.要重置配置并注销度量,请在MATLAB命令窗口中输入以下代码行。
slmetric.metric.unregisterMetric(名称);slmetric.dashboard.setActiveConfiguration ('');slmetric.config.setActiveConfiguration('');
slmetric.dashboard.Configuration
|slmetric.config.configuration.