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.
The latest version of LCOV disabled branch coverage by default.
You need to re-enable it by either:
~/.lcovrc
file (copied from /etc/lcovrc) to change lcov_branch_coverage
setting to 1--rc lcov_branch_coverage=1
to your lcov command linesSorry, 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?
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)
.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.