Создание slmetric.config.Configuration объект.
CONF = slmetric.config.Configuration.new('name', 'Config');Получить значение по умолчанию slmetric.config.ThresholdConfiguration объект в CONF.
TC = getThresholdConfigurations(CONF);
Добавить slmetric.config.Threshold объект для slmetric.config.ThresholdConfiguration объект. Это пороговое значение для mathworks.metrics.SimulinkBlockCount метрические и Value имущества slmetric.metric.Results объект.
T = addThreshold(TC, 'mathworks.metrics.SimulinkBlockCount', 'Value');
Один slmetric.config.Threshold объект содержит значение по умолчанию slmetric.config.Classification объект, который соответствует Compliant категория. Используйте slmetric.metric.MetricRange для указания метрических значений для Compliant, NonCompliant, и Warning метрические диапазоны.
C = getClassifications(T); % default classification is Compliant
C.Range.Start = 5;
C.Range.IncludeStart = 0;
C.Range.End = 100;
C.Range.IncludeEnd = 0;
C = addClassification(T,'Warning');
C.Range.Start = -inf;
C.Range.IncludeStart = 0;
C.Range.End = 5;
C.Range.IncludeEnd = 1
C = addClassification(T,'NonCompliant');
C.Range.Start = 100;
C.Range.IncludeStart = 1;
C.Range.End = inf;
C.Range.IncludeEnd = 0;
Используйте validate для проверки диапазонов метрик, соответствующих пороговым значениям в slmetric.config.ThresholdConfiguration объект.
Если диапазоны недопустимы, появится сообщение об ошибке. В этом примере допустимы диапазоны.
Сохраните изменения в файле конфигурации. Используйте slmetric.config.setActiveConfiguration для активации этой конфигурации для использования метрического механизма.
configName = 'Config.xml';
save(CONF,'FileName', configName);
slmetric.config.setActiveConfiguration(fullfile(pwd, configName));
Создание slmetric.Engine , задайте корень в модели для анализа и соберите данные для mathworks.metrics.SimulinkBlockCount метрика.
metric_engine = slmetric.Engine();
setAnalysisRoot(metric_engine, 'Root', 'sldemo_mdlref_basic');
execute(metric_engine, 'mathworks.metrics.SimulinkBlockCount');
Получение данных метрики модели, возвращающих массив slmetric.metric.ResultCollection объекты, res_col.
res_col = getMetrics(metric_engine, 'mathworks.metrics.SimulinkBlockCount');
Отображение результатов для mathworks.metrics.SimulinkBlockCount метрика.
for n=1:length(res_col)
if res_col(n).Status == 0
result = res_col(n).Results;
for m=1:length(result)
disp(['MetricID: ',result(m).MetricID]);
disp([' ComponentPath: ', result(m).ComponentPath]);
disp([' Value: ', num2str(result(m).Value)]);
disp([' Classifications: ', result(m).Classifications.Classification.Category]);
disp([' Measures: ', num2str(result(m).Measures)]);
disp([' AggregatedMeasures: ', num2str(result(m).AggregatedMeasures)]);
end
else
disp(['No results for:', result(n).MetricID]);
end
disp(' ');
endДля ComponentPath: sldemo_mdlref_basic и ComponentPath: sldemo_mdlref_counter, результаты Compliant из-за значений 12 и 18соответственно. Для ComponentPath: sldemo_mdlref_basic/More Info, результаты подпадают под Warning из-за категории 0 значение.