Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

メトリクス ダッシュボードのレイアウトおよび機能のカスタマイズ

モデル メトリクス プログラミング インターフェイスを使用してメトリクス ダッシュボードをカスタマイズします。ダッシュボードをカスタマイズすることで、モデル メトリクスを使用して、サイズ、複雑度、可読性の要件にモデルとコードが準拠しているかどうかを評価できるようになります。次のメトリクス ダッシュボードのカスタマイズを実行できます。

  • モデル アドバイザー設定で、準拠および問題のメトリクス データを取得するための準拠メトリクスを設定します。

  • カスタム メトリクスの追加、ウィジェットの削除、既存のウィジェットの設定を行うことで、ダッシュボードのレイアウトをカスタマイズします。

  • メトリクスのしきい値を指定して、メトリクス データを準拠、警告、および非準拠に分類します。

準拠メトリクスの設定

モデル アドバイザー設定で、または MISRA チェックなどの既存のチェック グループで、メトリクス ダッシュボードおよびメトリクス API を使用して、準拠および問題のメトリクス データを取得します。モデル アドバイザーを独自に設定するには、モデル アドバイザーの設定エディターを使用したモデル アドバイザーのカスタマイズを参照してください。モデル アドバイザーの設定後、次の手順に従って、準拠および問題のメトリクス データを取得するチェック グループを指定します。

1.モデルを開くには、MATLAB コマンド プロンプトで次のコマンドを入力します。

sf_car

2.既定の設定 (メトリクス ダッシュボードの出荷時の設定) を開きます。対応するslmetric.config.Configurationオブジェクトをベース ワークスペースに追加します。

metricconfig=slmetric.config.Configuration.openDefaultConfiguration(); 

3.これらのチェック グループに対応するチェック グループ ID で構成される cell 配列を作成します。モデル アドバイザーの設定エディターを開き、チェック グループが含まれるフォルダーを選択して、チェック グループ ID を取得します。フォルダーには、[チェック グループ ID] パラメーターが含まれています。

values = {'maab', 'hisl_do178', '_SYSTEM_By Task_misra_c'};

この cell 配列は、MAAB、高信頼性、および MISRA の各チェック グループを指定します。maab および hisl_do178 の各値は、MAAB チェックおよび高信頼性システム チェックのサブセットに対応します。すべてのチェックを含めるには、モデル アドバイザーの設定エディターで [チェック グループ ID] パラメーターの値を指定します。

4.コンフィギュレーションを設定するには、cell 配列 valuessetMetricFamilyParameterValues メソッドに渡します。'ModelAdvisorStandard' という文字列は、setMetricFamilyParameterValues メソッドに渡さなければならない標準的な文字列です。

setMetricFamilyParameterValues(metricconfig,'ModelAdvisorStandard', values);

5.メトリクス ダッシュボードのレイアウトの既定の設定 (メトリクス ダッシュボードの出荷時の設定) を開きます。

dashboardconfig = slmetric.dashboard.Configuration.openDefaultConfiguration();

6.slmetric.dashboard.Configurationオブジェクトからslmetric.dashboard.Layoutオブジェクトを取得します。

layout = getDashboardLayout(dashboardconfig);

7.レイアウト オブジェクト内のウィジェット オブジェクトを取得します。

layoutWidget = getWidgets(layout);

8.slmetric.dashboard.Layout オブジェクトには以下のオブジェクトが含まれています。

  • SystemInfo 型の slmetrics.dashboard.Widget オブジェクトをもつslmetric.dashboard.Containerオブジェクト。以下の図で、赤の番号 1 は、SystemInfo ウィジェットを示します。

  • [サイズ] というタイトルをもつslmetric.dashboard.Groupオブジェクト。

  • [モデリング ガイドラインの準拠] というタイトルをもつ slmetrics.dashboard.Group オブジェクト。

  • [アーキテクチャ] というタイトルをもつ slmetrics.dashboard.Group オブジェクト。

図の中で、赤の番号 1、2、3 および 4 は、配列 layoutWidget 内での順序を示します。レイアウトから準拠グループを取得します。

complianceGroup = layoutWidget(3);

9.モデリング ガイドラインの準拠グループには 2 つのコンテナーが含まれています。1 番目のコンテナーには、[高信頼性] および [MAAB] の準拠チェックにおける問題を示すウィジェットが表示されます。赤の番号 3.1.1、3.1.2 および 3.1.3 は、1 番目のコンテナー内の 3 つのウィジェットの順序を示します。2 番目のコンテナーには、[コード アナライザーの警告] ウィジェットと [診断の警告] ウィジェットが含まれています。

[高信頼性] 準拠ウィジェットを削除します。

complianceContainers = getWidgets(complianceGroup);
complianceContainerWidgets = getWidgets(complianceContainers(1));
complianceContainers(1).removeWidget(complianceContainerWidgets(1)); 

10.MISRA チェックの問題数のメトリクスを可視化するためのカスタム ウィジェットを作成します。

