参考博客
首先依旧是参考
SIR的tcas项目:https://sir.csc.ncsu.edu/php/common/download.php?ac=pub&key=sir/cobjects/sun&id=20&file=tcas_2.0.tar.gz
介绍tcas:https://blog.csdn.net/mangoer_ys/article/details/25974067
介绍gcov工具:https://blog.csdn.net/yanxiangyfg/article/details/80989680
前文:https://blog.csdn.net/CAceAs/article/details/88834485
具体改进
按照昨天的反思,我尝试移除了lcov语句,这样就没有简洁的info文档可供读取,仅能读取tcas.c.gcov。
提升有三:
1.运行速度大大提升,在虚拟机的linux系统运行一个版本的时间由约240秒到18秒。
2.除了需要的matrix和result外不生成过多的多余文档(之前每个版本下有1608个t1,t2…记录分支覆盖和r1,r2…记录lcov结果)
3.因为效率提高,所以一次运行了41个版本。之前需手动改变version40次
以下是具体代码:
import os
import numpy as np
version = 1
test = 1
statement = 1
f = open("./runall.sh")
oldscript = f.readlines()
for version in range(1,42):
#version
#this module is used for running test language----shell
matrix = np.zeros((1609,65))
os.system("gcc -fprofile-arcs -ftest-coverage -o ../versions.alt/versions.orig/v"+str(version)+"/tcas.exe ../versions.alt/versions.orig/v"+str(version)+"/tcas.c -w\n")
os.system("cp ../versions.alt/versions.orig/v"+str(version)+"/tcas.exe ../source\n")
os.system("mv ../scripts/tcas.gcno ../versions.alt/versions.orig/v"+str(version)+"\n")
os.system("mkdir ../outputs/v"+str(version)+"\n")
oldscript = [line for line in oldscript if(not line.startswith("echo"))]
for line in oldscript:
#test case
os.system(line.replace('../outputs', '../outputs/v'+str(version)))
os.system("mv ../scripts/tcas.gcda ../versions.alt/versions.orig/v"+str(version)+"\n")
os.system("gcov -b ../versions.alt/versions.orig/v"+str