本发明专利技术提供一种基于makefile文件依赖的源码分析方法,包括如下步骤:1)依赖关系提取阶段:a.信息转换,对makefile处理得到对应中间文件;b.冗余信息处理,去除中间文件中冗余信息;c.依赖信息提取,从中间文件中提取依赖信息;d.结束;2)源码信息提取阶段:a.解析源码内容,得到源码信息;b.符号转换,对源码信息中符号处理;c.建立索引,对数据建立映射;d.结束;3)对象定义查找阶段:a.确认查找文件范围,查找对应依赖文件列表;b.确认定义位置,从数据映射中查找符号信息;c.结束;基于makefile文件依赖的源码分析方法首先确定文件查找范围,然后确定符号定义位置信息。对文件范围进行限定,很大程度上提升了源码分析中符号定义查找的准确性。
【技术实现步骤摘要】
本专利技术涉及源码分析领域,是一种利用文件依赖关系进行源码分析的方法,从而解决了在源码分析中符号对象定位问题。
技术介绍
源码文件本质上属于文本,传统的人工阅读代码效率低下,人们开始研究如何根据编译过程中的中间文件来分析源码,并将源码的实现过程展现出来,从而快速理解编程者的思想,也给我们分析源代码提供了便利。当前对源码内容进行分析的方式主要有两种,分别是静态分析方式、动态分析方式。静态分析是指在不执行源码程序的情况下,用词法分析、语法分析等将源码生成对应的中间结构,对中间结构的处理减少了无关信息的干扰,对于查询结果准确性有很大的帮助。通过静态分析的方式对中间结构进行分析提取信息,已经成为较为主流的分析方式。其中基于IR的定位技术使用基于潜在语义索引的搜索引擎,允许用户通过写自然语言查询的命令提取源码信息元素,如类、类型、函数、文件等。对于用makefile组织的大型源码进行的分析,因为其文件组织关系记录在makefile文件中,在分析过程中会出现因为依赖关系不明确而出现的对象定位错误的问题。这些错误导致分析人员对源码的理解产生偏差,因此源码分析过程中保证对象定位准确性是重要的一环。文件间依赖关系是指当一个文件中需要引用其他文件中的函数、数据结构或者变量等时,在引用之前需要包含其对应的头文件,即该文件的实现依赖于这些文件的实现。解决因为依赖关系不明确而产生的对象定位错误的主要策略是对查找文件范围进行明确。在本系统中,我们提出了对文件依赖关系进行利用的方法,即对makefile中记录的信息进行提取并处理,生成可供查找的结构来确定对象定义查找的文件范围,同时通过静态分析对源码文件内容进行提取并生成文件内索引,在查找对象定义时,在文件查找范围内的文件索引中对对象定义进行查找,提高查找的准确性。
技术实现思路
本专利技术所要解决的技术问题是提供一种基于makefile文件依赖的源码分析方法,为分析源码过程中对象定义的准确定位提供解决方案。技术方案:为解决上述问题,本专利技术的基于makefile文件依赖的源码分析方法包括如下步骤:1)依赖关系提取阶段a信息转换;b冗余信息处理;c依赖信息提取;d结束;2)源码信息提取阶段A解析源码内容;b符号转换;c生成数据索引;d结束;3)结果确认阶段a确认查找的文件范围;b确认定义位置;c结束。本专利技术中,步骤1)-a中所说的信息转换是指用编译器对makefile文件处理生成文件依赖关系的中间文件,对该文件进行分析。本专利技术中,步骤1)-b中处理冗余信息是指将中间文件中的与依赖关系无关的数据进行判断然后将无效信息剔除,提高系统内存利用率和执行速度。本专利技术中,步骤1)-c中提取依赖信息是将中间文件中的依赖信息提取并生成可查询的数据结构。本专利技术中,步骤2)-a中提取源码信息是指通过对源码内容做静态分析得到对应的语法树结构,从对应语法树结构及其对应的符号表中提取符号、属性、类型和位置信息。本专利技术中,步骤2)-b中符号转换是指通过添加前缀和分隔符对符号信息进行处理,排除不同作用域相同符号的定义的混淆性。本专利技术中,步骤2)-c中生成数据映射建立索引是指将提取的信息建立数据映射,用来保存数据并建立一一映射关系,将符号位置利用字符串哈希函数生成唯一的数字ID建立位置和符号内容的映射,将符号内容作为唯一ID生成与符号相关信息的数据映射。本专利技术中,步骤3)-a中确认文件查找范围是指根据查找文件信息从依赖关系结构中获取查找文件范围。本专利技术中,步骤3)-b中确认符号查找信息结果是指在文件查找范围内对应的文件数据索引中得到需要查找的符号信息。本专利技术的有益效果是:本专利技术基于对源码中的文件依赖关系进行源码分析,对符号对象定义查找时确定查找文件范围,并通过静态分析的方式对源码内容进行提取将内容索引化,保证了查找结果的有效性,通过对查找范围的限定提升了源码分析过程中对象定义定位的准确性。附图说明图1为本专利技术的流程图。图2为依赖关系提取阶段的流程图图3为对象定义查找阶段的流程图具体实施方式为了更了解本专利技术的
技术实现思路
,特举具体实施例并配合所附图式说明如下。图1是本专利技术实施例的基于makefile文件依赖的源码分析方法。包括三个阶段:依赖关系提取阶段、源码信息提取阶段和对象定义查找阶段。步骤0为本专利技术的起始状态;在依赖信息提取阶段(步骤1-3),步骤1是信息转换,将makefile通过处理生成便于处理其中信息的中间文件;步骤2对中间文件中冗余的信息进行判断并剔除,提高系统内存利用率。步骤3对文件依赖关系信息提取,并转化为可供查询的数据结构,可以通过对象所在文件得到其所依赖的文件列表,确认查找范围;在源码信息提取阶段(步骤4-6),步骤4对源码内容进行静态分析并将对应的信息提取出来;步骤5将步骤4中提取的符号进行重命名,排除因为不同环境下同名造成的混淆;步骤6通过对步骤4和步骤5中的信息将源码数据生成数据索引,保证提供查找对象符号内容可以得到所有相关的符号信息;在结果确认阶段(步骤7-8),步骤7根据步骤3生成的结构得到文件的依赖列表,从而确定查找的文件范围;步骤8在步骤7确定的文件范围内进行文件内查找,根据步骤6文件索引,将对象定位信息返回;步骤9为结束步骤。如图2所示是对图1中依赖关系提取阶段的具体描述:步骤10为开始步骤;步骤11对makefile处理形成的中间文件内容处理;步骤12将中间文件中的五关信息去除,之后不再做处理;步骤13对将无关信息去除的标准化的中间文件进行处理;步骤14判断中间文件中的内容是否处理完,如果处理完则执行步骤20,否则执行步骤15;步骤15判断读取的信息是否为对文件依赖信息的描述,如果是则执行步骤16,否则执行步骤13;步骤16将处理到的文件依赖信息提取并保存;步骤17判断依赖关系中目标信息是否存在,如果不是则执行步骤18,否则执行步骤19;步骤20为结束步骤;图3是对图1中对象定义查找阶段的具体描述:步骤21为开始步骤;步骤22查找操作,提供查找的符号信息,如符号内容、符号所在文件位置等;步骤23根据提供的符号所在文件获得文件所依赖的文件列表;步骤24对依赖文件列表中的文件进行遍历查找;步骤25判断依赖文件列表是否遍历结束,如果是则执行步骤28,否则执行步骤26;步骤26在对应的文件索引中查找信息,首先根据位置信息确定索引表中对象符号内容信息,然后根据符号内容信息将与该对象相关的信息查找出来;步骤27将步骤26中得到的信息进行记录列表;步骤28对根据步骤27得到的相关对象信息列表进行遍历;步骤29判断是否为该符号对应的定义信息,如果是则执行步骤31,否则执行步骤30;步骤30继续处理相关列表中的下一条信息;步骤31将该结果返回;步骤32为结束步骤。综上所述,本专利技术采用对makefile文件依赖关系进行提取分析,并生成可供查询的数据结构,当对对象定义进行查找时,首先确定文件查找范围,然后在对应的文件索引中查找对象信息,对对象定义位置进行定位,通过对文件查找范围确定和文件索引的利用,排除因为依赖关系不明造成的对象定义查找不准确的现象,大大提高对象定义查找的准确性。本专利技术所属
中具有通常知识者,在不脱离本专利技术的精神和范围内,当可作各种的更动与润饰。因此,本专利技术的保护范围当视权利要求本文档来自技高网...
【技术保护点】
一种基于makefile文件依赖关系的源码分析方法,其特征在于,包括以下步骤:1)依赖关系提取阶段:a信息转换;b冗余信息处理;c依赖信息提取;d结束;2)源码信息提取阶段:A解析源码内容;b符号转换;c建立索引;d结束;3)对象定义查找阶段:a确认查找的文件范围;b确认文件内查找结果;c结束。
【技术特征摘要】
1.一种基于makefile文件依赖关系的源码分析方法,其特征在于,包括以下步骤:1)依赖关系提取阶段:a信息转换;b冗余信息处理;c依赖信息提取;d结束;2)源码信息提取阶段:A解析源码内容;b符号转换;c建立索引;d结束;3)对象定义查找阶段:a确认查找的文件范围;b确认文件内查找结果;c结束。2.根据权利要求1所述的基于makefile文件依赖关系的源码分析方法,其特征在于,其中步骤1)-a中所说的信息转换是指用编译器对makefile文件处理生成记录有源码文件依赖关系的中间文件,对该文件继续进行分析。3.根据权利要求1所述的基于makefile文件依赖关系的源码分析方法,其特征在于,其中步骤1)-b中冗余信息处理是指将中间文件中与依赖关系无关的数据进行判断并剔除,提高系统内存利用率和执行速度。4.根据权利要求1所述的基于makefile文件依赖关系的源码分析方法,其特征在于,其中步骤1)-c中依赖信息提取是将中间文件中的依赖信息判断并提取生成可查询的数据结构。5.根据权利要求1所述的基于makefile文件依赖关系的源码分析方法,其特征在于,其中步骤2)-a中解析...
【专利技术属性】
技术研发人员:谷凤伟,陈鹏,王金今,薛飞,黄皓,
申请(专利权)人:南京大学,
类型:发明
国别省市:江苏;32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。