このセクションは、C/C++test で発生する可能性がある問題のトラブルシューティングに役立ちます。
全般
どのファイルが解析されるのか。ヘッダー ファイルを解析する方法は?
C/C++test は、C/C++ ソース ファイルは直接解析しますが、ヘッダー ファイルは間接的に解析します。現在選択されている内容に基づいて、C/C++test はすべての C/C++ ソース ファイルを解析し、選択されているすべてのソース ファイルとヘッダー ファイル (ソース ファイルによってインクルードされているヘッダー ファイルのみ) について違反をレポートします。
例:
- プロジェクト ルートを選択した場合、すべてのソース ファイルが解析されます。ヘッダー ファイルも間接的に解析されます。
- 1 つのソース ファイルを選択した場合、その選択したファイルだけが解析されます。ヘッダー ファイルは解析されません。
- 1 つのソース ファイルと 1 つのヘッダー ファイルを選択した場合、ソース ファイルは解析されます。ソースによってインクルードされている場合、ヘッダー ファイルも解析されます。
- ヘッダー ファイルだけを選択した場合、C++test は解析をスキップします。C++test はヘッダー ファイルを直接解析しないからです。
C/C++test コンソールの冗長レベルを変更するには?
[Parasoft] メニューの [設定] をクリックして [コンソール] をクリックし、冗長レベル (高、通常、低) を選択します。
高 | 通常 | 低 | |
---|---|---|---|
基本情報 現行のステップの名前とステータス (終了、失敗、最新) | 〇 | 〇 | 〇 |
エラー | 〇 | 〇 | 〇 |
警告 | 〇 | × | × |
コマンド ライン | 〇 | 〇 | × |
静的解析と単体テストの実行中に表示される違反 | ○ すべてを表示 | ○ 一部省略 | × |
C/C++test がメモリ不足になったらどうすればいいのか ?
C/C++test がメモリ不足になるのを防ぐには、C/C++test を起動するスクリプトまたはショートカットにメモリ パラメーターを追加します。2 つのメモリ パラメーターは、それぞれ JVM (Xms) の初期サイズと JVM (Xmx) の最大サイズを指定します。通常は両方に同じサイズ (たとえば 1024MB) を設定します。ただし、ときおり問題が発生しているが大きなメモリ サイズを常に割り当てておくことは避けたい場合、2 つのパラメーターに異なる値 (たとえば初期サイズ 1024MB と最大サイズ 1400MB) を設定することができます。設定できる最大サイズは、 OS と JVM によって異なります。
例:
C/C++test スタンドアロン版: cpptest.exe -J-Xms1024m -J-Xmx1400m
C/C++test プラグイン版: eclipse.exe -vmargs -Xmx1400m
-Xmx
の値を指定することでメモリの割り当てサイズをカスタマイズできます。この方法は、静的解析を実行する場合や、結果を DTP にレポートする場合に特に便利です。詳細は「詳細オプションの設定」を参照してください。接続タイムアウトを変更する方法
問題の原因がネットワークまたは接続にあると推測される場合、JVM に次のスイッチを追加し、タイムアウトを調整してみるとよいでしょう。
スイッチ | 説明 | 例 |
---|---|---|
parasoft.ws.timeout | すべてのサービスのソケット タイムアウトを設定します。秒単位で値を指定します。 | -Dparasoft.ws.timeout=60 |
parasoft.ws.connection.timeout | すべてのサービスの接続タイムアウトを設定します。秒単位で値を指定します。 | -Dparasoft.ws.connection.timeout=15 |
parasoft.tcm.timeout | Team Server サービスのタイムアウトを設定します。このサービスだけにタイムアウトを設定することも、 parasoft.ws.timeout で設定した全般的な秒数を上書きすることもできます。 | -Dparasoft.tcm.timeout=30 |
Parasoft.ws.timeout.timeout だけが設定されている場合、ソケットおよび接続タイムアウトの両方に影響を与えます。
問題が発生した場合、C/C++test サポートにどんな情報を送信すればいいのか?
「サポート アーカイブの準備」を参照してください。
インストール
どのバージョンの C/C++test がインストールされているかをチェックするには ?
現在どのバージョンの C++test がインストールされているかをチェックするには、次の操作を行います。
- プラグイン版の場合、[ヘルプ] メニューの [Eclipse について] をクリックします。スタンドアロン版の場合、[ヘルプ] メニューの [Parasoft C/C++test について] をクリックします。
- [Parasoft ] ボタンをクリックします。[Parasoft C++test フィーチャーについて] ダイアログが表示されます。
- [バージョン] 列で C/C++test のバージョンを確認します。
C++test が正しく (再) インストールされなかった場合
-clean
オプションを付けて Eclipse を起動します。このオプションを付けて起動すると、Eclipse の内部的なレジストリおよびキャッシュが強制的にリフレッシュされます。
C/C++test プラグインをインストールしたら、Eclipse が起動時にクラッシュするようになった
その理由は、コンフィギュレーション ファイルがあるインストール ディレクトリの場所に書き込みができないからです。この現象は、複数のユーザーで 1 つのインストール領域を共有するように Eclipse を設定している場合によく見られます。この現象を防ぐには、自分のホーム ディレクトリにコンフィギュレーション ファイルを格納してください。詳細については 「その他の要件」を参照してください。
マシン ID が変わってしまうのを防ぐ方法
ネットワーク環境が変わると、マシン 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] という接頭辞が付きます。
C/C++test を新しいバージョンにアップグレードした後、一部のルールの抑制が DTP で無効になっている理由
新しいリリースでメッセージが変更されたルールに関連付けられた抑制は、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/.cpptes
t
C++test 6.x テスト コンフィギュレーションを参照するには?
「C++test 6.x からのテスト資産の移行」を参照してください。
テストおよび解析
コンパイラが自動検出されない場合
Eclipse を起動する前にコンパイラの環境変数 ($PATH や $LD_LIBRARY_PATH ) を正しく設定したか確認してください。
Microsoft Visual C++ コンパイラを使用するには
Visual C++ 6.0
プロジェクトをインポートします。詳細については「To create a C++test project from a Visual Studio 6.0 project」を参照してください。
他のバージョンの Visual C++
他のバージョンの Microsoft Visual C++ については、Visual Studio に付属する Visual Studio Command Prompt ユーティリティ スクリプトを使って、Visual Studio 環境でコンソールを開きます。コンソールから Eclipse を起動して環境が正しく設定されているかを確認します。なお、C++test は Visual Studio 2005 以降のプラグインとしても利用可能です。
cpptestcli の実行時に出る "cannot open .pathtoeclipse file" メッセージとは ?
extinstall
ユーティリティを使って C++test をインストールすると、.pathtoeclipse
というファイルが自動的に作成されます。このファイルは、Eclipse のインストール ディレクトリへのパスを保持します。このファイルが見つからない場合、テキスト ファイルを新規作成して Eclipse へのパスを記述し、 そのテキスト ファイルを <C++test_install_dir>/.pathtoeclipse
として保存してください。
コマンドライン ユーティリティ (cpptestcli) を使ってプロジェクトを作成できるか ?
作成できます。「既存のビルド システムを使った C++test プロジェクト」を参照してください。
Debug Unit Tests テスト コンフィギュレーションでテスト ケースを実行できない場合
Visual Studio 2019 に付属の Microsoft Visual C++ 14.2 コンパイラでコンパイルされたコードをデバッグする場合、デバッグする前に Visual Studio 2019 IDE を起動し、C/C++test の実行が終了するまで背後で実行されるようにします。
C/C++test が静的解析時にタイムアウトをレポートする場合
解析が完了するよう、以下のいずれかを行ってください。
- 次のオプションを設定してタイムアウト上限値を増やします。
cpptest.analyzer.source.timeout=<TIMEOUT_IN_SECONDS>
「詳細オプションの設定」を参照してください。
- テスト コンフィギュレーションで時間がかかるルールまたはメトリクスを無効化します。コンソールに表示されるタイムアウト メッセージおよびレポートには、時間に関する情報が含まれています。
- Parasoft 製品サポートに問い合わせます。
レポート
現在有効な静的解析ルールのリストをレポートとして生成するには、どうすればいいか?
レポートを生成するときに、次のエントリがあるレポート コンフィギュレーション ファイルを指定します。
results.report.active_rules=true
C/C++test のレポートに正常に表示されない文字がある場合
Parasoft 製品が生成するレポートを表示するには、環境にサンセリフ フォントが必要です。各国語文字など、正常に表示されない文字がある場合、システムにサンセリフ フォントがインストールされているかを確認してください。
IDE での操作
Parasoft メニューが表示されない場合
C/C++ または C++test を現行パースペクティブとして設定します。それには、[ウィンドウ] メニューの [パースペクティブを開く] > [その他] をクリックし、C/C++ または C++test を選択して [OK] をクリックします。
Linux で Eclipse のオーバーレイ スクロールバーが C/C++test の GUI を隠してしまう場合
Eclipse の一部のバージョンのバグにより、オーバーレイ スクロールバーがリストまたはツリーの最後のアイテムを部分的に隠し、ユーザーがアイテムをクリックできない場合があります。Linux での回避策として、次のシステム変数を設定することでオーバーレイ スクロールバーを無効化できます。 GTK_OVERLAY_SCROLLING=0