Main Content

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

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

この例では、モデル保守性ダッシュボードで使用されるメトリクス データを収集し、レポートを生成し、そのレポートを使用してモデル設計アーティファクトを評価する方法を説明します。

プロジェクト内のあるモデルが大きい、複雑である、または可読性が良くないなどの場合、設計のテストが困難で、保守が難しくなる可能性があります。メトリクス結果を使用して、より小さくテストが可能なユニットを識別したり、モデルを再構成して可読性を向上させたりして、設計をリファクタリングする必要があるかどうかを判定します。

メトリクス結果の収集とアクセス

プロジェクトを開く

解析するモデルを含むプロジェクトを開きます。この例では、MATLAB® コマンド ウィンドウで次のように入力します。

openProject("cc_CruiseControl");

メトリクス結果の収集

metric.Engine オブジェクトを作成します。metric.Engine オブジェクトを使用して、現在のプロジェクトについてのメトリクス データを収集できます。

metric_engine = metric.Engine();

モデルの保守性についてのメトリクス識別子の配列を作成します。

maintainabilityMetrics = getAvailableMetricIds(metric_engine,...
App="DashboardApp",...
Dashboard="ModelMaintainability");

一度に 1 つのユニットの結果、またはプロジェクト内の各ユニットの結果を収集できます。

この例では、ユニット cc_ControlMode についての結果を収集するとします。プロジェクト内のモデル ファイルへのパスとモデルの名前を特定する配列を作成します。

unit = [fullfile(pwd,"models","cc_ControlMode.slx"),"cc_ControlMode"];

関数 execute を使用してユニット cc_ControlMode の保守性メトリクス結果を収集します。

execute(metric_engine,maintainabilityMetrics,ArtifactScope=unit);

メトリクス結果へのアクセスと表示

関数 getMetrics を使用してメトリクス結果にアクセスします。この例では、メトリクス slcomp.SimulinkSignalLines およびユニット cc_ControlMode についての結果を保存します。

results_SignalLines = getMetrics(metric_engine,"slcomp.SimulinkSignalLines",...
ArtifactScope=unit);

モデル保守性メトリクス slcomp.SimulinkSignalLines によって、モデルの各層の Simulink® 信号線の数が判定されます。モデル保守性メトリクスの詳細については、モデル保守性メトリクスを参照してください。

関数 getMetrics は、特定のメトリクスについてのメトリクス結果を含む metric.Result オブジェクトを返します。

関数 disp を使用してモデル層と信号線の数を表示します。これらは、metric.Result オブジェクトの Artifacts プロパティと Value プロパティにあります。マシンによっては異なる順序で結果が表示されることがあります。

for n=1:length(results_SignalLines)

    disp([' Model Layer: ', results_SignalLines(n).Artifacts.Name])
    disp(['Signal Lines: ', num2str(results_SignalLines(n).Value)])
    disp(newline);

end
 Model Layer: cc_ControlMode
Signal Lines: 14
 Model Layer: Control_Mode_StateMachine
Signal Lines: 60
 Model Layer: Transitions_From_THROTTLE_OVERRIDE
Signal Lines: 14
 Model Layer: cc_ControlMode_DisableTransition
Signal Lines: 10
 Model Layer: cc_ControlMode_DeactivateTransition
Signal Lines: 10
 Model Layer: Target_Speed_Calculator
Signal Lines: 18
 Model Layer: check_speed_range
Signal Lines: 6
 Model Layer: Switch Case Action
Subsystem
Signal Lines: 1
 Model Layer: Transitions_From_ACTIVE
Signal Lines: 14
 Model Layer: Switch Case Action
Subsystem1
Signal Lines: 1
 Model Layer: wasActiveOnce
Signal Lines: 12
 Model Layer: Transitions_From_DISABLED
Signal Lines: 11
 Model Layer: Transitions_From_ENABLED
Signal Lines: 20
 Model Layer: Switch Case Action
Subsystem
Signal Lines: 23
 Model Layer: Switch Case Action
Subsystem4
Signal Lines: 1
 Model Layer: isFirstStep
Signal Lines: 2
 Model Layer: Switch Case Action
Subsystem3
Signal Lines: 1
 Model Layer: Switch Case Action
Subsystem2
Signal Lines: 1
 Model Layer: Switch Case Action
Subsystem2
Signal Lines: 1
 Model Layer: Switch Case Action
Subsystem1
Signal Lines: 1

コード出力には、モデル層 Control_Mode_StateMachine に 60 の Simulink 信号線が含まれていることが示されています。これらの結果に基づいて、そのモデル層を再構成して可読性を向上させることを検討します。

レポートの生成

metric_engine に収集されたモデルの保守性の結果を含むレポート ファイルを生成します。既定では、レポート ファイルの種類は PDF です。この例では、レポート ファイルの種類を HTML として指定します。

generateReport(metric_engine,...
App="DashboardApp",...
Dashboard="ModelMaintainability",...
Type="html-file");

メトリクス結果をレポート ファイルに保存して、プロジェクトやダッシュボードを開くことなくアクセスします。

あるいは、モデル保守性ダッシュボードを開いて結果を表示し、アーティファクトを確認できます。プログラムでモデル保守性ダッシュボードにアクセスするには、次のように入力します。

modelDesignDashboard

参考

関連するトピック