Настройте панель мониторинга метрик с помощью интерфейса программирования метрик модели. Настройка панели мониторинга расширяет возможности использования метрик модели для оценки соответствия модели и кода требованиям к размеру, сложности и читаемости. Можно выполнить следующие настройки панели мониторинга метрик:
Настройте метрики соответствия, чтобы получить данные соответствия и выдать метрики в конфигурации Model Advisor.
Настройте макет панели управления, добавив пользовательские метрики, удалив виджеты и настроив существующие виджеты.
Классифицируйте метрические данные как совместимые, предупреждающие и несоответствующие, указывая пороговые значения метрики.
Используйте инструментальную панель Metrics Dashboard и API metric для получения соответствия и выдачи метрических данных в конфигурации Model Advisor или в существующей группе проверок, такой как проверки MISRA. Чтобы настроить собственную конфигурацию Model Advisor, см. раздел Использование редактора конфигурации Model Advisor для настройки Model Advisor. После настройки конфигурации Model Advisor выполните следующие действия, чтобы указать группы проверок, для которых требуется получить соответствие, и выдать метрические данные.
1. Для открытия модели в командной строке MATLAB введите следующую команду:
sf_car
2. Откройте конфигурацию по умолчанию (то есть конфигурацию, поставляемую с панелью управления метриками). Добавление соответствующего slmetric.config.Configuration объект в базовое рабочее пространство.
metricconfig=slmetric.config.Configuration.openDefaultConfiguration();
3. Создайте массив ячеек, состоящий из идентификаторов контрольных групп, соответствующих этим контрольным группам. Чтобы получить идентификатор группы проверок, откройте редактор конфигурации Model Advisor и выберите папку, содержащую группу проверок. Папка содержит параметр Check Group ID.
values = {'maab', 'hisl_do178', '_SYSTEM_By Task_misra_c'};Этот массив ячеек определяет группы проверки MAAB, High-Integrity и MISRA. Ценности maab и hisl_do178 соответствуют подмножеству проверок MAAB и системы высокой целостности. Чтобы включить все проверки, укажите значение параметра Идентификатор группы проверки (Check Group ID) в редакторе конфигурации Model Advisor.
4. Чтобы настроить конфигурацию, передайте values в массив ячеек setMetricFamilyParameterValues способ. 'ModelAdvisorStandard' string является стандартной строкой, которую необходимо предоставитьsetMetricFamilyParameterValues способ.
setMetricFamilyParameterValues(metricconfig,'ModelAdvisorStandard', values);5. Откройте конфигурацию по умолчанию для компоновки панели мониторинга показателей (то есть конфигурацию, поставляемую с панелью мониторинга показателей).
dashboardconfig = slmetric.dashboard.Configuration.openDefaultConfiguration();
6. Получить slmetric.dashboard.Layoutобъект из slmetric.dashboard.Configuration объект.
layout = getDashboardLayout(dashboardconfig);
7. Получение объектов виджета, находящихся в объекте компоновки.
layoutWidget = getWidgets(layout);
8. slmetric.dashboard.Layout объект содержит следующие объекты:
Один slmetric.dashboard.Container объект, содержащий slmetrics.dashboard.Widget объект типа SystemInfo. Красный номер один на диаграмме ниже указывает SystemInfo виджет.
Один slmetric.dashboard.Groupобъект с заголовком SIZE.
Один slmetrics.dashboard.Group объект с заголовком MODELING GUIDELINES COMPLIANCE
Один slmetrics.dashboard.Group объект с названием ARCHITECTURE.
На диаграмме красные числа 1, 2, 3 и 4 указывают их порядок в layoutWidget массив. Получение группы соответствия из формата.
complianceGroup = layoutWidget(3);

