Настройте метрическое размещение инструментальной панели и функциональность

Настройте Метрическую Инструментальную панель при помощи метрического интерфейса программирования модели. Настройка инструментальной панели расширяет вашу способность использовать метрики модели, чтобы оценить ту вашу модель, и код выполняют размер, сложность и требования удобочитаемости. Можно выполнить эти Метрические индивидуальные настройки Инструментальной панели:

  • Сконфигурируйте метрики податливости, чтобы получить податливость, и выпускает метрические данные по вашей настройке Model Advisor.

  • Настройте размещение инструментальной панели путем добавления пользовательских метрик, удаления виджетов и конфигурирования существующих виджетов.

  • Категоризируйте метрические данные как совместимые, предупреждение, и несовместимый путем определения метрических пороговых значений.

Сконфигурируйте метрики податливости

Используйте Метрическую Инструментальную панель и метрические API, чтобы получить податливость, и выпускает метрические данные по вашей настройке Model Advisor или по существующей группе проверки, такой как проверки MISRA. Чтобы настроить вашу собственную настройку Model Advisor, смотрите, Организуют Проверки и Папки Используя Model Advisor Configuration Editor. После того, как вы настроили свою настройку 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 объект, который имеет заголовок ARCHITECTURE.

В схеме красные числа 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('');

Смотрите также

|

Похожие темы