示例#1
0
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
示例#2
0
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
示例#3
0
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
示例#4
0
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
示例#5
0
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