基于复杂网络分析的函数调用图关键节点识别和标识方法

文档序号:10654310阅读:421来源:国知局
基于复杂网络分析的函数调用图关键节点识别和标识方法
【专利摘要】本发明涉及一种基于复杂网络分析的函数调用图关键节点识别和标识方法。首先通过源码静态分析技术进行词法分析、语法分析和控制流分析,获取源码调用关系数据和函数长度数据,将全部数据分类存储在数据库中;然后根据获取的数据生成调用图,利用复杂网络分析方法进行调用图节点指标计算,包括交互度、接近中心性、节点介数和函数长度,最终利用多属性决策方法进行节点关键程度计算;然后结合用户的需求和数据库中保存的状态数据,利用获得的函数调用图节点的关键程度数据计算关键节点排序和相应灰度比例数据,并进行可视化展示。本发明可快速的在复杂调用关系图中识别和标识出关键节点,显著提高工作效率。
【专利说明】
基于复杂网络分析的函数调用图关键节点识别和标识方法
技术领域
[0001] 本发明设及复杂网络分析技术,特别设及函数调用关系图和关键节点识别和标识 方法,提出了一种实用的基于复杂网络分析的函数调用关系图关键节点的识别和标识方 法。
【背景技术】
[0002] 复杂网络即呈现高度复杂性的网络,一般认为具有小世界特性和无标度特性即为 复杂网络。小世界特性描述了复杂网络通常具有很小的特征路径长度和较大的平均聚集系 数,它掲示了短链效应普遍存在,如著名的"六度分离"理论。无标度特性刻画了复杂网络的 不均匀复杂性,节点和连接呈幕律度分布,即大部分节点只有少数连接,而少数节点则拥有 大量的连接。复杂网络分析是W数学中的图论为理论基础,大量地应用统计物理学的方法, 对网络的几何性质、形成机制、演化规律、结构稳定性和动力学等方面的特性进行研究的方 法。其常用的网络复杂性指标有度,包括入度(W某顶点为弧头,终止于该定点的弧的数目 称为该顶点的入度)和出度(W某顶点为弧尾,起始于该顶点的弧的数目称为该顶点的出 度)。介数,网络中所有最短路径中经过该节点的路径的数目占最短路径总数的比例。节点 介数代表了函数节点在软件执行过程中的重要性,节点介数越大,其影响的路径范围越广。 本发明提出的新方法依靠复杂网络分析来获取函数调用关系图中关键节点的排序,并最终 按照实际需求在给定的调用关系图中进行标识。
[0003] 函数调用关系图展示了程序代码块之间不同层次的函数调用关系,包括顶层的模 块间函数调用关系、文件间函数调用关系和底层的函数调用关系。图中的节点可代表一个 模块、文件或者函数,而边代表了节点之间的调用关系。函数调用关系图展示了所有可能执 行的路径,运些执行路径在实际的一次执行过程中不会全部发生。目前利用静态分析即可 获得函数调用关系数据,现有的生成函数调用图的工具非常之多。运些工具基本功能类似, 虽然提供了不同的布局和展示方式,但并没有标识关键节点的能力,例如Doxygen、CodeVi Z 等。Doxygen作为一个功能强大的文档生成工具,除了能根据注释生成文档,还能可视化文 档间的关系,提取代码结构并自动生成依赖图、协作图和函数调用关系图等。而CodeViz则 利用源代码编译过程收集函数调用信息,结合Graphviz可视化工具将调用数据展示出来。 本发明提出的新方法中对函数调用关系和节点采用相应技术进行进一步分析,将识别和标 识出其中的关键节点。
[0004] 本发明设及到另一背景是开源软件的分析问题。由于较为庞大的软件函数调用关 系图非常复杂,泛泛的分析和展示其调用关系图必不能把握其重点和核屯、节点。而本发明 的方法可W基于复杂网络分析来识别和标识关键节点,也可提供W关键节点为中屯、的裁剪 和过滤方式,从而使调用图体量适中且重点突出,不再让开发者依赖个人经验和手工分析。 而软件多版本升级演化往往设及到重要BUG的修复和新功能的增加,在多版本差异对比图 中利用该方法同样可W识别和标识出关键差异节点,对于用户版本定制和升级都具有相当 重要的意义。另一方面,关键节点的识别和标识有助于理解函数调用的关键路径,在漏桐威 胁等级关联性分析W及热点函数性能瓶颈分析中应用该方法,可W快速收敛到目标结果。 但是,目前还没有一种方法(或软件)能够进行模块或文件调用/依赖关系图关键节点的识 别和标识,更没有函数调用关系图、多版本函数调用关系差异图的关键节点识别和标识能 力。

