CN106202450A - 一种基于makefile文件依赖的源码分析方法 - Google Patents

一种基于makefile文件依赖的源码分析方法 Download PDF

Info

Publication number
CN106202450A
CN106202450A CN201610554453.8A CN201610554453A CN106202450A CN 106202450 A CN106202450 A CN 106202450A CN 201610554453 A CN201610554453 A CN 201610554453A CN 106202450 A CN106202450 A CN 106202450A
Authority
CN
China
Prior art keywords
file
source code
dependence
symbol
makefile
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.)
Pending
Application number
CN201610554453.8A
Other languages
English (en)
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.)
Nanjing University
Original Assignee
Nanjing University
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 Nanjing University filed Critical Nanjing University
Priority to CN201610554453.8A priority Critical patent/CN106202450A/zh
Publication of CN106202450A publication Critical patent/CN106202450A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Library & Information Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供一种基于makefile文件依赖的源码分析方法,包括如下步骤:1)依赖关系提取阶段:a.信息转换,对makefile处理得到对应中间文件;b.冗余信息处理,去除中间文件中冗余信息;c.依赖信息提取,从中间文件中提取依赖信息;d.结束;2)源码信息提取阶段:a.解析源码内容,得到源码信息;b.符号转换,对源码信息中符号处理;c.建立索引,对数据建立映射;d.结束;3)对象定义查找阶段:a.确认查找文件范围,查找对应依赖文件列表;b.确认定义位置,从数据映射中查找符号信息;c.结束;基于makefile文件依赖的源码分析方法首先确定文件查找范围,然后确定符号定义位置信息。对文件范围进行限定,很大程度上提升了源码分析中符号定义查找的准确性。

Description

一种基于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文件依赖关系进行提取分析,并生成可供查询的数据结构,当对对象定义进行查找时,首先确定文件查找范围,然后在对应的文件索引中查找对象信息,对对象定义位置进行定位,通过对文件查找范围确定和文件索引的利用,排除因为依赖关系不明造成的对象定义查找不准确的现象,大大提高对象定义查找的准确性。
本发明所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视权利要求书所界定者为准。

Claims (9)

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中解析源码内容是指通过对源码内容做静态分析得到对应的语法树结构,从语法树结构及其对应的符号表中提取节点的符号、属性、类型和位置等相关信息。
6.根据权利要求1所述的基于makefile文件依赖关系的源码分析方法,其特征在于,其中步骤2)-b中符号转换是指对提取出来的节点符号通过添加前缀和分隔符的方式进行处理,排除不同作用域相同符号定义的混淆性。
7.根据权利要求1所述的基于makefile文件依赖关系的源码分析方法,其特征在于,其中步骤2)-c中建立索引是指将提取的信息建立数据映射,用来保存数据并建立一一映射关系,将符号位置利用字符串哈希函数生成唯一的数字ID建立位置和符号内容的映射,将符号内容作为唯一ID生成与符号相关信息的数据映射。
8.根据权利要求1所述的基于makefile文件依赖关系的源码分析方法,其特征在于,其中步骤3)-a中确认查找的文件范围是指根据查找文件信息从依赖关系结构中获取查找文件范围。
9.根据权利要求1所述的基于makefile文件依赖关系的源码分析方法,其特征在于,其中步骤3)-b中确认定义位置是指在文件查找范围内对应的文件数据索引中得到需要查找的符号信息。
CN201610554453.8A 2016-07-11 2016-07-11 一种基于makefile文件依赖的源码分析方法 Pending CN106202450A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610554453.8A CN106202450A (zh) 2016-07-11 2016-07-11 一种基于makefile文件依赖的源码分析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610554453.8A CN106202450A (zh) 2016-07-11 2016-07-11 一种基于makefile文件依赖的源码分析方法

Publications (1)

Publication Number Publication Date
CN106202450A true CN106202450A (zh) 2016-12-07

Family

ID=57475936

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610554453.8A Pending CN106202450A (zh) 2016-07-11 2016-07-11 一种基于makefile文件依赖的源码分析方法

