《表1 本文选用的AST节点》

《表1 本文选用的AST节点》   提示:宽带有限、当前游客访问压缩模式
本系列图表出处文件名:随高清版一同展现
《面向软件缺陷预测的树状结构编码方式》


  1. 获取 高清版本忘记账户?点击这里登录
  1. 下载图表忘记账户?点击这里登录

在程序代码中,符号粒度可能是字符级别[23]、单词级别以及AST的节点等[24~26]。相关研究指出,AST的唯一节点是SDP中程序的合适粒度,因为该程序中的语义和结构信息几乎可以完整保留。使用名为javalang[27]的开源Python项目作为将Tera-PROMISE库中的Java代码解析为AST的工具。继Phan等人[3]的研究,仅选择三种类型的AST节点作为实验用的AST节点:第一种是与类实例化和方法调用关联的节点,使用它们的方法名或类名作为令牌;第二种类型是声明节点,例如方法声明、类型声明,接口声明和枚举声明;最后一种类型是控制流节点,例如条件控制(IfStatement)、循环控制(ForStatement、WhStateState)和异常控制(ThrowStatemen、CatchClause)。消除了诸如Assignment之类的局部节点,因为这些节点是在方法内声明的,即使不同的方法具有相同名称的局部变量,它们也可能具有不同的含义。本文所选用的AST节点如表1所示,图1展示了与该代码相对应的AST。