このセクションは、C/C++test で発生する可能性がある問題のトラブルシューティングに役立ちます。

全般

どのファイルが解析されるのか。ヘッダー ファイルを解析する方法は?

C/C++test は、C/C++ ソース ファイルは直接解析しますが、ヘッダー ファイルは間接的に解析します。現在選択されている内容に基づいて、C/C++test はすべての C/C++ ソース ファイルを解析し、選択されているすべてのソース ファイルとヘッダー ファイル (ソース ファイルによってインクルードされているヘッダー ファイルのみ) について違反をレポートします。

例:

C/C++test コンソールの冗長レベルを変更するには?

[Parasoft] メニューの [設定] をクリックして [コンソール] をクリックし、冗長レベル (高、通常、低) を選択します。


通常

基本情報 現行のステップの名前とステータス (終了、失敗、最新)




エラー
警告××
コマンド ライン×
静的解析と単体テストの実行中に表示される違反


○ すべてを表示


○ 一部省略


×

C/C++test がメモリ不足になったらどうすればいいのか ?

CPPTEST_ENGINE_EXTRA_ARGS オプションを使用して、-Xmx の値を指定することでメモリの割り当てサイズをカスタマイズできます。この方法は、静的解析を実行する場合や、結果を DTP にレポートする場合に特に便利です。詳細は「詳細オプションの設定」を参照してください。

C/C++test がレポート生成中にメモリを使い果たした場合、「C/C++test がレポート生成中にメモリを使い果たした場合」を参照してください。

プロキシ経由で C/C++test を操作する方法

プロキシ サーバー経由で接続するには、次の場所にある parasoft.properties で適切なシステム プロパティを設定する必要があります。

<INSTALL-DIR>/plugins/com.parasoft.ptest.common.vstudio/parasoft.properties

<INSTALL-DIR>/ptest/plugins/com.parasoft.ptest.common.vstudio/parasoft.properties

システム プロキシ設定を使用する

C/C++test でシステム プロキシ設定の使用を有効にするには、parasoft.useSystemProxies=true を設定する必要があります。追加の設定は必要ありません。

認証の問題が発生した場合は、次のプロパティを使用して認証情報を指定できます。

ユーザーおよびパスワードは、プロトコルごとに個別に指定します。

手動プロキシ設定を使用する

手動設定を使用するプロキシ サーバー経由で接続するには、プロトコル固有のシステム プロパティを設定する必要があります。 

たとえば、HTTPS プロトコルを使用する場合、HTTPS 用のシステム プロパティが設定されていることを確認します。最低でも、以下を設定する必要があります。

プロキシ サーバーが認証を要求する場合、以下のプロパティを使用して認証情報を設定できます。

コマンドは次のようになります。

https.proxySet=true
https.proxyHost=proxy.parasoft.com.pl
https.proxyPort=3128
https.proxyUser=username
https.proxyPassword=password

さらに、https.nonProxyHosts プロパティを設定して、プロキシ経由での接続が要求されないホストを指定することもできます。

問題が発生した場合、C/C++test サポートにどんな情報を送信すればいいのか?

サポート アーカイブの準備」を参照してください。

インストール

マシン ID が変わってしまうのを防ぐ方法

ネットワーク環境が変わると、マシン ID の計算に使用されるインターフェイスが変わり、結果としてマシン ID が一定でなくなる可能性があります。PARASOFT_SUPPORT_NET_INTERFACES 環境変数を使用すると、安定したインターフェイスを指定し、マシン ID が変化するのを防ぐことができます。

  1. PARASOFT_SUPPORT_NET_INTERFACES 環境変数を作成します。
  2. 変数に安定した Ethernet ネットワーク インスタンスを指定します。仮想インターフェイス、一時インターフェイス、ループバック インターフェイスは使用しないでください。

問題が解決しない場合、PARASOFT_DEBUG_NET_INTERFACES 環境変数を作成して true を指定すると、診断情報を取得できます。テクニカル サポートに送信可能なチェック手順や、マシン ID の計算に使用されているインターフェイスが標準出力に表示されます。マシン ID の計算に使用されているインターフェイスには [SELECTED] という接頭辞が付きます。

マシン ID が WIN32-0 と表示された場合

マシン ID が WIN32-0 の場合、<DRIVE>:\Users\<USER_NAME>\.parasoft\C++test\10.x\license にあるライセンス ファイルを削除してください。

C/C++test を新しいバージョンにアップグレードした後、一部のルールの抑制が DTP で無効になっている理由

新しいリリースでメッセージが変更されたルールに関連付けられた抑制は、DTP で利用できないため、再度抑制する必要があります。

