惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

腾讯CDC
N
Netflix TechBlog - Medium
aimingoo的专栏
aimingoo的专栏
P
Proofpoint News Feed
F
Fortinet All Blogs
大猫的无限游戏
大猫的无限游戏
I
InfoQ
V
V2EX
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
有赞技术团队
有赞技术团队
G
Google Developers Blog
L
LangChain Blog
博客园_首页
M
MIT News - Artificial intelligence
H
Hackread – Cybersecurity News, Data Breaches, AI and More
月光博客
月光博客
IT之家
IT之家
量子位
宝玉的分享
宝玉的分享
S
SegmentFault 最新的问题
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
雷峰网
雷峰网

博客园 - bamb00

一个项目带你入门AI应用开发08 一个项目带你入门AI应用开发08 一个项目带你入门AI应用开发课程介绍 一个项目带你入门AI应用开发07 一个项目带你入门AI应用开发06 一个项目带你入门AI应用开发05 一个项目带你入门AI应用开发05 一个项目带你入门AI应用开发04 一个项目带你入门AI应用开发03 一个项目带你 入门AI应用开发02 一个项目带你入门AI应用开发01 3・15 曝光 AI 安全暗礁:企业如何筑牢投毒与幻觉防护墙 CodeQL学习——导航调用图 linux进程隐藏手段及对抗方法 OAuth2.0安全设计之Authorization Code CodeQL学习——CodeQl数据流分析 CodeQL学习——CodeQL java库 CodeQL学习——自定义查询 CodeQL学习——CodeQL CLI入门 用户中心 - 博客园 浏览器解析js intent 参数的规范 Fiddler如何自动修改请求和响应包 Burp Suite学习之Intruder的4种攻击模式 对Android系统权限的认识 "INSTALL_FAILED_DUPLICATE_PERMISSION "错误解决 Android hook神器frida(二) 移动广告作弊技术研究 Android如果有一个任意写入的漏洞,如何将写权限转成执行权限 Android so注入(inject)和Hook技术学习(三)——Got表hook之导出表hook
CodeQL学习——java程序抽象语法树
bamb00 · 2021-05-08 · via 博客园 - bamb00

声明类

下述表格列出了所有Stmt的子类:

Statement syntaxCodeQL classSuperclassesRemarks
; EmptyStmt    
Expr ; ExprStmt    
{ Stmt ... } BlockStmt    
if ( Expr ) Stmt else Stmt IfStmt ConditionalStmt  
if ( Expr ) Stmt
while ( Expr ) Stmt WhileStmt ConditionalStmtLoopStmt  
do Stmt while ( Expr ) DoStmt ConditionalStmtLoopStmt  
for ( Expr ; Expr ; Expr ) Stmt ForStmt ConditionalStmtLoopStmt  
for ( VarAccess : Expr ) Stmt EnhancedForStmt LoopStmt  
switch ( Expr { SwitchCase ... } SwitchStmt    
try { Stmt ... finally { Stmt ... } TryStmt    
return Expr ; ReturnStmt    
return ;
throw Expr ; ThrowStmt    
break ; BreakStmt JumpStmt  
break label ;
continue ; ContinueStmt JumpStmt  
continue label ;
label : Stmt LabeledStmt    
synchronized ( Expr ) Stmt SynchronizedStmt    
assert Expr : Expr ; AssertStmt    
assert Expr ;
TypeAccess name ; LocalVariableDeclStmt    
class name { Member ... ; LocalClassDeclStmt    
this ( Expr ... ; ThisConstructorInvocationStmt    
super ( Expr ... ; SuperConstructorInvocationStmt    
catch ( TypeAccess name { Stmt ... } CatchClause   can only occur as child of a TryStmt
case Literal : Stmt ... ConstCase   can only occur as child of a SwitchStmt
default : Stmt ... DefaultCase   can only occur as child of a SwitchStmt

表达式类

表达式类分成很多种,本节的所有类都是Expr的子类。

Literal表达式

下面表格中列出的都是Literal的子类:

Expression syntax exampleCodeQL class
true BooleanLiteral
23 IntegerLiteral
23l LongLiteral
4.2f FloatingPointLiteral
4.2 DoubleLiteral
'a' CharacterLiteral
"Hello" StringLiteral
null NullLiteral

一元表达式

下面表格中列出的都是UnaryExpr的子类:

Expression syntaxCodeQL classSuperclassesRemarks
Expr++ PostIncExpr UnaryAssignExpr  
Expr-- PostDecExpr UnaryAssignExpr  
++Expr PreIncExpr UnaryAssignExpr  
--Expr PreDecExpr UnaryAssignExpr  
~Expr BitNotExpr BitwiseExpr see below for other subclasses of BitwiseExpr
-Expr MinusExpr    
+Expr PlusExpr    
!Expr LogNotExpr LogicExpr see below for other subclasses of LogicExpr

二进制表达式

下面表格中列出的都是BinaryExpr的子类:

Expression syntaxCodeQL classSuperclasses
Expr * Expr MulExpr  
Expr / Expr DivExpr  
Expr % Expr RemExpr  
Expr + Expr AddExpr  
Expr - Expr SubExpr  
Expr << Expr LShiftExpr  
Expr >> Expr RShiftExpr  
Expr >>> Expr URShiftExpr  
Expr && Expr AndLogicalExpr LogicExpr
Expr || Expr OrLogicalExpr LogicExpr
Expr < Expr LTExpr ComparisonExpr
Expr > Expr GTExpr ComparisonExpr
Expr <= Expr LEExpr ComparisonExpr
Expr >= Expr GEExpr ComparisonExpr
Expr == Expr EQExpr EqualityTest
Expr != Expr NEExpr EqualityTest
Expr & Expr AndBitwiseExpr BitwiseExpr
Expr | Expr OrBitwiseExpr BitwiseExpr
Expr ^ Expr XorBitwiseExpr BitwiseExpr

Assignment表达式

下面表格中列出的都是 Assignment的子类:

Expression syntaxCodeQL classSuperclasses
Expr = Expr AssignExpr  
Expr += Expr AssignAddExpr AssignOp
Expr -= Expr AssignSubExpr AssignOp
Expr *= Expr AssignMulExpr AssignOp
Expr /= Expr AssignDivExpr AssignOp
Expr %= Expr AssignRemExpr AssignOp
Expr &= Expr AssignAndExpr AssignOp
Expr |= Expr AssignOrExpr AssignOp
Expr ^= Expr AssignXorExpr AssignOp
Expr <<= Expr AssignLShiftExpr AssignOp
Expr >>= Expr AssignRShiftExpr AssignOp
Expr >>>= Expr AssignURShiftExpr AssignOp

Accesse表达式

Expression syntax examplesCodeQL class
this ThisAccess
Outer.this
super SuperAccess
Outer.super
x VarAccess
e.f
a[i] ArrayAccess
f(...) MethodAccess
e.m(...)
String TypeAccess
java.lang.String
extends Number WildcardTypeAccess
super Double

Miscellaneous

Expression syntax examplesCodeQL classRemarks
(int) f CastExpr  
(23 42) ParExpr  
instanceof String InstanceOfExpr  
Expr ? Expr : Expr ConditionalExpr  
String. class TypeLiteral  
new A() ClassInstanceExpr  
new String[3][2] ArrayCreationExpr  
new int[] 23, 42 }
23, 42 } ArrayInit can only appear as an initializer or as a child of an ArrayCreationExpr
@Annot(key=val) Annotation  

posted @ 2021-05-08 21:07  bamb00  阅读(954)  评论(0)    收藏  举报

刷新页面返回顶部