代码表示学习:token级别代码图表示
参考文献
Combining Graph-Based Learning With Automated Data Collection for Code Vulnerability Detection - TIFS'21
Token级别代码图表示
代码图表示分为语句级别和token基本2个粒度,其区别在于边的位置是添加在token粒度还是statement粒度上,如下图所示:
左图的语义边只在语句节点之间相连,而右图的语义边除了语句节点之间以外,还有在token级别节点之间连接
语句级别代码图表示 token级别代码图表示
1 Token级别代码图表示构建:
- 以AST为核心;
- 在AST基础上添加多种类型的边,增强语义表示能力;
- Data and control flows:数据流和控制流,语句节点之间相连,与语句级别图表示相同;
-
GuardedBy:token之间的控制流关系,对顺序类漏洞的检测是否有效;
-
Jump:语句之间的控制依赖关系,CDG
-
ComputedFrom: