2010-12-19 139 views
1

C++とQtフレームワークを使用して書かれたAroraブラウザ用のコンポーネントのコードカバレッジを取得しようとしています。Qtとgcov、カバレッジファイルが生成されない

Gnu/LinuxでもMac OS Xでもgcovプログラムを使用することができません。私はインターネット上で見つけられたすべてを試しました。また、.proファイルによって生成されたMakefileを自動的に編集する。

誰かが私を助けてくれますか?これは私の非常に簡単なプロファイルです:

TEMPLATE = app 
TARGET = 
DEPENDPATH += . 
INCLUDEPATH += . 
LIBS += -lgcov 
QMAKE_CXXFLAGS += -g -fprofile-arcs -ftest-coverage -O0 
QMAKE_LDFLAGS += -g -fprofile-arcs -ftest-coverage -O0 


include(../autotests.pri) 

# Input 
SOURCES += tst_quickview.cpp 
HEADERS += 

メイクファイルにフラグが正しく含まれています。私も--coverageオプションを試しました。しかし、何も起こりません。実行ファイルを実行すると、gcovファイルは生成されません。エラーも警告もありません。私はQTestLibフレームワークを使用しています。

は、私は同様の問題を持っていた場合にAtleastのあなた

+0

gcovはまったく動作しますか?コマンドラインだけを使って、Qtとは無関係のシンプルなテストプログラムで動作させることができますか? – Troubadour

+0

うん、ちょうど試してみて、それは動作する – dgraziotin

+0

私は、単純なテストプログラムは、私が働いていないことを意味します。 – dgraziotin

答えて

1

ありがとう、問題は、ディレクトリ構造になっています。

最初の問題は、実行中に適切な.gc *ファイルを生成するために、コンパイラキャッシュを無効にする必要があったことです。私は実際に問題をデバッグしたことはありませんでしたが、今は、gconvファイルがコンパイラのキャッシュフォルダに配置され、カバレッジインスツルメンテーションバイナリの実行中にバイナリが新しいデータファイルを生成する場所を特定できないと仮定します。

2番目の問題は、と同じディレクトリ構造でテストを実行しなければならなかったことです。たとえば、「/ home/foo/src/myproject /」のアプリケーションをコンパイルした場合、そして、...実行は、同じディレクトリ構造やデータファイルで発生しているすべてのサブディレクトリが生成されない...

1

少なくとも、あなたは

QMAKE_LFLAGS += -g -fprofile-arcs -ftest-coverage -O0 

代わりの

QMAKE_LDFLAGS += -g -fprofile-arcs -ftest-coverage -O0 
を使用する必要があります

問題が解決するかどうかは分かりませんが、QMAKE_LDFLAGSは何も役に立ちません。

関連する問題