CN110377276A - 源代码文件管理方法及设备 - Google Patents
源代码文件管理方法及设备 Download PDFInfo
- Publication number
- CN110377276A CN110377276A CN201910656680.5A CN201910656680A CN110377276A CN 110377276 A CN110377276 A CN 110377276A CN 201910656680 A CN201910656680 A CN 201910656680A CN 110377276 A CN110377276 A CN 110377276A
- Authority
- CN
- China
- Prior art keywords
- value
- module
- dictionary
- file
- source code
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
- G06F8/4452—Software pipelining
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明提供一种源代码文件管理方法及设备,方法包括:根据提取的所有模块定义的对象名称key值及其模块名称为value值建立第一字典;提取目标模块包含其他模块的头文件名称,以头文件名称为key值、value值为0建立第二字典;提取目标模块引用的对象名称,并以提取的对象名称为key值以及目标模块名称为value值建立第三字典;若判断第三字典中目标key值在第一字典中存在,提取目标key值对应的模块名称;判断目标key值对应的头文件是否在第二字典中存在,若存在将头文件的value值修改为1,若不存在则将头文件添加到目标模块中;将第二字典中value值为0的头文件从目标模块中删除,操作效率较高,成本低。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种源代码文件管理方法及设备。
背景技术
源代码文件中通常包含多个模块,每个模块又包含多个文件,这些文件中会有不同层次的包含关系。文件的包含关系对编译器的编译过程有很大的影响,错综复杂的文件的包含关系会影响编译器的编译过程,也会增加静态代码的分析成本。
目前现有技术中,为了修正简化源代码文件的模块文件包含关系,一般是通过人工查找的方式,将源代码文件中模块文件内与其他模块之间有包含关系的头文件保留,将模块文件内与其他模块之间没有包含关系的头文件删除。
但是,发明人发现现有技术至少存在如下技术问题:通过人工查找的方式效率低下,成本较高。
发明内容
本发明实施例提供一种源代码文件管理方法及设备,以解决通过人工查找的方式通过人工查找的方式,将源代码文件中模块文件内与其他模块之间有包含关系的头文件保留,将模块文件内与其他模块之间没有包含关系的头文件删除,存在的效率低下、成本较高的问题。
第一方面,本发明实施例提供一种源代码文件管理方法,包括:
提取源代码工程文件中所有模块定义的对象名称,并以每个模块的对象名称为key值及其对应模块的模块名称为value值建立第一字典;
提取目标模块包含的其他模块的头文件名称,并以头文件名称为key值、value值为0建立第二字典,其中所述目标模块为代码文件中所有模块中的任一个;
提取所述目标模块引用的对象名称,并以提取的对象名称为key值以及目标模块名称为value值建立第三字典;
判断所述目标模块的第三字典中的目标key值是否在第一字典中存在,若存在则在第一字典中提取所述目标key值对应的模块名称;
判断所述目标key值对应的模块名称对应的头文件是否在第二字典中存在,若存在则在第二字典将该头文件对应的value值修改为1,若不存在则将该头文件存入第四字典;
将第二字典中value值为0的头文件从目标模块的源代码文件中删除,将第四字典的头文件添加到目标模块的源代码文件中。
在一种可能的设计中,所述将第二字典中value值为0的头文件从目标模块的源代码文件中删除,将第四字典的头文件添加到目标模块的源代码文件中之后,还包括:
判断所述目标模块是否为最后一个模块;
若不是,则从所述源代码工程文件中获取另一目标模块,并继续执行提取目标模块包含的其他模块的头文件名称,并以头文件名称为key值、value值为0建立第二字典的步骤。
在一种可能的设计中,所述判断所述目标模块的第三字典中的目标key值是否在第一字典中存在之后,还包括:
若所述目标模块的第三字典中的目标key值在第一字典中不存在,则从所述源代码工程文件中获取另一目标模块,并继续执行提取目标模块包含的其他模块的头文件名称,并以头文件名称为key值、value值为0建立第二字典的步骤。
在一种可能的设计中,所述方法还包括:
遍历完所述代码工程文件中所有模块时,将所述源代码工程文件发送至编译器进行编译。
第二方面,本发明实施例提供一种源代码文件管理设备,包括:
第一提取模块,用于提取源代码工程文件中所有模块定义的对象名称,并以每个模块的对象名称为key值及其对应模块的模块名称为value值建立第一字典;
第二提取模块,用于提取目标模块包含的其他模块的头文件名称,并以头文件名称为key值、value值为0建立第二字典,其中所述目标模块为代码文件中所有模块中的任一个;
第三提取模块,用于提取所述目标模块引用的对象名称,并以提取的对象名称为key值以及目标模块名称为value值建立第三字典;
第一判断模块,用于判断所述目标模块的第三字典中的目标key值是否在第一字典中存在,若存在则在第一字典中提取所述目标key值对应的模块名称;
第二判断模块,用于判断所述目标key值对应的模块名称对应的头文件是否在第二字典中存在,若存在则在第二字典将该头文件对应的value值修改为1,若不存在则将该头文件存入第四字典;
头文件处理模块,用于将第二字典中value值为0的头文件从目标模块的源代码文件中删除,将第四字典的头文件添加到目标模块的源代码文件中。
在一种可能的设计中,所述设备还包括:
第三判断模块,用于判断所述目标模块是否为最后一个模块;若不是,则从所述源代码工程文件中获取另一目标模块,并继续执行提取目标模块包含的其他模块的头文件名称,并以头文件名称为key值、value值为0建立第二字典的步骤。
在一种可能的设计中,所述第一判断模块,还用于若所述目标模块的第三字典中的目标key值在第一字典中不存在,则从所述源代码工程文件中获取另一目标模块,并继续执行提取目标模块包含的其他模块的头文件名称,并以头文件名称为key值、value值为0建立第二字典的步骤。
在一种可能的设计中,所述设备还包括:
发送模块,用于遍历完所述代码工程文件中所有模块时,将所述源代码工程文件发送至编译器进行编译。
第三方面,本发明实施例提供一种源代码文件管理设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计所述的源代码文件管理方法。
第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的源代码文件管理方法。
本发明实施例提供的源代码文件管理方法及设备,该方法通过提取源代码工程文件中所有模块定义的对象名称,并以每个模块的对象名称为key值及其对应模块的模块名称为value值建立第一字典;提取目标模块包含的其他模块的头文件名称,并以头文件名称为key值、value值为0建立第二字典,其中目标模块为代码文件中所有模块中的任一个;提取目标模块引用的对象名称,并以提取的对象名称为key值以及目标模块名称为value值建立第三字典;判断目标模块的第三字典中的目标key值是否在第一字典中存在,若存在则在第一字典中提取目标key值对应的模块名称;判断目标key值对应的模块名称对应的头文件是否在第二字典中存在,若存在则在第二字典将该头文件对应的value值修改为1,若不存在则将该头文件存入第四字典;将第二字典中value值为0的头文件从目标模块的源代码文件中删除,将第四字典的头文件添加到目标模块的源代码文件中。本实施例能够自动将源代码工程文件中各模块中没有引用关系的头文件删除,将具有引用关系确没有存在的头文件修正添加,效率较高,且成本低。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的源代码文件管理的系统架构示意图;
图2为本发明实施例提供的源代码文件管理方法的流程示意图一;
图3为本发明实施例提供的源代码文件管理方法的流程示意图二;
图4为本发明实施例提供的源代码文件管理设备的结构示意图一;
图5为本发明实施例提供的源代码文件管理设备的结构示意图二;
图6为本发明实施例提供的源代码文件管理设备的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的源代码文件管理的系统架构示意图。如图1所示,本实施例提供的系统包括终端101和汽车电子控制单元(Electronic Control Unit,简称ECU)102。其中,终端101可以为手机、平板、个人电脑等。本实施例对终端101的实现方式不做特别限制,只要该终端101能够与ECU进行数据交互即可。
图2为本发明实施例提供的源代码文件管理方法的流程示意图一,本实施例的执行主体可以为图1所示实施例中的终端,本实施例此处不做特别限制。如图2所示,该方法包括:
S201:提取源代码工程文件中所有模块定义的对象名称,并以每个模块的对象名称为key值及其对应模块的模块模名称为value值建立第一字典。
在本实施例中,源代码工程文件可以任何项目的源代码文件。源代码工程文件中一般包含多个模块,每个模块中对应一个头文件,每个头文件又包含其他模块的头文件。
其中,模块的对象名称可以是,宏名称、函数名称、变量名称和类型名称等。
在本实施例中,表1为第一字典的一个示例。
表1
key值 | value值 | |
模块1 | 对象名称1 | 模块名称1 |
模块2 | 对象名称2 | 模块名称2 |
S202:提取目标模块包含的其他模块的头文件名称,并以头文件名称为key值、value值为0建立第二字典,其中所述目标模块为代码文件中所有模块中的任一个。
在本实施例中,从目标模块为代码文件中选择所有模块中的任一个作为目标模块。例如,表1中的模块1。
该目标模块中包含的其他模块,指的是该目标模块的头文件中包含其他模块的头文件。
在本实施例中,表2为模块1的第二字典的一个示例。
表2
模块1 | key值 | value值 |
头文件1 | 0 | |
头文件2 | 0 |
S203:提取所述目标模块引用的对象名称,并以提取的对象名称为key值以及目标模块名称为value值建立第三字典。
在本实施例中,将目标模块引用的对象名称作为key值,以及目标模块名称为value值建立第三字典。
在本实施例中,表3为模块1的第三字典的一个示例。
表3
模块1 | key值 | value值 |
对象名称1 | 模块名称1 | |
对象名称3 | 模块名称1 |
S204:判断所述目标模块的第三字典中的目标key值是否在第一字典中存在,若存在则在第一字典中提取所述目标key值对应的模块名称。
在本实施例中,判断所述目标模块的第三字典中的目标key值是否在第一字典中存在,即为判断第三字典中是否具有与第一字典中相同的对象名称。若存在,则确定目标模块引用了源代码工程文件中的模块的对象名称。
其中,目标key值为第三字典中的key值中任一个。
S205:判断所述目标key值对应的模块名称对应的头文件是否在第二字典中存在,若存在则在第二字典将该头文件对应的value值修改为1,若不存在则将该头文件存入第四字典。
在本实施例中,目标key值对应的模块名称对应的头文件在第二字典中存在,则确定目标模块引用了该头文件,若目标key值对应的模块名称对应的头文件在第二字典中不存在,则确定目标模块没有引用该头文件。
S206:将第二字典中value值为0的头文件从目标模块的源代码文件中删除,将第四字典的头文件添加到目标模块的源代码文件中。
在本实施例中,第二字典中value值为0的头文件指的是目标模块的源代码文件存在该头文件,但该目标模块与该头文件没有引用关系,属于多余的头文件,应当删除。
第四字典的头文件指的是该目标模块的源代码文件中没有改头文件,但是该目标模块与该头文件具有引用关系,属于修正添加的头文件。
从上述描述可知,通过提取源代码工程文件中所有模块定义的对象名称,并以每个模块的对象名称为key值及其对应模块的模块名称为value值建立第一字典;提取目标模块包含的其他模块的头文件名称,并以头文件名称为key值、value值为0建立第二字典,其中目标模块为代码文件中所有模块中的任一个;提取目标模块引用的对象名称,并以提取的对象名称为key值以及目标模块名称为value值建立第三字典;判断目标模块的第三字典中的目标key值是否在第一字典中存在,若存在则在第一字典中提取目标key值对应的模块名称;判断目标key值对应的模块名称对应的头文件是否在第二字典中存在,若存在则在第二字典将该头文件对应的value值修改为1,若不存在则将该头文件存入第四字典;将第二字典中value值为0的头文件从目标模块的源代码文件中删除,将第四字典的头文件添加到目标模块的源代码文件中。本实施例能够自动将源代码工程文件中各模块中没有引用关系的头文件删除,将具有引用关系确没有存在的头文件修正添加,效率较高,且成本低。
参考图3,图3为本发明实施例提供的源代码文件管理方法的流程示意图二,在上述实例的基础上,在步骤S 206之后,还可以包括:
S207:判断所述目标模块是否为最后一个模块;
若不是,则从所述源代码工程文件中获取另一目标模块,并继续执行步骤S202。
从上述描述可知,通过判断所述目标模块是否为最后一个模块,若是则从所述源代码工程文件中获取另一目标模块,并继续执行步骤S202,可以达到遍历整个源代码工程文件中所有模块,对多所有模块中没有引用关系的头文件删除,具有引用关系确没有存在的头文件修正添加的效果。
在本发明的一个实施例中,在上述实施例的基础上,在步骤S204之后还包括:
若所述目标模块的第三字典中的目标key值在第一字典中不存在,则从所述源代码工程文件中获取另一目标模块,并继续执行步骤S202。
在本发明的一个实施例中,在上述实施例的基础上,
遍历完所述代码工程文件中所有模块时,将所述源代码工程文件发送至编译器进行编译。
图4为本发明实施例提供的源代码文件管理设备的结构示意图一。如图4所示,该源代码文件管理设备40包括:第一提取模块401、第二提取模块402、第三提取模块403、第一判断模块404、第二判断模块405和头文件处理模块406。
第一提取模块401,用于提取源代码工程文件中所有模块定义的对象名称,并以每个模块的对象名称为key值及其对应模块的模块名称为value值建立第一字典;
第二提取模块402,用于提取目标模块包含的其他模块的头文件名称,并以头文件名称为key值、value值为0建立第二字典,其中所述目标模块为代码文件中所有模块中的任一个;
第三提取模块403,用于提取所述目标模块引用的对象名称,并以提取的对象名称为key值以及目标模块名称为value值建立第三字典;
第一判断模块404,用于判断所述目标模块的第三字典中的目标key值是否在第一字典中存在,若存在则在第一字典中提取所述目标key值对应的模块名称;
第二判断模块405,用于判断所述目标key值对应的模块名称对应的头文件是否在第二字典中存在,若存在则在第二字典将该头文件对应的value值修改为1,若不存在则将该头文件存入第四字典;
头文件处理模块406,用于将第二字典中value值为0的头文件从目标模块的源代码文件中删除,将第四字典的头文件添加到目标模块的源代码文件中。
本实施例提供的设备,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
图5为本发明实施例提供的源代码文件管理设备的结构示意图二。如图5所示,本实施例在图4实施例的基础上,还包括:
第三判断模块407,用于判断所述目标模块是否为最后一个模块;若不是,则从所述源代码工程文件中获取另一目标模块,并继续执行提取目标模块包含的其他模块的头文件名称,并以头文件名称为key值、value值为0建立第二字典的步骤。
所述第一判断模块404,还用于若所述目标模块的第三字典中的目标key值在第一字典中不存在,则从所述源代码工程文件中获取另一目标模块,并继续执行提取目标模块包含的其他模块的头文件名称,并以头文件名称为key值、value值为0建立第二字典的步骤。
发送模块408,用于遍历完所述代码工程文件中所有模块时,将所述源代码工程文件发送至编译器进行编译。
本实施例提供的设备,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
图6为本发明实施例提供的源代码文件管理设备的硬件结构示意图。如图6所示,本实施例的源代码文件管理设备60包括:处理器601以及存储器602;其中
存储器602,用于存储计算机执行指令;
处理器601,用于执行存储器存储的计算机执行指令,以实现上述实施例中终端所执行的各个步骤。具体可以参见前述方法实施例中的相关描述。
可选地,存储器602既可以是独立的,也可以跟处理器601集成在一起。
当存储器602独立设置时,该源代码文件管理设备还包括总线603,用于连接所述存储器602和处理器601。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上所述的源代码文件管理方法。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例的方案。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述模块成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例所述方法的部分步骤。
应理解,上述处理器可以是中央处理单元(Central Processing Unit,简称CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
总线可以是工业标准体系结构(Industry Standard Architecture,简称ISA)总线、外部设备互连(Peripheral Component Interconnect,简称PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,简称EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(Application Specific Integrated Circuits,简称ASIC)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种源代码文件管理方法,其特征在于,包括:
提取源代码工程文件中所有模块定义的对象名称,并以每个模块的对象名称为key值及其对应模块的模块名称为value值建立第一字典;
提取目标模块包含的其他模块的头文件名称,并以头文件名称为key值、value值为0建立第二字典,其中所述目标模块为代码文件中所有模块中的任一个;
提取所述目标模块引用的对象名称,并以提取的对象名称为key值以及目标模块名称为value值建立第三字典;
判断所述目标模块的第三字典中的目标key值是否在第一字典中存在,若存在则在第一字典中提取所述目标key值对应的模块名称;
判断所述目标key值对应的模块名称对应的头文件是否在第二字典中存在,若存在则在第二字典将该头文件对应的value值修改为1,若不存在则将该头文件存入第四字典;
将第二字典中value值为0的头文件从目标模块的源代码文件中删除,将第四字典的头文件添加到目标模块的源代码文件中。
2.根据权利要求1所述的方法,其特征在于,所述将第二字典中value值为0的头文件从目标模块的源代码文件中删除,将第四字典的头文件添加到目标模块的源代码文件中之后,还包括:
判断所述目标模块是否为最后一个模块;
若不是,则从所述源代码工程文件中获取另一目标模块,并继续执行提取目标模块包含的其他模块的头文件名称,并以头文件名称为key值、value值为0建立第二字典的步骤。
3.根据权利要求1所述的方法,其特征在于,所述判断所述目标模块的第三字典中的目标key值是否在第一字典中存在之后,还包括:
若所述目标模块的第三字典中的目标key值在第一字典中不存在,则从所述源代码工程文件中获取另一目标模块,并继续执行提取目标模块包含的其他模块的头文件名称,并以头文件名称为key值、value值为0建立第二字典的步骤。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
遍历完所述代码工程文件中所有模块时,将所述源代码工程文件发送至编译器进行编译。
5.一种源代码文件管理设备,其特征在于,包括:
第一提取模块,用于提取源代码工程文件中所有模块定义的对象名称,并以每个模块的对象名称为key值及其对应模块的模块名称为value值建立第一字典;
第二提取模块,用于提取目标模块包含的其他模块的头文件名称,并以头文件名称为key值、value值为0建立第二字典,其中所述目标模块为代码文件中所有模块中的任一个;
第三提取模块,用于提取所述目标模块引用的对象名称,并以提取的对象名称为key值以及目标模块名称为value值建立第三字典;
第一判断模块,用于判断所述目标模块的第三字典中的目标key值是否在第一字典中存在,若存在则在第一字典中提取所述目标key值对应的模块名称;
第二判断模块,用于判断所述目标key值对应的模块名称对应的头文件是否在第二字典中存在,若存在则在第二字典将该头文件对应的value值修改为1,若不存在则将该头文件存入第四字典;
头文件处理模块,用于将第二字典中value值为0的头文件从目标模块的源代码文件中删除,将第四字典的头文件添加到目标模块的源代码文件中。
6.根据权利要求5所述的设备,其特征在于,所述设备还包括:
第三判断模块,用于判断所述目标模块是否为最后一个模块;若不是,则从所述源代码工程文件中获取另一目标模块,并继续执行提取目标模块包含的其他模块的头文件名称,并以头文件名称为key值、value值为0建立第二字典的步骤。
7.根据权利要求5所述的设备,其特征在于,所述第一判断模块,还用于若所述目标模块的第三字典中的目标key值在第一字典中不存在,则从所述源代码工程文件中获取另一目标模块,并继续执行提取目标模块包含的其他模块的头文件名称,并以头文件名称为key值、value值为0建立第二字典的步骤。
8.根据权利要求6所述的设备,其特征在于,所述设备还包括:
发送模块,用于遍历完所述代码工程文件中所有模块时,将所述源代码工程文件发送至编译器进行编译。
9.一种源代码文件管理设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1至4任一项所述的源代码文件管理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至4任一项所述的源代码文件管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910656680.5A CN110377276B (zh) | 2019-07-19 | 2019-07-19 | 源代码文件管理方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910656680.5A CN110377276B (zh) | 2019-07-19 | 2019-07-19 | 源代码文件管理方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110377276A true CN110377276A (zh) | 2019-10-25 |
CN110377276B CN110377276B (zh) | 2023-05-23 |
Family
ID=68254247
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910656680.5A Active CN110377276B (zh) | 2019-07-19 | 2019-07-19 | 源代码文件管理方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110377276B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111813749A (zh) * | 2020-08-21 | 2020-10-23 | 网易(杭州)网络有限公司 | 文件过滤方法及装置、电子设备、存储介质 |
CN112486925A (zh) * | 2020-12-28 | 2021-03-12 | 潍柴动力股份有限公司 | 一种a2l文件处理方法、装置及存储介质 |
CN112612455A (zh) * | 2020-12-04 | 2021-04-06 | 潍柴动力股份有限公司 | 一种区分通信模式的方法及系统 |
Citations (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5854932A (en) * | 1995-08-17 | 1998-12-29 | Microsoft Corporation | Compiler and method for avoiding unnecessary recompilation |
US20030126118A1 (en) * | 2002-01-02 | 2003-07-03 | International Business Machines Corporation | Method, system and program for direct client file access in a data management system |
CN101017458A (zh) * | 2007-03-02 | 2007-08-15 | 北京邮电大学 | 基于源代码静态分析的软件安全代码分析器及其检测方法 |
KR100908889B1 (ko) * | 2009-03-03 | 2009-07-23 | (주) 바인젠 | 네트워크 상의 텍스트 메시지를 처리하는 소스 코드 생성 방법 및 그 장치 |
US20110055814A1 (en) * | 2009-08-28 | 2011-03-03 | International Business Machines Corporation | Compiler-assisted program source code filter |
US20110276954A1 (en) * | 2010-05-06 | 2011-11-10 | International Business Machines Corporation | Simultaneous compiler binary optimizations |
KR20120006789A (ko) * | 2010-07-13 | 2012-01-19 | (주)트리니티소프트 | 웹 서버의 보안장치 |
CN104484172A (zh) * | 2014-12-11 | 2015-04-01 | 上海天脉聚源文化传媒有限公司 | 一种文件打包的方法及装置 |
CN104536797A (zh) * | 2015-01-14 | 2015-04-22 | 大唐微电子技术有限公司 | 一种Java程序预编译方法和预编译器 |
US9110737B1 (en) * | 2014-05-30 | 2015-08-18 | Semmle Limited | Extracting source code |
CN105335137A (zh) * | 2014-07-23 | 2016-02-17 | 国际商业机器公司 | 用于处理源文件的方法和装置 |
CN106406913A (zh) * | 2016-10-28 | 2017-02-15 | 武汉斗鱼网络科技有限公司 | 一种从项目中提取代码的方法及系统 |
US20170308380A1 (en) * | 2016-04-26 | 2017-10-26 | Korea University Research And Business Foundation | Apparatus and method for detecting code cloning of software |
CN107608677A (zh) * | 2017-09-05 | 2018-01-19 | 腾讯科技(深圳)有限公司 | 一种编译处理方法、装置及电子设备 |
CN107678748A (zh) * | 2017-09-21 | 2018-02-09 | 杭州迪普科技股份有限公司 | 一种源代码文件编译方法及装置 |
CN107992306A (zh) * | 2017-12-03 | 2018-05-04 | 中国直升机设计研究所 | 一种航电软件接口实现一致性自动检查方法 |
CN108256343A (zh) * | 2018-01-12 | 2018-07-06 | 武汉斗鱼网络科技有限公司 | Shader文件的加密方法、装置及解密方法、装置 |
CN108897569A (zh) * | 2018-05-30 | 2018-11-27 | 福建天晴在线互动科技有限公司 | iOS工程无用文件的清理方法及计算机可读存储介质 |
CN109343855A (zh) * | 2018-09-29 | 2019-02-15 | 清华大学 | 基于指令伪装的程序编译抓取系统及方法 |
CN109597794A (zh) * | 2018-12-05 | 2019-04-09 | 郑州云海信息技术有限公司 | 一种文件管理方法、系统及电子设备和存储介质 |
CN109918917A (zh) * | 2019-03-19 | 2019-06-21 | 北京智游网安科技有限公司 | 防止h5源码泄漏的方法、计算机设备和存储介质 |
-
2019
- 2019-07-19 CN CN201910656680.5A patent/CN110377276B/zh active Active
Patent Citations (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5854932A (en) * | 1995-08-17 | 1998-12-29 | Microsoft Corporation | Compiler and method for avoiding unnecessary recompilation |
US20030126118A1 (en) * | 2002-01-02 | 2003-07-03 | International Business Machines Corporation | Method, system and program for direct client file access in a data management system |
CN101017458A (zh) * | 2007-03-02 | 2007-08-15 | 北京邮电大学 | 基于源代码静态分析的软件安全代码分析器及其检测方法 |
KR100908889B1 (ko) * | 2009-03-03 | 2009-07-23 | (주) 바인젠 | 네트워크 상의 텍스트 메시지를 처리하는 소스 코드 생성 방법 및 그 장치 |
US20110055814A1 (en) * | 2009-08-28 | 2011-03-03 | International Business Machines Corporation | Compiler-assisted program source code filter |
US20110276954A1 (en) * | 2010-05-06 | 2011-11-10 | International Business Machines Corporation | Simultaneous compiler binary optimizations |
KR20120006789A (ko) * | 2010-07-13 | 2012-01-19 | (주)트리니티소프트 | 웹 서버의 보안장치 |
US9110737B1 (en) * | 2014-05-30 | 2015-08-18 | Semmle Limited | Extracting source code |
CN105335137A (zh) * | 2014-07-23 | 2016-02-17 | 国际商业机器公司 | 用于处理源文件的方法和装置 |
CN104484172A (zh) * | 2014-12-11 | 2015-04-01 | 上海天脉聚源文化传媒有限公司 | 一种文件打包的方法及装置 |
CN104536797A (zh) * | 2015-01-14 | 2015-04-22 | 大唐微电子技术有限公司 | 一种Java程序预编译方法和预编译器 |
US20170308380A1 (en) * | 2016-04-26 | 2017-10-26 | Korea University Research And Business Foundation | Apparatus and method for detecting code cloning of software |
CN106406913A (zh) * | 2016-10-28 | 2017-02-15 | 武汉斗鱼网络科技有限公司 | 一种从项目中提取代码的方法及系统 |
CN107608677A (zh) * | 2017-09-05 | 2018-01-19 | 腾讯科技(深圳)有限公司 | 一种编译处理方法、装置及电子设备 |
CN107678748A (zh) * | 2017-09-21 | 2018-02-09 | 杭州迪普科技股份有限公司 | 一种源代码文件编译方法及装置 |
CN107992306A (zh) * | 2017-12-03 | 2018-05-04 | 中国直升机设计研究所 | 一种航电软件接口实现一致性自动检查方法 |
CN108256343A (zh) * | 2018-01-12 | 2018-07-06 | 武汉斗鱼网络科技有限公司 | Shader文件的加密方法、装置及解密方法、装置 |
CN108897569A (zh) * | 2018-05-30 | 2018-11-27 | 福建天晴在线互动科技有限公司 | iOS工程无用文件的清理方法及计算机可读存储介质 |
CN109343855A (zh) * | 2018-09-29 | 2019-02-15 | 清华大学 | 基于指令伪装的程序编译抓取系统及方法 |
CN109597794A (zh) * | 2018-12-05 | 2019-04-09 | 郑州云海信息技术有限公司 | 一种文件管理方法、系统及电子设备和存储介质 |
CN109918917A (zh) * | 2019-03-19 | 2019-06-21 | 北京智游网安科技有限公司 | 防止h5源码泄漏的方法、计算机设备和存储介质 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111813749A (zh) * | 2020-08-21 | 2020-10-23 | 网易(杭州)网络有限公司 | 文件过滤方法及装置、电子设备、存储介质 |
CN112612455A (zh) * | 2020-12-04 | 2021-04-06 | 潍柴动力股份有限公司 | 一种区分通信模式的方法及系统 |
CN112612455B (zh) * | 2020-12-04 | 2023-08-18 | 潍柴动力股份有限公司 | 一种区分通信模式的方法及系统 |
CN112486925A (zh) * | 2020-12-28 | 2021-03-12 | 潍柴动力股份有限公司 | 一种a2l文件处理方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110377276B (zh) | 2023-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110377276A (zh) | 源代码文件管理方法及设备 | |
CN107967152B (zh) | 基于最小分支路径函数胎记的软件局部抄袭证据生成方法 | |
CN105159927B (zh) | 目标文本主题词的选取方法、装置及终端 | |
CN108304484A (zh) | 关键词匹配方法及装置、电子设备和可读存储介质 | |
CN108053545A (zh) | 证件验真方法和装置、服务器、存储介质 | |
CN109656986A (zh) | 一种业务数据汇总的辅助方法、装置及电子设备 | |
CN108198083A (zh) | 保单多维度分析实现方法、装置、终端设备及存储介质 | |
CN110609908A (zh) | 案件串并方法及装置 | |
CN110175152A (zh) | 一种日志查询方法、中转服务器集群及日志查询系统 | |
CN108427736B (zh) | 一种用于查询数据的方法 | |
CN109739824A (zh) | 日志获取方法及设备 | |
CN110362361A (zh) | 文件制作的方法及装置 | |
CN107784055A (zh) | 基于非关系型数据库的事务处理方法和装置 | |
CN103365934A (zh) | 复杂命名实体抽取方法及装置 | |
CN110333944A (zh) | 话单数据业务处理方法及设备 | |
CN110059253A (zh) | 一种基于自然语言分析的排序方法和系统以及设备 | |
CN109597987A (zh) | 一种文本还原方法、装置及电子设备 | |
CN107169011A (zh) | 基于人工智能的网页原创性识别方法、装置及存储介质 | |
CN110119299A (zh) | 信息显示方法及设备 | |
CN106250456A (zh) | 一种中标公告的抽取方法及装置 | |
CN109359176A (zh) | 数据提取方法、装置、计算机设备和存储介质 | |
CN110427496A (zh) | 用于文本处理的知识图谱扩充方法及装置 | |
CN104572482B (zh) | 一种过程变量的存储方法及装置 | |
CN104077422B (zh) | 下载apk的去重方法及装置 | |
CN110427394A (zh) | 数据操作方法及装置 |
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 |