misraWidget = complianceContainers(1).addWidget('Custom', 1);
misraWidget.Title=('MISRA'); 
misraWidget.VisualizationType = 'RadialGauge'; 
misraWidget.setMetricIDs('mathworks.metrics.ModelAdvisorCheckCompliance._SYSTEM_By Task_misra_c'); 
misraWidget.setWidths(slmetric.dashboard.Width.Medium);

11.棒グラフのウィジェットは、高信頼性および MAAB のチェック グループを可視化します。このウィジェットが MISRA および MAAB チェック グループを指し示すようにします。

setMetricIDs(complianceContainerWidgets(3),...
({'mathworks.metrics.ModelAdvisorCheckIssues._SYSTEM_By Task_misra_c',...
'mathworks.metrics.ModelAdvisorCheckIssues.maab'}));
complianceContainerWidgets(3).Labels = {'MISRA', 'MAAB'};

12.例のこの時点でメトリクス ダッシュボードを実行するには、コードの次の行をコメント解除します。save コマンドは API 情報を XML ファイルにシリアル化します。slmetric.config.setActiveConfiguration コマンドおよび slmetric.dashboard.setActiveConfiguration コマンドはアクティブ構成オブジェクトを設定します。

% save(metricconfig,'FileName','MetricConfig.xml');
% save(dashboardconfig,'Filename','DashboardConfig.xml');
% slmetric.config.setActiveConfiguration(fullfile(pwd,'MetricConfig.xml'));
% slmetric.dashboard.setActiveConfiguration(fullfile(pwd,'DashboardConfig.xml'));

14.メトリクス ダッシュボードを開くには、このコードをコメント解除します。

% metricsdashboard sf_car

15.[すべてのメトリクス] ボタンをクリックし、すべてのメトリクスを実行します。メトリクス ダッシュボードには、高信頼性チェックではなく、MISRA チェックの結果が表示されます。

16.メトリクス ダッシュボードを閉じます。

ダッシュボードへのカスタム メトリクスの追加

非バーチャル ブロック数をカウントするカスタム メトリクスを作成します。このメトリクスをメトリクス ダッシュボードに表示するには、ウィジェットを指定します。それをサイズ グループに追加します。

1.関数 createNewMetricClass を使用して、nonvirtualblockcount という名前の新しいメトリクス クラスを作成します。この関数はファイル nonvirtualblockcount.m を現在の作業フォルダー内に作成します。このファイルには、コンストラクターと空のメトリクス アルゴリズム メソッドが含まれています。この例では、現在のフォルダーが書き込み可能であることを確認してください。

className = 'nonvirtualblockcount';
slmetric.metric.createNewMetricClass(className);

2.メトリクス アルゴリズムを書き込むには、nonvirtualblockcount.m ファイルを開いてメトリクスをそのファイルに追加します。この例では、ファイル nonvirtualblockcount_orig.m に非バーチャル ブロックをカウントするメトリクスを作成するロジックが含まれています。このファイルを nonvirtualblockcount.m にコピーします。

copyfile nonvirtualblockcount_orig.m nonvirtualblockcount.m f

3.この新しいメトリクスをメトリクス リポジトリに登録します。

[id_metric,err_msg] = slmetric.metric.registerMetric(className);

4.Simulink ブロックをカウントするメトリクスを表現するウィジェットを削除します。これは、サイズ グループの 1 番目のウィジェットです。サイズ グループは、配列 layoutWidget の 2 番目です。

sizeGroup = layoutWidget(2); 
sizeGroupWidgets = sizeGroup.getWidgets(); 
sizeGroup.removeWidget(sizeGroupWidgets(1));

5.非バーチャル ブロックをカウントするメトリクスを表示するウィジェットを追加します。カスタム ウィジェットの場合、既定の可視化タイプは単一値です。これ以外の可視化タイプを使用する場合、VisualizationType プロパティに別の値を指定してください。

newWidget = sizeGroup.addWidget('Custom', 1);
newWidget.Title=('Nonvirtual Block Count'); 
newWidget.setMetricIDs('nonvirtualblockcount');
newWidget.setWidths(slmetric.dashboard.Width.Medium);
newWidget.setHeight(70);

6.グループ内でカスタム ウィジェットと他のウィジェットを区切るラインを表示するかどうかを指定します。次のコマンドは、ウィジェットの右側にラインが表示されることを指定します。

s.top = false;
s.bottom = false;
s.left= false;
s.right= true;
newWidget.setSeparators([s, s, s, s]);

7.例のこの時点でメトリクス ダッシュボードを実行するには、コードの次の行をコメント解除します。save コマンドは API 情報を XML ファイルにシリアル化します。slmetric.config.setActiveConfiguration コマンドおよび slmetric.dashboard.setActiveConfiguration コマンドはアクティブ構成オブジェクトを設定します。

% save(metricconfig,'FileName','MetricConfig.xml');
% save(dashboardconfig,'Filename','DashboardConfig.xml');
% slmetric.config.setActiveConfiguration(fullfile(pwd,'MetricConfig.xml'));
% slmetric.dashboard.setActiveConfiguration(fullfile(pwd,'DashboardConfig.xml'));

