diff结果列标更新,与js-diff结果列标保持一致和新增或删除文件,需要把文件的内容报出

Signed-off-by: zhangwuf <zhangwu47@huawei.com>
This commit is contained in:
zhangwuf 2024-07-11 17:12:06 +08:00
parent 831cbf1112
commit dc743c509f
4 changed files with 39 additions and 35 deletions

View File

@ -67,6 +67,7 @@ def get_api_change_obj(api_data):
change_data_obj.set_kit_name(element.kit_name)
change_data_obj.set_sub_system(element.sub_system)
change_data_obj.set_is_api_change(element.is_api_change)
change_data_obj.set_class_name(element.class_name)
change_data_obj.set_diff_type(element.operation_diff_type)
change_data_obj.set_change_type(element.api_modification_type)
change_data_obj.set_old_all_text(element.old_api_full_text)
@ -119,6 +120,7 @@ def collect_node_api_change(api_change_info_list):
api_change_info.kit_name,
api_change_info.sub_system,
api_change_info.is_api_change,
api_change_info.class_name,
api_change_info.diff_type,
api_change_info.change_type,
api_change_info.compatible,
@ -152,18 +154,12 @@ def disposal_result_data(result_info_list):
info_data = [
diff_info.operation_diff_type,
diff_info.old_api_full_text,
diff_info.new_api_full_text
diff_info.new_api_full_text,
diff_info.api_file_path,
diff_info.sub_system,
diff_info.kit_name,
diff_info.is_system_api
]
result = '' if diff_info.is_compatible else ''
info_data.append(result)
info_data.append(diff_info.api_file_path)
info_data.append(diff_info.sub_system)
info_data.append(diff_info.kit_name)
api_result = '' if diff_info.is_api_change else ''
info_data.append(api_result)
info_data.append(diff_info.api_modification_type)
info_data.append(diff_info.unique_id)
info_data.append(diff_info.is_system_api)
data.append(info_data)
return data
@ -174,23 +170,20 @@ def generate_excel(result_info_list, api_change_data, output_path):
wb = op.Workbook()
ws = wb['Sheet']
ws.title = 'api差异'
ws.append(['操作标记', '差异项-旧版本', '差异项-新版本', '兼容',
'.h文件', '归属子系统', 'kit', 'API变化', 'API修改类型', '接口全路径', '是否为系统API'])
ws.append(['操作标记', '差异项-旧版本', '差异项-新版本', '.h文件', '归属子系统', 'kit', '是否为系统API'])
for title in data:
d = title[0], title[1], title[2], title[3], title[4],\
title[5], title[6], title[7], title[8], title[9],\
title[10]
d = title[0], title[1], title[2], title[3], title[4], title[5], title[6]
ws.append(d)
change_data_list = collect_node_api_change(api_change_data)
ws_of_change = wb.create_sheet('api变更次数统计')
ws_of_change.append(['api名称', 'kit名称', '归属子系统', '是否是api', '操作标记', '变更类型',
ws_of_change.append(['api名称', 'kit名称', '归属子系统', '是否是api', 'api类型', '操作标记', '变更类型',
'兼容性', '变更次数', '差异项-旧版本', '差异项-新版本', '兼容性列表', '接口全路径',
'是否为系统API'])
for element in change_data_list:
change_data = element[0], element[1], element[2], element[3], element[4], element[5],\
element[6], element[7], element[8], element[9], element[10], element[11],\
element[12]
element[12], element[13]
ws_of_change.append(change_data)
output_path_xlsx = os.path.abspath(os.path.join(output_path, 'diff.xlsx'))
wb.save(output_path_xlsx)
@ -254,18 +247,18 @@ def add_new_file(diff_file_path):
if os.path.isdir(diff_file_path):
add_file(diff_file_path)
else:
result_map = parse_file_result(parser_include_ast(global_new_dir, [diff_file_path], flag=1), 1)
result_map = parse_file_result(parser_include_ast(global_new_dir, [diff_file_path], flag=1))
for new_info in result_map.values():
diff_info_list.extend(judgment_entrance(None, new_info, 1))
diff_info_list.extend(judgment_entrance(None, new_info))
def del_old_file(diff_file_path):
if os.path.isdir(diff_file_path):
del_file(diff_file_path)
else:
result_map = parse_file_result(parser_include_ast(global_old_dir, [diff_file_path], flag=0), 1)
result_map = parse_file_result(parser_include_ast(global_old_dir, [diff_file_path], flag=0))
for old_info in result_map.values():
diff_info_list.extend(judgment_entrance(old_info, None, 1))
diff_info_list.extend(judgment_entrance(old_info, None))
def get_same_file_diff(target_file, old_file_list, new_file_list, old_dir, new_dir):
@ -302,9 +295,9 @@ def del_file(dir_path):
if os.path.isdir(file_path):
del_file(file_path)
if get_file_ext(i) == '.h':
result_map = parse_file_result(parser_include_ast(global_old_dir, [file_path], flag=0), 1)
result_map = parse_file_result(parser_include_ast(global_old_dir, [file_path], flag=0))
for old_info in result_map.values():
diff_info_list.extend(judgment_entrance(old_info, None, 1))
diff_info_list.extend(judgment_entrance(old_info, None))
def add_file(dir_path):
@ -316,9 +309,9 @@ def add_file(dir_path):
if os.path.isdir(file_path):
add_file(file_path)
if get_file_ext(i) == '.h':
result_map = parse_file_result(parser_include_ast(global_new_dir, [file_path], flag=1), 1)
result_map = parse_file_result(parser_include_ast(global_new_dir, [file_path], flag=1))
for new_info in result_map.values():
diff_info_list.extend(judgment_entrance(None, new_info, 1))
diff_info_list.extend(judgment_entrance(None, new_info))
def parse_file_result(result, data_type=0):
@ -331,7 +324,6 @@ def parse_file_result(result, data_type=0):
for root_node in result:
if data_type != 1:
parse_file_result_by_child(result_map, root_node)
result_map.setdefault(f'{root_node["name"]}-{root_node["kind"]}', root_node)
return result_map

View File

@ -198,10 +198,14 @@ special_node_process = {
def get_api_unique_id(cursor, loc):
unique_id = ''
if cursor.kind == CursorKind.MACRO_DEFINITION:
unique_id = '{}#{}'.format(loc["location_path"], cursor.spelling)
return unique_id
parent_of_cursor = cursor.semantic_parent
struct_union_enum = [NodeKind.STRUCT_DECL.value, NodeKind.UNION_DECL.value,
NodeKind.ENUM_DECL.value]
unique_id = ''
if parent_of_cursor:
unique_name = cursor.spelling
try:
@ -222,7 +226,7 @@ def get_api_unique_id(cursor, loc):
return unique_id
def processing_special_node(cursor, data, key, gn_path=None): # 处理需要特殊处理的节点
def processing_special_node(cursor, data, key, gn_path): # 处理需要特殊处理的节点
if key == 0:
location_path = cursor.spelling
kind_name = CursorKind.TRANSLATION_UNIT.name
@ -272,7 +276,7 @@ def define_comment(cursor, current_file, data):
data['comment'] = matches.group()
def get_default_node_data(cursor, gn_path=None):
def get_default_node_data(cursor, gn_path):
data = {
"name": cursor.spelling,
"kind": '',
@ -300,7 +304,7 @@ def get_default_node_data(cursor, gn_path=None):
return data
def parser_data_assignment(cursor, current_file, gn_path=None, comment=None, key=0):
def parser_data_assignment(cursor, current_file, gn_path, comment=None, key=0):
data = get_default_node_data(cursor, gn_path)
get_comment(cursor, data)
if key == 0:

View File

@ -126,18 +126,19 @@ def change_abs(include_files, dire_path): # 获取.h绝对路径
# 把规范路径和gn文件对应的目录路径拼接
if os.path.isabs(j_item): # 是否是绝对路径是就拼接路径盘不是就拼接gn目录路径
head = os.path.splitdrive(dire_path) # 获取windows盘路径
include_file = os.path.normpath(j_item)
include_file = j_item
change_path = head[1].split('interface_sdk_c')
replace_path = os.path.normpath(os.path.join(change_path[0], 'interface_sdk_c'))
if 'third_party/node/src' in j_item:
include_file = include_file.replace('\\\\',
'{}{}'.format(replace_path, '\\'))
include_file = include_file.replace('//',
'{}{}'.format(replace_path, '/'))
else:
# 去掉绝对路径的双\\,替换为interface_sdk_c
include_file = include_file.replace('\\\\interface\\sdk_c',
include_file = include_file.replace('//interface/sdk_c',
replace_path)
if head:
include_file = os.path.join(head[0], include_file) # 拼接盘和路径
include_file = os.path.normpath(include_file)
abs_path.append(include_file)
else:
relative_path = os.path.abspath(os.path.join(dire_path, os.path.normpath(j_item))) # ../ .解决

View File

@ -568,6 +568,7 @@ class ApiChangeData:
kit_name: str = ''
sub_system: str = ''
is_api_change = False
class_name: str = ''
diff_type: str = ''
change_type: str = ''
compatible = {}
@ -602,6 +603,12 @@ class ApiChangeData:
def get_is_api_change(self):
return self.is_api_change
def set_class_name(self, class_name):
self.class_name = class_name
def get_class_name(self):
return self.class_name
def set_diff_type(self, diff_type):
self.diff_type = diff_type