def issueDurationDetector(): zeroCount=0 values=gt.launchDump()['duration'] print (values) print ("Method 1") values.sort() for i in values: if i <=0.1: zeroCount+=1 else: break hv=base.high(values)['value'] hp=base.high(values)['pos'] mv=base.median(values)['value'] mp=base.median(values)['pos'] lv=base.low(values)['value'] lp=base.low(values)['pos'] print ('low val',lv,'median val',mv,'high val',hv) print ('low pos',lp,'median pos',mp,'high pos',hp) k= float((hv-mv)*(mp-lp)/((hp-mp)*(mv-lv))) if k>5 or 20*zeroCount>len(values): print ('BadSmell found in issue Duration') elif k==5: print ('Probably have smells in issue length') else: print ('Issue Duration Detector Passed')
def earlyIssuesByWeekDetector(): issues_nums = [] items = gt.launchDump() issues_nums = gt.divideByTime(items['create_at']) avg_val = np.mean(issues_nums[0:4]) std_dev = np.std(issues_nums[0:4]) val = std_dev data = issues_nums[0:4] print(data) sum = 0 for i in range(len(data)): res = cmp( data[i], avg_val + val ) # when isssues number is greater than avg + 2 * stand deviation or less than avg - 2 * stand deviation res2 = cmp(data[i], avg_val - val) if (i > 0): sum = issues_nums[i - 1] + issues_nums[i] if sum < avg_val and i > 0: print('Badsmells: This week has too less issues.') sum = 0 elif res > 0: print('Badsmells: This week has too many issues.') elif res2 < 0: print('Badsmells: This week has too less issues.') else: print('Issues numbers are normal')
def issueDurationDetector2(): print ("Method 2") zeroCount=0 data=gt.launchDump()['duration'] data.sort() for i in data: if i <=0.1: zeroCount+=1 else: break data=data[1:len(data)-1] stddeviation= std(data) avg= mean(data) high=avg+stddeviation if avg-stddeviation>0: low=avg-stddeviation else: low=0 lowCount=0 highCount=0 for i in data: if i < low: lowCount+=1 if i>high: highCount+=1 print ("avg",avg,"std",stddeviation) print ("strange small count=",lowCount,"strange large count=",highCount,"none issue count",zeroCount) if 20*(lowCount+highCount) > len(data) or 20*zeroCount>len(data): print ("BadSmell found in issue Duration") else: print ("Issue Duration Detector Passed")
def earlyIssuesByWeekDetector(): issues_nums=[] items = gt.launchDump() issues_nums = gt.divideByTime(items['create_at']) avg_val = np.mean(issues_nums[0:4]) std_dev = np.std(issues_nums[0:4]) val = std_dev data = issues_nums[0:4] print(data) sum = 0 for i in range(len(data)): res = cmp(data[i], avg_val + val) # when isssues number is greater than avg + 2 * stand deviation or less than avg - 2 * stand deviation res2 = cmp(data[i], avg_val - val) if (i > 0): sum = issues_nums[i-1] + issues_nums[i] if sum < avg_val and i > 0: print ('Badsmells: This week has too less issues.') sum = 0 elif res > 0: print ('Badsmells: This week has too many issues.') elif res2 < 0: print ('Badsmells: This week has too less issues.') else: print ('Issues numbers are normal')
def labelUseDetector(): data=gt.launchDump()['labels'].values() # print (data) data.sort() data=data[0:len(data)-1] stddeviation= std(data) avg= mean(data) high=avg+stddeviation if avg-stddeviation>0: low=avg-stddeviation else: low=0 lowCount=0 highCount=0 print ("avg",avg) print ("std",stddeviation) for i in data: if i < low: lowCount+=1 if i>high: highCount+=1 print ("number of strange low data",lowCount) print ("number of strange high data",highCount) if 10*(lowCount+highCount)/len(data) > 1: print ("BadSmell found in Label Use") else: print ("Label Use Detector Passed")
def issueDurationDetector(): zeroCount = 0 values = gt.launchDump()['duration'] print(values) print("Method 1") values.sort() for i in values: if i <= 0.1: zeroCount += 1 else: break hv = base.high(values)['value'] hp = base.high(values)['pos'] mv = base.median(values)['value'] mp = base.median(values)['pos'] lv = base.low(values)['value'] lp = base.low(values)['pos'] print('low val', lv, 'median val', mv, 'high val', hv) print('low pos', lp, 'median pos', mp, 'high pos', hp) k = float((hv - mv) * (mp - lp) / ((hp - mp) * (mv - lv))) if k > 5 or 20 * zeroCount > len(values): print('BadSmell found in issue Duration') elif k == 5: print('Probably have smells in issue length') else: print('Issue Duration Detector Passed')
def issueDurationDetector2(): print("Method 2") zeroCount = 0 data = gt.launchDump()['duration'] data.sort() for i in data: if i <= 0.1: zeroCount += 1 else: break data = data[1:len(data) - 1] stddeviation = std(data) avg = mean(data) high = avg + stddeviation if avg - stddeviation > 0: low = avg - stddeviation else: low = 0 lowCount = 0 highCount = 0 for i in data: if i < low: lowCount += 1 if i > high: highCount += 1 print("avg", avg, "std", stddeviation) print("strange small count=", lowCount, "strange large count=", highCount, "none issue count", zeroCount) if 20 * (lowCount + highCount) > len(data) or 20 * zeroCount > len(data): print("BadSmell found in issue Duration") else: print("Issue Duration Detector Passed")
def labelUseDetector(): data = gt.launchDump()['labels'].values() # print (data) data.sort() data = data[0:len(data) - 1] stddeviation = std(data) avg = mean(data) high = avg + stddeviation if avg - stddeviation > 0: low = avg - stddeviation else: low = 0 lowCount = 0 highCount = 0 print("avg", avg) print("std", stddeviation) for i in data: if i < low: lowCount += 1 if i > high: highCount += 1 print("number of strange low data", lowCount) print("number of strange high data", highCount) if 10 * (lowCount + highCount) / len(data) > 1: print("BadSmell found in Label Use") else: print("Label Use Detector Passed")
def process_issues(features): issues = gitable.launchDump() weekly_issues = issues['week'] del issues['week'] author_issues = dict() events_issues =dict() comments_issues = dict() for issue, events in issues.iteritems(): #print("ISSUE " + str(issue)) dict_add(author_issues, events[0].user) dict_add(comments_issues, events[0].comments) dict_add(events_issues, len(events[1:])) draw_bar(author_issues.values(), "issues number posted by person","issues", range(len(author_issues.keys())),"person",0.35) author_filter = filter.filter(author_issues) large_author = author_filter.large() features['issues_person'] = author_filter if(len(large_author) >0 ): features['large issues post by single user'] = large_author small_author = author_filter.small(delta=2) if(len(small_author) >0 ): features['small issues post by single user'] = small_author draw_bar(comments_issues.values(),"issues number with same comments number","issues",comments_issues.keys(),"comments number",0.35) events_filter= filter.filter(events_issues) features['events_issues'] = events_filter if len(events_filter.large())>0: features['large issues with same events'] = events_filter.large() comments_filter = filter.filter(comments_issues) features['comments_issues'] = comments_filter large_comments = comments_filter.large() if(len(large_comments)>0): features['large issues with same comments'] = large_comments draw_bar(events_issues.values(),"issues number with same events number", "issues",events_issues.keys(),"events number",0.35) single_user = filter.filter(author_issues) single_user.large(5)
def earlyDetector(): issues_nums=[] items = gt.launchDump() issues_nums = gt.divideByTime(items['create_at']) avg_val = np.mean(issues_nums[0:3]) std_dev = np.std(issues_nums[0:3]) val = 1.2*std_dev for x in issues_nums[0:3]: res = cmp(x, avg_val + val) # when isssues number is greater than avg + 2 * stand deviation or less than avg - 2 * stand deviation res2 = cmp(x, avg_val - val) if res > 0: print ('Badsmells: This week has too many issues.') elif res2 < 0: print ('Badsmells: This week has too less issues.') else: print ('Issues numbers are normal')
def labelUseDetector(): data=gt.launchDump()['labels'].values() print (data) data.sort() data=data[1:len(data)-1] stddeviation= std(data) avg= mean(data) high=avg+stddeviation if avg-stddeviation>0: low=avg-stddeviation else: low=0 lowCount=0 highCount=0 for i in data: if i < low: lowCount+=1 if i>high: highCount+=1 if 8*lowCount/len(data) > 1 or 8*highCount/len(data)>1: print ("BadSmell found in Label Use") else: print ("Label Use Detector Passed")
def issueDurationDetector(): values=gt.launchDump()['duration'] # values.sort() print (values)