拓扑排序和强连通算法在源代码分析中的应用.pdfVIP

拓扑排序和强连通算法在源代码分析中的应用.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
拓扑排序和强连通算法在源代码分析中的应用.pdf

计 算 机 系 统 应 用 2009年 第 1期 拓扑排序和强连通算法在源代码分析中的应用① ApplicationofTopologicalSortandStronglyConnectedComponents inSourceAnalysis 李义军 任子真 (沈阳化工学院 计算机学院 辽宁 沈阳11O142) 摘 要: 缺少文档的开源项 目和文档不完整的开源项 目,分析其源代码是了解其运行机理的主要方法,本文提 出一种基于函数分析顺序的分析方法,并且提 出构建函数分析顺序的过程。过程为首先使用强连通算 法消除函数递归调用,得到一些组件,再用拓扑排序对组件和组件内部的各函数节点排序,得到一个 分层链表,该链表包含各函数的调用顺序和分析顺序,再用一种展开算法将分层链表展开,最终得到 源代码 中的函数分析顺序。 关键词: 深度遍历 拓扑排序 强连通算法 开源 函数分析顺序 开源项 目的开发人员分散,文档不完整,想弄清运 行机理 ,必须分析源代码。即使有文档,想要深入理解 软件项 目的实现细节,也得看源代码。但是项 目的函数 调用顺 众多,没有正确的分析顺序,思路容易混乱,并且分析 调用顺毒羹:lZ三析析顺顺序序 所有源代码不现实;有的项 目源代码太多,比如Linux 有几百万行源代码 ,必须分工合作,认清应该分析哪一 部分源代码,以及其依赖哪一部分源代码。 2 关系图的类型 由于函数的调用是有方向,所以调用关系图是有 1 源码分析的基本思想 向图。有向图又分为无环图和有环图。从函数调用关 源代码中所实现的软件功能的承载体是函数,分 系看,函数关系环是由于递归造成,不论直接递归还 析源代码应从分析函数入手,每个函数完成一定的功 是间接递归,函数调用自身,必然造成环,假如函数 能,多个函数合力完成一个总的功能。分析函数,首 没有递归,那么关系图为无环图。由于拓扑排序针对 先建立函数之间的关系,由于函数的调用关系可通过 有向无环图,必须采取相应的措施消除递归造成的调 关系图描述,因此可通过函数的调用关系构建函数关 用环。通过强连通算法将关系图消除递归,得到一些 系图,再用图论算法解决分析顺序问题,之后按顺序 组件,组件之间无递归,从而可进行拓扑排序。 分析各个函数的功能,进而将各个函数所实现的局部 功能组合成一个总的功能,最终明白源代码所实现的 3 拓扑排序和强连通算法的具体应用步骤 功能和软件的实现过程 ,从而可在此基础上继续开发, 以及软件出问题时,明白问题原因,从而解决问题。 在本文中,关系表示为调用和被调用。具体到本 简单示例,见图1,a1调用a2,a2调用a3,分析顺 文,邻接矩阵是表示函数之间调用关系的矩阵,以及 组件之间调用关系的矩阵,当行对应的函数和列对应 序相反,只有明白a3,才能明白a2,只有明白a2, 的函数有调用关系,则相应位置 1,没有调用关系, 才能明白a1。 ① 收稿时间:2008—07—16 96应用技术 AppliedTechnique 2009年 第 1期

文档评论(0)

m3lv5hh + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档