diff --git a/libgcov/build_gcov_files.py b/libgcov/build_gcov_files.py old mode 100644 new mode 100755 --- a/libgcov/build_gcov_files.py +++ b/libgcov/build_gcov_files.py @@ -15,21 +15,29 @@ import os import serial import argparse from datetime import datetime +import pathlib +from shutil import copyfile + parser = argparse.ArgumentParser() -parser.add_argument("-f", "--gcov-file", help="Gcov output file generated by record_lfr_console.py") +parser.add_argument("-r", "--remove-prefix", help="Will remove given prefix path", default="") +parser.add_argument("-o", "--output-folder", help="Will prepend given path to gcda files", default="") +parser.add_argument("file", help="Gcov output file generated by record_lfr_console.py") args = parser.parse_args() - def main(): - with open(args.gcov_file,'r') as gcov: + with open(args.file, 'r') as gcov: files = [] for line in gcov.readlines(): - head,dest_file,data = line.split(',') + head, dest_file,data = line.split(',') if dest_file not in files: files.append(dest_file) if head == '_GCOV_': + gcno_file = dest_file.replace(".gcda",".gcno") + dest_file = dest_file.replace(args.remove_prefix, args.output_folder) + pathlib.Path(os.path.dirname(dest_file)).mkdir(parents=True, exist_ok=True) + copyfile(gcno_file, gcno_file.replace(args.remove_prefix, args.output_folder)) print(f"Writing {dest_file}\n") with open(dest_file,'wb') as gcda_file: gcda_file.write(bytes([int(''.join(value),16) for value in zip(data[::2],data[1::2]) ])) diff --git a/libgcov/gcovr.py b/libgcov/gcovr.py new file mode 100755 --- /dev/null +++ b/libgcov/gcovr.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python3 + +__author__ = "Alexis Jeandet" +__copyright__ = "Copyright 2018, Laboratory of Plasma Physics" +__credits__ = [] +__license__ = "GPLv2" +__version__ = "1.0.0" +__maintainer__ = "Alexis Jeandet" +__email__ = "alexis.jeandet@member.fsf.org" +__status__ = "Development" + +import argparse +import subprocess + + + +parser = argparse.ArgumentParser() +parser.add_argument("-s", "--sources", help="Source path path", required=True) +parser.add_argument("-o", "--output-folder", help="Will generate html report into this folder", required=True) +parser.add_argument("-g", "--gcov-exe", help="Gcov executable", required=True) +parser.add_argument("path", help="Path where are located gcda and gcno files") + +args = parser.parse_args() + +def main(): + p = subprocess.Popen(["gcovr", + "--gcov-executable=" + args.gcov_exe, + "--object-directory=" + args.path, + "-r=" + args.sources, + "--html", + "--html-details", + "-o=" + args.output_folder + "/gcov.html" + ], + stdout=subprocess.PIPE) + + +if __name__ == "__main__": + main() diff --git a/libgcov/record_lfr_console.py b/libgcov/record_lfr_console.py old mode 100644 new mode 100755