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