[CMake] Coverage information overestimated? Globbing for *.gcno instead of *.gcda?

Tom Vercauteren tom.vercauteren at m4x.org
Mon Apr 27 10:26:07 EDT 2009


>> I just saw that when ctest is used to generate coverage information,
>> it looks for (gc)da files in the build directory - cf.
>> cmCTestCoverageHandler::FindGCovFiles in cmCTestCoverageHandler.cxx.
>>
>> If I understand it correctly, when everything is setup correctly for a
>> coverage build:
>>  - gcc generates (gc)no files at compile time
>>  - (gc)da files are generated at run time - i.e. when the unit tests are
>> run
>>
>> So, it seems to me that for each (gc)da file we are sure that a (gc)no
>> file exists but not the other way round.
>>
>> Since ctest is looking for (gc)da files, it seems to me that it will
>> lead to over-estimating the coverage information. Indeed, some code
>> can be compiled but never executed by the unit tests.
>>
>
> I don't think this is a problem.   Do you have an example that shows the
> problem?  If the code is not run, it does not produce any coverage
> information in any file for ctest to find???

The reason I am looking at this is because I would like to get a
global coverage percentage that reflects the coverage of my project as
a whole as opposed to only the subset that has some unit tests.

So, it would be interesting for me to show on a cdash-dashboard this
compiled but untested code (at least not automatically by ctest). One
way to do that might be to use gcno files instead of gcda files in
ctest.

The coverage information that I would get form it is that when a gcno
file exists but has no gcda counterpart, there is no coverage at all.
Right now, this is silently discarded.

Tom

P.S.: Thanks for the lightning fast answer!


More information about the CMake mailing list