generating branch coverage data for lcov

后端 未结 4 580
旧巷少年郎
旧巷少年郎 2021-02-02 11:44

i\'m trying to use lcov for code coverage metrics, but I cannot get branches coverage to work.

Here\'s how i\'m using it:

g++ -ggdb3 --coverage src/read.         


        
相关标签:
4条回答
  • 2021-02-02 12:11

    The latest version of LCOV disabled branch coverage by default.

    You need to re-enable it by either:

    • editing your ~/.lcovrc file (copied from /etc/lcovrc) to change lcov_branch_coverage setting to 1
    • adding --rc lcov_branch_coverage=1 to your lcov command lines
    0 讨论(0)
  • 2021-02-02 12:26

    Sorry, not so much an "idea" as a confirmation that you're doing everything correctly. Your exact commands worked on this simple code:

    #include <iostream>
    using namespace std;
    
    bool foo(int i)
    {
        if (i != 0) {
            return 12 / i;
        } else {
            return 0;
        }
    }
    
    int main(int argc, char** argv)
    {
        cout << foo(argc) << endl;
        return 0;
    }
    

    The lcov coverage table has statistics for Lines, Functions, and Branches. Maybe double-check that you're actually looking at the correct output HTML?

    0 讨论(0)
  • 2021-02-02 12:30

    based on this post, the difference may depend on the version of gcc you are using. Can you share which versions you are using. I am not getting branch coverage on:

     i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)
    
    0 讨论(0)
  • 2021-02-02 12:34

    .lcovrc files is file of settings that need to place in path of lcov file. Frankly, I didn't research much on use of this file.

    You need to add additional parameter as "--rc lcov_branch_coverage=1" to lcov for all calls. In your case add this parameter to all your three calls. If you miss one, it will drop branch coverage.

    Also --branch-coverage is needed for genhtml.

    0 讨论(0)
提交回复
热议问题