How to filter files in llvm-cov code coverage report?

6.1k views Asked by At

From the llvm-cov docs:

llvm-cov show [options] -instr-profile PROFILE BIN [-object BIN,...] [[-object BIN]] [SOURCES]

The llvm-cov show command shows line by line coverage of the binaries BIN,... using the profile data PROFILE. It can optionally be filtered to only show the coverage for the files listed in SOURCES.

I'm using the following command:

xcrun llvm-cov show -instr-profile "${PROFDATA}" "${BINARY}" codecov_source_files > Coverage.report

Where codecov_source_files is a file with this line:

*Router.swift

So basically what I want is the report to only contain files with the suffix: Router.swift

But i'm getting a Coverage.report with all the classes in the project.

What am I missing?

2

There are 2 answers

3
Timmmm On BEST ANSWER

It's badly worded but SOURCES is actually a list of file names, not the name of a file containing a list of filenames.

They need to be the paths to the actual source files on disk. It doesn't support wildcards or regex unfortunately.

Edit: By reading the source I have discovered that you can also list directories as SOURCES and it will recurse into them. Also there is an undocumented option -dump-collected-paths which prints the files the SOURCES match.

1
huahua On
  • you can use help to look up supported commands
$ llvm-cov show --help
$ llvm-cov report --help
  • Maybe the following command is the function you want
 --ignore-filename-regex=<string> - Skip source code files with file paths that match the given regular expression