clang でカバレッジ

foo.cpp

12 #define BAR(x) *1$
13 template <typename T> void foo(T x) {$
14 for (unsigned I = 0; I < 10; ++I) { BAR(I); }$
15 }$
16 int main() {$
17 foo<int>(0);$
18 foo<float>(0);$
19 return 0;$
20 }$

 

build.sh

1 #!/bin/bash$
2 $
3 clang -fprofile-arcs -ftest-coverage -c foo.cpp$
4 clang --coverage foo.o -o foo$
5 ./foo$
6 llvm-cov gcov -f -b foo.gcda$
7 lcov -d . -b . --gcov-tool ./llvm-gcov.sh -c -o foo.info$
8 genhtml foo.info -o html$

 llvm-gcov.sh

1 #!/bin/bash$
2 exec llvm-cov gcov "$@"$

 

*1:x) || (x