このセクションは、C/C++test で発生する可能性がある問題のトラブルシューティングに役立ちます。
C/C++test は、C/C++ ソース ファイルは直接解析しますが、ヘッダー ファイルは間接的に解析します。現在選択されている内容に基づいて、C/C++test はすべての C/C++ ソース ファイルを解析し、選択されているすべてのソース ファイルとヘッダー ファイル (ソース ファイルによってインクルードされているヘッダー ファイルのみ) について違反をレポートします。
例:
[Parasoft] メニューの [設定] をクリックして [コンソール] をクリックし、冗長レベル (高、通常、低) を選択します。
| 高 | 通常 | 低 | |
|---|---|---|---|
基本情報 現行のステップの名前とステータス (終了、失敗、最新) | 〇 | 〇 | 〇 |
| エラー | 〇 | 〇 | 〇 |
| 警告 | 〇 | × | × |
| コマンド ライン | 〇 | 〇 | × |
| 静的解析と単体テストの実行中に表示される違反 | ○ すべてを表示 | ○ 一部省略 | × |
C/C++test がメモリ不足になるのを防ぐには、C/C++test を起動するスクリプトまたはショートカットにメモリ パラメーターを追加します。2 つのメモリ パラメーターは、それぞれ JVM (Xms) の初期サイズと JVM (Xmx) の最大サイズを指定します。通常は両方に同じサイズ (たとえば 1024MB) を設定します。ただし、ときおり問題が発生しているが大きなメモリ サイズを常に割り当てておくことは避けたい場合、2 つのパラメーターに異なる値 (たとえば初期サイズ 1024MB と最大サイズ 1400MB) を設定することができます。設定できる最大サイズは、 OS と JVM によって異なります。
例:
C/C++test standalone:
cpptest.exe -J-Xms1024m -J-Xmx1400m
C/C++test plugin for Eclipse:
eclipse.exe -vmargs -Xmx1400m
また、 CPPTEST_ENGINE_EXTRA_ARGS オプションを使用して、-Xmx の値を指定することでメモリの割り当てサイズをカスタマイズできます。この方法は、静的解析を実行する場合や、結果を DTP にレポートする場合に特に便利です。詳細は「詳細オプションの設定」を参照してください。
C/C++test がレポート生成中にメモリを使い果たした場合、「C/C++test がレポート生成中にメモリを使い果たした場合」を参照してください。
問題の原因がネットワークまたは接続にあると推測される場合、Eclipse プロセスに次の Java システム プロパティを渡し、タイムアウトを調整してみるとよいでしょう。
| スイッチ | 説明 |
|---|---|
parasoft.ws.timeout | すべてのサービスのソケット タイムアウトを設定します。秒単位で値を指定します。 |
parasoft.ws.connection.timeout | すべてのサービスの接続タイムアウトを設定します。秒単位で値を指定します。 |
例:
C/C++test standalone:
cpptest.exe -J-Dparasoft.ws.timeout=180 cpptest.exe -J-Dparasoft.ws.connection.timeout=15 |
C/C++test plugin for Eclipse:
eclipse.exe -vmargs -Dparasoft.ws.timeout=180 eclipse.exe -vmargs -Dparasoft.ws.connection.timeout=15 |
parasoft.ws.timeout だけが設定されている場合、ソケットおよび接続タイムアウトの両方に影響を与えます。
C/C++test は Eclipse で指定されたプロキシ設定を自動的に検出して使用します。追加の設定は必要ありません。
「サポート アーカイブの準備」を参照してください。
現在どのバージョンの C/C++test がインストールされているかをチェックするには、次の操作を行います。
-clean オプションを付けて Eclipse を起動します。このオプションを付けて起動すると、Eclipse の内部的なレジストリおよびキャッシュが強制的にリフレッシュされます。
Eclipseは、コンフィギュレーション ファイルがあるインストール ディレクトリの場所に書き込みができない場合、クラッシュすることがあります。この現象は、複数のユーザーで 1 つのインストール領域を共有するように Eclipse を設定している場合によく見られます。この問題を防ぐには、設定ファイルをユーザーのホーム ディレクトリに保存します。「要件」および「マルチ ユーザー インストール」を参照してください。
ネットワーク環境が変わると、マシン ID の計算に使用されるインターフェイスが変わり、結果としてマシン ID が一定でなくなる可能性があります。PARASOFT_SUPPORT_NET_INTERFACES 環境変数を使用すると、安定したインターフェイスを指定し、マシン ID が変化するのを防ぐことができます。
PARASOFT_SUPPORT_NET_INTERFACES 環境変数を作成します。変数に安定した Ethernet ネットワーク インスタンスを指定します。仮想インターフェイス、一時インターフェイス、ループバック インターフェイスは使用しないでください。
Windows の場合: ネットワーク カードの MAC アドレスを指定します。ipconfig -all コマンドを実行すると、アドレスを取得できます。 例:
SET PARASOFT_SUPPORT_NET_INTERFACES=00-10-D9-27-AC-85 |
Linux の場合:"inet" または "inet6" ファミリーのいずれかのネットワーク インターフェイスを指定します。ifconfig コマンドを実行すると、利用可能なインターフェイスのリストを取得できます。例:
export PARASOFT_SUPPORT_NET_INTERFACES=eth1 |
問題が解決しない場合、PARASOFT_DEBUG_NET_INTERFACES 環境変数を作成して true を指定すると、診断情報を取得できます。テクニカル サポートに送信可能なチェック手順や、マシン ID の計算に使用されているインターフェイスが標準出力に表示されます。マシン ID の計算に使用されているインターフェイスには [SELECTED] という接頭辞が付きます。
マシン ID が WIN32-0 の場合、<DRIVE>:\Users\<USER_NAME>\.parasoft\C++test\10.x\license にあるライセンス ファイルを削除してください。
新しいリリースでメッセージが変更されたルールに関連付けられた抑制は、DTP で利用できないため、再度抑制する必要があります。
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
Eclipse を起動する前にコンパイラの環境変数 ($PATH や $LD_LIBRARY_PATH ) を正しく設定したか確認してください。
C/C++test が名前に空白を含むディレクトリ (たとえば C:\Program Files) にインストールされている場合、QNX GCC コンパイラが C/C++test の正常な動作を妨げる可能性があります。
QNX コンパイラとともに C/C++test を使用する場合、C/C++test のインストール ディレクトリ名に空白が含まれていないことを確認してください。
Visual Studio 2019 に付属の Microsoft Visual C++ 14.2 コンパイラでコンパイルされたコードをデバッグする場合、デバッグする前に Visual Studio 2019 IDE を起動し、C/C++test の実行が終了するまで背後で実行されるようにします。
解析が完了するよう、以下のいずれかを行ってください。
cpptest.analyzer.source.timeout=<TIMEOUT_IN_SECONDS>
ワークスペースのパスが 126 文字を超える場合、C/C++test は Windows の最大のパスの長さを超える内部的パスを作成する可能性があります。一部のディレクトリ名は動的に生成されるため、正確なパスの長さは変わることがあります。そのような場合、C/C++test エンジンは xtest.dll などの内部ファイルにアクセスできなかったり、ライセンス設定を読み取れなかったりすることがあります。結果として、C/C++test がライセンスを取得できず、静的解析を実行できなくなります。
この問題を解決するには、次のどちらかのアプローチに従ってください。
次のいずれかの方法で parasoft.local.storage.dir を設定して、Parasoft のローカル ストレージとして固定の場所を指定します。
環境変数として指定:
CPPTEST_ENGINE_EXTRA_ARGS="-J-Dparasoft.local.storage.dir=C:\temp\workspace\.cpptest" |
cpptestcli コマンドライン パラメーターとして指定:
-J-DCPPTEST_ENGINE_EXTRA_ARGS="-J-Dparasoft.local.storage.dir=C:\temp\workspace\.cpptest" |
<cpptest_dir>\bin\cli\etc\cpptestcli.jvm ファイルで Java 引数として指定:
-Dparasoft.local.storage.dir=C:/temp/workspace/.cpptest |
IDE で特定のワークスペース用に設定されたテクニカル サポート詳細オプションとして指定 (「詳細オプションの設定」を参照):
CPPTEST_ENGINE_EXTRA_ARGS="-J-Dparasoft.local.storage.dir=C:/temp/workspace/.cpptest" |
静的カバレッジ データ収集時に見つからないファイルを指摘するセットアップの問題は、ファイルのローカル パスがビルド時のパスと異なっていることを示唆します。
回避策として、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ファイルの各アイテムが個別のエントリとして扱われます。
リンク プロセスでマップ可能なページが枯渇する場合があります。すると、マシンに十分な RAM の余裕があるにもかかわらず、メモリが割り当てられないという現象が発生します。この問題を修正するには、プロセスごとのマッピング ページの最大数を増やします。デフォルト値は 65530 です。値を 10 倍に増やせば、問題が解決されるはずです。それには、次のコマンドを実行します。
sysctl -w vm.max_map_count=655300 |
問題が解決されない場合、さらに値を増やす必要がある可能性があります。
[プロジェクト設定] > [Parasoft] > [C/C++test] > [その他の設定] > [詳細オプション] に次のエントリを追加します。
xharness.ignoreFunctionsWithOpenMP true |
cpptestcc ユーティリティを使用してコード カバレッジを収集するには、cpptestcc コマンド ラインに次のオプションを追加します。
-xharness-option="—-ignore-functions-with-openmp=true" |
[プロジェクト設定] > [Parasoft] > [C/C++test] > [その他の設定] > [詳細オプション] に次のエントリを追加します。:xharness.ignoreFunctionsWithClangLoop true
cpptestcc ユーティリティを使用してコード カバレッジを収集するには、cpptestcc コマンド ラインに次のオプションを追加します。
-xharness-option="—-ignore-functions-with-clang-loop=true" |
[プロジェクト設定] > [Parasoft] > [C/C++test] > [その他の設定] > [詳細オプション] に次のエントリを追加します。:xharness.ignoreFunctionsWithIvdep true
cpptestcc ユーティリティを使用してコード カバレッジを収集するには、cpptestcc コマンド ラインに次のオプションを追加します。
-xharness-option="—-ignore-functions-with-ivdep=true" |
[プロジェクト設定] > [Parasoft] > [C/C++test] > [その他の設定] > [詳細オプション] に次のエントリを追加します。:
xharness.ignoreFunctionsWithGccUnroll true
cpptestcc ユーティリティを使用してコード カバレッジを収集するには、cpptestcc コマンド ラインに次のオプションを追加します。
-xharness-option="—-ignore-functions-with-gcc-unroll=true" |
レポートを生成するときに、次のエントリがあるレポート コンフィギュレーション ファイルを指定します。
results.report.active_rules=true
Parasoft 製品によって生成されたレポートを使用するには、環境に sans-serif フォントがある必要があります。国別文字などの一部の文字がレポートで正しく表示されない場合は、システムに sans-serif フォントがインストールされていることを確認してください。
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 |
C/C++ または C/C++test を現行パースペクティブとして設定します。それには、[ウィンドウ] メニューの [パースペクティブを開く] > [その他] をクリックし、C/C++ または C/C++test を選択して [OK] をクリックします。
Eclipse の一部のバージョンのバグにより、オーバーレイ スクロールバーがリストまたはツリーの最後のアイテムを部分的に隠し、ユーザーがアイテムをクリックできない場合があります。Linux での回避策として、次のシステム変数を設定することでオーバーレイ スクロールバーを無効化できます。GTK_OVERLAY_SCROLLING=0
最新の Ubuntu Linux (21.10 以降) を使用している場合、次のコマンドを実行して追加の 'webkit2gtk-driver' システム パッケージをインストールすることを検討してください。
> sudo apt install webkit2gtk-driver |
Ubuntu Linux で Snap ベースのブラウザーをデフォルトのシステム ブラウザーとして使用している場合 (これは Ubuntu 21.10 以降のデフォルトの設定です)、Eclipse IDE がこのブラウザーを起動できない場合があります (https://github.com/eclipse-platform/eclipse.platform.swt/issues/221 を参照)。
Eclipse の [Preferences] > [General] > [Web Browser] > [External web browsers] で特定の外部の Web ブラウザーを使用するよう設定します。
Name: Firefox (env)
Location: /usr/bin/env
Parameters: firefox %URL%
Linux 版の C/C++test スタンドアロン ディストリビューションの場合、新規ワークスペースでは、自動でこの Firefox ブラウザーが事前に定義され、選択されています。必要に応じて、環境に合わせて設定を更新してください。
別の回避策として、使用したいブラウザーの非 Snap 版をインストールし、システムのデフォルトのブラウザーとして設定します。
Ubuntu Linux で Snap ベースの Firefox など Snap ベースのブラウザーを使用している場合 (これは Ubuntu 21.10 以降のデフォルトの設定です)、/home ディレクトリの外にある HTML ファイルを開くことができない場合があります (https://snapcraft.io/docs/snap-confinement を参照)。
C/C++test のレポートが /home の外 (/tmp の配下など) に作成された場合、Snap ベースのブラウザーがレポートを開くことができない可能性があります。この制限を回避するには、レポートを生成する際に /home 内 (/home/<username>/parasoft/reports など) をレポートの場所として使用します。
Eclipse の CDT インデクサ―が C/C++test 固有の構文を認識できない場合、テスト スイート内の正しいコード要素に問題の可能性を示す赤い下線が表示される可能性があります。この問題を防ぐには、プロジェクト プロパティで Parasoft C/C+test Include Paths プロバイダーを有効にします。
この回避策は、CDT マネージド プロジェクトでだけ有効です。
Cygwin GDB v. 10 以降を使用すると、Eclipse でのデバッグが動作しない可能性があります。これは Eclipse の既知の問題です。回避策として、GDB v. 9 以前のバージョンを使用してください。
テスト ケース エディターまたはテスト ケース ウィザードでテーブルを編集している際に問題が発生した場合 (セルの編集が困難、カーソル移動ができない、列の幅を変更できない、新しい値が保存されないなど)、Linux ディストリビューションが Wayland ディスプレイ サーバーを使用していないかを確認してください。Wayland ディスプレイ サーバーを使用している場合、X11 に変更することを推奨します。
Linux ディストリビューションで使用されているディスプレイ サーバーを確認する方法は、以下のとおりです。
echo $XDG_SESSION_TYPE (大部分のディストリビューションで動作します)ディスプレイ サーバーを X11 に変更する方法は、以下のとおりです。
/etc/gdm3 にある custom.conf です (再起動が必要です)。RuleWizard UI の表示に問題がある場合、Linux ディストリビューションが Wayland ディスプレイ サーバーを使用していないかを確認してください。 Wayland ディスプレイ サーバーを使用している場合、X11 に変更することを推奨します。
Linux ディストリビューションで使用されているディスプレイ サーバーを確認する方法は、以下のとおりです。
echo $XDG_SESSION_TYPE (大部分のディストリビューションで動作します)ディスプレイ サーバーを X11 に変更する方法は、以下のとおりです。
/etc/gdm3 にある custom.conf です (再起動が必要です)。