2016-09-07 3 views
0

私はC++でいくつかのテストを書いていますが、カバレッジについての情報を得るためにgcovを使用しています(実際はlcovですが、それはポイントの横にあると思います)。実行時にgcovカバレッジを無効にする

実行時に情報レコードを無効にする方法はありますか? E.G. :この場合

bool myTest() { 
    ObjectToTest obj; 

    /* Enable gcov... */ 

    obj.FunctionToTest(); 

    /* ...Disable gcov */ 

    if(obj.GetStatus() != WHATEVER) 
     return false; 
    else 
     return true; 
} 

私はgcovのはただFunctionToTestを「カバー」が、ObjectToTestコンストラクタとのGetStatusを残す「発見」として表示したいと思います。

ありがとうございます!

+0

ありません、それは、実際にはできません。計装コードがそこにあると、それを無効にすることはできません。 –

答えて

0

いいえ、gcovの場合は、このようなオプションはありません。

私はクローバーのようないくつかのカバレッジツールでこのようなオプションを見てきましたが、これはソースコードを直接インストルメントすることによって機能します。

問題の解決策のほかに、コードの一部を別のソースファイルに書き込んで、それを含めて希望するソースファイル内に呼び出すことができます。
後でLCOVまたはGCOVRを使用してカバレッジレポートを生成すると、特定のファイルをカバレッジレポートから特定のフラグに渡すことで、指定したファイルを除外するオプションが提供されるためです。

LCOV:

-r tracefile pattern 
    --remove tracefile pattern 
      Remove data from tracefile. 

GCOVR:それはコンパイル時にそれがコードを生成するときに、データを生成した命令を挿入するコンパイラだから

-e EXCLUDE, --exclude=EXCLUDE 
        Exclude data files that match this regular expression 
関連する問題