changes
This commit is contained in:
@@ -569,7 +569,7 @@ def unique_everseen(iterable, key=None):
|
|||||||
seen_add(k)
|
seen_add(k)
|
||||||
yield element
|
yield element
|
||||||
|
|
||||||
def plotBox(yList,labels, fn, rotate=False,limit=True):
|
def plotBox(yList,labels, fn, xAxisLabel,yAxisLabel, rotate=False,limit=True):
|
||||||
import matplotlib
|
import matplotlib
|
||||||
matplotlib.use("TkAgg")
|
matplotlib.use("TkAgg")
|
||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
@@ -583,7 +583,7 @@ def plotBox(yList,labels, fn, rotate=False,limit=True):
|
|||||||
|
|
||||||
flierprops = dict(markeredgecolor ='black',markerfacecolor=
|
flierprops = dict(markeredgecolor ='black',markerfacecolor=
|
||||||
'black',marker='.',markersize=2)
|
'black',marker='.',markersize=2)
|
||||||
box = ax1.boxplot(yList, 0, flierprops=flierprops,widths=0.5, showmeans=False, vert=True,meanprops=meanpointsprops)
|
box = ax1.boxplot(yList, 0, flierprops=flierprops,widths=0.5, showmeans=True, vert=False,meanprops=meanpointsprops)
|
||||||
for line in box['medians']:
|
for line in box['medians']:
|
||||||
x,y = line.get_xydata()[1]
|
x,y = line.get_xydata()[1]
|
||||||
line.set(linewidth=3)
|
line.set(linewidth=3)
|
||||||
@@ -598,15 +598,17 @@ def plotBox(yList,labels, fn, rotate=False,limit=True):
|
|||||||
else:
|
else:
|
||||||
# ax1.set_xticklabels(labels)
|
# ax1.set_xticklabels(labels)
|
||||||
# ax1.set_xticklabels(None)
|
# ax1.set_xticklabels(None)
|
||||||
ax1.get_xaxis().set_ticklabels([])
|
ax1.set_yticklabels(labels, rotation=45, ha='right')
|
||||||
|
ax1.get_yaxis().set_ticklabels(labels)
|
||||||
# sns.boxplot(yList, ax=ax1)
|
# sns.boxplot(yList, ax=ax1)
|
||||||
if limit:
|
if limit:
|
||||||
ax1.set_ylim(top=1.1,bottom=0)
|
ax1.set_xlim(left=0)
|
||||||
ax1.yaxis.set_ticks([0.0,1.0])
|
ax1.yaxis.set_ticks([0.0,1.0])
|
||||||
else:
|
else:
|
||||||
ax1.set_yscale('log')
|
# ax1.set_yscale('log')
|
||||||
ax1.set_xlabel('Cluster Member Size')
|
ax1.set_xlim(left=0)
|
||||||
ax1.set_ylabel('Folds')
|
ax1.set_xlabel(xAxisLabel)
|
||||||
|
ax1.set_ylabel(yAxisLabel)
|
||||||
plt.ion()
|
plt.ion()
|
||||||
|
|
||||||
plt.subplots_adjust(wspace=0, hspace=0)
|
plt.subplots_adjust(wspace=0, hspace=0)
|
||||||
|
|||||||
+47
-17
@@ -33,7 +33,7 @@ if __name__ == '__main__':
|
|||||||
|
|
||||||
# subject = 'ALL'
|
# subject = 'ALL'
|
||||||
# rootType = 'if'
|
# rootType = 'if'
|
||||||
# job = 'validateCodeFlaws'
|
job = 'validateIntro'
|
||||||
print(job)
|
print(job)
|
||||||
|
|
||||||
|
|
||||||
@@ -42,29 +42,55 @@ if __name__ == '__main__':
|
|||||||
createDS()
|
createDS()
|
||||||
|
|
||||||
elif job == 'introRes':
|
elif job == 'introRes':
|
||||||
with open(join(DATA_PATH,'introTestResults186'),'r') as f:
|
|
||||||
lines = f.readlines()
|
|
||||||
|
|
||||||
success = [i for i in lines if i.strip().endswith('success')]
|
def readResultFile(resFile):
|
||||||
|
with open(join(DATA_PATH,resFile),'r') as f:
|
||||||
|
lines = f.readlines()
|
||||||
|
|
||||||
def getPatterns(x):
|
success = [i for i in lines if i.strip().endswith('success')]
|
||||||
regex = r"fix (.*) by (.*) times:1, success"
|
patchCandidates = {}
|
||||||
matches = re.finditer(regex, x, re.MULTILINE)
|
def getPatterns(x):
|
||||||
match = list(matches)
|
regex = r"fix (.*) by (.*) times:1, success"
|
||||||
fixes = []
|
matches = re.finditer(regex, x, re.MULTILINE)
|
||||||
if len(match) >= 1:
|
match = list(matches)
|
||||||
for m in match:
|
fixes = []
|
||||||
t = m.group(1), m.group(2)
|
if len(match) >= 1:
|
||||||
fixes.append(t)
|
patchCandidates[x.split(',')[0]] =re.findall(r"@True[a-zA-z\:0-9\.\-\_]+@", x, re.MULTILINE)
|
||||||
return fixes
|
for m in match:
|
||||||
|
t = m.group(1), m.group(2)
|
||||||
|
fixes.append(t)
|
||||||
|
return fixes
|
||||||
|
|
||||||
success = [getPatterns(i) for i in success]
|
success = [getPatterns(i) for i in success]
|
||||||
|
aDf = pd.DataFrame(columns=['bid','candidates'])
|
||||||
|
idx = 0
|
||||||
|
for k,v in patchCandidates.items():
|
||||||
|
aDf.loc[idx] = [k,[v]]
|
||||||
|
idx+=1
|
||||||
|
aDf['noTested'] = aDf.candidates.apply(lambda x: len(x[0]))
|
||||||
|
aDf['pos'] = aDf.candidates.apply(lambda x: x[0][-1].split(':')[1])
|
||||||
|
aDf['pos'] = aDf['pos'].apply(lambda x: int(x))
|
||||||
|
return aDf,success
|
||||||
|
|
||||||
|
aDf,success =readResultFile('introTestResults186')
|
||||||
|
bDf,success =readResultFile('introTestResultsWhite')
|
||||||
|
|
||||||
|
plotBox([aDf['noTested'].values.tolist(),bDf['noTested'].values.tolist()], ['blackbox','whitebox'] ,'test.pdf',yAxisLabel='',xAxisLabel='Position of the first plausible patch', limit=False)
|
||||||
patterns = pd.DataFrame(columns=['bug','pj','pattern'])
|
patterns = pd.DataFrame(columns=['bug','pj','pattern'])
|
||||||
for idx,suc in enumerate(success):
|
for idx,suc in enumerate(success):
|
||||||
bug,pattern =suc[0]
|
bug,pattern =suc[0]
|
||||||
pj =bug.split(':')[1]
|
pj =bug.split(':')[1]
|
||||||
patterns.loc[idx] = [bug,pj,pattern.split(pj+'.c')[-1]]
|
patterns.loc[idx] = [bug,pj,pattern.split(pj+'.c')[-1]]
|
||||||
patterns
|
fixPatterns = patterns.groupby(by=['pattern'], as_index=False).agg(lambda x: x.tolist())
|
||||||
|
fixPatterns['count'] = fixPatterns.bug.apply(lambda x: len(x))
|
||||||
|
fixPatterns.sort_values(by=['count'], ascending=False, inplace=True)
|
||||||
|
fixPatterns[['pattern','count']].to_latex(index=False)
|
||||||
|
|
||||||
|
for i in fixPatterns.pattern.values.tolist():
|
||||||
|
i = re.findall(r"((.*)\.c$)", i, re.MULTILINE)[0][1]
|
||||||
|
|
||||||
|
shutil.copy2(join(DATA_PATH, 'patches', 'cocci', i), join(DATA_PATH, 'white', i))
|
||||||
|
|
||||||
summary = patterns.groupby(by=['pj'], as_index=False).agg(lambda x: x.tolist())
|
summary = patterns.groupby(by=['pj'], as_index=False).agg(lambda x: x.tolist())
|
||||||
summary['bCount'] = summary.bug.apply(lambda x:len(x))
|
summary['bCount'] = summary.bug.apply(lambda x:len(x))
|
||||||
|
|
||||||
@@ -74,6 +100,10 @@ if __name__ == '__main__':
|
|||||||
elif job =='dataset4c':
|
elif job =='dataset4c':
|
||||||
from otherDatasets import core
|
from otherDatasets import core
|
||||||
core()
|
core()
|
||||||
|
|
||||||
|
elif job =='datasetIntro':
|
||||||
|
from introDS import core
|
||||||
|
core()
|
||||||
elif job =='richedit':
|
elif job =='richedit':
|
||||||
dbDir = join(DATA_PATH, 'redis')
|
dbDir = join(DATA_PATH, 'redis')
|
||||||
stopDB(dbDir, REDIS_PORT)
|
stopDB(dbDir, REDIS_PORT)
|
||||||
@@ -102,7 +132,7 @@ if __name__ == '__main__':
|
|||||||
elif job == 'cluster':
|
elif job == 'cluster':
|
||||||
from abstractPatch import cluster
|
from abstractPatch import cluster
|
||||||
|
|
||||||
dbDir = join(DATA_PATH, 'redis')
|
dbDir = join(ROOT_DIR,'data','redis')
|
||||||
startDB(dbDir, REDIS_PORT, PROJECT_TYPE)
|
startDB(dbDir, REDIS_PORT, PROJECT_TYPE)
|
||||||
cluster(join(DATA_PATH,'actions'),join(DATA_PATH, 'pairs'),'actions')
|
cluster(join(DATA_PATH,'actions'),join(DATA_PATH, 'pairs'),'actions')
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user