プログラムにより結果からカバレッジの詳細を取得
スクリプトを使用したカバレッジデ,タの解析
この例では,スクリプトを使用してカバレッジデ,タを読み込み,解析し,クエリする方法を説明します。
カバレッジデ,タの読み込み
モデルを読み込み,補助スクリプトsetupCoverage
を使用します。このスクリプトは,カバレッジを有効にしたシミュレ,ションシナリオを作成します。これを使用してモデルをシミュレ,トし,カバレッジ結果を含む金宝app仿真软件。SimulationOutput
オブジェクトを生成します。
load_system (“slvnvdemo_ratelim_harness”);setupCoverage simOut = sim(covSet);covData = simOut.covData;
カバレッジデ,タオブジェクトからの情報の抽出
decisioninfo
を使用して,ブロックパスまたはブロックハンドルからカバレッジ情報を取得します。出力は,単一のモデルオブジェクトの達成された結果と全体の結果を含むベクトルです。
subsysCov = decisioninfo(covData,...'可调速率限制器')
6 . subsysCov = 5
decisioninfo
を使用して,達成されたカバレッジの割合を判別します。
百分比cov = 100 * (subsysCov(1)/subsysCov(2))
percentCov = 83.3333
decisioninfo
を使用して,应用有限增益と呼ばれる开关ブロックの判定カバレッジデータを抽出するかどうかを指定します。判定と結果を含む構造体が返されます。
[blockCov,desc] = decisioninfo(covData,...'slvnvdemo_ratelim_harness/可调速率限制器/应用有限增益');descDecision = desc.decision;Outcome1 = desc.decision.outcome(1) outcome2 = desc.decision.outcome(2)
outcome1 = struct with fields: text: 'false (out = in3)' executionCount: 0 executedIn: [] isFiltered: 0 isJustified: 0 filterRationale: " outcome1 = struct with fields: text: 'true (out = in1)' executionCount: 101 executedIn: [] isFiltered: 0 isJustified: 0 filterRationale: "
decisioninfo
出力から,假の場合のexecutionCount
フィ,ルドが0
の値であるため,应用有限增益と呼ばれる开关ブロックが假になることはなかったことがわかります。この動作が想定される場合で,かテストでこの場合を実行する意図がなかった場合,slcoverage。过滤器
クラスを使用してフィルタ,の規則を追加してこの未達カバレッジを正当化できます。
最初に,フィルタ,対象とするブロック,ンスタンスをクエリします。これは,不完全なカバレッジを受け取った1つのブロックインスタンスをフィルター処理することだけが必要なのであって,そのブロックタイプのすべてのインスタンスをフィルター処理する必要はないためです。次に,slcoverage。BlockSelector
クラスをBlockInstance
セレクタタプと共に使用して,フィルタ処理する1のブロックンスタンスを特定します。
id = get金宝appSimulinkBlockHandle('slvnvdemo_ratelim_harness/可调速率限制器/应用有限增益');sel = slcoverage.BlockSelector(slcoverage.BlockSelectorType.BlockInstance,id);
slcoverage。过滤器
クラスおよびslcoverage。FilterRule
クラスを使用して,フィルタ,オブジェクトとフィルタ,の規則を作成します。
filt = slcoverage.Filter;Rule = slcoverage。FilterRule(选取,“边缘案例”, slcoverage.FilterMode.Justify);
addRule
メソッドを使用して,規則をフィルタ,に追加します。次に,新しいフィルタ,ファ,ルを保存
メソッドを使用して保存します。
filt.addRule(规则);filt.save (“blfilter”);
カバレッジデ,タにフィルタ,を適用するには,cvdata
オブジェクトの过滤器
プロパティをフィルタファルの名前に設定します。フィルタ,されたカバレッジデ,タに対してdecisioninfo
を使用して,正当化されたオブジェクティブが達成としてカウントされているため,100%の判定カバレッジとなっていることを確認します。
covData。过滤器=“blfilter”;newCov = decisioninfo(covData,...'可调速率限制器'%新冠病毒= 100 *(新冠病毒(1)/新冠病毒(2))
newCov = 100
カバレッジ情報関数
カバレッジデ,タを収集した後,次の関数を使用してcvdata
オブジェクトから特定のカバレッジ情報を抽出できます。これらの関数を使用すると,モデル内のブロック,サブシステム,Stateflow®チャトまたはモデル自体にいて指定したカバレッジ情報を取得できます。
cvmodelview
を使用して,金宝appSimulinkモデルでカバレッジの強調表示をオンにできます。cvhtml
を使用して,カバレッジレポ,トを表示することもできます。
complexityinfo
-循環的複雑度カバレッジexecutioninfo
-実行カバレッジconditioninfo
-条件カバレッジdecisioninfo
-判定カバレッジmcdcinfo
-改良条件判定カバレッジ(mcdc)overflowsaturationinfo
—整数オバフロで飽和カバレッジrelationalboundaryinfo
-関係演算子の境界カバレッジsigrangeinfo
-信号範囲カバレッジsigsizeinfo
-信号サie浏览器ズカバレッジtableinfo
-查找表ブロックカバレッジgetCoverageInfo
- - - - - -金宝app®设计验证器™ブロックのカバレッジ
これらの関数を使用する例にいては,カバレッジデ,タから詳細な情報を抽出を参照してください。
参考
slcoverage。过滤器
|slcoverage。FilterRule
|slcoverage。BlockSelector
|slcoverage。MetricSelector