Соберите метрики модели программно

Можно использовать метрический API модели, чтобы программно собрать метрики модели, которые помогают вам оценить архитектуру, сложность и удобочитаемость вашей модели. Результаты этих метрик могут помочь вам проверить податливость с промышленными стандартами и инструкциями.

В этом примере показано, как использовать метрический API модели, чтобы программно собрать подсистему, и блок считают метрики для модели. После собирающихся метрик для модели можно получить доступ к результатам и экспортировать их в файл.

Модель в качестве примера

Откройте vdp модель.

model = 'vdp';
open_system(model);

Соберите метрики

Чтобы собрать метрические данные по модели, создайте slmetric.Engine объект и вызов execute.

metric_engine = slmetric.Engine();
setAnalysisRoot(metric_engine,'Root','vdp','RootType','Model');
execute(metric_engine);
Updating Model Advisor cache...
Model Advisor cache updated. For new customizations, to update the cache, use the Advisor.Manager.refresh_customizations method.

Доступ к результатам

Используйте getMetrics метод, чтобы задать метрики вы хотите собраться. В данном примере задайте количество блока и метрики количества подсистемы для vdp модель. getMetrics возвращает массив slmetric.metric.ResultCollection объекты.

res_col = getMetrics(metric_engine,{'mathworks.metrics.SimulinkBlockCount',...
'mathworks.metrics.SubSystemCount'});

Сохраните и отобразите результаты

Создайте массив ячеек под названием metricData сохранить MetricID, ComponentPath, и Value свойства для метрических результатов. MetricID свойство является идентификатором для метрики, ComponentPath свойство является путем к компоненту, для которого метрика вычисляется, и Value свойство является метрическим значением. Запишите цикл, чтобы отобразить результаты.

metricData ={'MetricID','ComponentPath','Value'};
cnt = 1;
for n=1:length(res_col)
    if res_col(n).Status == 0
        results = res_col(n).Results;

        for m=1:length(results)
            disp(['MetricID: ',results(m).MetricID]);
            disp(['  ComponentPath: ',results(m).ComponentPath]);
            disp(['  Value: ',num2str(results(m).Value)]);
            metricData{cnt+1,1} = results(m).MetricID;
            metricData{cnt+1,2} = results(m).ComponentPath;
            metricData{cnt+1,3} = results(m).Value;
            cnt = cnt + 1;
        end
    else
        disp(['No results for:',res_col(n).MetricID]);
    end
    disp(' ');
end
MetricID: mathworks.metrics.SimulinkBlockCount
  ComponentPath: vdp
  Value: 13
MetricID: mathworks.metrics.SimulinkBlockCount
  ComponentPath: vdp/More Info
  Value: 1
MetricID: mathworks.metrics.SimulinkBlockCount
  ComponentPath: vdp/More Info/Model Info
  Value: 1
MetricID: mathworks.metrics.SimulinkBlockCount
  ComponentPath: vdp/More Info/Model Info/EmptySubsystem
  Value: 0
 
MetricID: mathworks.metrics.SubSystemCount
  ComponentPath: vdp
  Value: 1
MetricID: mathworks.metrics.SubSystemCount
  ComponentPath: vdp/More Info
  Value: 0
MetricID: mathworks.metrics.SubSystemCount
  ComponentPath: vdp/More Info/Model Info
  Value: 1
MetricID: mathworks.metrics.SubSystemCount
  ComponentPath: vdp/More Info/Model Info/EmptySubsystem
  Value: 0
 

Экспортируйте результаты

Экспортировать MetricID, ComponentPath, и Value к электронной таблице используйте writetable записать содержимое metricData к MySpreadsheet.xlsx.

filename = 'MySpreadsheet.xlsx';
T=table(metricData);
writetable(T,filename);

Чтобы экспортировать метрические результаты в XML-файл, используйте exportMetrics метод. Для каждого метрического результата XML-файл включает ComponentID, ComponentPath, MetricIDЗначение, AggregatedValue, и Measure.

filename='MyMetricResults.xml';
exportMetrics(metric_engine,filename)

Закройте vdp модель.

bdclose(model);

Ограничения

Когда вы собираете метрические данные, они хранятся в файле базы данных, Metrics.db, в папке кэша симуляции. Вы не можете собрать метрические данные по одной платформе, переместить файл базы данных в другую платформу, и затем продолжить собирать дополнительные метрические данные в том файле базы данных. Например, если вы собираете метрические данные по машине Windows и затем перемещаете файл базы данных в машину Linux, вы не можете собрать и хранить дополнительные метрические данные в том файле базы данных. Однако вы можете просмотреть те данные в Метрической Инструментальной панели.

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

| |

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте