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