##// 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()
@@ -1,41 +1,49
1 #!/usr/bin/env python3
1 #!/usr/bin/env python3
2
2
3 __author__ = "Alexis Jeandet"
3 __author__ = "Alexis Jeandet"
4 __copyright__ = "Copyright 2018, Laboratory of Plasma Physics"
4 __copyright__ = "Copyright 2018, Laboratory of Plasma Physics"
5 __credits__ = []
5 __credits__ = []
6 __license__ = "GPLv2"
6 __license__ = "GPLv2"
7 __version__ = "1.0.0"
7 __version__ = "1.0.0"
8 __maintainer__ = "Alexis Jeandet"
8 __maintainer__ = "Alexis Jeandet"
9 __email__ = "alexis.jeandet@member.fsf.org"
9 __email__ = "alexis.jeandet@member.fsf.org"
10 __status__ = "Development"
10 __status__ = "Development"
11
11
12 import time
12 import time
13 import sys
13 import sys
14 import os
14 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]) ]))
36 else:
44 else:
37 raise
45 raise
38
46
39
47
40 if __name__ == "__main__":
48 if __name__ == "__main__":
41 main()
49 main()
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