このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
プログラムによるモデル保守性メトリクスの収集
この例では、モデル保守性ダッシュボードで使用されるメトリクス データを収集し、レポートを生成し、そのレポートを使用してモデル設計アーティファクトを評価する方法を説明します。
プロジェクト内のあるモデルが大きい、複雑である、または可読性が良くないなどの場合、設計のテストが困難で、保守が難しくなる可能性があります。メトリクス結果を使用して、より小さくテストが可能なユニットを識別したり、モデルを再構成して可読性を向上させたりして、設計をリファクタリングする必要があるかどうかを判定します。
メトリクス結果の収集とアクセス
プロジェクトを開く
解析するモデルを含むプロジェクトを開きます。この例では、MATLAB® コマンド ウィンドウで次のように入力します。
dashboardCCProjectStart
メトリクス結果の収集
metric.Engine
オブジェクトを作成します。metric.Engine
オブジェクトを使用して、現在のプロジェクトについてのメトリクス データを収集できます。
metric_engine = metric.Engine();
モデルの保守性についてのメトリクス識別子の配列を作成します。
maintainabilityMetrics = getAvailableMetricIds(metric_engine,... App="DashboardApp",... Dashboard="ModelMaintainability");
一度に 1 つのユニットの結果、またはプロジェクト内の各ユニットの結果を収集できます。
この例では、ユニット db_ControlMode
についての結果を収集するとします。プロジェクト内のモデル ファイルへのパスとモデルの名前を特定する配列を作成します。
unit = [fullfile(pwd,"models","db_ControlMode.slx"),"db_ControlMode"];
関数 execute
を使用してユニット db_ControlMode
の保守性メトリクス結果を収集します。
execute(metric_engine,maintainabilityMetrics,ArtifactScope=unit);
メトリクス結果へのアクセスと表示
関数 getMetrics
を使用してメトリクス結果にアクセスします。この例では、メトリクス slcomp.SimulinkSignalLines
およびユニット db_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: Switch Case Action Subsystem1
Signal Lines: 1
Model Layer: Switch Case Action Subsystem
Signal Lines: 1
Model Layer: Control_Mode_StateMachine
Signal Lines: 60
Model Layer: Transitions_From_ACTIVE
Signal Lines: 14
Model Layer: check_speed_range
Signal Lines: 6
Model Layer: Transitions_From_DISABLED
Signal Lines: 11
Model Layer: Switch Case Action Subsystem2
Signal Lines: 1
Model Layer: Switch Case Action Subsystem2
Signal Lines: 1
Model Layer: wasActiveOnce
Signal Lines: 12
Model Layer: Transitions_From_THROTTLE_OVERRIDE
Signal Lines: 14
Model Layer: db_ControlMode
Signal Lines: 14
Model Layer: Target_Speed_Calculator
Signal Lines: 18
Model Layer: Switch Case Action Subsystem1
Signal Lines: 1
Model Layer: Switch Case Action Subsystem
Signal Lines: 23
Model Layer: isFirstStep
Signal Lines: 2
Model Layer: Switch Case Action Subsystem4
Signal Lines: 1
Model Layer: Switch Case Action Subsystem3
Signal Lines: 1
Model Layer: Transitions_From_ENABLED
Signal Lines: 20
Model Layer: db_ControlMode_DisableTransition
Signal Lines: 10
Model Layer: db_ControlMode_DeactivateTransition
Signal Lines: 10
コード出力には、モデル層 Control_Mode_StateMachine
に 60 の Simulink 信号線が含まれていることが示されています。これらの結果に基づいて、そのモデル層を再構成して可読性を向上させることを検討します。
レポートの生成
metric_engine
に収集されたモデルの保守性の結果を含むレポート ファイルを生成します。既定では、レポート ファイルの種類は PDF です。この例では、レポート ファイルの種類を HTML として指定します。
generateReport(metric_engine,... App="DashboardApp",... Dashboard="ModelMaintainability",... Type="html-file");
メトリクス結果をレポート ファイルに保存して、プロジェクトやダッシュボードを開くことなくアクセスします。
あるいは、モデル保守性ダッシュボードを開いて結果を表示し、アーティファクトを確認できます。プログラムでモデル保守性ダッシュボードにアクセスするには、次のように入力します。
modelDesignDashboard