Country Status (1)

Country Link
CN (1) CN106202450A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107832059A (zh) * 2017-11-21 2018-03-23 广州视源电子科技股份有限公司 一种基于Makefile的代码静态分析方法和装置
CN108416194A (zh) * 2018-03-08 2018-08-17 北京顶象技术有限公司 符号混淆方法及装置
CN108965295A (zh) * 2018-07-17 2018-12-07 郑州云海信息技术有限公司 一种文件压缩合并方法及相关装置
CN110716742A (zh) * 2019-09-27 2020-01-21 福建天泉教育科技有限公司 Apk安全问题的定位方法及计算机可读存储介质
CN110737437A (zh) * 2018-07-20 2020-01-31 北京君正集成电路股份有限公司 一种基于代码集成的编译方法和装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107832059A (zh) * 2017-11-21 2018-03-23 广州视源电子科技股份有限公司 一种基于Makefile的代码静态分析方法和装置
CN108416194A (zh) * 2018-03-08 2018-08-17 北京顶象技术有限公司 符号混淆方法及装置
CN108416194B (zh) * 2018-03-08 2020-10-23 北京顶象技术有限公司 符号混淆方法及装置
CN108965295A (zh) * 2018-07-17 2018-12-07 郑州云海信息技术有限公司 一种文件压缩合并方法及相关装置
CN108965295B (zh) * 2018-07-17 2021-09-17 郑州云海信息技术有限公司 一种文件压缩合并方法及相关装置
CN110737437A (zh) * 2018-07-20 2020-01-31 北京君正集成电路股份有限公司 一种基于代码集成的编译方法和装置
CN110716742A (zh) * 2019-09-27 2020-01-21 福建天泉教育科技有限公司 Apk安全问题的定位方法及计算机可读存储介质
CN110716742B (zh) * 2019-09-27 2023-02-28 福建天泉教育科技有限公司 Apk安全问题的定位方法及计算机可读存储介质

Similar Documents

Publication Publication Date Title
CN108052547B (zh) 基于问句和知识图结构分析的自然语言问答方法及系统
CN104866593B (zh) 一种基于知识图谱的数据库搜索方法
CN106202450A (zh) 一种基于makefile文件依赖的源码分析方法
CN102831121B (zh) 一种网页信息抽取的方法和系统
CN111159330B (zh) 一种数据库查询语句的生成方法及装置
CN104123288B (zh) 一种数据查询方法及装置
CN102073692B (zh) 基于农业领域本体库的语义检索系统和方法
CN104657439A (zh) 用于自然语言精准检索的结构化查询语句生成系统及方法
CN110909170B (zh) 兴趣点知识图谱构建方法、装置、电子设备及存储介质
CN103123650B (zh) 一种基于整数映射的xml数据库全文索引方法
CN104657440A (zh) 结构化查询语句生成系统及方法
CN104239286A (zh) 同义短语的挖掘方法和装置及搜索相关内容的方法和装置
CN108121739B (zh) 数据收集方法和数据收集系统
CN107992608B (zh) 一种基于关键字上下文的sparql查询语句自动生成方法
CN104699835A (zh) 用于确定网页页面中包括兴趣点poi数据的方法及装置
CN104331446A (zh) 一种基于内存映射的海量数据预处理方法
CN107203468A (zh) 一种基于ast的软件版本演化对比分析方法
CN105389344A (zh) 一种自助式查新方法及系统
CN102314464B (zh) 歌词搜索方法及搜索引擎
CN104679764A (zh) 一种图数据检索方法和装置
CN106650408A (zh) 一种用于判断安卓系统是否具有root权限的方法和系统
CN105447342B (zh) 脚本加密方法、解密方法及引擎
Bast et al. An efficient RDF converter and SPARQL endpoint for the complete OpenStreetMap data
CA3144686A1 (en) Sql statement generator
CN109271560A (zh) 一种基于树模板的链接数据关键词查询方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20161207