文章目录
- 1. 代码安全
- iDev: enhancing social coding security by cross-platform user identification between GitHub and stack overflow【A】
- 2. API推荐
- Group preference based API recommendation via heterogeneous information network【A】
- 3.Andorid恶意软件检测
- Out-of-sample Node Representation Learning for Heterogeneous Graph in Real-time Android Malware Detection【A】
- 4. 重复缺陷报告检测
- HINDBR: Heterogeneous Information Network Based Duplicate Bug Report Prediction【B】
- 5. 程序理解与表示
- Learning to represent programs with heterogeneous graphs【B】
- 6. 缺陷报告开发者分发
- KSAP: An approach to bug report assignment using KNN search and heterogeneous proximity【B】
- 7. Smart Contract漏洞检测
- MANDO: Multi-Level Heterogeneous Graph Embeddings for Fine-Grained Detection of Smart Contract Vulnerabilities
- 8. 不安全代码片段检测
- ICSD: An Automatic System for Insecure Code Snippet Detection in Stack Overflow over Heterogeneous Information Network【B】
- 9. 缺陷报告开发者分发
- A spatial–temporal graph neural network framework for automated software bug triaging
- 10. 代码审查推荐
- Using Large-scale Heterogeneous Graph Representation Learning for Code Review Recommendations
- 总结
1. 代码安全
iDev: enhancing social coding security by cross-platform user identification between GitHub and stack overflow【A】
Yujie Fan, Yiming Zhang, Shifu Hou, Lingwei Chen, Yanfang Ye, Chuan Shi, Liang Zhao, & Shouhuai Xu (2019). iDev: Enhancing Social Coding Security by Cross-platform User Identification Between GitHub and Stack Overflow international joint conference on artificial intelligence.
通过GitHub和Stack overflow之间的跨平台用户识别来增强社交编码安全
背景与问题:GitHub与Stack Overflow等平台逐渐流行,潜在的安全问题也在上升,主要归因于风险与有害代码能很好地嵌入传播。文献利用异质图表示学习识别用户,检测跨平台投毒攻击者。
贡献:自动跨平台【Github与Stack Overflow】用户识别,利用用户的属性与社交编码属性等进行用户标识,检测投毒攻击者。
方法与模型:构造跨平台用户代码交互图,基于attributed heterogeneous information network (AHIN),提出AHIN2Vec用户表示学习。将表示学习的结果用作下游任务的节点特征,进行跨平台用户识别。
2. API推荐
Group preference based API recommendation via heterogeneous information network【A】
Fenfang Xie, Liang Chen, Dongding Lin, Chuan Chen, Zibin Zheng, & Xiaola Lin (2018). Poster: Group Preference Based API Recommendation via Heterogeneous Information Network international conference on software engineering.
基于组推荐的异构信息网络API推荐
背景与问题:异构信息网络(HIN)是一种能够包括多种类型的边与多种类型的节点关系的逻辑网络。先前的API推荐研究主要关注在同构信息网络以及很少种类的边,所以并没有利用其本身丰富的异构信息。
方法与模型:GPRec。输入:Mashup信息【tag、category、description】,API 信息【tag,category、description、provider】以及Mashups与API之间的历史调用记录。GPRec Model:利用mashup、api、以及它们之间的相关属性构造异构信息网络。利用不同元路径连接mashup来学习不同的语义表示。利用四种相似度度量方法来计算不同混搭之间的相似度。采用贝叶斯群偏好个性化排序算法对每对Mashup-API排序。输出:个性化排序后的结果。
3.Andorid恶意软件检测
Out-of-sample Node Representation Learning for Heterogeneous Graph in Real-time Android Malware Detection【A】
Yanfang Ye, Shifu Hou, Lingwei Chen, Jingwei Lei, Wenqiang Wan, Jiabin Wang, Qi Xiong, & Fudong Shao (2019). Out-of-sample Node Representation Learning for Heterogeneous Graph in Real-time Android Malware Detection international joint conference on artificial intelligence.
Android 恶意软件实时检测中异构图的样本外节点表示学习
背景与问题:日益复杂的安卓恶意软件要求有能力保护移动用户免遭威胁的防御技术。由于 Android 恶意软件检测是一个速度敏感的应用程序并且需要具有成本效益的解决方案,因此需要可扩展的 HG 表示学习方法,特别是对于样本外节点。文献利用异质图表示学习识别软件,检测恶意软件。
方法与模型:构造APP-组件关系异质图,基于Heterogeneous Graph Learning进行异质图表示学习。将学习表示用作下游任务节点特征,进行软件检测。
4. 重复缺陷报告检测
HINDBR: Heterogeneous Information Network Based Duplicate Bug Report Prediction【B】
Guanping Xiao, Xiaoting Du, Yulei Sui, & Tao Yue (2020). HINDBR: Heterogeneous Information Network Based Duplicate Bug Report Prediction international symposium on software reliability engineering.
基于异构信息网络的重复Bug报告预测
背景与问题:Bug追踪系统中存在重复的Bug错误。现存的方法主要是基于文本相似度的方法来进行重复Bug识别,但是这个方法在JIT中变得不可行。
方法与模型:HINDBR。通过HIN的表征学习,HINDRB将错误报告的语义关系嵌入到低维空间中,利用曼哈顿距离求两个向量之间的距离,当两个向量距离在潜在空间彼此接近时,就认为这两个向量表示的是一个重复错误。
构造的HIN:
- 节点:bug report (BID)【TextBID,unstructured features】, component (COM), product (PRO), version (VER), priority (PRI), and severity (SEV).【structured】
- 关系:Bug-Component,Component-Product,Bug-Version,Bug-Priority,Bug-Severity
特征表示与融合:
- 结构特征。HIN2Vec来预训练结构特征。
- 非结构特征。Word2Vec来预训练非结构特征text。
- 对于某个节点,将其结构特征与非结构特征融合作为其最终的特征表示。
重复Bug相似度度量方法:曼哈顿距离
局限与未来工作:因为预训练的向量都是基于指定数据集,所以模型不能泛化到其它数据集来进行重复Bug检测。
5. 程序理解与表示
Learning to represent programs with heterogeneous graphs【B】
Wenhan Wang, Kechi Zhang, Ge Li, & Zhi Jin (2021). Learning to Represent Programs with Heterogeneous Graphs arXiv: Software Engineering.
使用异构图学习程序表示
背景与问题:代码表示将程序转换为具有语义的向量,对于源代码处理至关重要。Abstract Syntax Tree (AST)【抽象语法树】所构成的增强图,包含丰富的语义信息与结构信息。为了学习代码的表示,现存的方法主要是同构图,所以忽视了节点与边的类型信息。文献利用异质图表示学习理解源代码,进行方法名预测与代码分类
方法与模型:Heterogeneous Program Graph (HPG):提供节点与边的类型,使用Abstract Syntax Description Language (ASDL)将抽象语法树生成抽象语法异质图。基于HGT学习异质图的节点表示,将表示结果作为下游任务节点特征。
Heterogeneous Graph Transformer (HGT):
方法存在的缺陷:
- 没有引入节点与边的属性特征,所以需要初始化表征。
- 采用的子令牌结构,对实体命名有较强的假设要求
6. 缺陷报告开发者分发
KSAP: An approach to bug report assignment using KNN search and heterogeneous proximity【B】
Wen Zhang, Song Wang, & Qing Wang (2016). KSAP: An approach to bug report assignment using KNN search and heterogeneous proximity Information & Software Technology.
一种基于KNN搜索和异构邻近的bug报告分配方法
背景与问题:及时的将Bug报告分配给开发人员,对软件质量保证至关重要。随着软件系统发展,将Bug分配给合适的开发人员是困难的。
模型与方法:KSAP。当一个新的Bug报告提交后,构造该Bug报告的异质图。KSAP将使用一个二阶段程序分配该报告给开发者。第一个阶段是通过k -最近邻(KNN)方法将历史上已解决的类似bug报告搜索到新的bug报告。第二阶段是根据不同种类的邻近性对那些贡献了类似错误报告的开发人员进行排名。
实体:developer, bug, comment, component, product。
关系:
未来工作:将在错误存储库中考虑更多实体,例如错误报告的版本和平台,以利用更多异构信息来推荐开发人员解决错误报告。未来计划解决异构邻近度排名中过度专业化的问题。
7. Smart Contract漏洞检测
MANDO: Multi-Level Heterogeneous Graph Embeddings for Fine-Grained Detection of Smart Contract Vulnerabilities
Hoang H. Nguyen, Nhat-Minh Nguyen, Chunyao Xie, Zahra Ahmadi, Daniel Kudendo, Thanh-Nam Doan, & Lingxiao Jiang (2022). MANDO: Multi-Level Heterogeneous Graph Embeddings for Fine-Grained Detection of Smart Contract Vulnerabilities
用于细粒度检测智能合约漏洞的多级异构嵌入
背景与问题:学习由不同类型的节点和边组成的异构图增强了同构图技术的结果。控制流图这种异构图表示可能的软件代码执行流。控制流图能表示更多代码、开发技术和工具的语义信息,从而有利于检测软件中的漏洞。现存的方法不能处理具有不同类型的大量边与节点的异构图。
模型与方法:MANDO。给定以太坊智能合约中的软件代码,构造控制流异质图与调用图异质图,将两种图融合构造异质合约图。基于元路径的方法学习异质合约图的节点表示。将表示学习结果用作下游任务节点特征,识别合约中存在漏洞。
8. 不安全代码片段检测
ICSD: An Automatic System for Insecure Code Snippet Detection in Stack Overflow over Heterogeneous Information Network【B】
Yanfang Ye, Shifu Hou, Lingwei Chen, Xin Li, Liang Zhao, Shouhuai Xu, Jiabin Wang, & Qi Xiong (2018). ICSD: An Automatic System for Insecure Code Snippet Detection in Stack Overflow over Heterogeneous Information Network annual computer security applications conference.
使用异构信息网络对Stack Overflow中的安全代码片段检测的自动化系统
背景与问题:随着现代社会编码范式【Stack Overflow】的流行,不安全的代码在系统中很简单嵌入与分布的安全隐患也在增加。
模型与方法:
- 利用代码内容【功能名称、函数、API】与社会编码属性来检测Stack Overflow中的不安全代码片段。社会编码属性包括用户、徽章、问题、答案、代码片段等。
- 利用HIN来学习丰富的语义关系,基于元路径的方法来融合更高层次的语义特征,从而建立代码段的相关性。
- 提出snippet2vec框架来学习HIN中丰富的语义知识与结构知识的表示。
- 多视图融合分类器来进行下游任务【不安全代码片段的检测】。
模型优点:
- Stack Overflow数据的最新特征表示。
- 基于最新表示学习模型的多视图融合分类器。
- 不安全代码片段自动检测的实际系统。
9. 缺陷报告开发者分发
A spatial–temporal graph neural network framework for automated software bug triaging
Hongrun Wu, Yutao Ma, Zhenglong Xiang, Chen Yang, & Keqing He (2021). A Spatial-Temporal Graph Neural Network Framework for Automated Software Bug Triaging arXiv: Software Engineering.
用于自动化软件Bug诊断分类的时空图神经网络
背景与问题:
- 为了高效分配Bug给指定开发人员,Bug诊断分类程序是非常重要的。
- 现有的大部分方法只关注单个时间片的静态折叠图,缺乏动态性与扩展性。
- 先前的工作都没考虑开发者的周期性交互。
模型与方法:
- 提出spatial-temporal dynamic graph neural network (ST-DGNN),时空动态图神经网络。包括joint random walk (JRWalk) mechanism与graph recurrent convolutional neural network (GRCNN) model两部分。
- JRWalk通过考虑节点【节点度,reputation】与边【边权重,preference】的重要性,使用两种采样策略采样本地拓扑结构。
- CRCNN有三个相同结构组件:每小时周期性、每日周期性、每周周期性。学习时空图上的动态developer collaboration networks(DCN)特征。【CNN、LSTM】
10. 代码审查推荐
Using Large-scale Heterogeneous Graph Representation Learning for Code Review Recommendations
Jiyang Zhang, Chandra Maddila, Ram Bairi, Christian Bird, Ujjwal Raizada, Apoorva Agrawal, Yamini Jhawar, Kim Herzig, & Arie van Deursen (2022). Using Large-scale Heterogeneous Graph Representation Learning for Code Review Recommendations
使用大规模异构图表征学习用于代码审查推荐
背景与问题:
- 代码审查是成熟软件发展一个重要的程序。
- 大多数审查推荐系统主要依赖历史文件变化与评论信息。虽然这些方法能够识别并建议合格的审查员,但它们可能对那些拥有所需专业知识且从未与更改过的文件进行过交互的审查员视而不见。
模型与方法:
- Coral。审查员推荐系统。从一组丰富的实体(包括开发者、存储库、文件、拉取请求、工作项目等)及其在现代源代码管理系统中的关系构建的社会技术图。
- 利用RGCN来进行异质图表示学习。
- 采用inductive的学习范式。
- 模型结构简单,适合于大规模异构图。
RGCN:
缺陷:
- 没有考虑节点与边的属性特征。
- 需要满足IID的假设。
- 对于融合节点特征与图拓扑结构,缺乏自适应能力。
总结
HIN通用流程
- 收集相关数据集
- 构造异质图【节点、边、属性、元路径】
- 异质图上的节点表示学习
- 下游任务
HIN面对的挑战
- 如何收集与清洗数据集
- 如何构造有效的异质图
- 如何基于下游任务设计合适的编码器来学习节点表示
- 如何扩展到OOD场景与大规模图数据场景中
- 如何在基于元路径的表示学习方法中构造一组充分且有效的元路径
异质图表示学习方法
- 基于元路径的方法【HIN2Vec】
- 基于注意力机制的方法【HGT】
- 元路径与注意力机制的组合方法【HAN】
元路径