メインコンテンツ

Polyspace 解析結果のエクスポート

解析結果は、タブ区切り値 (TSV) のテキスト ファイル、MATLAB® table、または標準 JSON 形式にエクスポートできます。エクスポートされたコンテンツを使用すると、次のことができます。

  • ユーザー インターフェイスから簡単に取得できない結果のグラフや統計を生成する場合は、MATLAB または Microsoft® Excel® を使用します。たとえば、Code Prover チェック タイプ ([ゼロ除算][オーバーフロー] など) ごとに、レッド、オレンジまたはグリーンのチェック数を計算できます。

  • コードに対して実行した他のチェックと解析結果とを組み合わせることができます。

結果のテキスト ファイルへのエクスポート

ユーザー インターフェイスまたはコマンド ラインから結果をタブ区切りのテキスト ファイル (TSV) にエクスポートできます。

エクスポート先のテキスト ファイルでは、オペレーティングシステムの文字エンコードが使用されます。コメントの特殊文字がテキスト ファイルに正しくエクスポートされない場合は、エクスポート前にオペレーティング システムの文字エンコードを変更します。

Polyspace Platform ユーザー インターフェイスからの結果のエクスポート

  1. [確認] パースペクティブで解析結果を開きます。

  2. すべての結果またはすべての変数アクセス情報をエクスポートします。

    • すべての結果をエクスポートするには、[レポート][すべての結果をエクスポート] を選択します。

    • すべての変数アクセス情報をエクスポートするには、[レポート][変数アクセスのエクスポート] を選択します。変数アクセスの詳細については、Global Variables Usage in Polyspace Platform User Interface (Polyspace Code Prover)を参照してください。

    Export All Results and Export Variable Access options in Report menu of Polyspace Platform user interface

  3. テキスト ファイルを保存する場所を選択します。ファイルは CSV、JSON、TSV のいずれかの形式で保存できます。保存するには、ファイル タイプ All Files (*.*) を選択して、手動でファイルの拡張子を編集します。[保存] をクリックします。

コマンド ラインからの結果のエクスポート

polyspace-results-export コマンドでオプション -format csv を使用します。たとえば、結果ファイル C:\Polyspace_Workspace\myProject\Module_1\BF_Result\ps_results.psbf から csv ファイルを生成するには、次のコマンドを実行します。

polyspace-results-export -format csv -results-dir C:\Polyspace_Workspace\myProject\Module_1\BF_Result

結果を MATLAB table にエクスポート

MATLAB スクリプトを記述して Polyspace® を実行する場合、さらに処理するため Polyspace 解析結果を MATLAB table に読み取ることができます。詳細については、以下を参照してください。

結果の JSON 形式へのエクスポート

Polyspace の結果を JSON オブジェクトにエクスポートできます。JSON 形式は、OASIS Static Analysis Results Interchange Format (SARIF) で指定された標準表記法に従います。

polyspace-results-export コマンドでオプション -format json-sarif を使用します。詳細については、polyspace-results-export を参照してください。

JSON 形式には、チェッカーの短い名前や結果に付随する完全なメッセージなど、いくつかの追加情報が含められます。この短い名前やメッセージを使用する場合は、JSON 形式を使用します。結果をより標準化されたレポートにする場合も、この形式を使用できます。たとえば、複数の静的解析ツールを使用し、その結果を 1 つの解析アルゴリズムを使用して 1 つのインターフェイスでレポートにする場合、結果すべてを標準 SARIF JSON 形式にエクスポートできます。

エクスポートした結果の表示

エクスポートした結果には、Polyspace Platform ユーザー インターフェイスまたは Polyspace Access™ Web インターフェイスの [結果のリスト] ペインで使用できる情報が含まれています。詳細については、以下を参照してください。

[結果のリスト] の一部の列ヘッダーには、エクスポートされた結果ファイルとは異なるラベルが付けられる場合があります。

[結果のリスト] ペインとエクスポートされた結果の間の表示には、他にも以下の違いがあります。

  • TSV ファイルと MATLAB テーブルには、[結果のリスト] にはない、次の列が含まれています。

    • [新規] 列 — 前回の実行と比較して結果が新しいものであるかどうかを示します。

    • [キー] 列 — この列のエントリは、結果ファミリ、結果の頭字語、およびファイル内の結果の場所に基づくものとなります。エクスポートされたキーを使用したマージ結果の比較も参照してください。

    • [URL] 列 (Polyspace Access の結果のみ) — この列の URL をクリックすると、Polyspace Access インターフェイスで対応する結果が開きます。

  • JSON ファイルには、結果が results 配列に格納されたオブジェクトとして保存されます。オブジェクトごとに、結果の情報が格納されているキーと値のペアのリストがあります。この情報には、前回の実行と比較して結果が新しいものであるかどうか ("baselineState")、結果キー、および URL ("hostedViewerUri ") も含まれます。JSON 形式の詳細については、SARIF-v2.1.0 を参照してください。

テキスト ファイルを使用してソース コード内の Bug Finder の結果の場所を特定することはできません。しかし、そのファイルを解析し、結果についてのグラフや統計を生成することは可能です。

大量の調査結果を含む結果のエクスポート

Polyspace では、一度に 500,000 件を超える調査結果のエクスポートはサポートされていません。解析結果における調査結果の数がこの上限を超える場合、Polyspace は調査結果数を減らすために、次の順序で調査結果を省略します。

  • すべてのコード メトリクス調査結果を省略する。

  • それでも調査結果の数がしきい値を超えている場合は、影響度の低い欠陥 (Bug Finder) またはグリーン チェック (Code Prover) をすべて省略する。

  • それでも調査結果の数がしきい値を超えている場合は、最初の 500,000 件の調査結果のみをエクスポートする。

プロジェクトに大量の調査結果が含まれている場合、解析構成が最適ではない可能性があります。解析によって大量の調査結果が生成される場合は、優先度が高い欠陥とコーディング ルール違反のみをチェックするように構成を変更して、チェック対象の数を減らします。Troubleshoot Uploads to Polyspace Access That Exceed Size Limit (Polyspace Access)も参照してください。

エクスポートされたキーを使用したマージ結果の比較

共通ファイルを含む複数のプロジェクトからエクスポートした解析結果をマージする場合、エクスポートされた結果に含まれる [キー] フィールドやその他のフィールドを使用して重複を取り除くことができます。たとえば、コーディング ルール チェックを 2 つの異なるプロジェクトで実行して結果をマージする場合、共通のヘッダー ファイルのコーディング ルール違反は結果において 2 度表示されます。

重複を取り除くには、結果の [キー] の値と [ファイル] の値を比較します。2 つの結果の [キー][ファイル] に同じ値が含まれている場合、一方の結果はもう一方の結果の重複です。

既定では、各結果キーは結果ファミリ (たとえば numerical)、結果の省略名 (たとえば float_ovfl)、およびファイル内の結果の場所に基づくものとなります。関数本体内の結果に対応する、より局在的なキーを生成するには、polyspace-results-export コマンドまたは polyspace-report-generator コマンドで -key-mode function-scope オプションを使用します。これらのコマンドは、結果ファミリ、結果の省略名、および関数本体内での結果の場所に基づくキーを生成します。そのうえで、[関数] の値も比較すると、より正確に重複を特定できます。

ごくまれに、同じキーを持ち、ファイル内または関数本体内での場所も同じである結果どうしが、重複していない場合もあります。このような場合は、たとえばユーザー インターフェイスで結果メッセージを比較するなど、手動による結果の比較によって、結果が重複しているものであるかどうかを判断する必要があります。

エクスポートしたキーの関数スコープを有効にする

エクスポートしたキーの関数スコープをコマンド ラインで有効にするには、次のいずれかのコマンドを入力して、ローカルに保存されている結果をエクスポートします。

polyspace-results-export -results-dir folderPath -key-mode function-scope -format csv
または
polyspace-report-generator -generate-results-list-file -results-dir folderPath -key-mode function-scope
ここで、folderPath は、Polyspace 解析結果が含まれているフォルダーのパスです。

必ず、書き込み権限が付与されている場所からこれらのコマンドを実行するか、または -output-name オプションを使用して、エクスポートされる結果が含まれる生成ファイルの保存場所を指定してください。

関数スコープを有効にして結果をエクスポートすると、関数内にある結果のキー エントリには FN 接頭辞が付きます。

参考

トピック