Создайте объект 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.