一种基于Graph Kernel的API使用示例选择方法

渗透技巧 2年前 (2022) admin
743 0 0

一种基于Graph Kernel的API使用示例选择方法

原文标题:CodeKernel: A Graph Kernel based Approach to the Selection of API Usage Examples
原文作者:Gu X, Zhang H, Kim S.
发表会议:2019 34th IEEE/ACM International Conference on Automated Software Engineering (ASE)
原文链接:https://ieeexplore.ieee.org/abstract/document/8952546
笔记作者:zhanS@SecQuan
文章小编:cherry@SecQuan

开发人员在编写代码的过程中,通常会希望知道某个API的具体使用方法(也就是使用示例)。过去的研究主要是通过聚类和总结的方法从代码库中提取相关的代码片段来生成示例代码,也就是说:将源代码转换成方法调用序列或特征向量;这种方法只对源代码的部分进行建模,因此容易产生不准确的示例。

在这篇文章中,作者将源代码表示为对象使用图,使用graph kernel进行图嵌入以进行聚类,通过排名从每个集群中选择一个代码表图来输出代码示例。模型相关内容详见:https://guxd.github.io/codekernel/。

图1是CodeKernel模型的应用场景。离线处理阶段的目标是选择代码示例:收集每个API相关的代码片段,使用CodeKernel模型选择对应的API使用示例。在运行过程中,给定一个API请求,系统会给出与该API对应的代码示例。一种基于Graph Kernel的API使用示例选择方法

Fig. 1 CodeKernel模型使用场景

图2是模型的Workflow。模型的输入是一系列来自开源项目和代码搜索结果的原始代码片段。原始代码片段首先会被转换成对象图(如图3所示);然后使用graph kernel将其嵌入到连续空间中,得到内积矩阵;在内积矩阵上使用聚类算法进行图聚类(使用谱聚类算法);最后基于排序的方法从每个集群中选择代码图,将其还原为代码示例。

一种基于Graph Kernel的API使用示例选择方法
Fig. 2 模型Workflow

本文中,使用GrouMiner[1]构建函数级对象图。对象图包含文本、序列、结构和数据依赖的信息,忽略了语法细节,能够较为完整地表示源代码,是局部上下文不敏感的。

一种基于Graph Kernel的API使用示例选择方法
Fig. 3 对象图示例
一种基于Graph Kernel的API使用示例选择方法
Fig. 4 CodeKernel伪代码

聚类后的结果通过两种排序度量指标进行排序。

  • Centrality:从集群中选择的图与集群中的其他图要有很高的相似性,也就是高代表性。
一种基于Graph Kernel的API使用示例选择方法
  • Specificity:具有高代表性的图可能倾向于更大的图,因为它们更可能与其他图相似。但是,较大的图往往有更多的特定元素(即,在集群中很少出现的边),这使得代码示例难以理解。Specificity指标的目的是为了惩罚有太多特定边的图。
一种基于Graph Kernel的API使用示例选择方法

最终,排序分数通过如下公式计算得出。

一种基于Graph Kernel的API使用示例选择方法
一种基于Graph Kernel的API使用示例选择方法
Fig. 5 CodeKernel模型产生的代码示例

参考文献
[1] Nguyen T T, Nguyen H A, Pham N H, et al. Graph-based mining of multiple object usage patterns[C]//Proceedings of the 7th joint meeting of the European Software Engineering Conference and the ACM SIGSOFT symposium on the Foundations of Software Engineering. 2009: 383-392.


安全学术圈招募队友-ing 
有兴趣加入学术圈的请联系 secdr#qq.com

一种基于Graph Kernel的API使用示例选择方法


原文始发于微信公众号(安全学术圈):一种基于Graph Kernel的API使用示例选择方法

版权声明:admin 发表于 2022年5月17日 下午8:31。
转载请注明:一种基于Graph Kernel的API使用示例选择方法 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...