def get_dep_info(dep_name, dep_version, direct_dep):
    global targetFramework
    global global_dep_info_dict
    global error_directly_dependency_list

    new_dependencies_list = []
    key = dep_name + dep_version
    matched_framework = ""

    return_dep_list = []

    if key in global_dep_info_dict:
        return_dep_list = global_dep_info_dict[key]
    else:

        # 查询提交时间
        commitTimeStamp_pacakgeType_list = mysql_operation.select_commitTimeStamp_pacakgeType(
            dep_name, dep_version)
        commitTimeStamp = ""

        if commitTimeStamp_pacakgeType_list != []:
            # 时间戳
            commitTimeStamp = commitTimeStamp_pacakgeType_list[0]
            # 框架匹配
            targetFramework_list = mysql_operation.get_targetFramework(
                dep_name, dep_version, commitTimeStamp)
            matched_framework = matching_targetFramework.matching_framework(
                targetFramework, targetFramework_list)

            # 检测框架匹配冲突
            if matched_framework is None or matched_framework == "":
                str_print(
                    "*****************************************************************"
                )
                str_print("error! NU1202 框架匹配冲突")
                str_print("直接依赖及其版本:" + str(direct_dep))
                str_print("已安装版本:" + dep_version)
                str_print("目标框架:" + targetFramework)
                str_print("可兼容框架列表:" + str(targetFramework_list))
                error_directly_dependency_list.append(direct_dep)

            # 查询依赖信息
            # new_dependencies_list格式:
            # [['Microsoft.Extensions.Configuration.FileExtensions', '[3.0.0, )'], ['Microsoft.Extensions.Configuration', '[3.0.0, )']]
            new_dependencies_list = mysql_operation.select_dependenciesinfo(
                dep_name, dep_version, matched_framework, commitTimeStamp)
            return_dep_list.append(new_dependencies_list)
            return_dep_list.append(matched_framework)
        global_dep_info_dict[key] = return_dep_list

    if return_dep_list != []:
        new_dependencies_list = return_dep_list[0]
        matched_framework = return_dep_list[1]

    return new_dependencies_list, matched_framework
Exemple #2
0
def append_waiting_detect_dependencies_list(detect_directly_dependency_info,
                                            detect_dependency_name,
                                            detect_dependency_version,
                                            detect_dependency_level,
                                            matched_framework,
                                            commitTimeStamp):
    global waiting_detect_dependencies_list
    global mysql_operation_select_dependenciesinfo_dict

    # new_dependencies_list = mysql_operation.select_dependenciesinfo(detect_dependency_name, detect_dependency_version,
    #                                                                 matched_framework,
    #                                                                 commitTimeStamp)

    select_dependenciesinfo_key = detect_dependency_name + detect_dependency_version + matched_framework + commitTimeStamp

    if select_dependenciesinfo_key in mysql_operation_select_dependenciesinfo_dict:
        new_dependencies_list = mysql_operation_select_dependenciesinfo_dict[
            select_dependenciesinfo_key]
    else:
        # 待检测依赖版本
        new_dependencies_list = mysql_operation.select_dependenciesinfo(
            detect_dependency_name, detect_dependency_version,
            matched_framework, commitTimeStamp)
        mysql_operation_select_dependenciesinfo_dict[
            select_dependenciesinfo_key] = new_dependencies_list

    for new_dependencies_info in new_dependencies_list:
        new_dependencies_name = new_dependencies_info[0]
        new_dependencies_version_range = new_dependencies_info[1]
        new_dependencies_level = int(detect_dependency_level) + 1
        new_dependencies_str = detect_directly_dependency_info + "@" + new_dependencies_name + "@" + new_dependencies_version_range + "@" + str(
            new_dependencies_level)
        # 新依赖添加到待检测队列
        if new_dependencies_name != "" and new_dependencies_name is not None:
            # append_waiting_detect_dependencies_list(new_dependencies_str)
            # [email protected]@0
            # 包@版本范围@层级
            if waiting_detect_dependencies_list == []:
                waiting_detect_dependencies_list.append(new_dependencies_str)
            else:
                if new_dependencies_str not in waiting_detect_dependencies_list:
                    waiting_detect_dependencies_list.append(
                        new_dependencies_str)