https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94928
--- Comment #23 from Martin Liška <marxin at gcc dot gnu.org> --- (In reply to Myron Walker from comment #22) > It does the same things a gcov and lcov combined but in python. It also > does merging of data but in a different way than gcov-tool. I might need to > change that. Yes, please use gcov-tool for the merging. > Another part of it is to allow access to different types of > resource location hinting. so a gcov prefix for a source code might be a > github url and token. A gcno file hint might be a web url or sub or nfs > share. Like wise the data file hints might be http, smb or nfs prefixes. That should be done by your script. I realized that for the JSON format you only need to put together .gcda and .gcno files: $ ls tramp3d-v4.gcda tramp3d-v4.gcno $ gcov tramp3d-v4.gcda -i ... $ gunzip tramp3d-v4.gcda.gcov.json.gz $ cat tramp3d-v4.gcda.gcov.json | python -m json.tool | grep '"file"' "file": "tramp3d-v4.cpp", "file": "/usr/include/c++/6/ext/new_allocator.h", "file": "/usr/include/c++/6/ext/aligned_buffer.h", "file": "/usr/include/c++/6/bits/move.h", "file": "/usr/include/c++/6/bits/alloc_traits.h", "file": "/usr/include/c++/6/bits/stl_list.h", "file": "/usr/include/c++/6/bits/allocator.h", "file": "/usr/include/c++/6/bits/allocated_ptr.h", "file": "/usr/include/c++/6/bits/stl_iterator.h", "file": "/usr/include/c++/6/bits/list.tcc", "file": "/usr/include/c++/6/bits/stl_vector.h", "file": "/usr/include/c++/6/iostream", "file": "/usr/include/c++/6/bits/stl_construct.h", "file": "/usr/include/c++/6/bits/stl_uninitialized.h", "file": "/usr/include/c++/6/bits/vector.tcc", "file": "/usr/include/c++/6/bits/stl_algobase.h", "file": "/usr/include/c++/6/bits/stl_pair.h", "file": "/usr/include/c++/6/bits/cpp_type_traits.h", "file": "/usr/include/c++/6/bits/stl_bvector.h", "file": "/usr/include/c++/6/ext/alloc_traits.h", "file": "/usr/include/c++/6/bits/predefined_ops.h", "file": "/usr/include/c++/6/bits/stl_heap.h", "file": "/usr/include/c++/6/bits/stl_iterator_base_funcs.h", "file": "/usr/include/c++/6/bits/stl_iterator_base_types.h", "file": "/usr/include/c++/6/bits/stl_tree.h", "file": "/usr/include/c++/6/bits/stl_algo.h", "file": "/usr/include/c++/6/ext/type_traits.h", "file": "/usr/include/c++/6/bits/stl_function.h", "file": "/usr/include/c++/6/bits/basic_string.tcc", "file": "/usr/include/c++/6/bits/basic_string.h", "file": "/usr/include/c++/6/bits/stl_map.h", "file": "/usr/include/c++/6/iomanip", "file": "/usr/include/c++/6/limits", "file": "/usr/include/c++/6/new", "file": "/usr/include/c++/6/bits/char_traits.h", "file": "/usr/include/c++/6/cmath", And now your script can find and get the corresponding source files. > > https://github.com/myronww/pycover > > Still a work in progress though.