Настройте Метрическую Инструментальную панель при помощи метрического интерфейса программирования модели. Настройка инструментальной панели расширяет вашу способность использовать метрики модели, чтобы оценить ту вашу модель, и код выполняют размер, сложность и требования удобочитаемости. Можно выполнить эти Метрические индивидуальные настройки Инструментальной панели:
Сконфигурируйте метрики податливости, чтобы получить податливость, и выпускает метрические данные по вашей настройке Model Advisor.
Настройте размещение инструментальной панели путем добавления пользовательских метрик, удаления виджетов и конфигурирования существующих виджетов.
Категоризируйте метрические данные как совместимые, предупреждение, и несовместимый путем определения метрических пороговых значений.
Используйте Метрическую Инструментальную панель и метрические API, чтобы получить податливость, и выпускает метрические данные по вашей настройке Model Advisor или по существующей группе проверки, такой как проверки MISRA. Чтобы настроить вашу собственную настройку Model Advisor, смотрите Использование Model Advisor Configuration Editor, чтобы Настроить Model Advisor. После того, как вы настроили свою настройку Model Advisor, выполните эти шаги, чтобы задать группы проверки, для которых вы хотите получить податливость, и выпускает метрические данные:
1. Чтобы открыть модель, в командной строке MATLAB, вводят эту команду:
sf_car
2. Откройте настройку по умолчанию (то есть, тот, который поставляется с Метрической Инструментальной панелью). Добавьте соответствующий slmetric.config.Configuration
возразите против базового рабочего пространства.
metricconfig=slmetric.config.Configuration.openDefaultConfiguration();
3. Создайте массив ячеек, состоящий из идентификаторов Check Group, которые соответствуют тем группам проверки. Получите ID Check Group путем открытия Model Advisor Configuration Editor и выбора папки, которая содержит группу проверок. Папка содержит параметр ID Check Group.
values = {'maab', 'hisl_do178', '_SYSTEM_By Task_misra_c'};
Этот массив ячеек задает MAAB, Высокую Целостность и группы проверки MISRA. Значения maab
и hisl_do178
соответствуйте подмножеству MAAB и Системных проверок Высокой Целостности. Чтобы включать все проверки, задайте значение для параметра ID Check Group от Model Advisor Configuration Editor.
4. Чтобы установить настройку, передайте values
массив ячеек в setMetricFamilyParameterValues
метод. 'ModelAdvisorStandard'
строка является стандартной строкой, которую необходимо предоставить к thesetMetricFamilyParameterValues
метод.
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
объект, который имеет ПОДАТЛИВОСТЬ РУКОВОДСТВА ПО МОДЕЛИРОВАНИЮ заголовка.
slmetrics.dashboard.Group
объект, который имеет заголовок АРХИТЕКТУРА.
В схеме красные числа 1, 2, 3, и 4 указывают на свой порядок в layoutWidget
массив. Получите группу податливости из размещения.
complianceGroup = layoutWidget(3);
9. Группа податливости руководства по моделированию содержит два контейнера. Главный контейнер содержит Высокую Целостность и податливость MAAB и виджеты проблем проверки. Красные числа 3.1.1, 3.1.2, и 3.1.3 указывают на порядок этих трех виджетов в первом контейнере. Второй контейнер содержит Предупреждения Анализатора кода и Диагностические виджеты Предупреждений.
Удалите Высокий виджет податливости Целостности.
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_car
15. Нажмите кнопку All Metrics и запустите все метрики. Метрическая Инструментальная панель отображает результаты для проверок 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_car
9. Нажмите кнопку All 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. Любой номер, больше, чем нуль, является предупреждением.
Невиртуальный виджет количества Блока находится в совместимой области значений, потому что существует 15 невиртуальных блоков.
8. Чтобы сбросить настройку и не указать метрику, не прокомментируйте и выполните эти команды:
% slmetric.metric.unregisterMetric(className); % slmetric.dashboard.setActiveConfiguration(''); % slmetric.config.setActiveConfiguration('');
slmetric.config.Configuration
| slmetric.dashboard.Configuration