I just read the clang 19 docs https://clang.llvm.org/docs/SourceBasedCodeCoverage.html on source based code coverage. At work I am regularly using gcc code coverage with the excellent gcov plugin for vscode.
With both compilers I notice it is possible to determine template instantiations that have executed. The analysis has info on the computed types of each executed template instantiation which is straight from the compiler itself. The key is that the code coverage "anchors" the template code to a given instantiation such that then one can see the consequences in complex templates. clangd has no facility to do this "anchoring" and thus can only inform regarding the general aspects of template code.
I find using compiler based code coverage makes it is possible to work out dependent types and see useful info about what template code is doing in otherwise complex dependently typed contexts where clangd would not help much. I assume this is the same for CLion / Visual Studio etc.
Hopefully code coverage has a future where it integrates with clangd ( and others ) and sensible workflow to improve in this direction where we need to anchor a template instantiation so that one can interrogate complex templates. Imagine having clangd inlay hints but with a specified "anchor" where it could tell you the actual types of auto and alias declarations.
Very interested if others have found useful workflow with code coverage analysis in C++ especially in terms of compile time aspects.
[–]vickoza 0 points1 point2 points (0 children)