💡
原文中文,约6500字,阅读约需16分钟。
📝
内容提要
介绍Joern的基础常见节点结构和特殊语法关系,可结合https://cpg.joern.io/进行更深入的了解。
🎯
关键要点
-
Joern实现了很多不常用的语法,文档中未提及的内容也有简洁实用的方式。
-
基础常见节点结构包括Annotation、Argument、Call、File、Method、Namespace、Parameter、Return和TypeDecl。
-
Annotation节点用于Java中的注解,包含指向其他节点的边。
-
Argument节点包含所有分支跳转循环节点,如if/else/for等。
-
Call节点指向调用节点的参数和条件分支类型参数。
-
File节点包含注释、导入和命名空间等信息。
-
Method节点包含方法的参数、返回值和修饰词等。
-
Namespace节点分为namespace和namespaceBlock,表示命名空间的结构。
-
Parameter节点定义为函数定义的参数,主要与Method节点链接。
-
Return节点对应方法的返回值,包含与条件节点的关系。
-
TypeDecl节点表示类的定义,包含方法和成员变量的信息。
-
特殊语法关系中,method方法的调用位置和定义节点可以通过cpg进行访问。
➡️