CN117251205B - 一种头文件的处理方法、装置、设备及介质 - Google Patents

一种头文件的处理方法、装置、设备及介质 Download PDF

Info

Publication number
CN117251205B
CN117251205B CN202311526163.9A CN202311526163A CN117251205B CN 117251205 B CN117251205 B CN 117251205B CN 202311526163 A CN202311526163 A CN 202311526163A CN 117251205 B CN117251205 B CN 117251205B
Authority
CN
China
Prior art keywords
file
header
combined
macro
compiled
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202311526163.9A
Other languages
English (en)
Other versions
CN117251205A (zh
Inventor
严德政
钟晟
何军
陈学凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Muxi Lingzhi Technology Hangzhou Co ltd
Original Assignee
Muxi Integrated Circuit Hangzhou Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Muxi Integrated Circuit Hangzhou Co ltd filed Critical Muxi Integrated Circuit Hangzhou Co ltd
Priority to CN202311526163.9A priority Critical patent/CN117251205B/zh
Publication of CN117251205A publication Critical patent/CN117251205A/zh
Application granted granted Critical
Publication of CN117251205B publication Critical patent/CN117251205B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及电数字数据处理技术领域,特别是涉及一种头文件的处理方法、装置、设备及介质。该方法包括:获取第一头文件,使用第一编译器对所述第一头文件进行编译,得到第一编译文件;获取第一编译的AST文件和宏文件,将第一编译文件的AST文件和宏文件进行合并,得到第一合并文件;获取第二合并文件,第二合并文件通过将第二编译文件的AST文件和宏文件合并得到,第二编译文件通过第二编译器对第二头文件编译得到;根据第二合并文件与第一合并文件判断第二头文件是否支持第一头文件对应的接口功能。本发明提高了判断是否支持的准确性。

Description

一种头文件的处理方法、装置、设备及介质
技术领域
本发明涉及电数字数据处理技术领域,特别是涉及一种头文件的处理方法、装置、设备及介质。
背景技术
对于计算平台版本升级或集成的场景,往往需要保证第二计算平台支持第一计算平台的接口功能或第一计算平台的第二版本支持第一计算平台的第一版本的接口功能,以避免出现第二计算平台不兼容第一计算平台或者第一计算平台的第二版本不兼容第一计算平台的第一版本的情况。
为了判断第二计算平台是否支持第一计算平台的接口功能或第一计算平台的第二版本是否支持第一计算平台的第一版本的接口功能,现有技术的做法是直接比较第二计算平台和第一计算平台的安装包的头文件,或者直接比较第一计算平台的第二版本和第一计算平台的第一版本的安装包的头文件;但是,头文件是高级语言文件,其可能包含复杂的语法,比如其包括宏,由于宏没有在头文件中展开,直接比较头文件往往分析不到底层的程序,使得头文件的比对过程比较复杂,且容易出现比对错误的情况,进而导致判断第二计算平台是否支持第一计算平台的接口功能或第一计算平台的第二版本是否支持第一计算平台的第一版本的接口功能的过程较为复杂且判断结果容易出错。
发明内容
本发明目的在于,提供一种头文件的处理方法、装置、设备及介质,以提高判断第二计算平台是否支持第一计算平台的接口功能或第一计算平台的第二版本是否支持第一计算平台的第一版本的接口功能的准确性。
根据本发明的第一方面,提供了一种头文件的处理方法,所述处理方法包括以下步骤:
获取第一头文件,使用第一编译器对所述第一头文件进行编译,得到第一编译文件。
获取第一编译的AST文件和宏文件,将第一编译文件的AST文件和宏文件进行合并,得到第一合并文件,第一合并文件包括若干个第一记录,每一第一记录用于记录一个数据结构或接口函数或宏的第一预设信息,第一预设信息包括第一记录对应的数据结构或接口函数或宏的名称。
获取第二合并文件,第二合并文件通过将第二编译文件的AST文件和宏文件合并得到,第二编译文件通过第二编译器对第二头文件编译得到;第二头文件与第一头文件属于不同的计算平台或者属于同一计算平台的不同版本,第二头文件和第一头文件的名称相同。
根据第二合并文件与第一合并文件判断第二头文件是否支持第一头文件对应的接口功能。
进一步的,所述第二合并文件包括若干个第二记录,每一第二记录用于记录一个数据结构或接口函数或宏的第二预设信息,所述第二预设信息包括第二记录对应的数据结构或接口函数或宏的名称。
进一步的,根据第二合并文件与第一合并文件判断第二头文件是否支持第一头文件对应的接口功能包括以下步骤:
获取第一名称列表,所述第一名称列表包括所述第一合并文件中的任一第一记录中的名称。
获取第二名称列表,所述第二名称列表包括所述第二合并文件中的任一第二记录中的名称。
遍历所述第一名称列表,如果所述第一名称列表中任一第一记录中的名称均在所述第二名称列表中存在,则判定第二头文件支持第一头文件对应的接口功能。
进一步的,所述第一合并文件和第二合并文件为json格式。
进一步的,第一编译文件的AST文件通过使用clang对所述第一编译文件进行提取得到。
进一步的,第一编译文件的宏文件通过使用宏提取模块对所述第一编译文件进行提取得到。
根据本发明的第二方面,提供了一种头文件的处理装置,所述处理装置包括:
第一获取模块,用于获取第一头文件,使用第一编译器对所述第一头文件进行编译,得到第一编译文件。
第二获取模块,用于获取第一编译的AST文件和宏文件,将第一编译文件的AST文件和宏文件进行合并,得到第一合并文件,第一合并文件包括若干个第一记录,每一第一记录用于记录一个数据结构或接口函数或宏的第一预设信息,第一预设信息包括第一记录对应的数据结构或接口函数或宏的名称。
第三获取模块,用于获取第二合并文件,第二合并文件通过将第二编译文件的AST文件和宏文件合并得到,第二编译文件通过第二编译器对第二头文件编译得到;第二头文件与第一头文件属于不同的计算平台或者属于同一计算平台的不同版本,第二头文件和第一头文件的名称相同。
第一判断模块,用于根据第二合并文件与第一合并文件判断第二头文件是否支持第一头文件对应的接口功能。
进一步的,所述第二合并文件包括若干个第二记录,每一第二记录用于记录一个数据结构或接口函数或宏的第二预设信息,所述第二预设信息包括第二记录对应的数据结构或接口函数或宏的名称。
进一步的,所述第一判断模块包括:
第四获取模块,用于获取第一名称列表,所述第一名称列表包括所述第一合并文件中的任一第一记录中的名称。
第五获取模块,用于获取第二名称列表,所述第二名称列表包括所述第二合并文件中的任一第二记录中的名称。
第一判定模块,用于遍历所述第一名称列表,如果所述第一名称列表中任一第一记录中的名称均在所述第二名称列表中存在,则判定第二头文件支持第一头文件对应的接口功能。
进一步的,所述第一合并文件和第二合并文件为json格式。
进一步的,第一编译文件的AST文件通过使用clang对所述第一编译文件进行提取得到。
进一步的,第一编译文件的宏文件通过使用宏提取模块对所述第一编译文件进行提取得到。
根据本发明的第三方面,提供了一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的头文件的处理方法。
根据本发明的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的头文件的处理方法。
本发明与现有技术相比至少具有以下有益效果:
本发明对于属于不同计算平台或同一计算平台的不同版本的第一头文件和第二头文件,分别使用对应的编译器对其进行编译,得到了对应的第一编译文件和第二编译文件;基于得到的编译文件,获取了对应的AST文件和宏文件,通过将对应的AST文件和宏文件进行合并,得到了第一合并文件和第二合并文件;本发明中第一头文件和第二头文件的名称相同,只是两者属于不同的计算平台或者同一计算平台的不同版本,本发明并不是直接比对第一头文件和第二头文件,而是先将第一头文件转换为第一合并文件以及先将第二头文件转换为第二合并文件,然后再根据第一合并文件和第二合并文件判断第二头文件是否支持第一头文件对应的接口功能;本发明避免了直接对头文件进行比较的过程,不再存在由于直接比较头文件所导致的比较过程复杂和容易出错的问题,进而提高了判断第二计算平台是否支持第一计算平台的接口功能或第一计算平台的第二版本是否支持第一计算平台的第一版本的接口功能的准确性;而且,本发明通过对第二头文件进行编译的方式还能够判断第二头文件中数据结构或接口函数或宏的功能是否在软件中真正实现了,进一步提高了判断第二计算平台是否支持第一计算平台的接口功能或第一计算平台的第二版本是否支持第一计算平台的第一版本的接口功能的准确性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的头文件的处理方法的流程图;
图2为本发明实施例一提供的判断步骤的流程图;
图3为本发明实施例二提供的头文件的处理装置的示意图;
图4为本发明实施例二提供的第一判断模块的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
如图1所示,本实施例提供了一种头文件的处理方法,所述处理方法包括以下步骤:
S100,获取第一头文件,使用第一编译器对所述第一头文件进行编译,得到第一编译文件。
S200,获取第一编译的AST文件和宏文件,将第一编译文件的AST文件和宏文件进行合并,得到第一合并文件,第一合并文件包括若干个第一记录,每一第一记录用于记录一个数据结构或接口函数或宏的第一预设信息,第一预设信息包括第一记录对应的数据结构或接口函数或宏的名称。
可选的,第一合并文件为json格式。本领域技术人员知悉,json(JavaScriptObject Notation,JS对象简谱)是一种轻量级的数据交换格式,是一种现有的格式,此处不再赘述。
具体的,第一编译文件的AST(Abstract Syntax Trees,抽象语法树)文件通过使用clang对所述第一编译文件进行提取得到。本领域技术人员知悉,clang是一个轻量级编译器,使用clang获取AST文件的过程为现有技术,此处不再赘述。
具体的,第一编译文件的宏文件通过使用宏提取模块对所述第一编译文件进行提取得到。本领域技术人员知悉,现有技术中任何的宏文件提取模块均落入本发明的保护范围,可选的,宏文件提取模块为正则表达式函数。
作为一个具体实施方式,第一记录信息包括属性(kind)、名称(name)、类型(qualType)、定义的文件presumedFile和定义的行presumedLine。其中,kind用于表征第一记录对应的是数据结构或接口函数或宏,name用于表示第一记录对应的是数据结构或接口函数或宏的名称,qualType用于表征第一记录对应的是数据结构或接口函数或宏的类型,presumedFile用于表征第一记录对应的是数据结构或接口函数或宏所属的文件名,presumedLine用于表征的第一记录对应的是数据结构或接口函数或宏的位置信息。
S300,获取第二合并文件,第二合并文件通过将第二编译文件的AST文件和宏文件合并得到,第二编译文件通过第二编译器对第二头文件编译得到;第二头文件与第一头文件属于不同的计算平台或者属于同一计算平台的不同版本,第二头文件和第一头文件的名称相同。
本实施例中,第二头文件和第二编译器属于同一计算平台的同一版本,第一头文件和第一编译器属于同一计算平台的同一版本。
具体的,第二合并文件包括若干个第二记录,每一第二记录用于记录一个数据结构或接口函数或宏的第二预设信息,所述第二预设信息包括第二记录对应的数据结构或接口函数或宏的名称。
本实施例中,如果第二头文件支持第一头文件对应的全部接口功能,那么第二合并文件中第二记录的数量大于等于第一合并文件中第一记录的数量,其中,当第二合并文件中第二记录的数量大于第一合并文件中第一记录的数量时,说明第二头文件除支持第一头文件对应的全部接口功能以外,还新增了接口功能;当第二合并文件中第二记录的数量等于第一合并文件中第一记录的数量时,说明第二头文件支持第一头文件对应的全部接口功能且没有新增接口功能。
本实施例中第二合并文件和第一合并文件的格式相同,可选的,第二合并文件和第一合并文件均为json格式。
S400,根据第二合并文件与第一合并文件判断第二头文件是否支持第一头文件对应的接口功能。
具体的,如图2所示,S400包括:
S410,获取第一名称列表,所述第一名称列表包括所述第一合并文件中的任一第一记录中的名称。
具体的,第一名称列表为A,A=(a1,a2,…,am,…,aM),am为所述第一合并文件的第m个第一记录中的名称,m的取值范围为1到M,M为所述第一合并文件中第一记录的数量。
S420,获取第二名称列表,所述第二名称列表包括所述第二合并文件中的任一第二记录中的名称。
具体的,第二名称列表为B,A=(b1,b2,…,bn,…,bN),bn为所述第二合并文件的第n个第二记录中的名称,n的取值范围为1到N,N为所述第二合并文件中的第二记录的数量。
S430,遍历所述第一名称列表,如果所述第一名称列表中任一第一记录中的名称均在所述第二名称列表中存在,则判定第二头文件支持第一头文件对应的接口功能。
本实施例中将两个头文件的比较过程最终转化为名字之间的比较过程,简化了比较的复杂性,使得到的比较结果不容易出错,更为准确。
具体的,遍历A,如果B中存在bn与am相等,则判定第二头文件支持am对应的接口功能,否则,判定第二头文件不支持am对应的接口功能。本实施例中,当A中任一am均在B中存在时,才判定第二头文件支持第一头文件对应的接口功能。如果A中某些am不在B中存在时,优选的,输出在B中存在的am的数量以及包含这些不在B中存在的am的信息,以便于用户知晓第二头文件不支持第一头文件对应的哪些接口功能。
本实施例中第一名称列表是第一合并文件中所有第一记录中的名称的列表,第二名称列表是第二合并文件中所有第二记录中的名称的列表,本实施例将第一名称列表中任一第一记录中的名称在第二名称列表中进行查找的方法相当于是将第二合并文件中数据结构、接口函数和宏的名称合并在一起,不再区分每一名称是属于数据结构的名称、接口函数的名称还是宏的名称,相较于将第一合并文件中数据结构对应的名称与第二合并文件中数据结构对应的名称相比、将第一合并文件中接口函数对应的名称与第二合并文件中接口函数对应的名称相比和将第一合并文件中宏对应的名称与第二合并文件中宏对应的名称相比,本实施能够避免第一头文件和第二头文件中相同接口功能对应的类型不一致的情况,比如第一头文件中实现某一接口功能的是接口函数,而在第二头文件中实现相同接口功能的是宏,进而提高了判断第二头文件是否支持第一头文件对应的接口功能的准确性。
本实施例中,第一头文件所属的计算机平台或版本的压缩包的头文件的数量并不唯一,对于第一头文件所属的计算机平台的压缩包的任一头文件,均执行上述步骤S100-S400;本实施例中,只有判定第一头文件所属的计算机平台的压缩包的任一头文件均被对应的第二头文件支持时,才判定第二头文件所属的计算机平台或版本支持第一头文件所属的计算机平台或版本。
本实施例对于属于不同计算平台或同一计算平台的不同版本的第一头文件和第二头文件,分别使用对应的编译器对其进行编译,得到了对应的第一编译文件和第二编译文件;基于得到的编译文件,获取了对应的AST文件和宏文件,通过将对应的AST文件和宏文件进行合并,得到了第一合并文件和第二合并文件;本发明中第一头文件和第二头文件的名称相同,只是两者属于不同的计算平台或者同一计算平台的不同版本,本实施例并不是直接比对第一头文件和第二头文件,而是先将第一头文件转换为第一合并文件以及先将第二头文件转换为第二合并文件,然后再根据第一合并文件和第二合并文件判断第二头文件是否支持第一头文件对应的接口功能;本实施例避免了直接对头文件进行比较的过程,不再存在由于直接比较头文件所导致的比较过程复杂和容易出错的问题,进而提高了判断第二计算平台是否支持第一计算平台的接口功能或第一计算平台的第二版本是否支持第一计算平台的第一版本的接口功能的准确性;而且,本实施例通过对第二头文件进行编译的方式还能够判断第二头文件中数据结构或接口函数或宏的功能是否在软件中真正实现了,进一步提高了判断第二计算平台是否支持第一计算平台的接口功能或第一计算平台的第二版本是否支持第一计算平台的第一版本的接口功能的准确性。
实施例二
如图3所示,本实施例提供了一种头文件的处理装置,所述处理装置包括:
第一获取模块100,用于获取第一头文件,使用第一编译器对所述第一头文件进行编译,得到第一编译文件。
第二获取模块200,用于获取第一编译的AST文件和宏文件,将第一编译文件的AST文件和宏文件进行合并,得到第一合并文件,第一合并文件包括若干个第一记录,每一第一记录用于记录一个数据结构或接口函数或宏的第一预设信息,第一预设信息包括第一记录对应的数据结构或接口函数或宏的名称。
可选的,第一合并文件为json格式。本领域技术人员知悉,json(JavaScriptObject Notation,JS对象简谱)是一种轻量级的数据交换格式,是一种现有的格式,此处不再赘述。
具体的,第一编译文件的AST(Abstract Syntax Trees,抽象语法树)文件通过使用clang对所述第一编译文件进行提取得到。本领域技术人员知悉,clang是一个轻量级编译器,使用clang获取AST文件的过程为现有技术,此处不再赘述。
具体的,第一编译文件的宏文件通过使用宏提取模块对所述第一编译文件进行提取得到。本领域技术人员知悉,现有技术中任何的宏文件提取模块均落入本发明的保护范围,可选的,宏文件提取模块为正则表达式函数。
作为一个具体实施方式,第一记录信息包括属性(kind)、名称(name)、类型(qualType)、定义的文件presumedFile和定义的行presumedLine。其中,kind用于表征第一记录对应的是数据结构或接口函数或宏,name用于表示第一记录对应的是数据结构或接口函数或宏的名称,qualType用于表征第一记录对应的是数据结构或接口函数或宏的类型,presumedFile用于表征第一记录对应的是数据结构或接口函数或宏所属的文件名,presumedLine用于表征的第一记录对应的是数据结构或接口函数或宏的位置信息。
第三获取模块300,用于获取第二合并文件,第二合并文件通过将第二编译文件的AST文件和宏文件合并得到,第二编译文件通过第二编译器对第二头文件编译得到;第二头文件与第一头文件属于不同的计算平台或者属于同一计算平台的不同版本,第二头文件和第一头文件的名称相同。
本实施例中,第二头文件和第二编译器属于同一计算平台的同一版本,第一头文件和第一编译器属于同一计算平台的同一版本。
具体的,第二合并文件包括若干个第二记录,每一第二记录用于记录一个数据结构或接口函数或宏的第二预设信息,所述第二预设信息包括第二记录对应的数据结构或接口函数或宏的名称。
本实施例中,如果第二头文件支持第一头文件对应的全部接口功能,那么第二合并文件中第二记录的数量大于等于第一合并文件中第一记录的数量,其中,当第二合并文件中第二记录的数量大于第一合并文件中第一记录的数量时,说明第二头文件除支持第一头文件对应的全部接口功能以外,还新增了接口功能;当第二合并文件中第二记录的数量等于第一合并文件中第一记录的数量时,说明第二头文件支持第一头文件对应的全部接口功能且没有新增接口功能。
本实施例中第二合并文件和第一合并文件的格式相同,可选的,第二合并文件和第一合并文件均为json格式。
第一判断模块400,用于根据第二合并文件与第一合并文件判断第二头文件是否支持第一头文件对应的接口功能。
具体的,如图4所示,第一判断模块400包括:
第四获取模块410,用于获取第一名称列表,所述第一名称列表包括所述第一合并文件中的任一第一记录中的名称。
具体的,第一名称列表为A,A=(a1,a2,…,am,…,aM),am为所述第一合并文件的第m个第一记录中的名称,m的取值范围为1到M,M为所述第一合并文件中第一记录的数量。
第五获取模块420,用于获取第二名称列表,所述第二名称列表包括所述第二合并文件中的任一第二记录中的名称。
具体的,第二名称列表为B,A=(b1,b2,…,bn,…,bN),bn为所述第二合并文件的第n个第二记录中的名称,n的取值范围为1到N,N为所述第二合并文件中的第二记录的数量。
第一判定模块430,用于遍历所述第一名称列表,如果所述第一名称列表中任一第一记录中的名称均在所述第二名称列表中存在,则判定第二头文件支持第一头文件对应的接口功能。
本实施例中将两个头文件的比较过程最终转化为名字之间的比较过程,简化了比较的复杂性,使得到的比较结果不容易出错,更为准确。
具体的,遍历A,如果B中存在bn与am相等,则判定第二头文件支持am对应的接口功能,否则,判定第二头文件不支持am对应的接口功能。本实施例中,当A中任一am均在B中存在时,才判定第二头文件支持第一头文件对应的接口功能。如果A中某些am不在B中存在时,优选的,输出在B中存在的am的数量以及包含这些不在B中存在的am的信息,以便于用户知晓第二头文件不支持第一头文件对应的哪些接口功能。
本实施例中第一名称列表是第一合并文件中所有第一记录中的名称的列表,第二名称列表是第二合并文件中所有第二记录中的名称的列表,本实施例将第一名称列表中任一第一记录中的名称在第二名称列表中进行查找的方法相当于是将第二合并文件中数据结构、接口函数和宏的名称合并在一起,不再区分每一名称是属于数据结构的名称、接口函数的名称还是宏的名称,相较于将第一合并文件中数据结构对应的名称与第二合并文件中数据结构对应的名称相比、将第一合并文件中接口函数对应的名称与第二合并文件中接口函数对应的名称相比和将第一合并文件中宏对应的名称与第二合并文件中宏对应的名称相比,本实施能够避免第一头文件和第二头文件中相同接口功能对应的类型不一致的情况,比如第一头文件中实现某一接口功能的是接口函数,而在第二头文件中实现相同接口功能的是宏,进而提高了判断第二头文件是否支持第一头文件对应的接口功能的准确性。
本实施例中,第一头文件所属的计算机平台或版本的压缩包的头文件的数量并不唯一,对于第一头文件所属的计算机平台的压缩包的任一头文件,均执行上述步骤S100-S400;本实施例中,只有判定第一头文件所属的计算机平台的压缩包的任一头文件均被对应的第二头文件支持时,才判定第二头文件所属的计算机平台或版本支持第一头文件所属的计算机平台或版本。
本实施例对于属于不同计算平台或同一计算平台的不同版本的第一头文件和第二头文件,分别使用对应的编译器对其进行编译,得到了对应的第一编译文件和第二编译文件;基于得到的编译文件,获取了对应的AST文件和宏文件,通过将对应的AST文件和宏文件进行合并,得到了第一合并文件和第二合并文件;本发明中第一头文件和第二头文件的名称相同,只是两者属于不同的计算平台或者同一计算平台的不同版本,本实施例并不是直接比对第一头文件和第二头文件,而是先将第一头文件转换为第一合并文件以及先将第二头文件转换为第二合并文件,然后再根据第一合并文件和第二合并文件判断第二头文件是否支持第一头文件对应的接口功能;本实施例避免了直接对头文件进行比较的过程,不再存在由于直接比较头文件所导致的比较过程复杂和容易出错的问题,进而提高了判断第二计算平台是否支持第一计算平台的接口功能或第一计算平台的第二版本是否支持第一计算平台的第一版本的接口功能的准确性;而且,本实施例通过对第二头文件进行编译的方式还能够判断第二头文件中数据结构或接口函数或宏的功能是否在软件中真正实现了,进一步提高了判断第二计算平台是否支持第一计算平台的接口功能或第一计算平台的第二版本是否支持第一计算平台的第一版本的接口功能的准确性。
实施例三
本实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
获取第一头文件,使用第一编译器对所述第一头文件进行编译,得到第一编译文件。
获取第一编译的AST文件和宏文件,将第一编译文件的AST文件和宏文件进行合并,得到第一合并文件,第一合并文件包括若干个第一记录,每一第一记录用于记录一个数据结构或接口函数或宏的第一预设信息,第一预设信息包括第一记录对应的数据结构或接口函数或宏的名称。
获取第二合并文件,第二合并文件通过将第二编译文件的AST文件和宏文件合并得到,第二编译文件通过第二编译器对第二头文件编译得到;第二头文件与第一头文件属于不同的计算平台或者属于同一计算平台的不同版本,第二头文件和第一头文件的名称相同。
根据第二合并文件与第一合并文件判断第二头文件是否支持第一头文件对应的接口功能。
实施例四
本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取第一头文件,使用第一编译器对所述第一头文件进行编译,得到第一编译文件。
获取第一编译的AST文件和宏文件,将第一编译文件的AST文件和宏文件进行合并,得到第一合并文件,第一合并文件包括若干个第一记录,每一第一记录用于记录一个数据结构或接口函数或宏的第一预设信息,第一预设信息包括第一记录对应的数据结构或接口函数或宏的名称。
获取第二合并文件,第二合并文件通过将第二编译文件的AST文件和宏文件合并得到,第二编译文件通过第二编译器对第二头文件编译得到;第二头文件与第一头文件属于不同的计算平台或者属于同一计算平台的不同版本,第二头文件和第一头文件的名称相同。
根据第二合并文件与第一合并文件判断第二头文件是否支持第一头文件对应的接口功能。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
虽然已经通过示例对本发明的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本发明的范围。本领域的技术人员还应理解,可以对实施例进行多种修改而不脱离本发明的范围和精神。本发明的范围由所附权利要求来限定。

Claims (12)

1.一种头文件的处理方法,其特征在于,所述处理方法包括以下步骤:
获取第一头文件,使用第一编译器对所述第一头文件进行编译,得到第一编译文件;
获取第一编译文件的AST文件和宏文件,将第一编译文件的AST文件和宏文件进行合并,得到第一合并文件,第一合并文件包括若干个第一记录,每一第一记录用于记录一个数据结构或接口函数或宏的第一预设信息,第一预设信息包括第一记录对应的数据结构或接口函数或宏的名称;
获取第二合并文件,第二合并文件通过将第二编译文件的AST文件和宏文件合并得到,第二编译文件通过第二编译器对第二头文件编译得到;第二头文件与第一头文件属于不同的计算平台或者属于同一计算平台的不同版本,第二头文件和第一头文件的名称相同;
根据第二合并文件与第一合并文件判断第二头文件是否支持第一头文件对应的接口功能;
根据第二合并文件与第一合并文件判断第二头文件是否支持第一头文件对应的接口功能包括以下步骤:
获取第一名称列表,所述第一名称列表包括所述第一合并文件中的任一第一记录中的名称;
获取第二名称列表,所述第二名称列表包括所述第二合并文件中的任一第二记录中的名称;
遍历所述第一名称列表,如果所述第一名称列表中任一第一记录中的名称均在所述第二名称列表中存在,则判定第二头文件支持第一头文件对应的接口功能。
2.根据权利要求1所述的头文件的处理方法,其特征在于,所述第二合并文件包括若干个第二记录,每一第二记录用于记录一个数据结构或接口函数或宏的第二预设信息,所述第二预设信息包括第二记录对应的数据结构或接口函数或宏的名称。
3.根据权利要求1所述的头文件的处理方法,其特征在于,所述第一合并文件和第二合并文件为json格式。
4.根据权利要求1所述的头文件的处理方法,其特征在于,第一编译文件的AST文件通过使用clang对所述第一编译文件进行提取得到。
5.根据权利要求1所述的头文件的处理方法,其特征在于,第一编译文件的宏文件通过使用宏提取模块对所述第一编译文件进行提取得到。
6.一种头文件的处理装置,其特征在于,所述处理装置包括:
第一获取模块,用于获取第一头文件,使用第一编译器对所述第一头文件进行编译,得到第一编译文件;
第二获取模块,用于获取第一编译文件的AST文件和宏文件,将第一编译文件的AST文件和宏文件进行合并,得到第一合并文件,第一合并文件包括若干个第一记录,每一第一记录用于记录一个数据结构或接口函数或宏的第一预设信息,第一预设信息包括第一记录对应的数据结构或接口函数或宏的名称;
第三获取模块,用于获取第二合并文件,第二合并文件通过将第二编译文件的AST文件和宏文件合并得到,第二编译文件通过第二编译器对第二头文件编译得到;第二头文件与第一头文件属于不同的计算平台或者属于同一计算平台的不同版本,第二头文件和第一头文件的名称相同;
第一判断模块,用于根据第二合并文件与第一合并文件判断第二头文件是否支持第一头文件对应的接口功能;
所述第一判断模块包括:
第四获取模块,用于获取第一名称列表,所述第一名称列表包括所述第一合并文件中的任一第一记录中的名称;
第五获取模块,用于获取第二名称列表,所述第二名称列表包括所述第二合并文件中的任一第二记录中的名称;
第一判定模块,用于遍历所述第一名称列表,如果所述第一名称列表中任一第一记录中的名称均在所述第二名称列表中存在,则判定第二头文件支持第一头文件对应的接口功能。
7.根据权利要求6所述的头文件的处理装置,其特征在于,所述第二合并文件包括若干个第二记录,每一第二记录用于记录一个数据结构或接口函数或宏的第二预设信息,所述第二预设信息包括第二记录对应的数据结构或接口函数或宏的名称。
8.根据权利要求6所述的头文件的处理装置,其特征在于,所述第一合并文件和第二合并文件为json格式。
9.根据权利要求6所述的头文件的处理装置,其特征在于,第一编译文件的AST文件通过使用clang对所述第一编译文件进行提取得到。
10.根据权利要求6所述的头文件的处理装置,其特征在于,第一编译文件的宏文件通过使用宏提取模块对所述第一编译文件进行提取得到。
11.一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至5中任意一项所述的头文件的处理方法。
12.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5中任意一项所述的头文件的处理方法。
CN202311526163.9A 2023-11-16 2023-11-16 一种头文件的处理方法、装置、设备及介质 Active CN117251205B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311526163.9A CN117251205B (zh) 2023-11-16 2023-11-16 一种头文件的处理方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311526163.9A CN117251205B (zh) 2023-11-16 2023-11-16 一种头文件的处理方法、装置、设备及介质

Publications (2)

Publication Number Publication Date
CN117251205A CN117251205A (zh) 2023-12-19
CN117251205B true CN117251205B (zh) 2024-02-06

Family

ID=89126743

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311526163.9A Active CN117251205B (zh) 2023-11-16 2023-11-16 一种头文件的处理方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN117251205B (zh)

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107194245A (zh) * 2017-05-12 2017-09-22 南京大学 一种针对Linux内核页表隔离的功能调用改造方法
CN111475196A (zh) * 2020-03-30 2020-07-31 杭州迪普信息技术有限公司 编译告警溯源方法、装置、电子设备及计算机可读介质
CN111506342A (zh) * 2020-04-23 2020-08-07 北京奇艺世纪科技有限公司 版本差异检测方法、装置、电子设备及存储介质
CN111596920A (zh) * 2019-02-21 2020-08-28 迈普通信技术股份有限公司 文件编译方法、装置、编译设备及存储介质
CN111913739A (zh) * 2020-07-30 2020-11-10 北京数立得科技有限公司 一种服务接口原语定义方法和系统
CN112363726A (zh) * 2020-11-10 2021-02-12 北京麟卓信息科技有限公司 一种内核模块的跨内核版本编译方法及系统
CN112764797A (zh) * 2021-01-06 2021-05-07 浙江大华技术股份有限公司 软件兼容性检测方法、装置、电子装置和存储介质
CN113254065A (zh) * 2021-07-14 2021-08-13 广州易方信息科技股份有限公司 应用软件兼容方法及装置
CN113553301A (zh) * 2021-06-24 2021-10-26 网易(杭州)网络有限公司 头文件的处理方法、装置、计算机可读存储介质和处理器
CN114217771A (zh) * 2021-04-26 2022-03-22 无锡江南计算技术研究所 一种基于国产异构平台的c++向量编程方法
CN114510267A (zh) * 2022-04-20 2022-05-17 麒麟软件有限公司 基于Linux系统的程序ABI接口兼容性计算方法
CN114691188A (zh) * 2020-12-30 2022-07-01 华为技术有限公司 兼容性评估方法、装置、设备及存储介质
CN114780136A (zh) * 2022-03-31 2022-07-22 中银金融科技有限公司 一种jar包和war包的兼容性检查方法和系统
US11481200B1 (en) * 2021-10-11 2022-10-25 International Business Machines Corporation Checking source code validity at time of code update
CN115421782A (zh) * 2022-11-07 2022-12-02 易方信息科技股份有限公司 应用于iOS端的SDK兼容方法、存储装置及智能终端
CN115878178A (zh) * 2022-11-03 2023-03-31 中科时代(深圳)计算机系统有限公司 Codesys运行时软件的移植方法、装置及存储介质

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107194245A (zh) * 2017-05-12 2017-09-22 南京大学 一种针对Linux内核页表隔离的功能调用改造方法
CN111596920A (zh) * 2019-02-21 2020-08-28 迈普通信技术股份有限公司 文件编译方法、装置、编译设备及存储介质
CN111475196A (zh) * 2020-03-30 2020-07-31 杭州迪普信息技术有限公司 编译告警溯源方法、装置、电子设备及计算机可读介质
CN111506342A (zh) * 2020-04-23 2020-08-07 北京奇艺世纪科技有限公司 版本差异检测方法、装置、电子设备及存储介质
CN111913739A (zh) * 2020-07-30 2020-11-10 北京数立得科技有限公司 一种服务接口原语定义方法和系统
CN112363726A (zh) * 2020-11-10 2021-02-12 北京麟卓信息科技有限公司 一种内核模块的跨内核版本编译方法及系统
CN114691188A (zh) * 2020-12-30 2022-07-01 华为技术有限公司 兼容性评估方法、装置、设备及存储介质
CN112764797A (zh) * 2021-01-06 2021-05-07 浙江大华技术股份有限公司 软件兼容性检测方法、装置、电子装置和存储介质
CN114217771A (zh) * 2021-04-26 2022-03-22 无锡江南计算技术研究所 一种基于国产异构平台的c++向量编程方法
CN113553301A (zh) * 2021-06-24 2021-10-26 网易(杭州)网络有限公司 头文件的处理方法、装置、计算机可读存储介质和处理器
CN113254065A (zh) * 2021-07-14 2021-08-13 广州易方信息科技股份有限公司 应用软件兼容方法及装置
US11481200B1 (en) * 2021-10-11 2022-10-25 International Business Machines Corporation Checking source code validity at time of code update
CN114780136A (zh) * 2022-03-31 2022-07-22 中银金融科技有限公司 一种jar包和war包的兼容性检查方法和系统
CN114510267A (zh) * 2022-04-20 2022-05-17 麒麟软件有限公司 基于Linux系统的程序ABI接口兼容性计算方法
CN115878178A (zh) * 2022-11-03 2023-03-31 中科时代(深圳)计算机系统有限公司 Codesys运行时软件的移植方法、装置及存储介质
CN115421782A (zh) * 2022-11-07 2022-12-02 易方信息科技股份有限公司 应用于iOS端的SDK兼容方法、存储装置及智能终端

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Building an open-source Solaris-compatible threads library;Wood, J;《USENIX ASSOCIATION PROCEEDINGS OF THE FREENIX TRACK》;全文 *
基于clang的可执行文件碎片化编译技术;张啸川;颜峻;庞建民;张宇嘉;谭捷;;信息工程大学学报(03);全文 *

Also Published As

Publication number Publication date
CN117251205A (zh) 2023-12-19

Similar Documents

Publication Publication Date Title
CN109032631B (zh) 应用程序补丁包获取方法、装置、计算机设备及存储介质
CN111597243B (zh) 基于数据仓库抽象数据加载的方法及系统
CN111078568B (zh) 代码规范方法、装置、计算机设备和存储介质
WO2020206840A1 (zh) 代码翻译方法、装置、计算机设备和存储介质
CN111381825A (zh) 一种小程序的生成方法和装置
CN115268991A (zh) 依赖分析的优化方法、装置、设备和存储介质
CN114780109B (zh) Python项目第三方库依赖自动化解析与安装方法
CN113094252B (zh) 测试用例生成方法、装置、计算机设备及存储介质
CN117251205B (zh) 一种头文件的处理方法、装置、设备及介质
US10656922B2 (en) Systems and methods for providing an application transformation tool
CN116522830B (zh) 可测试设计及布局布线阶段的逻辑功能更正方法及装置
CN111857752A (zh) 一种PostgreSQL数据库安装方法、装置及设备
CN116069667A (zh) 基于代码分析的测试用例辅助定位方法及装置
CN115129598A (zh) 一种sql语句的风险检测方法、装置、系统及介质
CN115422095A (zh) 一种回归测试用例推荐方法、装置、设备及介质
CN115221047A (zh) 测试用例自动生成方法及电子设备
CN114969215A (zh) 数据仓库贴源层自动批量装载数据的方法及相关设备
CN112580334A (zh) 一种文案处理方法、装置、服务器及存储介质
CN114416104B (zh) 一种结构化数据文件处理方法及装置
CN112148581A (zh) 代码规范检查方法、装置、系统及存储介质
CN115310407B (zh) 一种Excel模型的解析方法及系统
CN113033149B (zh) 用户故事文档质量检查方法、装置、设备及存储介质
CN115599440A (zh) Go语言软件中CGO语言特征的自动识别方法及存储介质
CN116680311A (zh) 一种映射关系查找方法、装置、电子设备及存储介质
Tomašić et al. Parsers implementation within the test environment generator in automotive industry

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20240412

Address after: 311100, Room 206-063, Building 8, Xixi Bafangcheng, Wuchang Street, Yuhang District, Hangzhou City, Zhejiang Province

Patentee after: Muxi Lingzhi Technology (Hangzhou) Co.,Ltd.

Country or region after: China

Address before: Room 1113, 11th Floor, Building F, Information Port, No. 198 Qidi Road, Economic and Technological Development Zone, Xiaoshan District, Hangzhou City, Zhejiang Province, 311200

Patentee before: Muxi Integrated Circuit (Hangzhou) Co.,Ltd.

Country or region before: China

TR01 Transfer of patent right