mirror of
https://gitee.com/openharmony/interface_sdk_c
synced 2025-02-16 23:08:59 +00:00
不再对NDK编译后的特定目录过滤
Signed-off-by: zhangwuf <zhangwu47@huawei.com>
This commit is contained in:
parent
2cf3edbd83
commit
08b8693cfd
@ -292,7 +292,7 @@ def diff_list(old_file_list, new_file_list, old_dir, new_dir):
|
|||||||
def add_new_file(diff_file_path):
|
def add_new_file(diff_file_path):
|
||||||
if os.path.isdir(diff_file_path):
|
if os.path.isdir(diff_file_path):
|
||||||
add_file(diff_file_path)
|
add_file(diff_file_path)
|
||||||
elif filter_ignore_file(diff_file_path):
|
else:
|
||||||
result_map = parse_file_result(diff_parser_include_ast(global_new_dir, [diff_file_path], flag=1))
|
result_map = parse_file_result(diff_parser_include_ast(global_new_dir, [diff_file_path], flag=1))
|
||||||
for new_info in result_map.values():
|
for new_info in result_map.values():
|
||||||
diff_info_list.extend(judgment_entrance(None, new_info))
|
diff_info_list.extend(judgment_entrance(None, new_info))
|
||||||
@ -301,7 +301,7 @@ def add_new_file(diff_file_path):
|
|||||||
def del_old_file(diff_file_path):
|
def del_old_file(diff_file_path):
|
||||||
if os.path.isdir(diff_file_path):
|
if os.path.isdir(diff_file_path):
|
||||||
del_file(diff_file_path)
|
del_file(diff_file_path)
|
||||||
elif filter_ignore_file(diff_file_path):
|
else:
|
||||||
result_map = parse_file_result(diff_parser_include_ast(global_old_dir, [diff_file_path], flag=0))
|
result_map = parse_file_result(diff_parser_include_ast(global_old_dir, [diff_file_path], flag=0))
|
||||||
for old_info in result_map.values():
|
for old_info in result_map.values():
|
||||||
diff_info_list.extend(judgment_entrance(old_info, None))
|
diff_info_list.extend(judgment_entrance(old_info, None))
|
||||||
@ -324,14 +324,13 @@ def get_same_file_diff(target_file, old_file_list, new_file_list, old_dir, new_d
|
|||||||
|
|
||||||
|
|
||||||
def get_file_result_diff(old_target_file, new_target_file):
|
def get_file_result_diff(old_target_file, new_target_file):
|
||||||
if filter_ignore_file(old_target_file):
|
old_file_result_map = parse_file_result(diff_parser_include_ast(global_old_dir, [old_target_file], flag=0))
|
||||||
old_file_result_map = parse_file_result(diff_parser_include_ast(global_old_dir, [old_target_file], flag=0))
|
new_file_result_map = parse_file_result(diff_parser_include_ast(global_new_dir, [new_target_file], flag=1))
|
||||||
new_file_result_map = parse_file_result(diff_parser_include_ast(global_new_dir, [new_target_file], flag=1))
|
if old_file_result_map and new_file_result_map:
|
||||||
if old_file_result_map and new_file_result_map:
|
merged_dict = OrderedDict(list(old_file_result_map.items()) + list(new_file_result_map.items()))
|
||||||
merged_dict = OrderedDict(list(old_file_result_map.items()) + list(new_file_result_map.items()))
|
all_key_list = merged_dict.keys()
|
||||||
all_key_list = merged_dict.keys()
|
for key in all_key_list:
|
||||||
for key in all_key_list:
|
diff_info_list.extend(judgment_entrance(old_file_result_map.get(key), new_file_result_map.get(key)))
|
||||||
diff_info_list.extend(judgment_entrance(old_file_result_map.get(key), new_file_result_map.get(key)))
|
|
||||||
|
|
||||||
|
|
||||||
def del_file(dir_path):
|
def del_file(dir_path):
|
||||||
@ -342,7 +341,7 @@ def del_file(dir_path):
|
|||||||
file_path = os.path.join(dir_path, i)
|
file_path = os.path.join(dir_path, i)
|
||||||
if os.path.isdir(file_path):
|
if os.path.isdir(file_path):
|
||||||
del_file(file_path)
|
del_file(file_path)
|
||||||
if get_file_ext(i) == '.h' and filter_ignore_file(file_path):
|
if get_file_ext(i) == '.h':
|
||||||
result_map = parse_file_result(diff_parser_include_ast(global_old_dir, [file_path], flag=0))
|
result_map = parse_file_result(diff_parser_include_ast(global_old_dir, [file_path], flag=0))
|
||||||
for old_info in result_map.values():
|
for old_info in result_map.values():
|
||||||
diff_info_list.extend(judgment_entrance(old_info, None))
|
diff_info_list.extend(judgment_entrance(old_info, None))
|
||||||
@ -356,7 +355,7 @@ def add_file(dir_path):
|
|||||||
file_path = os.path.join(dir_path, i)
|
file_path = os.path.join(dir_path, i)
|
||||||
if os.path.isdir(file_path):
|
if os.path.isdir(file_path):
|
||||||
add_file(file_path)
|
add_file(file_path)
|
||||||
if get_file_ext(i) == '.h' and filter_ignore_file(file_path):
|
if get_file_ext(i) == '.h':
|
||||||
result_map = parse_file_result(diff_parser_include_ast(global_new_dir, [file_path], flag=1))
|
result_map = parse_file_result(diff_parser_include_ast(global_new_dir, [file_path], flag=1))
|
||||||
for new_info in result_map.values():
|
for new_info in result_map.values():
|
||||||
diff_info_list.extend(judgment_entrance(None, new_info))
|
diff_info_list.extend(judgment_entrance(None, new_info))
|
||||||
|
@ -260,7 +260,7 @@ def get_node_class_name(data):
|
|||||||
return class_name
|
return class_name
|
||||||
|
|
||||||
|
|
||||||
def processing_special_node(cursor, data, key, gn_path): # 处理需要特殊处理的节点
|
def processing_special_node(cursor, data, key, directory_path): # 处理需要特殊处理的节点
|
||||||
if key == 0:
|
if key == 0:
|
||||||
location_path = cursor.spelling
|
location_path = cursor.spelling
|
||||||
kind_name = CursorKind.TRANSLATION_UNIT.name
|
kind_name = CursorKind.TRANSLATION_UNIT.name
|
||||||
@ -273,15 +273,15 @@ def processing_special_node(cursor, data, key, gn_path): # 处理需要特殊
|
|||||||
"location_line": cursor.location.line,
|
"location_line": cursor.location.line,
|
||||||
"location_column": cursor.location.column
|
"location_column": cursor.location.column
|
||||||
}
|
}
|
||||||
if gn_path:
|
if directory_path:
|
||||||
relative_path = os.path.relpath(location_path, gn_path) # 获取头文件相对路
|
relative_path = os.path.relpath(location_path, directory_path) # 获取头文件相对路
|
||||||
loc["location_path"] = relative_path
|
loc["location_path"] = relative_path
|
||||||
data["location"] = loc
|
data["location"] = loc
|
||||||
data["class_name"] = get_node_class_name(data)
|
data["class_name"] = get_node_class_name(data)
|
||||||
data["unique_id"] = get_api_unique_id(cursor, loc, data)
|
data["unique_id"] = get_api_unique_id(cursor, loc, data)
|
||||||
if key == 0:
|
if key == 0:
|
||||||
data["unique_id"] = data["name"]
|
data["unique_id"] = data["name"]
|
||||||
syntax_error_message = diagnostic_callback(cursor.translation_unit.diagnostics, gn_path)
|
syntax_error_message = diagnostic_callback(cursor.translation_unit.diagnostics, directory_path)
|
||||||
data["syntax_error"] = syntax_error_message
|
data["syntax_error"] = syntax_error_message
|
||||||
if kind_name in special_node_process.keys():
|
if kind_name in special_node_process.keys():
|
||||||
node_process = special_node_process[kind_name]
|
node_process = special_node_process[kind_name]
|
||||||
@ -321,12 +321,12 @@ def define_comment(cursor, current_file, data):
|
|||||||
data['comment'] = matches.group()
|
data['comment'] = matches.group()
|
||||||
|
|
||||||
|
|
||||||
def get_default_node_data(cursor, gn_path):
|
def get_default_node_data(cursor, directory_path):
|
||||||
data = {
|
data = {
|
||||||
"name": cursor.spelling,
|
"name": cursor.spelling,
|
||||||
"kind": '',
|
"kind": '',
|
||||||
"type": cursor.type.spelling,
|
"type": cursor.type.spelling,
|
||||||
"gn_path": gn_path,
|
"gn_path": directory_path,
|
||||||
"node_content": {},
|
"node_content": {},
|
||||||
"comment": '',
|
"comment": '',
|
||||||
"syscap": '',
|
"syscap": '',
|
||||||
@ -374,15 +374,15 @@ def diagnostic_callback(diagnostic, dir_path):
|
|||||||
return syntax_error_message
|
return syntax_error_message
|
||||||
|
|
||||||
|
|
||||||
def parser_data_assignment(cursor, current_file, gn_path, comment=None, key=0):
|
def parser_data_assignment(cursor, current_file, directory_path, comment=None, key=0):
|
||||||
data = get_default_node_data(cursor, gn_path)
|
data = get_default_node_data(cursor, directory_path)
|
||||||
get_comment(cursor, data)
|
get_comment(cursor, data)
|
||||||
if key == 0:
|
if key == 0:
|
||||||
data["kind"] = CursorKind.TRANSLATION_UNIT.name
|
data["kind"] = CursorKind.TRANSLATION_UNIT.name
|
||||||
if comment:
|
if comment:
|
||||||
data["comment"] = comment
|
data["comment"] = comment
|
||||||
if gn_path:
|
if directory_path:
|
||||||
relative_path = os.path.relpath(cursor.spelling, gn_path)
|
relative_path = os.path.relpath(cursor.spelling, directory_path)
|
||||||
data["name"] = relative_path
|
data["name"] = relative_path
|
||||||
else:
|
else:
|
||||||
content = node_extent(cursor, current_file)
|
content = node_extent(cursor, current_file)
|
||||||
@ -396,15 +396,15 @@ def parser_data_assignment(cursor, current_file, gn_path, comment=None, key=0):
|
|||||||
get_permission_value(data)
|
get_permission_value(data)
|
||||||
get_module_name_value(data)
|
get_module_name_value(data)
|
||||||
get_deprecate_since_value(data)
|
get_deprecate_since_value(data)
|
||||||
processing_special_node(cursor, data, key, gn_path) # 节点处理
|
processing_special_node(cursor, data, key, directory_path) # 节点处理
|
||||||
get_file_kit_or_system(data)
|
get_file_kit_or_system(data)
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
def ast_to_dict(cursor, current_file, last_data, gn_path, comment=None, key=0): # 解析数据的整理
|
def ast_to_dict(cursor, current_file, last_data, directory_path, comment=None, key=0): # 解析数据的整理
|
||||||
# 通用赋值
|
# 通用赋值
|
||||||
data = parser_data_assignment(cursor, current_file, gn_path, comment, key)
|
data = parser_data_assignment(cursor, current_file, directory_path, comment, key)
|
||||||
if last_data:
|
if last_data:
|
||||||
data['module_name'] = last_data['module_name']
|
data['module_name'] = last_data['module_name']
|
||||||
data['kit_name'] = last_data['kit_name']
|
data['kit_name'] = last_data['kit_name']
|
||||||
@ -430,7 +430,7 @@ def ast_to_dict(cursor, current_file, last_data, gn_path, comment=None, key=0):
|
|||||||
and child.kind.name != CursorKind.MACRO_INSTANTIATION.name \
|
and child.kind.name != CursorKind.MACRO_INSTANTIATION.name \
|
||||||
and child.kind.name != CursorKind.INCLUSION_DIRECTIVE.name \
|
and child.kind.name != CursorKind.INCLUSION_DIRECTIVE.name \
|
||||||
and (child.location.file.name == current_file):
|
and (child.location.file.name == current_file):
|
||||||
processing_ast_node(child, current_file, data, name, gn_path)
|
processing_ast_node(child, current_file, data, name, directory_path)
|
||||||
else:
|
else:
|
||||||
if cursor.kind == CursorKind.FUNCTION_DECL: # 防止clang默认处理(对于头文件没有的情况)出现没有该键值对
|
if cursor.kind == CursorKind.FUNCTION_DECL: # 防止clang默认处理(对于头文件没有的情况)出现没有该键值对
|
||||||
data["parm"] = []
|
data["parm"] = []
|
||||||
@ -552,17 +552,17 @@ def get_comment(cursor, data: dict):
|
|||||||
data["comment"] = 'none_comment'
|
data["comment"] = 'none_comment'
|
||||||
|
|
||||||
|
|
||||||
def processing_ast_node(child, current_file, data, name, gn_path):
|
def processing_ast_node(child, current_file, data, name, directory_path):
|
||||||
child_data = ast_to_dict(child, current_file, data, gn_path, key=1)
|
child_data = ast_to_dict(child, current_file, data, directory_path, key=1)
|
||||||
if child.kind == CursorKind.TYPE_REF:
|
if child.kind == CursorKind.TYPE_REF:
|
||||||
data["type_ref"] = child_data
|
data["type_ref"] = child_data
|
||||||
else:
|
else:
|
||||||
data[name].append(child_data)
|
data[name].append(child_data)
|
||||||
|
|
||||||
|
|
||||||
def preorder_travers_ast(cursor, comment, current_file, gn_path): # 获取属性
|
def preorder_travers_ast(cursor, comment, current_file, directory_path): # 获取属性
|
||||||
previous_data = {}
|
previous_data = {}
|
||||||
ast_dict = ast_to_dict(cursor, current_file, previous_data, gn_path, comment) # 获取节点属性
|
ast_dict = ast_to_dict(cursor, current_file, previous_data, directory_path, comment) # 获取节点属性
|
||||||
return ast_dict
|
return ast_dict
|
||||||
|
|
||||||
|
|
||||||
@ -617,7 +617,7 @@ def get_start_comments(include_path): # 获取每个头文件的最开始注释
|
|||||||
return content
|
return content
|
||||||
|
|
||||||
|
|
||||||
def api_entrance(share_lib, include_path, gn_path, link_path): # 统计入口
|
def api_entrance(share_lib, include_path, directory_path, link_path): # 统计入口
|
||||||
# clang.cindex需要用到libclang.dll共享库 所以配置共享库
|
# clang.cindex需要用到libclang.dll共享库 所以配置共享库
|
||||||
if not Config.loaded:
|
if not Config.loaded:
|
||||||
Config.set_library_file(share_lib)
|
Config.set_library_file(share_lib)
|
||||||
@ -636,7 +636,7 @@ def api_entrance(share_lib, include_path, gn_path, link_path): # 统计入口
|
|||||||
ast_root_node = tu.cursor # 获取根节点
|
ast_root_node = tu.cursor # 获取根节点
|
||||||
matches = get_start_comments(item) # 接收文件最开始的注释
|
matches = get_start_comments(item) # 接收文件最开始的注释
|
||||||
# 前序遍历AST
|
# 前序遍历AST
|
||||||
file_result_data = preorder_travers_ast(ast_root_node, matches, item, gn_path) # 调用处理函数
|
file_result_data = preorder_travers_ast(ast_root_node, matches, item, directory_path) # 调用处理函数
|
||||||
data_total.append(file_result_data)
|
data_total.append(file_result_data)
|
||||||
iter_line_dist = iter(line_dist)
|
iter_line_dist = iter(line_dist)
|
||||||
first = next(iter_line_dist)
|
first = next(iter_line_dist)
|
||||||
@ -648,12 +648,12 @@ def api_entrance(share_lib, include_path, gn_path, link_path): # 统计入口
|
|||||||
return data_total
|
return data_total
|
||||||
|
|
||||||
|
|
||||||
def get_include_file(include_file_path, link_path, gn_path): # 库路径、.h文件路径、链接头文件路径
|
def get_include_file(include_file_path, link_path, directory_path): # 库路径、.h文件路径、链接头文件路径
|
||||||
# libclang.dll库路径
|
# libclang.dll库路径
|
||||||
libclang_path = StringConstant.LIB_CLG_PATH.value
|
libclang_path = StringConstant.LIB_CLG_PATH.value
|
||||||
# c头文件的路径
|
# c头文件的路径
|
||||||
file_path = include_file_path
|
file_path = include_file_path
|
||||||
# 头文件链接路径
|
# 头文件链接路径
|
||||||
link_include_path = link_path # 可以通过列表传入
|
link_include_path = link_path # 可以通过列表传入
|
||||||
data = api_entrance(libclang_path, file_path, gn_path, link_include_path) # 调用接口
|
data = api_entrance(libclang_path, file_path, directory_path, link_include_path) # 调用接口
|
||||||
return data
|
return data
|
||||||
|
Loading…
x
Reference in New Issue
Block a user