• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3# Copyright (c) 2023 Huawei Device Co., Ltd.
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#     http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15
16import enum
17
18operation_mark_dict = {
19    'ADD_FILE': '新增文件',
20    'REDUCE_FILE': '删除文件',
21    'ADD_API': '新增API',
22    'REDUCE_API': '删除API',
23    'ADD_DOC': '增加doc',
24    'REDUCE_DOC': '删除doc',
25    'ADD_DOC_TAG': '增加注释标签',
26    'REDUCE_DOC_TAG': '删除注释标签',
27    'FUNCTION_PARAM_POS_CHANGE': '函数参数位置改变',
28
29    'DEFINE_NAME_CHANGE': '修改宏名',
30    'DEFINE_TEXT_CHANGE': '修改宏文本',
31
32    'FUNCTION_NAME_CHANGE': '修改函数名',
33    'FUNCTION_RETURN_CHANGE': '修改函数返回值',
34    'FUNCTION_PARAM_NAME_CHANGE': '修改函数参数名',
35    'FUNCTION_PARAM_TYPE_CHANGE': '修改函数参数类型',
36    'FUNCTION_PARAM_ADD': '增加函数参数',
37    'FUNCTION_PARAM_REDUCE': '删除函数参数',
38
39    'STRUCT_NAME_CHANGE': '修改结构体名',
40    'STRUCT_MEMBER_NAME_CHANGE': '修改结构体成员名',
41    'STRUCT_MEMBER_TYPE_CHANGE': '修改结构体成员类型',
42    'STRUCT_MEMBER_ADD': '增加结构体成员',
43    'STRUCT_MEMBER_REDUCE': '删除结构体成员',
44
45    'UNION_NAME_CHANGE': '修改联合体名',
46    'UNION_MEMBER_NAME_CHANGE': '修改联合体成员名',
47    'UNION_MEMBER_TYPE_CHANGE': '修改联合体成员类型',
48    'UNION_MEMBER_ADD': '增加联合体成员',
49    'UNION_MEMBER_REDUCE': '删除联合体成员',
50
51    'ENUM_NAME_CHANGE': '修改枚举名',
52    'ENUM_MEMBER_NAME_CHANGE': '修改枚举成员名',
53    'ENUM_MEMBER_VALUE_CHANGE': '修改枚举值',
54    'ENUM_MEMBER_ADD': '增加枚举成员',
55    'ENUM_MEMBER_REDUCE': '删除枚举成员',
56
57    'VARIABLE_NAME_CHANGE': '修改变量名',
58    'VARIABLE_TYPE_CHANGE': '修改变量类型',
59    'VARIABLE_VALUE_CHANGE': '修改变量值',
60    'VARIABLE_CHANGE_TO_CONSTANT': '修改变量为常量',
61
62    'CONSTANT_NAME_CHANGE': '修改常量名',
63    'CONSTANT_TYPE_CHANGE': '修改常量类型',
64    'CONSTANT_VALUE_CHANGE': '修改常量值',
65    'CONSTANT_CHANGE_TO_VARIABLE': '修改常量为变量',
66
67    'TYPEDEF_NAME_TYPE_CHANGE': '修改重命名的名',
68
69    'DOC_TAG_ADDTOGROUP_NA_TO_HAVE': '增加addtogroup标签',
70    'DOC_TAG_ADDTOGROUP_HAVE_TO_NA': '删除addtogroup标签',
71    'DOC_TAG_ADDTOGROUP_A_TO_B': '修改addtogroup标签',
72    'DOC_TAG_BRIEF_NA_TO_HAVE': '增加brief标签',
73    'DOC_TAG_BRIEF_HAVE_TO_NA': '删除brief标签',
74    'DOC_TAG_BRIEF_A_TO_B': '修改brief标签',
75    'DOC_TAG_DEPRECATED_NA_TO_HAVE': '增加deprecated标签',
76    'DOC_TAG_DEPRECATED_HAVE_TO_NA': '删除deprecated标签',
77    'DOC_TAG_DEPRECATED_A_TO_B': '修改deprecated标签',
78    'DOC_TAG_FILE_NA_TO_HAVE': '增加file标签',
79    'DOC_TAG_FILE_HAVE_TO_NA': '删除file标签',
80    'DOC_TAG_FILE_A_TO_B': '修改file标签',
81    'DOC_TAG_LIBRARY_NA_TO_HAVE': '增加library标签',
82    'DOC_TAG_LIBRARY_HAVE_TO_NA': '删除library标签',
83    'DOC_TAG_LIBRARY_A_TO_B': '修改library标签',
84    'DOC_TAG_PARAM_NA_TO_HAVE': '增加param标签',
85    'DOC_TAG_PARAM_HAVE_TO_NA': '删除param标签',
86    'DOC_TAG_PARAM_NAME_A_TO_B': '修改param标签',
87    'DOC_TAG_PARAM_A_TO_B': '修改param标签值',
88    'DOC_TAG_PERMISSION_NA_TO_HAVE': '增加permission标签',
89    'DOC_TAG_PERMISSION_HAVE_TO_NA': '删除permission标签',
90    'DOC_TAG_PERMISSION_RANGE_BIGGER': '权限变大',
91    'DOC_TAG_PERMISSION_RANGE_SMALLER': '权限变小',
92    'DOC_TAG_PERMISSION_RANGE_CHANGE': '修改权限',
93    'DOC_TAG_SINCE_NA_TO_HAVE': '增加since标签',
94    'DOC_TAG_SINCE_HAVE_TO_NA': '删除since标签',
95    'DOC_TAG_SINCE_A_TO_B': '修改since标签',
96    'DOC_TAG_SYSCAP_NA_TO_HAVE': '增加syscap标签',
97    'DOC_TAG_SYSCAP_HAVE_TO_NA': '删除syscap标签',
98    'DOC_TAG_SYSCAP_A_TO_B': '修改syscap标签',
99    'DOC_TAG_LEFT_BRACE_NA_TO_HAVE': '增加{标签',
100    'DOC_TAG_LEFT_BRACE_HAVE_TO_NA': '删除{标签',
101    'DOC_TAG_RIGHT_BRACE_NA_TO_HAVE': '增加}标签',
102    'DOC_TAG_RIGHT_BRACE_HAVE_TO_NA': '删除}标签',
103    'DOC_TAG_ADDTOGROUP_INCREASE': '文件有addtogroup标签, 增加addtogroup标签',
104    'DOC_TAG_ADDTOGROUP_DECREASE': '文件有多个addtogroup标签,删除addtogroup标签',
105    'DOC_TAG_FILE_INCREASE': '文件有file标签, 增加file标签',
106    'DOC_TAG_FILE_DECREASE': '文件有多个file标签,删除file标签',
107}
108
109
110class Scene(enum.Enum):
111    FUNCTION_DECL = 'FUNCTION_DECL'
112    MACRO_DEFINITION = 'MACRO_DEFINITION'
113    STRUCT_DECL = 'STRUCT_DECL'
114    UNION_DECL = 'UNION_DECL'
115    ENUM_DECL = 'ENUM_DECL'
116    VAR_DECL = 'VAR_DECL'
117    TYPEDEF_DECL = 'TYPEDEF_DECL'
118    TRANSLATION_UNIT = 'TRANSLATION_UNIT'
119    ENUM_CONSTANT_DECL = 'ENUM_CONSTANT_DECL'
120
121
122class TAGS(enum.Enum):
123    ADD_TO_GROUP = 'addtogroup'
124    BRIEF = 'brief'
125    DEPRECATED = 'deprecated'
126    FILE = 'file'
127    LIBRARY = 'library'
128    PARAM = 'param'
129    PERMISSION = 'permission'
130    RETURN = 'return'
131    SINCE = 'since'
132    SYSCAP = 'syscap'
133    LEFT_BRACE = '{'
134    RIGHT_BRACE = '}'
135
136
137class DiffType(enum.Enum):
138    DEFAULT = ''
139    ADD_FILE = 'add file'
140    REDUCE_FILE = 'delete file'
141    ADD_API = 'add api'
142    REDUCE_API = 'delete api'
143    ADD_DOC = 'add doc'
144    REDUCE_DOC = 'delete doc'
145    ADD_DOC_TAG = 'add doc tag'
146    REDUCE_DOC_TAG = 'delete doc tag'
147    FUNCTION_PARAM_POS_CHANGE = 'change param site in function'
148
149    DEFINE_NAME_CHANGE = 'change define name'
150    DEFINE_TEXT_CHANGE = 'change define text'
151
152    FUNCTION_NAME_CHANGE = 'change function name'
153    FUNCTION_RETURN_CHANGE = 'change function return value'
154    FUNCTION_PARAM_NAME_CHANGE = 'change param name in function'
155    FUNCTION_PARAM_TYPE_CHANGE = 'change param type in function'
156    FUNCTION_PARAM_ADD = 'add param in function'
157    FUNCTION_PARAM_REDUCE = 'delete param in function'
158
159    STRUCT_NAME_CHANGE = 'change struct name'
160    STRUCT_MEMBER_NAME_CHANGE = 'change member name in struct'
161    STRUCT_MEMBER_TYPE_CHANGE = 'change member type in struct'
162    STRUCT_MEMBER_ADD = 'add member in struct'
163    STRUCT_MEMBER_REDUCE = 'delete member in struct'
164
165    UNION_NAME_CHANGE = 'change union name'
166    UNION_MEMBER_NAME_CHANGE = 'change member name in union'
167    UNION_MEMBER_TYPE_CHANGE = 'change member type in union'
168    UNION_MEMBER_ADD = 'add member in union'
169    UNION_MEMBER_REDUCE = 'delete member in union'
170
171    ENUM_NAME_CHANGE = 'change enum name'
172    ENUM_MEMBER_NAME_CHANGE = 'change member name in enum'
173    ENUM_MEMBER_VALUE_CHANGE = 'change member value in enum'
174    ENUM_MEMBER_ADD = 'add member in enum'
175    ENUM_MEMBER_REDUCE = 'delete member in enum'
176
177    VARIABLE_NAME_CHANGE = 'change variable name'
178    VARIABLE_TYPE_CHANGE = 'change variable type'
179    VARIABLE_VALUE_CHANGE = 'change variable value'
180    VARIABLE_CHANGE_TO_CONSTANT = 'change variable to constant'
181
182    CONSTANT_NAME_CHANGE = 'change constant name'
183    CONSTANT_TYPE_CHANGE = 'change constant type'
184    CONSTANT_VALUE_CHANGE = 'change constant value'
185    CONSTANT_CHANGE_TO_VARIABLE = 'change constant to variable'
186
187    TYPEDEF_NAME_TYPE_CHANGE = 'change typedef name type'
188
189    DOC_TAG_ADDTOGROUP_NA_TO_HAVE = 'add addtogroup tag'
190    DOC_TAG_ADDTOGROUP_HAVE_TO_NA = 'delete addtogroup tag'
191    DOC_TAG_ADDTOGROUP_A_TO_B = 'change addtogroup tag'
192    DOC_TAG_BRIEF_NA_TO_HAVE = 'add brief tag'
193    DOC_TAG_BRIEF_HAVE_TO_NA = 'delete brief tag'
194    DOC_TAG_BRIEF_A_TO_B = 'change brief tag'
195    DOC_TAG_DEPRECATED_NA_TO_HAVE = 'add deprecated tag'
196    DOC_TAG_DEPRECATED_HAVE_TO_NA = 'delete deprecated tag'
197    DOC_TAG_DEPRECATED_A_TO_B = 'change deprecated tag'
198    DOC_TAG_FILE_NA_TO_HAVE = 'add file tag'
199    DOC_TAG_FILE_HAVE_TO_NA = 'delete file tag'
200    DOC_TAG_FILE_A_TO_B = 'change file tag'
201    DOC_TAG_LIBRARY_NA_TO_HAVE = 'add library tag'
202    DOC_TAG_LIBRARY_HAVE_TO_NA = 'delete library tag'
203    DOC_TAG_LIBRARY_A_TO_B = 'change library tag'
204    DOC_TAG_PARAM_NA_TO_HAVE = 'add param tag'
205    DOC_TAG_PARAM_HAVE_TO_NA = 'delete param tag'
206    DOC_TAG_PARAM_NAME_A_TO_B = 'change param tag name'
207    DOC_TAG_PARAM_A_TO_B = 'change param tag value'
208    DOC_TAG_PERMISSION_NA_TO_HAVE = 'add permission tag'
209    DOC_TAG_PERMISSION_HAVE_TO_NA = 'delete permission tag'
210    DOC_TAG_PERMISSION_RANGE_BIGGER = 'increased permissions, ex: add "or" or remove "and"'
211    DOC_TAG_PERMISSION_RANGE_SMALLER = 'reduced permissions, ex: add "and" or remove "or"'
212    DOC_TAG_PERMISSION_RANGE_CHANGE = 'change permissions, before not included after and after not included before'
213    DOC_TAG_SINCE_NA_TO_HAVE = 'add since tag'
214    DOC_TAG_SINCE_HAVE_TO_NA = 'delete since tag'
215    DOC_TAG_SINCE_A_TO_B = 'change since tag'
216    DOC_TAG_SYSCAP_NA_TO_HAVE = 'add syscap tag'
217    DOC_TAG_SYSCAP_HAVE_TO_NA = 'delete syscap tag'
218    DOC_TAG_SYSCAP_A_TO_B = 'change syscap tag'
219    DOC_TAG_LEFT_BRACE_NA_TO_HAVE = 'add { tag'
220    DOC_TAG_LEFT_BRACE_HAVE_TO_NA = 'delete { tag'
221    DOC_TAG_RIGHT_BRACE_NA_TO_HAVE = 'add } tag'
222    DOC_TAG_RIGHT_BRACE_HAVE_TO_NA = 'delete } tag'
223    DOC_TAG_ADDTOGROUP_INCREASE = 'The file has addtogroup tag, add the addtogroup tag'
224    DOC_TAG_ADDTOGROUP_DECREASE = 'The file has multiple addtogroup tags. Delete the addtogroup tag'
225    DOC_TAG_FILE_INCREASE = 'The file has file tag, add the file tag'
226    DOC_TAG_FILE_DECREASE = 'The file has multiple file tags. Delete the file tag'
227
228
229compatible_list = [
230    DiffType.ADD_API,
231    DiffType.ADD_DOC,
232    DiffType.ADD_DOC_TAG,
233    DiffType.ENUM_MEMBER_ADD,
234    DiffType.FUNCTION_PARAM_NAME_CHANGE,
235    DiffType.DOC_TAG_ADDTOGROUP_NA_TO_HAVE,
236    DiffType.DOC_TAG_ADDTOGROUP_HAVE_TO_NA,
237    DiffType.DOC_TAG_ADDTOGROUP_A_TO_B,
238    DiffType.DOC_TAG_BRIEF_NA_TO_HAVE,
239    DiffType.DOC_TAG_BRIEF_HAVE_TO_NA,
240    DiffType.DOC_TAG_BRIEF_A_TO_B,
241    DiffType.DOC_TAG_DEPRECATED_NA_TO_HAVE,
242    DiffType.DOC_TAG_DEPRECATED_HAVE_TO_NA,
243    DiffType.DOC_TAG_DEPRECATED_A_TO_B,
244    DiffType.DOC_TAG_FILE_NA_TO_HAVE,
245    DiffType.DOC_TAG_FILE_HAVE_TO_NA,
246    DiffType.DOC_TAG_FILE_A_TO_B,
247    DiffType.DOC_TAG_PARAM_A_TO_B,
248    DiffType.DOC_TAG_PERMISSION_HAVE_TO_NA,
249    DiffType.DOC_TAG_PERMISSION_RANGE_BIGGER,
250    DiffType.DOC_TAG_SINCE_NA_TO_HAVE,
251    DiffType.DOC_TAG_SINCE_A_TO_B,
252    DiffType.DOC_TAG_LEFT_BRACE_NA_TO_HAVE,
253    DiffType.DOC_TAG_LEFT_BRACE_HAVE_TO_NA,
254    DiffType.DOC_TAG_RIGHT_BRACE_NA_TO_HAVE,
255    DiffType.DOC_TAG_RIGHT_BRACE_HAVE_TO_NA,
256    DiffType.DOC_TAG_ADDTOGROUP_DECREASE,
257    DiffType.DOC_TAG_ADDTOGROUP_INCREASE,
258    DiffType.DOC_TAG_FILE_DECREASE,
259    DiffType.DOC_TAG_FILE_INCREASE
260]
261
262api_new_list = [DiffType.ADD_API]
263
264api_delete_list = [DiffType.REDUCE_API]
265
266non_api_change_list = [
267    DiffType.ADD_DOC,
268    DiffType.REDUCE_DOC,
269    DiffType.ADD_DOC_TAG,
270    DiffType.REDUCE_DOC_TAG
271]
272
273api_prototype_change_list = [
274    DiffType.DEFINE_NAME_CHANGE,
275    DiffType.DEFINE_TEXT_CHANGE,
276    DiffType.FUNCTION_PARAM_POS_CHANGE,
277    DiffType.FUNCTION_NAME_CHANGE,
278    DiffType.FUNCTION_RETURN_CHANGE,
279    DiffType.FUNCTION_PARAM_NAME_CHANGE,
280    DiffType.FUNCTION_PARAM_TYPE_CHANGE,
281    DiffType.FUNCTION_PARAM_REDUCE,
282    DiffType.FUNCTION_PARAM_ADD,
283    DiffType.STRUCT_NAME_CHANGE,
284    DiffType.STRUCT_MEMBER_TYPE_CHANGE,
285    DiffType.STRUCT_MEMBER_NAME_CHANGE,
286    DiffType.STRUCT_MEMBER_ADD,
287    DiffType.STRUCT_MEMBER_REDUCE,
288    DiffType.UNION_MEMBER_TYPE_CHANGE,
289    DiffType.UNION_MEMBER_NAME_CHANGE,
290    DiffType.UNION_NAME_CHANGE,
291    DiffType.UNION_MEMBER_ADD,
292    DiffType.UNION_MEMBER_REDUCE,
293    DiffType.ENUM_NAME_CHANGE,
294    DiffType.ENUM_MEMBER_NAME_CHANGE,
295    DiffType.ENUM_MEMBER_VALUE_CHANGE,
296    DiffType.ENUM_MEMBER_ADD,
297    DiffType.ENUM_MEMBER_REDUCE,
298    DiffType.VARIABLE_NAME_CHANGE,
299    DiffType.VARIABLE_TYPE_CHANGE,
300    DiffType.VARIABLE_VALUE_CHANGE,
301    DiffType.VARIABLE_CHANGE_TO_CONSTANT,
302    DiffType.CONSTANT_NAME_CHANGE,
303    DiffType.CONSTANT_TYPE_CHANGE,
304    DiffType.CONSTANT_VALUE_CHANGE,
305    DiffType.CONSTANT_CHANGE_TO_VARIABLE,
306    DiffType.TYPEDEF_NAME_TYPE_CHANGE
307]
308
309api_constraint_change_list = [
310    DiffType.DOC_TAG_ADDTOGROUP_NA_TO_HAVE,
311    DiffType.DOC_TAG_ADDTOGROUP_HAVE_TO_NA,
312    DiffType.DOC_TAG_ADDTOGROUP_A_TO_B,
313    DiffType.DOC_TAG_BRIEF_NA_TO_HAVE,
314    DiffType.DOC_TAG_BRIEF_HAVE_TO_NA,
315    DiffType.DOC_TAG_BRIEF_A_TO_B,
316    DiffType.DOC_TAG_DEPRECATED_NA_TO_HAVE,
317    DiffType.DOC_TAG_DEPRECATED_HAVE_TO_NA,
318    DiffType.DOC_TAG_DEPRECATED_A_TO_B,
319    DiffType.DOC_TAG_FILE_NA_TO_HAVE,
320    DiffType.DOC_TAG_FILE_HAVE_TO_NA,
321    DiffType.DOC_TAG_FILE_A_TO_B,
322    DiffType.DOC_TAG_LIBRARY_NA_TO_HAVE,
323    DiffType.DOC_TAG_LIBRARY_HAVE_TO_NA,
324    DiffType.DOC_TAG_LIBRARY_A_TO_B,
325    DiffType.DOC_TAG_PARAM_NA_TO_HAVE,
326    DiffType.DOC_TAG_PARAM_HAVE_TO_NA,
327    DiffType.DOC_TAG_PARAM_NAME_A_TO_B,
328    DiffType.DOC_TAG_PARAM_A_TO_B,
329    DiffType.DOC_TAG_PERMISSION_NA_TO_HAVE,
330    DiffType.DOC_TAG_PERMISSION_HAVE_TO_NA,
331    DiffType.DOC_TAG_PERMISSION_RANGE_BIGGER,
332    DiffType.DOC_TAG_PERMISSION_RANGE_SMALLER,
333    DiffType.DOC_TAG_PERMISSION_RANGE_CHANGE,
334    DiffType.DOC_TAG_SINCE_NA_TO_HAVE,
335    DiffType.DOC_TAG_SINCE_A_TO_B,
336    DiffType.DOC_TAG_SYSCAP_NA_TO_HAVE,
337    DiffType.DOC_TAG_SYSCAP_HAVE_TO_NA,
338    DiffType.DOC_TAG_SYSCAP_A_TO_B,
339    DiffType.DOC_TAG_LEFT_BRACE_NA_TO_HAVE,
340    DiffType.DOC_TAG_LEFT_BRACE_HAVE_TO_NA,
341    DiffType.DOC_TAG_RIGHT_BRACE_NA_TO_HAVE,
342    DiffType.DOC_TAG_RIGHT_BRACE_HAVE_TO_NA,
343    DiffType.DOC_TAG_ADDTOGROUP_DECREASE,
344    DiffType.DOC_TAG_ADDTOGROUP_INCREASE,
345    DiffType.DOC_TAG_FILE_DECREASE,
346    DiffType.DOC_TAG_FILE_INCREASE
347]
348
349api_modification_type_dict = {
350    'api_new_list': 'API新增',
351    'api_delete_list': 'API删除',
352    'non_api_change_list': '非API变更',
353    'api_prototype_change_list': 'API修改(原型修改)',
354    'api_constraint_change_list': 'API修改(约束变化)'
355}
356
357
358class ApiInfo:
359    is_api_change = False
360
361    def set_is_api_change(self, is_api_change):
362        self.is_api_change = is_api_change
363
364    def get_is_api_change(self):
365        return self.is_api_change
366
367
368class DiffInfo:
369    api_name: str = ''
370    api_type: str = ''
371    diff_type: DiffType = DiffType.DEFAULT
372    diff_message: str = ''
373    old_api_full_text: str = ''
374    new_api_full_text: str = ''
375    api_line: int = 0
376    api_column: int = 0
377    api_file_path: str = ''
378    is_compatible = False
379    is_api_change = False
380    api_modification_type = ''
381    kit_name = ''
382    sub_system = ''
383    class_name = ''
384    api_node_name = ''
385    unique_id = ''
386    current_api_unique_id = ''
387    is_system_api = False
388    operation_diff_type: str = ''
389    old_differ_content: str = ''
390    new_differ_content: str = ''
391    open_close_api: str = ''
392    is_third_party_api = False
393    current_api_type: str = ''
394    old_api_declara: str = ''
395    new_api_declara: str = ''
396    file_doc_line: int = 0
397
398    def __init__(self, diff_type: DiffType, old_differ_content, new_differ_content):
399        self.diff_type = diff_type
400        self.diff_message = diff_type.value
401        self.set_diff_type(diff_type)
402        self.set_api_modification_type(diff_type)
403        self.set_operation_diff_type(diff_type)
404        self.old_differ_content = old_differ_content
405        self.new_differ_content = new_differ_content
406
407    def set_api_line(self, api_line):
408        self.api_line = api_line
409
410    def get_api_line(self):
411        return self.api_line
412
413    def set_api_column(self, api_column):
414        self.api_column = api_column
415
416    def get_api_column(self):
417        return self.api_column
418
419    def set_api_file_path(self, api_file_path):
420        self.api_file_path = api_file_path
421
422    def get_api_file_path(self):
423        return self.api_file_path
424
425    def set_api_name(self, api_name):
426        self.api_name = api_name
427
428    def get_api_name(self):
429        return self.api_name
430
431    def set_api_type(self, api_type):
432        self.api_type = api_type
433
434    def get_api_type(self):
435        return self.api_type
436
437    def set_diff_type(self, diff_type):
438        if diff_type in compatible_list:
439            self.is_compatible = True
440        self.diff_type = diff_type
441
442    def get_diff_type(self):
443        return self.diff_type
444
445    def set_diff_message(self, diff_message):
446        self.diff_message = diff_message
447
448    def get_diff_message(self):
449        return self.diff_message
450
451    def set_old_api_full_text(self, old_api_full_text):
452        self.old_api_full_text = old_api_full_text
453
454    def get_old_api_full_text(self):
455        return self.old_api_full_text
456
457    def set_new_api_full_text(self, new_api_full_text):
458        self.new_api_full_text = new_api_full_text
459
460    def get_new_api_full_text(self):
461        return self.new_api_full_text
462
463    def set_is_compatible(self, is_compatible):
464        self.is_compatible = is_compatible
465
466    def get_is_compatible(self):
467        return self.is_compatible
468
469    def set_is_api_change(self, is_api_change):
470        self.is_api_change = is_api_change
471
472    def get_is_api_change(self):
473        return self.is_api_change
474
475    def set_api_modification_type(self, diff_type):
476        if diff_type in api_new_list:
477            self.api_modification_type = api_modification_type_dict.get('api_new_list')
478        elif diff_type in api_delete_list:
479            self.api_modification_type = api_modification_type_dict.get('api_delete_list')
480        elif diff_type in non_api_change_list:
481            self.api_modification_type = api_modification_type_dict.get('non_api_change_list')
482        elif diff_type in api_prototype_change_list:
483            self.api_modification_type = api_modification_type_dict.get('api_prototype_change_list')
484        elif diff_type in api_constraint_change_list:
485            self.api_modification_type = api_modification_type_dict.get('api_constraint_change_list')
486
487    def get_api_modification_type(self):
488        return self.api_modification_type
489
490    def set_kit_name(self, kit_name):
491        self.kit_name = kit_name
492
493    def get_kit_name(self):
494        return self.kit_name
495
496    def set_sub_system(self, sub_system):
497        self.sub_system = sub_system
498
499    def get_sub_system(self):
500        return self.sub_system
501
502    def set_class_name(self, class_name):
503        self.class_name = class_name
504
505    def get_class_name(self):
506        return self.class_name
507
508    def set_api_node_name(self, api_node_name):
509        self.api_node_name = api_node_name
510
511    def get_api_node_name(self):
512        return self.api_node_name
513
514    def set_unique_id(self, unique_id):
515        self.unique_id = unique_id
516
517    def get_unique_id(self):
518        return self.unique_id
519
520    def set_current_api_unique_id(self, current_api_unique_id):
521        self.current_api_unique_id = current_api_unique_id
522
523    def get_current_api_unique_id(self):
524        return self.current_api_unique_id
525
526    def set_is_system_api(self, is_system_api):
527        self.is_system_api = is_system_api
528
529    def get_is_system_api(self):
530        return self.is_system_api
531
532    def set_operation_diff_type(self, diff_type):
533        if diff_type.name in operation_mark_dict:
534            self.operation_diff_type = operation_mark_dict.get(diff_type.name)
535
536    def get_operation_diff_type(self):
537        return self.operation_diff_type
538
539    def set_old_differ_content(self, old_differ_content):
540        self.old_differ_content = old_differ_content
541
542    def get_old_differ_content(self):
543        return self.old_differ_content
544
545    def set_new_differ_content(self, new_differ_content):
546        self.new_differ_content = new_differ_content
547
548    def get_new_differ_content(self):
549        return self.new_differ_content
550
551    def set_open_close_api(self, open_close_api):
552        self.open_close_api = open_close_api
553
554    def get_open_close_api(self):
555        return self.open_close_api
556
557    def set_is_third_party_api(self, is_third_party_api):
558        self.is_third_party_api = is_third_party_api
559
560    def get_is_third_party_api(self):
561        return self.is_third_party_api
562
563    def set_current_api_type(self, current_api_type):
564        self.current_api_type = current_api_type
565
566    def get_current_api_type(self):
567        return self.current_api_type
568
569    def set_old_api_declara(self, old_api_declara):
570        self.old_api_declara = old_api_declara
571
572    def get_old_api_declara(self):
573        return self.old_api_declara
574
575    def set_new_api_declara(self, new_api_declara):
576        self.new_api_declara = new_api_declara
577
578    def get_new_api_declara(self):
579        return self.new_api_declara
580
581    def set_file_doc_line(self, file_doc_line):
582        self.file_doc_line = file_doc_line
583
584    def get_file_doc_line(self):
585        return self.file_doc_line
586
587
588class OutputJson:
589    api_name: str = ''
590    api_type: str = ''
591    diff_type: str = ''
592    diff_message: str = ''
593    old_api_full_text: str = ''
594    new_api_full_text: str = ''
595    api_line: int = 0
596    api_column: int = 0
597    api_file_path: str = ''
598    is_compatible = False
599    is_api_change = False
600    api_modification_type = ''
601    kit_name = ''
602    sub_system = ''
603    class_name = ''
604    unique_id = ''
605    is_system_api = False
606
607    def __init__(self, diff_info):
608        self.api_name = diff_info.api_name
609        self.api_type = diff_info.api_type
610        self.diff_type = diff_info.operation_diff_type
611        self.diff_message = diff_info.diff_message
612        self.old_api_full_text = diff_info.old_api_full_text
613        self.new_api_full_text = diff_info.new_api_full_text
614        self.api_line = diff_info.api_line
615        self.api_column = diff_info.api_column
616        self.api_file_path = diff_info.api_file_path
617        self.is_compatible = diff_info.is_compatible
618        self.is_api_change = diff_info.is_api_change
619        self.api_modification_type = diff_info.api_modification_type
620        self.kit_name = diff_info.kit_name
621        self.sub_system = diff_info.sub_system
622        self.class_name = diff_info.class_name
623        self.unique_id = diff_info.unique_id
624        self.is_system_api = diff_info.is_system_api
625
626
627class ApiChangeData:
628    api_name: str = ''
629    kit_name: str = ''
630    sub_system: str = ''
631    is_api_change = False
632    class_name: str = ''
633    diff_type: str = ''
634    change_type: str = ''
635    compatible = {}
636    change_num = {}
637    old_all_text: str = ''
638    new_all_text: str = ''
639    compatible_total = False
640    unique_id: str = ''
641    is_system_api = False
642    open_close_api: str = ''
643    is_third_party_api = False
644    api_type: str = ''
645    current_api_type: str = ''
646
647    def set_api_name(self, api_name):
648        self.api_name = api_name
649
650    def get_api_name(self):
651        return self.api_name
652
653    def set_kit_name(self, kit_name):
654        self.kit_name = kit_name
655
656    def get_kit_name(self):
657        return self.kit_name
658
659    def set_sub_system(self, sub_system):
660        self.sub_system = sub_system
661
662    def get_sub_system(self):
663        return self.sub_system
664
665    def set_is_api_change(self, is_api_change):
666        self.is_api_change = is_api_change
667
668    def get_is_api_change(self):
669        return self.is_api_change
670
671    def set_class_name(self, class_name):
672        self.class_name = class_name
673
674    def get_class_name(self):
675        return self.class_name
676
677    def set_diff_type(self, diff_type):
678        self.diff_type = diff_type
679
680    def get_diff_type(self):
681        return self.diff_type
682
683    def set_change_type(self, change_type):
684        self.change_type = change_type
685
686    def get_change_type(self):
687        return self.change_type
688
689    def set_compatible(self, compatible):
690        self.compatible = compatible
691
692    def get_compatible(self):
693        return self.compatible
694
695    def set_change_num(self, change_num):
696        self.change_num = change_num
697
698    def get_change_num(self):
699        return self.change_num
700
701    def set_old_all_text(self, old_all_text):
702        self.old_all_text = old_all_text
703
704    def get_old_all_text(self):
705        return self.old_all_text
706
707    def set_new_all_text(self, new_all_text):
708        self.new_all_text = new_all_text
709
710    def get_new_all_text(self):
711        return self.new_all_text
712
713    def set_compatible_total(self, compatible_total):
714        self.compatible_total = compatible_total
715
716    def get_compatible_total(self):
717        return self.compatible_total
718
719    def set_unique_id(self, unique_id):
720        self.unique_id = unique_id
721
722    def get_unique_id(self):
723        return self.unique_id
724
725    def set_is_system_api(self, is_system_api):
726        self.is_system_api = is_system_api
727
728    def get_is_system_api(self):
729        return self.is_system_api
730
731    def set_open_close_api(self, open_close_api):
732        self.open_close_api = open_close_api
733
734    def get_open_close_api(self):
735        return self.open_close_api
736
737    def set_is_third_party_api(self, is_third_party_api):
738        self.is_third_party_api = is_third_party_api
739
740    def get_is_third_party_api(self):
741        return self.is_third_party_api
742
743    def set_api_type(self, api_type):
744        self.api_type = api_type
745
746    def get_api_type(self):
747        return self.api_type
748
749    def set_current_api_type(self, current_api_type):
750        self.current_api_type = current_api_type
751
752    def get_current_api_type(self):
753        return self.current_api_type
754
755
756class IgnoreFileDirectory(enum.Enum):
757    IGNORE_FILE_DIR_lx = r'/(arm-linux-ohos|aarch64-linux-ohos|x86_64-linux-ohos|i686-linux-ohos|linux|tee|)(/|$)'
758    IGNORE_FILE_DIR_wd = r'\\(arm-linux-ohos|aarch64-linux-ohos|x86_64-linux-ohos|i686-linux-ohos|linux|tee|)(\\|$)'
759