(info) BD カテゴリのルールについては、次の詳細オプションを指定することで、バージョン 10.4.1 以降でも以前のメッセージに戻すことができます (「詳細オプションの設定」を参照)。

CPPTEST_ENGINE_EXTRA_ARGS="-property flowanalysis.legacy.messages.for.<rule_ID>=true"

例:

CPPTEST_ENGINE_EXTRA_ARGS="-property flowanalysis.legacy.messages.for.BD.PB.ARRAY=true -property flowanalysis.legacy.messages.for.BD.PB.ZERO=true"

以前のメッセージを復元するには、次のローカルな C/C++test キャッシュ データを格納する .cpptest フォルダーを削除する必要があります。<workspace_location>/.cpptest/.dtpengine/.cpptest

テストおよび解析

コマンド ライン モードで C/C++test が起動しない場合

拡張機能や他の Visual Studio コンポーネントをインストールまたはアップデートすると、Visual Studio の Component Model Cache が壊れ、C/C++test が起動できなくなる場合があります。Component Model Cache を消去するため、cpptestcli コマンドに -clearcmc オプションを指定して実行してください。

C/C++test が静的解析時にタイムアウトをレポートする場合

解析が完了するよう、以下のいずれかを行ってください。

ワークスペースのパスが長すぎて C/C++test の静的解析実行が失敗する場合

ワークスペースのパスが 126 文字を超える場合、C/C++test は Windows の最大のパスの長さを超える内部的パスを作成する可能性があります。一部のディレクトリ名は動的に生成されるため、正確なパスの長さは変わることがあります。そのような場合、C/C++test エンジンは xtest.dll などの内部ファイルにアクセスできなかったり、ライセンス設定を読み取れなかったりすることがあります。結果として、C/C++test がライセンスを取得できず、静的解析を実行できなくなります。

この問題を解決するには、次のどちらかのアプローチに従ってください。

  1. C/C++test のワークスペースをよりドライブのルートに近いディレクトリに移動し、パス全体の長さを短くします。
  2. 次のいずれかの方法で parasoft.local.storage.dir を設定して、Parasoft のローカル ストレージとして固定の場所を指定します。

静的カバレッジ データ収集時に 1 つまたはそれ以上のファイルが見つからなかった場合

静的カバレッジ データ収集時に見つからないファイルを指摘するセットアップの問題は、ファイルのローカル パスがビルド時のパスと異なっていることを示唆します。

回避策として、CPPTEST_COVERAGE_SRC_ROOT 環境変数を使用して元のパスをローカル パスにマッピングできます。

CPPTEST_COVERAGE_SRC_ROOT=original/path1=local/path1;original/path2=local/path2;...

元のパスの中で '*' をワイルドカードとして使用できます。例:

