##// END OF EJS Templates
Added ability to relocate gcda and gcno files and added gcovr wrapper...
jeandet -
r398:57611985e772 R3++ draft
parent child
Show More
@@ -0,0 +1,38
1 #!/usr/bin/env python3
2
3 __author__ = "Alexis Jeandet"
4 __copyright__ = "Copyright 2018, Laboratory of Plasma Physics"
5 __credits__ = []
6 __license__ = "GPLv2"
7 __version__ = "1.0.0"
8 __maintainer__ = "Alexis Jeandet"
9 __email__ = "alexis.jeandet@member.fsf.org"
10 __status__ = "Development"
11
12 import argparse
13 import subprocess
14
15
16
17 parser = argparse.ArgumentParser()
18 parser.add_argument("-s", "--sources", help="Source path path", required=True)
19 parser.add_argument("-o", "--output-folder", help="Will generate html report into this folder", required=True)
20 parser.add_argument("-g", "--gcov-exe", help="Gcov executable", required=True)
21 parser.add_argument("path", help="Path where are located gcda and gcno files")
22
23 args = parser.parse_args()
24
25 def main():
26 p = subprocess.Popen(["gcovr",
27 "--gcov-executable=" + args.gcov_exe,
28 "--object-directory=" + args.path,
29 "-r=" + args.sources,
30 "--html",
31 "--html-details",
32 "-o=" + args.output_folder + "/gcov.html"
33 ],
34 stdout=subprocess.PIPE)
35
36
37 if __name__ == "__main__":
38 main()
@@ -15,21 +15,29 import os
15 import serial
15 import serial
16 import argparse
16 import argparse
17 from datetime import datetime
17 from datetime import datetime
18 import pathlib
19 from shutil import copyfile
20
18
21
19 parser = argparse.ArgumentParser()
22 parser = argparse.ArgumentParser()
20 parser.add_argument("-f", "--gcov-file", help="Gcov output file generated by record_lfr_console.py")
23 parser.add_argument("-r", "--remove-prefix", help="Will remove given prefix path", default="")
24 parser.add_argument("-o", "--output-folder", help="Will prepend given path to gcda files", default="")
25 parser.add_argument("file", help="Gcov output file generated by record_lfr_console.py")
21 args = parser.parse_args()
26 args = parser.parse_args()
22
27
23
28
24
25 def main():
29 def main():
26 with open(args.gcov_file,'r') as gcov:
30 with open(args.file, 'r') as gcov:
27 files = []
31 files = []
28 for line in gcov.readlines():
32 for line in gcov.readlines():
29 head,dest_file,data = line.split(',')
33 head, dest_file,data = line.split(',')
30 if dest_file not in files:
34 if dest_file not in files:
31 files.append(dest_file)
35 files.append(dest_file)
32 if head == '_GCOV_':
36 if head == '_GCOV_':
37 gcno_file = dest_file.replace(".gcda",".gcno")
38 dest_file = dest_file.replace(args.remove_prefix, args.output_folder)
39 pathlib.Path(os.path.dirname(dest_file)).mkdir(parents=True, exist_ok=True)
40 copyfile(gcno_file, gcno_file.replace(args.remove_prefix, args.output_folder))
33 print(f"Writing {dest_file}\n")
41 print(f"Writing {dest_file}\n")
34 with open(dest_file,'wb') as gcda_file:
42 with open(dest_file,'wb') as gcda_file:
35 gcda_file.write(bytes([int(''.join(value),16) for value in zip(data[::2],data[1::2]) ]))
43 gcda_file.write(bytes([int(''.join(value),16) for value in zip(data[::2],data[1::2]) ]))
1 NO CONTENT: modified file chmod 100644 => 100755
NO CONTENT: modified file chmod 100644 => 100755
General Comments 0
You need to be logged in to leave comments. Login now