Создайте 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 значение.