CPPTEST_COVERAGE_SRC_ROOT=/*/path=/local/path

リスト ファイル (*.lst) でパス マッピングのリストを指定し、ファイルの場所を値として設定することもできます。例:

CPPTEST_COVERAGE_SRC_ROOT=/path/mapping.lst

*.lstファイルの各アイテムが個別のエントリとして扱われます。

Bazel ビルドで C/C++test を使用時にメモリが割り当てられない場合

リンク プロセスでマップ可能なページが枯渇する場合があります。すると、マシンに十分な RAM の余裕があるにもかかわらず、メモリが割り当てられないという現象が発生します。この問題を修正するには、プロセスごとのマッピング ページの最大数を増やします。デフォルト値は 65530 です。値を 10 倍に増やせば、問題が解決されるはずです。それには、次のコマンドを実行します。 

sysctl -w vm.max_map_count=655300

問題が解決されない場合、さらに値を増やす必要がある可能性があります。

OpenMP インストラクションを含む関数に対して C/C++test のコード インストゥルメンテーションを無効化する方法

[プロジェクト設定] > [Parasoft] > [C/C++test] > [その他の設定] > [詳細オプション] に次のエントリを追加します。

xharness.ignoreFunctionsWithOpenMP true

cpptestcc ユーティリティを使用してコード カバレッジを収集するには、cpptestcc コマンド ラインに次のオプションを追加します。

-xharness-option="—-ignore-functions-with-openmp=true"

'#pragma loop' ディレクティブがある関数の C/C++test コード インストゥルメンテーションを無効化する方法

[プロジェクト設定] > [Parasoft] > [C/C++test] > [その他の設定] > [詳細オプション] に次のエントリを追加します。:
xharness.ignoreFunctionsWithClangLoop true

cpptestcc ユーティリティを使用してコード カバレッジを収集するには、cpptestcc コマンド ラインに次のオプションを追加します。

-xharness-option="—-ignore-functions-with-clang-loop=true"

'#pragma GCC ivdep' ディレクティブがある関数の C/C++test コード インストゥルメンテーションを無効化する方法

[プロジェクト設定] > [Parasoft] > [C/C++test] > [その他の設定] > [詳細オプション] に次のエントリを追加します。:
xharness.ignoreFunctionsWithIvdep true

cpptestcc ユーティリティを使用してコード カバレッジを収集するには、cpptestcc コマンド ラインに次のオプションを追加します。

-xharness-option="—-ignore-functions-with-ivdep=true"

'#pragma GCC unroll' ディレクティブがある関数の C/C++test コード インストゥルメンテーションを無効化する方法

[プロジェクト設定] > [Parasoft] > [C/C++test] > [その他の設定] > [詳細オプション] に次のエントリを追加します。:
xharness.ignoreFunctionsWithGccUnroll true

cpptestcc ユーティリティを使用してコード カバレッジを収集するには、cpptestcc コマンド ラインに次のオプションを追加します。

-xharness-option="—-ignore-functions-with-gcc-unroll=true"

レポート

現在有効な静的解析ルールのリストをレポートとして生成するには、どうすればいいか?

レポートを生成するときに、次のエントリがあるレポート コンフィギュレーション ファイルを指定します。

results.report.active_rules=true

C/C++test レポートで一部の文字が正しく表示されない場合

Parasoft 製品によって生成されたレポートを使用するには、環境に sans-serif フォントがある必要があります。国別文字などの一部の文字がレポートで正しく表示されない場合は、システムに sans-serif フォントがインストールされていることを確認してください。

C/C++test がレポート生成中にメモリを使い果たした場合

C/C++test は、コードをテストした後、別個の JVM を使用してレポートを生成します。parasoft.report.separate_vm.xmx システム プロパティを使用して C/C++test レポートの生成に割り当てられるメモリの量を増やすことができます。例:

parasoft.report.separate_vm.xmx=1280m

parasoft.report.separate_vm.java_home システム プロパティを使用すると、レポートを生成する JVM として、より大きな最大メモリ サイズを持つ JVM を指定できます。例:

parasoft.report.separate_vm.java_home=C:/Program Files/Java/jdk-12.0.1

IDE での操作

Visual Studio 2017 でテスト ケースを生成できない場合

C/C++test は Visual Studio 2017 でプロジェクトのキャッシュが有効化されている場合、テスト ケースを生成できません。テスト ケースを生成するには、プロジェクトのキャッシュを無効にします。

  1. Visual Studio 2017 のメイン メニューで [ツール] > [オプション] をクリックします。
  2. [Projects and Solutions] を拡張し、[VC++ Project Settings] を選択します。
  3. [Enable Project Caching] を [No] に設定し、プロジェクトのキャッシュを無効化します。

Visual Studio 2017 以降のソリューション エクスプローラーのコンテキスト メニューで一部の Parasoft オプションが使用できない場合

ソリューション エクスプローラーのコンテキスト メニューですべての Parasoft オプションが使用できるようにするには、Visual Studio 2017 以降に以下の Visual Studio Workload がインストールされている必要があります。

  1. Visual Studio のインストーラーを実行します。
  2. ウィザードに従って適切なワークロードを選択します。

Parasoft Plugin またはそのコンポーネントが Visual Studio 2017 の処理を遅くしているという通知が表示される

Visual Studio 2017 および 2019 には新しくパフォーマンス管理モニターが導入され、起動時間に影響を与える可能性がある拡張機能をモニターし、管理できるようになりました。結果として、Parasoft Plugin がインストールされていると、Visual Studio の起動時間が長くなったことを示すポップアップ警告が表示される場合があります。ポップアップ ウィンドウで [Manage performance] リンクをクリックして起動時間を確認し、警告の表示を無効にすることができます。

C/C++test が生成したテスト スイート内の正しいコードに対して Visual Studio が構文エラーをレポートする場合

Visual Studio のネイティブなコード補完機能である IntelliSense が C/C++test 固有の構文を認識できない場合、テスト スイート内の正しいコード要素に問題の可能性を示す赤い下線が表示される可能性があります。これを防ぐには、以下のいずれかの処理を行います。

Linux で RuleWizard UI の表示に問題がある場合

RuleWizard UI の表示に問題がある場合、Linux ディストリビューションが Wayland ディスプレイ サーバーを使用していないかを確認してください。 Wayland ディスプレイ サーバーを使用している場合、X11 に変更することを推奨します。

Linux ディストリビューションで使用されているディスプレイ サーバーを確認する方法は、以下のとおりです。

ディスプレイ サーバーを X11 に変更する方法は、以下のとおりです。