Настройте панель управления метриками с помощью интерфейса программирования метрики модели. Настройка инструментальной панели расширяет вашу способность использовать метрики модели, чтобы оценить, что ваша модель и код соответствуют требованиям к размеру, сложности и читаемости. Можно выполнить следующие индивидуальные настройки панели управления метриками:
Сконфигурируйте податливость метрики, чтобы получить податливость и выдать метрические данные на вашем строении 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('');
slmetric.config.Configuration
| slmetric.dashboard.Configuration