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

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

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

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

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

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

Используйте панель Metrics Dashboard и метрические API, чтобы получить податливость и выдать метрические данные в строении Model Advisor или в существующей группе проверок, такой как проверки MISRA. Чтобы настроить собственное строение Model Advisor, смотрите Использовать Model Advisor Configuration Editor для настройки Model Advisor. После настройки строения Model Advisor выполните следующие шаги, чтобы задать группы проверок, для которых вы хотите получить податливость, и выдать метрические данные:

1. Чтобы открыть модель, в командной строке MATLAB введите эту команду:

sf_car

2. Откройте строение по умолчанию (то есть ту, которая поставляется с инструментальной панелью Metrics). Добавьте соответствующее slmetric.config.Configuration объект в базовом рабочем пространстве.

metricconfig=slmetric.config.Configuration.openDefaultConfiguration(); 

3. Создайте массив ячеек, состоящий из идентификаторов проверяемых групп, соответствующих этим проверочным группам. Получите идентификатор Check Group путем открытия Model Advisor Configuration Editor и выбора папки, содержащей группу проверок. Папка содержит параметр Check Group ID.

values = {'maab', 'hisl_do178', '_SYSTEM_By Task_misra_c'};

Этот массив ячеек задает группы проверки MAAB, High-Integrity и MISRA. Значения maab и hisl_do178 соответствуют подмножеству проверок MAAB и High-Integrity System. Чтобы включить все проверки, задайте значение параметра Check Group ID из Model Advisor Configuration Editor.

4. Чтобы задать строение, передайте values массив ячеек в setMetricFamilyParameterValues способ. The 'ModelAdvisorStandard' string является стандартной строкой, которую вы должны предоставить setMetricFamilyParameterValues способ.

setMetricFamilyParameterValues(metricconfig,'ModelAdvisorStandard', values);

5. Откройте строение по умолчанию для размещения инструментальной панели Metrics (то есть той, которая поставляется с инструментальной панелью Metrics).

dashboardconfig = slmetric.dashboard.Configuration.openDefaultConfiguration();

6. Получите slmetric.dashboard.Layoutобъект из slmetric.dashboard.Configuration объект.

layout = getDashboardLayout(dashboardconfig);

7. Получите объекты виджета, которые находятся в объекте размещения.

layoutWidget = getWidgets(layout);

8. The slmetric.dashboard.Layout объект содержит следующие объекты:

  • Система координат slmetric.dashboard.Container объект, который содержит slmetrics.dashboard.Widget объект типа SystemInfo. Красный номер один в схеме ниже указывает на SystemInfo виджет.

  • Система координат slmetric.dashboard.Groupобъект с заголовком SIZE.

  • Система координат slmetrics.dashboard.Group объект, который имеет заголовок РУКОВОДСТВО ПО МОДЕЛИРОВАНИЮ COMPLIANCE.

  • Система координат slmetrics.dashboard.Group объект с заголовком ARCHITECTURE.

В схеме красные числа 1, 2, 3 и 4 указывают их порядок в layoutWidget массив. Получите группу податливости из размещения.

complianceGroup = layoutWidget(3);

9. Группа податливости руководства по моделированию содержит два контейнера. Контейнер верхней части содержит податливость High Integrity и 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. Виджет столбчатой диаграммы визуализирует группы проверки High Integrity и MAAB. Наведите этот виджет на группы проверки MISRA и MAAB.

setMetricIDs(complianceContainerWidgets(3),...
({'mathworks.metrics.ModelAdvisorCheckIssues._SYSTEM_By Task_misra_c',...
'mathworks.metrics.ModelAdvisorCheckIssues.maab'}));
complianceContainerWidgets(3).Labels = {'MISRA', 'MAAB'};

12. Чтобы запустить инструментальную панель Metrics в этой точке примера, раскомментируйте следующие строки кода. Команды save сериализуют информацию API в XML- файлы. The 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. Чтобы запустить инструментальную панель Metrics в этой точке примера, раскомментируйте следующие строки кода. Команды save сериализуют информацию API в XML- файлы. The 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. Для вашей модели откройте инструментальную панель Metrics.

metricsdashboard sf_car

По вопросам податливости проверки MISRA, манометр желтый, потому что 76% проверки пройдены. Любой процент менее 100% является предупреждением. Столбчатая диаграмма также отображает желтый цвет, поскольку модель содержит три проблемы с проверкой MISRA. Любое число, больше нуля, является предупреждением.

Виджет «Количество невиртуальных блоков» находится в допустимой области значений, поскольку существует 15 невиртуальных блоков.

8. Чтобы сбросить строение и отменить регистрацию метрики, раскомментируйте и выполните эти команды:

% slmetric.metric.unregisterMetric(className); 
% slmetric.dashboard.setActiveConfiguration(''); 
% slmetric.config.setActiveConfiguration('');

См. также

|

Похожие темы