9. Группа соответствия рекомендациям по моделированию содержит два контейнера. Верхний контейнер содержит виджеты высокой целостности и соответствия MAAB и проверки проблем. Красные цифры 3.1.1, 3.1.2 и 3.1.3 указывают порядок расположения трех виджетов в первом контейнере. Второй контейнер содержит виджеты предупреждений анализатора кода и диагностических предупреждений.
Удалите виджет соответствия требованиям High Integrity.
complianceContainers = getWidgets(complianceGroup); complianceContainerWidgets = getWidgets(complianceContainers(1)); complianceContainers(1).removeWidget(complianceContainerWidgets(1));
10. Создайте пользовательский виджет для визуализации метрик проблем проверки MISRA.
misraWidget = complianceContainers(1).addWidget('Custom', 1); misraWidget.Title=('MISRA'); misraWidget.VisualizationType = 'RadialGauge'; misraWidget.setMetricIDs('mathworks.metrics.ModelAdvisorCheckCompliance._SYSTEM_By Task_misra_c'); misraWidget.setWidths(slmetric.dashboard.Width.Medium);
11. Виджет штриховой диаграммы отображает группы проверки высокой целостности и MAAB. Поместите этот виджет в группы проверки MISRA и MAAB.
setMetricIDs(complianceContainerWidgets(3),... ({'mathworks.metrics.ModelAdvisorCheckIssues._SYSTEM_By Task_misra_c',... 'mathworks.metrics.ModelAdvisorCheckIssues.maab'})); complianceContainerWidgets(3).Labels = {'MISRA', 'MAAB'};
12. Чтобы запустить панель мониторинга метрик на данном этапе примера, раскомментируйте следующие строки кода. Команды сохранения сериализируют информацию API в XML-файлы. slmetric.config.setActiveConfiguration и slmetric.dashboard.setActiveConfiguration команды задают активные объекты конфигурации.
% save(metricconfig,'FileName','MetricConfig.xml'); % save(dashboardconfig,'Filename','DashboardConfig.xml'); % slmetric.config.setActiveConfiguration(fullfile(pwd,'MetricConfig.xml')); % slmetric.dashboard.setActiveConfiguration(fullfile(pwd,'DashboardConfig.xml'));
14. Чтобы открыть панель мониторинга метрик, раскомментируйте этот код.
% metricsdashboard sf_car15. Нажмите кнопку «Все метрики» и запустите все метрики. На панели управления метриками отображаются результаты проверок MISRA вместо проверок высокой целостности.

16. Закройте панель мониторинга метрик.
Создайте пользовательскую метрику, которая будет подсчитывать невиртуальные блоки. Чтобы отобразить эту метрику на панели мониторинга метрик, укажите виджет. Добавьте его в группу размеров.
1. Использование createNewMetricClass функция, создайте новый метрический класс с именем nonvirtualblockcount. Функция создает файл, nonvirtualblockcount.m, в текущей рабочей папке. Файл содержит конструктор и метод алгоритма пустой метрики. В этом примере убедитесь, что вы находитесь в папке с возможностью записи.
className = 'nonvirtualblockcount';
slmetric.metric.createNewMetricClass(className);2. Чтобы записать алгоритм метрики, откройте nonvirtualblockcount.m и добавьте метрику в файл. В этом примере файл nonvirtualblockcount_orig.m содержит логику создания метрики, которая подсчитывает невиртуальные блоки. Скопировать этот файл в nonvirtualblockcount.m.
copyfile nonvirtualblockcount_orig.m nonvirtualblockcount.m f
3. Зарегистрируйте новую метрику в репозитории метрик.
[id_metric,err_msg] = slmetric.metric.registerMetric(className);
4. Удалите виджет, представляющий метрику количества блоков Simulink. Этот виджет является первым в группе размеров. Группа размеров является второй в layoutWidget массив.
sizeGroup = layoutWidget(2); sizeGroupWidgets = sizeGroup.getWidgets(); sizeGroup.removeWidget(sizeGroupWidgets(1));
5. Добавьте виджет, отображающий метрику количества невоиртуальных блоков. Для пользовательских виджетов типом визуализации по умолчанию является одно значение. Если требуется использовать другой тип визуализации, укажите другое значение для VisualizationType собственность.
newWidget = sizeGroup.addWidget('Custom', 1); newWidget.Title=('Nonvirtual Block Count'); 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, s]);
7. Чтобы запустить панель мониторинга метрик на данном этапе примера, раскомментируйте следующие строки кода. Команды сохранения сериализируют информацию API в XML-файлы. slmetric.config.setActiveConfiguration и slmetric.dashboard.setActiveConfiguration команды задают активные объекты конфигурации.
% save(metricconfig,'FileName','MetricConfig.xml'); % save(dashboardconfig,'Filename','DashboardConfig.xml'); % slmetric.config.setActiveConfiguration(fullfile(pwd,'MetricConfig.xml')); % slmetric.dashboard.setActiveConfiguration(fullfile(pwd,'DashboardConfig.xml'));
8. Чтобы открыть панель мониторинга метрик, раскомментируйте этот код.
% metricsdashboard sf_car9. Нажмите кнопку «Все метрики» и запустите все метрики. На инструментальной панели Metrics отображаются результаты для невиртуальной метрики количества блоков вместо метрики количества блоков Simulink.

