-->

Gcovr generates coverage data for 0 files

2019-08-20 03:06发布

问题:

I am setting up code coverage for an iOS application. I am using XCode 5.0.2 and gcovr 3.1 to test and perform code coverage for iOS 7 devices. I initially had issues with .gcda file generation but I followed this blog and resolved the issue.

I have set ‘Generate test coverage files’ to ‘Yes’, ‘Instrument Program flow’ to ‘Yes’ for the Debug module only. I have also set -fprofile-arcs -ftest-coverage for Debug module in ‘Other C Flags’. I have added __gcov_flush() in my app code when application terminates.

Now .gcda files are generating without issues.

I then copy that to my workspace in my Home directory. From the workspace, I try to run code coverage for the application. I execute the gcovr command from the command line, passing –object-directory and gcov command runs for the 252 gdca files I have. In the end I get this output:

Gathered coverage data for 0 files

Please help me in solving the issue. I have spent a lot of time browsing for similar issues but none of the solutions is working out.

回答1:

I haven't tried copying the .gcda files elsewhere, but if I cd to the directory that the gcda files are generated in by default, then run gcovr with no arguments, I get valid results. Perhaps that's what you need to do?



回答2:

gcovr should be executed from the folder where the .gcda and .gcno files exist. And the root path is the folder where the source files(.c or .cpp) exist.

With this, the command looks like something as shown below.

rr-mac:gcdaFolder$ gcovr -r /path_to_C_sourceFiles/ .

For output html file below command works

rr-mac:gcdaFolder$ gcovr --html -o Filename_rp.html -r /path_to_C_sourceFiles/ .

Note: The dot(.) at the end is mandatory



回答3:

For Xcode Coverage results 0 files, you should appoint object-directory with .gcda and .gcno files and your root path should contain the source files(.m .h) when you have a folder such as "Myproject" and all your sourcecode is in that folder, the command looks like this:

gcovr --root="Myproject/." --object-directory = "Build/Intermediates//..//Objects-normal/x86-64/"