【发明内容】

[0005] 本发明的目的在于提供一种基于复杂网络分析的函数调用关系图关键节点的识 别和标识方法。通过运种方法可W高效的识别和标识出模块调用关系图、文件依赖关系图、 函数调用关系图、多版本函数调用关系差异图等调用图中的关键节点,为其提供明确的裁 剪和过滤方式,使问题简单化且重点突出。本发明能够将开发者从繁重的逐行代码分析和 关键节点分析工作中解放出来,同时应用于漏桐威胁等级关联性分析W及热点函数性能瓶 颈分析等问题中,可W加速相关分析结果收敛,引导开发者辅助定位核屯、问题,显著提高工 作效率。
[0006] 本发明的基于复杂网络分析的函数调用关系图关键节点的识别和标识方法,包括 =部分,如图1所示,第一部分是调用关系获取,第二部分是复杂网络分析,第=部分是关键 节点标识,具体描述如下:
[0007] 1)调用关系获取:通过源码静态分析技术进行词法分析、语法分析和控制流分析, 获取源码调用关系,并通过括号匹配分析技术获取函数长度数据(即函数占用的代码行 数),将全部数据分类存储在数据库中,利用W上数据即可生成调用图;
[0008] 2)复杂网络分析:利用复杂网络分析方法进行调用图节点指标计算,主要指标包 括交互度、接近中屯、性、节点介数和函数长度,最终利用多属性决策方法进行节点关键程度 计算;
[0009] 3)关键节点标识:结合用户的需求和数据库中保存的状态数据,利用函数调用图 节点关键程度数据计算关键节点排序和相应灰度比例数据,并进行可视化标识。
[0010] 下面对本发明方法进行具体说明。
[0011] 1)调用关系获取
[0012] 调用关系获取阶段主要通过源码静态分析技术进行词法分析、语法分析和控制流 分析等,完成函数定义和调用等信息的分析和获取。本方法从源代码的编译过程中获取函 数定义和调用信息,通过括号匹配分析函数起止行号并计算出函数长度数据。为了便于后 期的查询、分析和调用图生成,将运些数据录入数据库中W下相关表格中:
[0013] 目录文件列表:用来记录源码目录和文件路径。主要包括文件/目录名称,所属版 本倍息等。
[0014] 函数定义列表:用来记录所有函数的定义相关信息。主要包括函数名称,函数所属 的文件,函数的起止行号等。
[0015] 静态函数调用列表:用来记录静态函数调用的相关信息。主要包括调用函数信息, 被调用函数信息,W及运两个函数所属的文件等。
[0016] 2)复杂网络分析
[0017] 复杂网络分析阶段主要根据获取的调用信息生成调用图,利用复杂网络分析的思 想计算该图各个节点的交互度、接近中屯、性和节点介数,通过代码括号匹配分析技术获取 节点函数长度,并利用多属性决策方法计算节点的最终关键程度。多属性决策方法即为将 获取到的节点交互度、接近中屯、性、节点介数和节点函数长度信息按不同的权重系数加权 求和,系数可W根据人工评估结果对比调优,最终依据加权和评估每个节点的关键程度。
[0018] 交互度,即综合考虑出度和入度,其中出度为该节点调用其他节点的次数,入度为 该节点被调用的次数。交互度表征节点的局部交互程度,WD表示,计算公式如下,其中X表 示节点入度、Y表示节点出度,Xmin表示节点入度最小值Jmin表示节点出度最小值,Xmax表 示节点入度最大值、Ymax表示节点出度最大值。出度和入度可类比为调用和被调用进行理 解。整体来讲,Xmax、Ymax表示出度和入度的正理想方案;Xmin、化in表示出度和入度的负理 想方案,公式分子为每个方案到负理想方案的距离,分母为每个方案到负理想方案的距离 与每个方案到正理想方案的距离之和。整个公式计算结果表示每个方案对理想方案的贴近 程度,也可理解为节点出度与入度接近各自最大值并且远离各自最小值的程度。
[0019]
[0020] 接近中屯、性,考虑了节点间通信的独立性,即当前节点与其他节点通信的可能性 对通信所需中间媒介的最少个数的依赖程度,可类比调用图数据流进行理解。假设du表示 W节点i为起点j为终点的最短路径中所含边的数量,则节点i的接近中屯、性可W表示为其 至圆络中其他所有节点距离之和的倒数,具体计算公式如下,其中CC康示接近中屯、性,N表 示调用图中总的节点个数,i表示被计算指标的当前节点,j表示除当前计算指标节点之外 的其他节点
[0021]
[0022] 节点介数定义为调用图中所有最短路径中经过该节点的路径的数目占最短路径 总数的比例。介数反映了相应的节点在整个调用图中的作用和影响力,是一个重要的全局 几何量,具体计算公式如下,Cb(V)表示节点介数,分子表示图中任意两节点的最短路径经 过该节点的个数,分母表示图中任意两节点之间最短路径个数。其中,V表示被计算介数指 标的当前节点,V属于整个节点集合V,S、t表示整个节点集合V中其他任意两个节点。
[0023]
[0024] 之后将交互度、接近中屯、性、节点介数和如前所述方法计算得到的函数长度数据 等指标,利用如前所述的多属性决策方法进行计算,最终得出加权和代表节点的关键程度。
[0025] 3)关键节点标识
[0026] 关键节点标识阶段主要完成函数调用关系图的生成与标识。通过分析第一步和第 二步中生成的函数定义、调用信息和关键程度数据,计算关键节点排序信息并结合用户的 输入信息Wsvg图(可缩放矢量图形)表现出不同层次的函数调用关系及其关键节点,包括 模块(目录)级别的调用信息、文件级别的调用信息和函数调用关系图。在图中用圆型节点 表示模块/文件或者函数;用带有权值的有向线条表示两个节点之间存在的调用关系,调用 方向与箭头方式一致,权值代表调用次数。每次可W选择特定版本的一个或多个模块,一个 或多个文件,一个或多个文件所包含的函数进行调用图可视化和关键节点标识。函数调用 关系图中关键节点的具体表现形式有两种,一种为模块/文件级节点,另一种为函数级节 点。
[0027] a)模块/文件级节点:
[0028] 为了表示出更加丰富的信息,将模块/文件级节点设置为不同灰度的颜色。白色节 点代表普通节点(即没有被标识为关键节点的一般节点),灰色节点代表关键节点,且灰度 越大代表该节点的关键程度越高。每个节点都有统计数据,模块/文件级节点的关键程度是 其所包含的全体函数关键程度的加权平均和,而边上的权值则是两个节点所包含的全体函 数之间调用关系的总和。并有开关菜单来裁剪边和节点,显示和隐藏一般或关键节点数据, 下一级菜单提供分层展示等。
[0029] b)函数级节点:
[0030] 同理,为了表示出更加丰富的信息,函数级节点也设置为不同灰度的颜色。白色节 点代表普通函数节点(即没有被标识为关键节点的一般节点),灰色节点代表关键函数节 点,且灰度越大代表该函数的关键程度越高。每个节点同样都有统计数据,函数级节点的关 键程度由如前所述方法算得出,边的权值可表示为对应两个节点函数之间调用次数的总 和。并有开关菜单来裁剪边和节点,函数调用关系图及其关键节点标识为最低层次的视图。 [0031 ]本发明方案的具体的步骤如下:
[0032] 1)调用关系获取,图5是调用关系获取流程图,包括:
[0033] la)进入复杂网络分析系统,查看是否存在待分析的调用图版本。
[0034] 化)如果已经存在该版本调用图,进入If ),否则进入Ic)。
[0035] Ic)加入对应源码版本的源代码。
[0036] Id)进行源代码静态分析。
[0037] i .遍历源代码目录,获取代码中所有文件的相对路径信息。
[0038] ii .修改源代码的编译参数。
[0039] iii.编译源码,生成隐藏函数定义信息和函数调用信息的中间结果。
[0040] iv.从中间文件中分析出函数定义和行号等信息。
[0041 ] V.从中间文件中分析出函数调用信息。
[0042] Ie)将Id)分析得到的文件路径信息、函数定义信息、调用关系和函数长度数据入 库,分别录入目录文件列表,函数定义列表和静态调用列表等,进入化)。
[0043] If)进行复杂网络分析。
[0044] 2)复杂网络分析,图6是复杂网络分析流程图,包括:
[0045] 2a)计算关键节点指标。
[0046] 2b)如果已经计算完成所有节点交互度指标数据,进入化),否则进入2c)。
[0047] 2c)利用交互度公式计算所有节点的该项指标数据,进入2d)。
[004引2d)缓存所有节点交互度指标数据,存入临时文件,进入化)。
[0049] 2e)如果已经计算完成所有节点接近中屯、性指标数据,进入化),否则进入2f)。
[0050] 2f)利用接近中屯、性公式计算所有节点的该项指标数据,进入2g)。
[0051] 2g)缓存所有节点接近中屯、性指标数据,存入临时文件,进入化)。
[0052] 2h)如果已经计算完成所有节点介数指标数据,进入化),否则进入2i)。
[0053] 2i)利用介数公式计算所有节点的该项指标数据,进入2j)。
[0054] 2j)缓存所有节点介数指标数据,存入临时文件,进入化)。
[0055] 2k)利用多属性决策方法计算各节点的关键程度。
[0056] 3)关键节点标识,图7是关键节点标识流程图,包括:
[0057] 3a)根据已生成的指标数据和多属性决策结果,进行节点的关键程度排序。
[005引3b)如果已经生成对应调用图的节点关键程度排序数据,则进入3d),否则进入 3c)。
[0059] 3c)根据节点关键程度排序结果计算关键节点的灰度比例,进入3b)。
[0060] 3d)根据关键节点灰度比例数据生成调用图的关键节点标识视图。
[0061] 本发明结合复杂网络分析和调用图展示技术,提出了一种实用的基于复杂网络分 析的函数调用关系图关键节点的识别和标识方法。该方法通过静态分析开源软件特定版本 源代码,获取函数调用关系相关数据并入库,通过计算网络复杂性指标,包括交互度、接近 中屯、性和介数等指标并进行自适应的多属性决策来计算调用图中各个节点的重要度数据, 生成相应节点灰度显示比例,最终使用Graphviz等开源工具按照本发明的识别和标识方法 生成调用关系关键节点标识视图。该发明及图形化展示填补了函数调用关系关键节点识别 及标识的空白,克服了关键节点分析依靠开发者的个人经验和手工方式效率低下、分析口 槛较高、分析结果不易存储等困难。
[0062] 本发明提出的新方法可快速的在复杂调用关系图中识别和标识出关键节点,可用 于函数调用关系图按关键节点的裁剪和过滤,将复杂而庞大的函数调用关系图按重要度分 解,使问题简单化且重点突出。本发明能够将开发者从繁重的关键代码人工分析和依据个 人经验的分析工作中解放出来,同时可应用于漏桐威胁等级关联性分析W及热点函数性能 瓶颈分析、测试用例排序等问题中,可W结合节点重要度和分析目标,加速相关分析结果快 速收敛或引入新的有效分析指标,引导开发者快速辅助定位核屯、问题,为开源软件的分析、 开发、升级和维护等问题的部分过程提供高效的辅助方法,显著提高工作效率。
【附图说明】
[0063] 图1是基于复杂网络分析的函数调用关系图关键节点的识别和标识流程图。
[0064] 图2是调用关系获取流程图。
[0065] 图3是复杂网络分析流程图。
[0066] 图4是关键节点标识流程图。
[0067] 图5、6是实施例1的函数调用示意图。
[006引图7、8是实施例2的函数调用示意图。
【具体实施方式】
[0069] 下面通过实施例对本发明作进一步的说明,但不W任何方式限制本发明的范围。
[0070] 实施例1
[0071] 设定如下使用场景:
[0072] 用户使用本方法对linux3.5.4源码中的ipc/msg.c文件中的函数调用图进行关键 函数识别和标识。
[0073] 用户登录Linux内核函数调用关系平台,并在平台中选择选项生成ipc/msg.C文件 内函数调用关系,平台显示ipc/msg.C文件内函数调用关系并生成相应数据存储在数据库, 数据库中的数据描述了ipc/msg. C中的函数、函数之间的静态调用关系、函数静态调用次 数、在网页中显示的颜色等信息。数据库中的部分数据如表1所示:
[0074]表1.数据库中部分数据 「00751
[0076] 平台中ipc/msg. C文件的函数调用图如图5所示。
[0077] 2)用户选择关键函数识别功能,系统按照图3中的流程进行节点关键程度的计算, 可W得到函数节点的各个指标W及函数关键程度值,如表2所示:
[0078] 表2.函数节点的各个指标W及函数关键程度值
[0079]
'[0080]~~3)将计算得出的关键节点W灰度等级的形式展现出来,修改数据库中ipc/msg. C 文件的节点颜色,使用修改后的文件展示ipc/msg.C文件内函数调用关系如图6所示,图中 灰度等级越深代表该函数节点在文件中的关键程度越高是较为关键的节点。ipc/msg. C文 件中最关键的函数节点是系统调用sys_msgctl,用黑色表示;关键程度第二的关键节点do_ msgrcv,用深灰色表示;其他关键节点依次用灰度较浅的颜色表示;关键节点之外的函数节 点统一用的浅灰色表示。
[0081 ] 4)为检验本方法的正确率,对Linux源码文件ipc/msg. C熟悉的人员对文件进行人 工关键节点识别,与本方法自动识别相比如表3所示:
[0082] 表3.两种方法对比 r00831
[0084] 从表中可W得出本方法对Linux内核源码函数调用图关键节点的识别正确率较 局。
[0085] 实施例2
[0086] 设定如下使用场景:
[0087] 用户使用本方法对1 inux3.5.4源码中的kerne Vf ork. C文件中的函数调用图进行 关键函数识别和标识。用户登录Linux内核函数调用关系平台,并在平台中选择选项生成 kernel/fork.c文件内函数调用关系,平台显示kerneVfork.c文件内函数调用关系并生成 相应数据存储在数据库,数据库中的数据描述了 kernel/fork.c中的函数、函数之间的静态 调用关系、函数静态调用次数、在网页中显示的颜色等信息。数据库中部分信息如表4所示:
[0088] 表4.数据库中部分信息
[0089]
[0090]
[0091] 平台中kerne Vf ork. C文件的函数调用图如图7所示。
[0092] 2)用户选择关键函数识别功能,系统按照图3中的流程进行节点关键程度的计算, 可W得到函数节点的各个指标W及关键程度值,如表5所示:
[0093] 表5.函数节点的各个指标W及函数重要程度值
[0094]
[00M] 3)将计算得出的关键节点W灰度等级的形式展现出来,修改数据库中kernel/ fork. C文件的节点颜色,使用修改后的文件展示kernel/f ork. C文件内函数调用关系如图8 所示,图中灰度等级越深代表该函数节点在文件中的关键程度越高是较为关键的节点。 1^6111日1/'〇'4.(3文件中最关键的函数节点是系统调用(3〇97_91'〇。日33,用黑色表示;关键程度 第二的关键节点dup_mm,用深灰色表示;其他关键节点依次用灰度较浅的颜色表示;关键节 点之外的函数节点统一用白色表示。
[0096] 4)为检验本方法的正确率,对Linux源码文件kernel/fork.c熟悉的人员对文件进 行人工关键节点识别,与本方法自动识别相比如表6所示:
[0097] 表6.两种方法对比
[0099] 从表中可W得出本方法对Linux内核源码函数调用图关键节点的识别正确率较 局。
[0100] W上实施例仅用W说明本发明的技术方案而非对其进行限制,本领域的普通技术 人员可W对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本 发明的保护范围应W权利要求所述为准。
【主权项】
1. 一种基于复杂网络分析的函数调用图关键节点的识别和标识方法,包括以下步骤: 1) 通过源码静态分析技术进行词法分析、语法分析和控制流分析,获取源码调用关系 数据,并通过括号匹配分析技术获取函数长度数据,将全部数据分类存储在数据库中; 2) 根据步骤1)获取的数据生成调用图,利用复杂网络分析方法进行调用图节点指标计 算,所述指标包括交互度、接近中心性、节点介数和函数长度,最终利用多属性决策方法进 行节点关键程度计算; 3) 结合用户的需求和数据库中保存的状态数据,利用步骤2)获得的函数调用图节点的 关键程度数据计算关键节点排序和相应灰度比例数据,并进行可视化展示。2. 如权利要求1所述的方法,其特征在于,步骤1)从源代码的编译过程中获取函数定义 和调用信息,通过括号匹配分析函数起止行号并计算出函数长度数据,并将这些数据录入 数据库中的以下相关表格中:目录文件列表,用来记录源码目录和文件路径;函数定义列 表,用来记录所有函数的定义相关信息;静态函数调用列表,用来记录静态函数调用的相关 信息。3. 如权利要求1所述的方法,其特征在于,步骤1)进行调用关系获取的具体步骤包括: la) 进入复杂网络分析系统,查看是否存在待分析的调用图版本; lb) 如果已经存在该版本调用图,进入If ),否则进入Ic); lc) 加入对应源码版本的源代码; ld) 进行源代码静态分析; i.遍历源代码目录,获取代码中所有文件的相对路径信息; i i .修改源代码的编译参数; iii. 编译源码,生成隐藏函数定义信息和函数调用信息的中间结果; iv. 从中间文件中分析出函数定义和行号信息; V.从中间文件中分析出函数调用信息; le) 将Id)分析得到的文件路径信息、函数定义信息、调用关系和函数长度入库,分别录 入目录文件列表,函数定义列表和静态函数调用列表,进入Ib); lf) 进行复杂网络分析。4. 如权利要求1所述的方法,其特征在于,步骤2)所述交互度表征节点的局部交互程 度,其综合考虑出度和入度,其中出度为该节点调用其他节点的次数,入度为该节点被调用 的次数;所述接近中心性考虑节点间通信的独立性,即当前节点与其他节点通信的可能性 对通信所需中间媒介的最少个数的依赖程度;所述节点介数为调用图中所有最短路径中经 过该节点的路径的数目占最短路径总数的比例。 Fi加拟剎蔸步4斫袜的玄法.苴賠紅亦千.斫袜亦百磨的扑管公忒为.兵干,U衣不父1皮,λ衣不节?八皮、Y衣不节?出皮,Xmin衣不节?八度最小值、Ymin 表示节点出度最小值,Xmax表示节点入度最大值,Ymax表示节点出度最大值; 所述接近中心性的计算公式为:其中,CCi表示接近中心性,dij表示以节点i为起点j为终点的最短路径中所含边的数 量,N表示调用图中总的节点个数,i表示被计算指标的当前节点,j表示除当前计算指标节 点之外的其他节点; sa太屯·占各撕的斗晳/入.其中,Cb(V)表示节点介数,分子表示图中任意两节点的最短路径经过该节点的个数,分 母表示图中任意两节点之间最短路径个数;V表示被计算介数指标的当前节点,V属于整个 节点集合V,s、t表示整个节点集合V中其他任意两个节点。6. 如权利要求1所述的方法,其特征在于,步骤2)进行复杂网络分析的具体步骤包括: 2a)计算关键节点指标; 2b)如果已经计算完成所有节点交互度指标数据,进入2e),否则进入2c); 2c)利用交互度公式计算所有节点的该项指标数据,进入2d); 2d)缓存所有节点交互度指标数据,存入临时文件,进入2b); 2e)如果已经计算完成所有节点接近中心性指标数据,进入2h),否则进入2f); 2f)利用接近中心性公式计算所有节点的该项指标数据,进入2g); 2g)缓存所有节点接近中心性指标数据,存入临时文件,进入2e); 2h)如果已经计算完成所有节点介数指标数据,进入2k),否则进入2i); 2i)利用介数公式计算所有节点的该项指标数据,进入2j); 2j)缓存所有节点介数指标数据,存入临时文件,进入2h); 2k)利用多属性决策方法计算各节点的关键程度。7. 如权利要求1所述的方法,其特征在于,步骤3)在函数调用关系图中用圆型节点表示 模块/文件或者函数;用带有权值的有向线条表示两个节点之间存在的调用关系,调用方向 与箭头方式一致,权值代表调用次数;每次选择特定版本的一个或多个模块,一个或多个文 件,一个或多个文件所包含的函数进行调用图可视化和关键节点标识。8. 如权利要求7所述的方法,其特征在于,步骤3)中,函数调用关系图中关键节点的具 体表现形式有两种: a) 模块/文件级节点:将模块/文件级节点设置为不同灰度的颜色,白色节点代表普通 节点,灰色节点代表关键节点,且灰度越大代表该节点的关键程度越高;模块/文件级节点 的关键程度是其所包含的全体函数关键程度的加权平均和,而边上的权值则是两个节点所 包含的全体函数之间调用关系的总和; b) 函数级节点:将函数级节点也设置为不同灰度的颜色,白色节点代表普通函数节点, 灰色节点代表关键函数节点,且灰度越大代表该函数的关键程度越高;函数级节点的关键 程度由多属性决策方法计算得出,边的权值为对应两个节点函数之间调用次数的总和。9. 如权利要求8所述的方法,其特征在于,步骤3)进行关键节点标识的具体步骤包括: 3a)根据已生成的指标数据和多属性决策方法,进行关键节点的关键程度排序; 3b)如果已经生成对应调用图的关键节点标识数据,则进入3d),否则进入3c); 3c)根据关键节点关键程度数据和排序结果计算关键节点的灰度比例,进入3b); 3d)根据关键节点灰度比例数据生成调用图的关键节点标识视图。
【文档编号】G06F9/54GK106020950SQ201610313138
【公开日】2016年10月12日
【申请日】2016年5月12日
【发明人】李斌, 田兆楠, 贺也平
【申请人】中国科学院软件研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1