8.メトリクス ダッシュボードを開くには、このコードをコメント解除します。

% metricsdashboard sf_car

9.[すべてのメトリクス] ボタンをクリックし、すべてのメトリクスを実行します。メトリクス ダッシュボードには、Simulink ブロックをカウントするメトリクスではなく、非バーチャル ブロックをカウントするメトリクスの結果が表示されます。

10.メトリクス ダッシュボードを閉じます。

メトリクスのしきい値の追加

非バーチャル ブロックをカウントするメトリクスと MISRA メトリクスに関して、メトリクスのしきい値を指定します。これらの値を指定することで、メトリクス データを次のように分類してモデルの品質を確認できます。

  • 準拠 — 許容範囲内のメトリクス データ。

  • 警告 — 確認が必要なメトリクス データ。

  • 非準拠 — モデルの変更が必要なメトリクス データ。

1.slmetric.config.Configuration オブジェクト、metricconfig 内のslmetric.config.ThresholdConfigurationオブジェクトにアクセスします。対応する slmetric.config.ThresholdConfiguration オブジェクト (TC) をベース ワークスペース内に作成します。

TC=getThresholdConfigurations(metricconfig);

2.2 つのslmetric.config.Thresholdオブジェクトを TC に追加します。各 slmetric.config.Threshold オブジェクトには、準拠とされた既定のslmetric.config.Classificationオブジェクトが含まれています。準拠のメトリクス範囲を指定します。

T1=addThreshold(TC,'mathworks.metrics.ModelAdvisorCheckIssues._SYSTEM_By Task_misra_c',...
 'AggregatedValue');
C=getClassifications(T1); 
C.Range.Start=-inf;
C.Range.End=0;
C.Range.IncludeStart=0;
C.Range.IncludeEnd=1;

T2=addThreshold(TC,'mathworks.metrics.ModelAdvisorCheckCompliance._SYSTEM_By Task_misra_c',...
 'AggregatedValue'); 
C=getClassifications(T2); 
C.Range.Start=1;
C.Range.End=inf;
C.Range.IncludeStart=1;
C.Range.IncludeEnd=0;

3.各 slmetric.config.Threshold オブジェクトについて、警告の範囲を指定します。

C=addClassification(T1,'Warning');
C.Range.Start=0;
C.Range.End=inf;
C.Range.IncludeStart=0;
C.Range.IncludeEnd=1;

C=addClassification(T2,'Warning');
C.Range.Start=-inf;
C.Range.End=1;
C.Range.IncludeStart=0;
C.Range.IncludeEnd=0;

これらのコマンドは、MISRA チェックに問題があった場合にモデル ステータスを警告として指定します。問題が存在しない場合、モデル ステータスは準拠となります。

4.3 番目の slmetric.config.Threshold オブジェクトを TC に追加します。この slmetric.config.Threshold オブジェクトについて、準拠、警告、および非準拠の範囲を指定します。

T3=addThreshold(TC,'nonvirtualblockcount', 'AggregatedValue');
C=getClassifications(T3); 
C.Range.Start=-inf;
C.Range.End=20;
C.Range.IncludeStart=1;
C.Range.IncludeEnd=1;

C=addClassification(T3, 'Warning');
C.Range.Start=20;
C.Range.End=30;
C.Range.IncludeStart=0;
C.Range.IncludeEnd=1;

C=addClassification(T3, 'NonCompliant');
C.Range.Start=30;
C.Range.End=inf;
C.Range.IncludeStart=0;
C.Range.IncludeEnd=1;

これらのコマンドは、準拠範囲を 20 以下として指定します。警告範囲は 20 以上 30 未満です。30 を超えると非準拠範囲となります。

5.構成オブジェクトを保存します。これらのコマンドは API 情報を XML ファイルにシリアル化します。

save(metricconfig,'FileName','MetricConfig.xml');
save(dashboardconfig,'Filename','DashboardConfig.xml');

6.アクティブなコンフィギュレーションを設定します。

slmetric.config.setActiveConfiguration(fullfile(pwd, 'MetricConfig.xml'));
slmetric.dashboard.setActiveConfiguration(fullfile(pwd, 'DashboardConfig.xml'));

7.モデルに対し、メトリクス ダッシュボードを開きます。

metricsdashboard sf_car

MISRA チェックの準拠に関する問題では、76% のチェックがパスしたため、ゲージは黄色です。100% 未満の割合はすべて警告となります。モデルには MISRA チェックの問題が 3 つ含まれるため、棒グラフにも黄色が表示されています。ゼロより大きいすべての数は警告となります。

[Nonvirtual Block Count] ウィジェットは、非バーチャル ブロックが 15 個であるため、準拠範囲内となります。

8.コンフィギュレーションをリセットし、メトリクスの登録を解除するには、次のコマンドをコメント解除して実行します。

% slmetric.metric.unregisterMetric(className); 
% slmetric.dashboard.setActiveConfiguration(''); 
% slmetric.config.setActiveConfiguration('');

参考

|

関連するトピック