10. Закройте панель мониторинга метрик.
Для невиртуального счетчика блоков и метрик 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,'mathworks.metrics.ModelAdvisorCheckIssues._SYSTEM_By Task_misra_c',... 'AggregatedValue'); C=getClassifications(T1); C.Range.Start=-inf; C.Range.End=0; C.Range.IncludeStart=0; C.Range.IncludeEnd=1; T2=addThreshold(TC,'mathworks.metrics.ModelAdvisorCheckCompliance._SYSTEM_By Task_misra_c',... 'AggregatedValue'); C=getClassifications(T2); C.Range.Start=1; C.Range.End=inf; C.Range.IncludeStart=1; C.Range.IncludeEnd=0;
3. Для каждого slmetric.config.Threshold укажите диапазоны предупреждений.
C=addClassification(T1,'Warning'); C.Range.Start=0; C.Range.End=inf; C.Range.IncludeStart=0; C.Range.IncludeEnd=1; C=addClassification(T2,'Warning'); C.Range.Start=-inf; 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', 'AggregatedValue'); C=getClassifications(T3); C.Range.Start=-inf; C.Range.End=20; C.Range.IncludeStart=1; C.Range.IncludeEnd=1; C=addClassification(T3, 'Warning'); C.Range.Start=20; C.Range.End=30; C.Range.IncludeStart=0; C.Range.IncludeEnd=1; C=addClassification(T3, 'NonCompliant'); C.Range.Start=30; C.Range.End=inf; C.Range.IncludeStart=0; C.Range.IncludeEnd=1;
Эти команды указывают, что диапазон соответствия меньше или равен 20. Диапазон предупреждений от 20 до, но не включая 30. Несоответствующий диапазон превышает 30.
5. Сохраните объекты конфигурации. Эти команды сериализируют информацию API в XML-файлы.
save(metricconfig,'FileName','MetricConfig.xml'); save(dashboardconfig,'Filename','DashboardConfig.xml');
6. Установите активные конфигурации.
slmetric.config.setActiveConfiguration(fullfile(pwd, 'MetricConfig.xml')); slmetric.dashboard.setActiveConfiguration(fullfile(pwd, 'DashboardConfig.xml'));
7. Для модели откройте панель мониторинга метрик.
metricsdashboard sf_car
Для вопросов проверки соответствия MISRA индикатор имеет желтый цвет, так как 76% проверок проходят. Любой процент менее 100% является предупреждением. На гистограмме также отображается желтый цвет, поскольку модель содержит три ошибки проверки MISRA. Любое число больше нуля является предупреждением.
Графический элемент Nonvirtual Block Count находится в совместимом диапазоне, так как существует 15 невиртуальных блоков.
8. Чтобы сбросить конфигурацию и отменить регистрацию метрики, раскомментируйте и выполните следующие команды:
% slmetric.metric.unregisterMetric(className); % slmetric.dashboard.setActiveConfiguration(''); % slmetric.config.setActiveConfiguration('');
slmetric.config.Configuration | slmetric.dashboard.Configuration