From 4b55ecc8ec200562d2d99897a086898eed168d07 Mon Sep 17 00:00:00 2001 From: flying Date: Thu, 18 Jan 2024 06:28:40 +0000 Subject: [PATCH 1/3] update tools/components_deps/components_deps_analyzer.py. Signed-off-by: flying --- .../components_deps_analyzer.py | 60 +++++++++++++------ 1 file changed, 43 insertions(+), 17 deletions(-) diff --git a/tools/components_deps/components_deps_analyzer.py b/tools/components_deps/components_deps_analyzer.py index a96f29a..d77bb6f 100644 --- a/tools/components_deps/components_deps_analyzer.py +++ b/tools/components_deps/components_deps_analyzer.py @@ -67,31 +67,29 @@ class Analyzer: @classmethod def __judge_deps(cls, gn_path: str, new_line_num: str, open_components_list, optional_components, white_names): - error = list() deps = list() - dependent_close = True new_line_num = [int(i) for i in new_line_num.split('_')] with open(gn_path, 'r', encoding='utf-8') as r: gn_lines = [line.strip("\n") for line in r.readlines()] + dependent_close = True txt = '' for line in gn_lines: txt += line - in_if_txt = ' '.join(re.findall('if \(.+?\{(.*?)\}', txt)) for component in open_components_list: if dependent_close == True: if component in txt: dependent_close = False - for i in new_line_num: - dep_txt = re.findall('deps = \[(.*?)\]', gn_lines[i - 1]) + re.findall('deps += \[(.*?)\]', gn_lines[i - 1]) - dep_info = list() - for info in dep_txt: - if '/' in info: - dep_info += re.findall('/(.*?):', info) - else: - dep_info += re.findall('"(.*?):', info) + scan_line_num = cls.__get_scan_line_num(gn_lines, new_line_num) + for i in scan_line_num: + dep_info = "" + if '/' in gn_lines[i - 1]: + dep_info += re.findall('/(.*?):', gn_lines[i - 1])[0] + else: + dep_info += re.findall('"(.*?):', gn_lines[i - 1])[0] for component in optional_components: - if component not in white_names and component in dep_info and component not in in_if_txt: + if component not in white_names and component in dep_info: deps.append((component, i)) + error = list() if dependent_close == True and re.findall('deps =', txt): line = cls.__get_line(gn_lines, 'deps =') error.append( @@ -103,6 +101,36 @@ class Analyzer: "detail": "依赖开源部件中的非必选部件{},请检查deps中的内容".format(one_dep[0])}) return error + @classmethod + def __get_scan_line_num(cls, gn_lines, new_line_num): + add_line_txt = '' + line_num = 0 + for line in gn_lines: + line_num += 1 + add_line_txt += '#' + str(line_num) + '#' + line + in_if_txt = re.findall('if \(.+?\{(.*?)\}', add_line_txt) + in_if_line_num = cls.__get_line_num(in_if_txt) + in_dep_txt = re.findall('deps = \[(.*?)\]', add_line_txt) + re.findall('deps += \[(.*?)\]', add_line_txt) + in_dep_line_num = cls.__get_line_num(in_dep_txt) + for line_num, line in enumerate(gn_lines): + if ('deps = ' in line or 'deps += ' in line) and ']' in line and (line_num + 1) not in in_dep_line_num: + in_dep_line_num.append(line_num + 1) + scan_line = list() + for num in new_line_num: + if num not in in_if_line_num and num in in_dep_line_num: + scan_line.append(num) + return scan_line + + @classmethod + def __get_line_num(cls, txt_line_list): + line_num = list() + for one_txt in txt_line_list: + one_line_list = re.findall('#(.*?)#', one_txt) + if one_line_list != ['']: + line_num += one_line_list + line_num = [int(i) for i in line_num] + return line_num + @classmethod def analysis(cls, gn_path_list, new_line_nums, gn_name, config_path: str, open_components_path, result_json_name: str): @@ -113,12 +141,10 @@ class Analyzer: print("error: {} is inaccessible or not found".format(open_components_path)) return if len(gn_path_list) != len(new_line_nums): - print( - "error: The new_line_nums and the gn_path are not in one-to-one correspondence.") + print("error: The new_line_nums and the gn_path are not in one-to-one correspondence.") return if len(gn_path_list) != len(gn_name): - print( - "error: The gn_path and gn_name are not in one-to-one correspondence.") + print("error: The gn_path and gn_name are not in one-to-one correspondence.") return required_components = cls.__get_required_components(config_path) open_components, gn_name_list, white_list = cls.__get_open_components(open_components_path) @@ -169,4 +195,4 @@ if __name__ == '__main__': open_components_xml_path = args.open_component_xml_path result_json = args.result_json_name Analyzer.analysis(gn_path_list_name, new_line_nums_list, gn_component_name, config_path, open_components_xml_path, - result_json) \ No newline at end of file + result_json) -- Gitee From 984a8896d737fd2076c509a326c1ff1e40a82fdb Mon Sep 17 00:00:00 2001 From: flying Date: Thu, 18 Jan 2024 09:04:01 +0000 Subject: [PATCH 2/3] update tools/components_deps/components_deps_analyzer.py. Signed-off-by: flying --- tools/components_deps/components_deps_analyzer.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/tools/components_deps/components_deps_analyzer.py b/tools/components_deps/components_deps_analyzer.py index d77bb6f..1ca7962 100644 --- a/tools/components_deps/components_deps_analyzer.py +++ b/tools/components_deps/components_deps_analyzer.py @@ -33,9 +33,8 @@ class Analyzer: if "path=" in line: one_component = re.findall('path="(.*?)"', line)[0].split('/')[-1] open_components.append(one_component) - gn_name.append(re.findall('name="(.*?)"', line)[0]) - if "third_party" in gn_name: - white_components_list.append(one_component) + one_name = re.findall('name="(.*?)"', line)[0] + gn_name.append(one_name) return open_components, gn_name, white_components_list @classmethod @@ -107,7 +106,7 @@ class Analyzer: line_num = 0 for line in gn_lines: line_num += 1 - add_line_txt += '#' + str(line_num) + '#' + line + add_line_txt += '@' + str(line_num) + '@' + line in_if_txt = re.findall('if \(.+?\{(.*?)\}', add_line_txt) in_if_line_num = cls.__get_line_num(in_if_txt) in_dep_txt = re.findall('deps = \[(.*?)\]', add_line_txt) + re.findall('deps += \[(.*?)\]', add_line_txt) @@ -125,7 +124,7 @@ class Analyzer: def __get_line_num(cls, txt_line_list): line_num = list() for one_txt in txt_line_list: - one_line_list = re.findall('#(.*?)#', one_txt) + one_line_list = re.findall('@(.*?)@', one_txt) if one_line_list != ['']: line_num += one_line_list line_num = [int(i) for i in line_num] @@ -161,7 +160,7 @@ class Analyzer: one_result["error"] = cls.__judge_deps(gn_path_list[i], new_line_nums[i], open_components, optional_components, white_list) else: - one_result["file_path"], one_result["error"] = gn_name_list[i], [] + one_result["error"] = [] result.append(one_result) with os.fdopen(os.open(result_json_name + ".json", os.O_WRONLY | os.O_CREAT, mode=0o640), "w", encoding='utf-8') as fd: -- Gitee From c8eadcce735f22a0de22fc088176e69331f07bfe Mon Sep 17 00:00:00 2001 From: flying Date: Thu, 18 Jan 2024 11:54:09 +0000 Subject: [PATCH 3/3] update tools/components_deps/components_deps_analyzer.py. Signed-off-by: flying --- tools/components_deps/components_deps_analyzer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/components_deps/components_deps_analyzer.py b/tools/components_deps/components_deps_analyzer.py index 1ca7962..c11a130 100644 --- a/tools/components_deps/components_deps_analyzer.py +++ b/tools/components_deps/components_deps_analyzer.py @@ -26,7 +26,7 @@ class Analyzer: def __get_open_components(cls, xml_path): open_components = list() gn_name = list() - white_components_list = ["common"] + white_components_list = ["common", "hilog", "ylong_runtime"] with open(xml_path, 'r', encoding='utf-8') as r: xml_info = r.readlines() for line in xml_info: -- Gitee