Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

プログラムによるモデル メトリクスの収集

モデル メトリクス API を使用して、モデルのアーキテクチャ、複雑度、可読性を評価するのに役立つモデル メトリクスをプログラムによって収集できます。これらのメトリクスの結果は、業界標準やガイドラインに準拠しているかどうかを検証するのに役立ちます。メモ: メトリクス ダッシュボードは将来のリリースで削除される予定です。サイズ、アーキテクチャ、複雑度のメトリクスについては、代わりにモデル保守性ダッシュボードを使用します。詳細については、モデル保守性ダッシュボードを使用して設計の複雑度を監視するを参照してください。

この例では、モデル メトリクス API を使用して、モデルのサブシステムおよびブロックのカウントのメトリクスをプログラムにより収集する方法を説明します。モデルのメトリクスの収集後、結果にアクセスしてファイルにエクスポートできます。

モデル例

vdp モデルを開きます。

model = 'vdp';
open_system(model);

メトリクスの収集

モデルのメトリクス データを収集するには、slmetric.Engine オブジェクトを作成して execute を呼び出します。

metric_engine = slmetric.Engine();
setAnalysisRoot(metric_engine,'Root','vdp','RootType','Model');
execute(metric_engine);

結果へのアクセス

getMetrics メソッドを使用して、収集するメトリクスを指定します。この例では、vdp モデルのブロックおよびサブシステムのカウントのメトリクスを指定します。getMetrics は、slmetric.metric.ResultCollection オブジェクトの配列を返します。

res_col = getMetrics(metric_engine,{'mathworks.metrics.SimulinkBlockCount',...
'mathworks.metrics.SubSystemCount'});

結果の保存と表示

metricData という cell 配列を作成し、メトリクス結果の MetricID プロパティ、ComponentPath プロパティおよび Value プロパティを格納します。MetricID プロパティはメトリクスの識別子です。ComponentPath プロパティはメトリクスが計算されたコンポーネントへのパスです。また、Value プロパティはメトリクス値です。結果を表示するループを記述します。

metricData ={'MetricID','ComponentPath','Value'};
cnt = 1;
for n=1:length(res_col)
    if res_col(n).Status == 0
        results = res_col(n).Results;

        for m=1:length(results)
            disp(['MetricID: ',results(m).MetricID]);
            disp(['  ComponentPath: ',results(m).ComponentPath]);
            disp(['  Value: ',num2str(results(m).Value)]);
            metricData{cnt+1,1} = results(m).MetricID;
            metricData{cnt+1,2} = results(m).ComponentPath;
            metricData{cnt+1,3} = results(m).Value;
            cnt = cnt + 1;
        end
    else
        disp(['No results for:',res_col(n).MetricID]);
    end
    disp(' ');
end
MetricID: mathworks.metrics.SimulinkBlockCount
  ComponentPath: vdp
  Value: 12
 
MetricID: mathworks.metrics.SubSystemCount
  ComponentPath: vdp
  Value: 0
 

結果のエクスポート

MetricIDComponentPath および Value をスプレッドシートにエクスポートするには、writetable を使用して metricData の内容を MySpreadsheet.xlsx に書き込みます。

filename = 'MySpreadsheet.xlsx';
T=table(metricData);
writetable(T,filename);

メトリクス結果を XML ファイルにエクスポートするには、exportMetrics メソッドを使用します。各メトリクス結果について、XML ファイルには ComponentIDComponentPathMetricIDValueAggregatedValue および Measure が含まれます。

filename='MyMetricResults.xml';
exportMetrics(metric_engine,filename)

vdp モデルを閉じます。

bdclose(model);

制限

メトリクス データを収集するときに、そのデータはシミュレーション キャッシュ フォルダー内のデータベース ファイル Metrics.db に格納されます。あるプラットフォームのメトリクス データを収集し、データベース ファイルを別のプラットフォームに移行し、引き続きそのデータベース ファイルに追加のメトリクス データを収集することはできません。たとえば、Windows マシンでメトリクス データを収集してからデータベース ファイルを Linux マシンに移行する場合、追加のメトリクス データをそのデータベース ファイルに収集および格納することはできません。ただし、そのデータをメトリクス ダッシュボードに表示することはできます。

参考

| |

関連するトピック