def Get_Ignored_Issues(ServerData, values, log): """Get summary of all ignored issues where Severity is Critical/Error and Code is NOT ServerData["ComplexityCode"] and issue ID of ignored issues without related comment""" temp_ignored = {} issue_id = [] vals = copy(values) val = copy(values) vals['action'] = "search" for i in 1, 2: # find all ignore Critical and Error issues vals["query"] = "severity:%d status:ignore -code:%s grouping:%s" % ( i, ServerData["ComplexityCode"], ServerData["Grouping"]) log.write("Getting not-ignored issues, query:\n %s" % vals) Response = AccessControl.RequestAPI(ServerData["url"], vals) Result = AccessControl.ParseAPI(ClassesAPI.IssuesBuild, Response) val["action"] = "issue_details" for issue in Result: # Search for ignored issues without comments val["id"] = issue.id response = AccessControl.RequestAPI(ServerData["url"], val) issue_details = AccessControl.ParseAPI(ClassesAPI.IssuesDetail, response) for index in range(len(issue_details[0].history)): if issue_details[0].history[index].status == u'Ignore': if issue_details[0].history[index].comment == u'': if (index - 1) < 0: issue_id.append(issue.id) break elif issue_details[0].history[index - 1].comment == u'': issue_id.append(issue.id) break if i == 1: temp_ignored["crit_ignore"] = len(Result) elif i == 2: temp_ignored["err_ignore"] = len(Result) temp_ignored["no_message_ignore_id"] = str(issue_id).strip('[]') return temp_ignored
def Get_Projects_List(url, values, log): """Get the list of projects from Klocwork server address defined in ServerData["url"]""" vals = copy(values) vals["action"] = "Projects" log.write("Getting projects list, query:\n %s\n" % vals) Response = AccessControl.RequestAPI(url, vals) Result = AccessControl.ParseAPI(ClassesAPI.ProjectList, Response) return Result
def Get_Complexity_Issues(ServerData, values, log): """Appends into temp_project data about complexity issues: 1) Sum of "Approved" issues - status: Not a problem 2) Sum of "Not approved" issues - Status != Not a problem 3) Issue ID and complexity value of top 10 most complex "Not approved" issues - as a tuple""" vals = copy(values) vals['action'] = 'search' vals['query'] = "code:%s" % ServerData["ComplexityCode"] log.write("Getting complexity issues, query:\n %s" % vals) complex_approve = 0 complex_not_approve = 0 complex_details = [] temp_complex = {} import re Response = AccessControl.RequestAPI(ServerData["url"], vals) Result = AccessControl.ParseAPI(ClassesAPI.IssuesBuild, Response) for issue in Result: if issue.status == "Not a Problem": complex_approve += 1 else: complex_not_approve += 1 x = str(issue.message) y = re.search("[0-9]+(?=>)", x) y = int(y.group()) complex_details.append((issue.id, y)) complex_details = sorted(complex_details, key=lambda score: score[1], reverse=True) temp_complex["complex_approved"] = complex_approve temp_complex["complex_not_approved"] = complex_not_approve temp_complex["ComplexityDetails"] = complex_details[:10] return temp_complex
def Get_Builds_List(url, values, log): """Returns the first and second latest list of builds for the project in values['project'], and N/A if either one does not exist""" vals = copy(values) temp_project = {} vals["action"] = "builds" log.write("Getting builds list, query:\n %s" % vals) Response = AccessControl.RequestAPI(url, vals) Result = AccessControl.ParseAPI(ClassesAPI.Build, Response) if len(Result) > 0: # Find latest and second latest build dates and names temp_project["last_build"] = Result[0].date if len(Result) > 1: temp_project["prev_build"] = Result[1].date else: temp_project["prev_build"] = "N/A" else: temp_project["last_build"] = "N/A" temp_project["prev_build"] = "N/A" return temp_project
def Get_NotIgnored_Issues(ServerData, values, log): """Appends into "temp_project" data on non-ignored issues: 1) Sum of Critical issues 2) Sum of Error issues 3) Data of Complexity issues - assuming complexity issues are classified as Critical/Error""" temp = {} vals = copy(values) vals['action'] = "search" for i in 1, 2: # find all non-ignore Critical and Error issues vals["query"] = "severity:%d -status:ignore -code:%s grouping:%s" % ( i, ServerData["ComplexityCode"], ServerData["Grouping"]) log.write("Getting ignored issues, query:\n %s" % vals) Response = AccessControl.RequestAPI(ServerData["url"], vals) Result = AccessControl.ParseAPI(ClassesAPI.IssuesBuild, Response) if i == 1: temp["crit_issues"] = len(Result) elif i == 2: temp["err_issues"] = len(Result) return temp