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
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)