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

推荐订阅源

Schneier on Security
Schneier on Security
N
Netflix TechBlog - Medium
IT之家
IT之家
MongoDB | Blog
MongoDB | Blog
博客园_首页
S
SegmentFault 最新的问题
H
Help Net Security
P
Proofpoint News Feed
云风的 BLOG
云风的 BLOG
T
The Blog of Author Tim Ferriss
量子位
GbyAI
GbyAI
M
MIT News - Artificial intelligence
Recorded Future
Recorded Future
P
Privacy & Cybersecurity Law Blog
B
Blog
月光博客
月光博客
博客园 - 聂微东
Vercel News
Vercel News
罗磊的独立博客
腾讯CDC
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
A
Arctic Wolf
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Stack Overflow Blog
Stack Overflow Blog
T
Threat Research - Cisco Blogs
Blog — PlanetScale
Blog — PlanetScale
L
Lohrmann on Cybersecurity
I
Intezer
小众软件
小众软件
T
The Exploit Database - CXSecurity.com
Jina AI
Jina AI
C
Check Point Blog
AWS News Blog
AWS News Blog
C
Cisco Blogs
Martin Fowler
Martin Fowler
The Last Watchdog
The Last Watchdog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
宝玉的分享
宝玉的分享
S
Security Affairs
大猫的无限游戏
大猫的无限游戏
N
News and Events Feed by Topic
雷峰网
雷峰网
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
H
Hacker News: Front Page
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
F
Full Disclosure
P
Proofpoint News Feed
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Security Blog
Microsoft Security Blog

SumSec's Blog

AI Agent 工程的必然演进:CLI、Skills、Harne… 从安全角度谈Java反射机制--前章 · SUMSEC 从安全角度谈Java反射机制--终章 · SUMSEC 逆向学习fastjson反序列化始 · SUMSEC 2020年研究回顾总结 · SUMSEC Analyzing data flow in Java · SUM… Annotations in Java · SUMSEC Basic query for Java code · SUMSEC BypassSuper使用介绍说明 · SUMSEC CodeQL Create OpenJdk/Jdk8 Databa… CodeQL library for Java · SUMSEC Navigating the call graph · SUMSEC Overflow-prone comparisons in Jav… Types in Java · SUMSEC Working with source locations · S… Aliases · SUMSEC Expression · SUMSEC Formulas · SUMSEC Javadoc · SUMSEC Modules · SUMSEC Predicates · SUMSEC Queries · SUMSEC Type · SUMSEC Variables · SUMSEC 一道shiro反序列化题目引发的思考 · SUMSEC 修改ysoserial使其支持任意代码执行 · SUMSEC 自定义 ClassLoader 隔离运行不同版本jar包的方式 ·… 2020网鼎杯---Java文件上传wp · SUMSEC CNVD-2020-10487(CVE-2020-1938)tom… JDSRC安全课笔记 · SUMSEC Java反序列化链回显解决方案 · SUMSEC Skipped breakpoint because it hap… Windows Terminal 配置文件 · SUMSEC bypass 学习笔记之绕安全狗bypass safedog · … 一次意外的代码审计----JfinalCMS审计 · SUMSEC 一篇文章读懂Java代码审计之XXE · SUMSEC 从安全角度谈Java反射机制--序章 · SUMSEC 小楼昨夜又春风,你知ysoserial-Gadget-URLDNS… 春眠不觉晓,RCE知多少? · SUMSEC 漫谈Commons-Collections反序列化 · SUMSEC 漫谈Java反序列化 · SUMSEC 白头搔更短,SSTI惹人心! · SUMSEC 记一次面试题 · SUMSEC About Me 关于我 · SUMSEC Apache Flink任意Jar包上传导致远程代码执行 · SU… CVE-2019-1388 UAC提权复现 · SUMSEC CVE-2019-16097 || Harbor任意管理员注册漏洞… Python加密shellcode免杀 · SUMSEC Telegram机器人作为渗透测试框架 · SUMSEC VM虚拟机无法安装vmtools解决|本程序需要您将此虚拟机上安装… 谁能想到,电视遥控器竟成了 Vibe Coding 神器 · SU… 从手改 Skill 到自动进化:评测结果和执行轨迹如何让 Agen… 模型人人都能用,什么才是你能带走的?我的答案是一个可进化的SKIL… 模型人人都能用,什么才是你能带走的?我的答案是一个可进化的Skil… AI 时代 ShiroAttack2 5.x:修改了什么 · SU… 在 AGI 降临前,先给 AI 开一条”脑内弹幕”通道 · SUM… 一篇博文,三种时间:网页幻灯与 Remotion 动效的交付逻辑 … 🔍 别让大模型”想太多”:SKILL开发中的语义陷阱与抗幻觉设计 … 2022 年年度总结 · SUMSEC Java Swing To RCE 漏洞分析 · SUMSEC SpringBoot GatewayEL表达式漏洞分析 · SUM… Sensitive keys in codebases · SUM… 论如何优雅注入 Java 内存马 · SUMSEC SUMSEC 知识点 · SUMSEC VMWare Workspace ONE Access Auth … Spring Framework RCE CVE-2022-229… 相似度算法调研 · SUMSEC CVE-2022-33891 Apache Spark shell… 正则匹配配置不当 · SUMSEC Spring Data MongoDB SpEL CVE-2022… CodeQl Usage Tricks · SUMSEC Spring Boot RCE到内存马探索 · SUMSEC Shiro后渗透拓展面 · SUMSEC shiro反序列化漏洞攻击拓展面–修改key · SUMSEC GitHub Java CodeQL CTF · SUMSEC Hack-Tools 转化成Web · SUMSEC CodeQL与Shiro550碰撞 · SUMSEC CodeQL初见Shiro550 · SUMSEC CodeQL与AST之间联系 · SUMSEC Java加载动态链接库 · SUMSEC Log4j2 漏洞分析 · SUMSEC Interprocedural-Analysis 过程间分析 · … Data Analysis Foundation 数据分析基础 ·… Data Flow Analysis · SUMSEC Intermediate Representation 中间代表(… PII泄露–用CodeQL识别日志中的PII数据 · SUMSEC CodeQL workshop for Java: Unsafe … 前言 · SUMSEC 漏洞环境的搭建 · SUMSEC Fastjson回显 · SUMSEC Tomcat通用回显学习笔记 · SUMSEC 从Java反序列化漏洞题看CodeQL数据流 · SUMSEC 概述 · SUMSEC 记一次Log4j失败的Gadget挖掘记录 · SUMSEC Ysoserial改造记录 · SUMSEC JNDI注入 · SUMSEC shiro JRMP gadget · SUMSEC Fastjson MySQL gadget复现 · SUMSEC 2021年度总结 · SUMSEC
Abstract syntax tree classes for …
2026-07-17 · via SumSec's Blog

Abstract syntax tree classes for working with Java programs

Abstract syntax tree classes for working with Java programs

Abstract syntax tree classes for working with Java programs用于Java程序的抽象语法树类。

CodeQL has a large selection of classes for representing the abstract syntax tree of Java programs.

CodeQL有大量的类用于表示Java程序的抽象语法树。

The abstract syntax tree (AST) represents the syntactic structure of a program. Nodes on the AST represent elements such as statements and expressions.

抽象语法树(AST)表示程序的语法结构。AST中的节点代表了诸如语句和表达式等元素。

Statement classes

This table lists all subclasses of Stmt.

本表列出了Stmt的所有子类。

Statement syntax CodeQL class Superclasses Remarks
; EmptyStmt    
Expr ; ExprStmt    
{ Stmt ... } BlockStmt    
if ( Expr ) Stmt else Stmt IfStmt ConditionalStmt  
if ( Expr ) Stmt      
while ( Expr ) Stmt WhileStmt ConditionalStmt, LoopStmt  
do Stmt while ( Expr ) DoStmt ConditionalStmt, LoopStmt  
for ( Expr ; Expr ; Expr ) Stmt ForStmt ConditionalStmt, LoopStmt  
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

Expression classes

There are many expression classes, so we present them by category. All classes in this section are subclasses of Expr.

表达式类有很多,所以我们按类别来介绍。本节中的所有类都是Expr.Literals的子类。

Literals

All classes in this subsection are subclasses of Literal.

本小节中的所有类都是Literal的子类。

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

Unary expressions

All classes in this subsection are subclasses of UnaryExpr.

本小节中的所有类都是UnaryExpr的子类。

Expression syntax CodeQL class Superclasses Remarks
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

Binary expressions

All classes in this subsection are subclasses of BinaryExpr.

本小节中的所有类都是BinaryExpr的子类。

Expression syntax CodeQL class Superclasses
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
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
Expr ^ Expr XorBitwiseExpr BitwiseExpr

Assignment expressions

All classes in this table are subclasses of Assignment.

本表中的所有类都是Assignment的子类。

| Expression syntax | CodeQL class | Superclasses | | — | — | — | | 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](https://codeql.github.com/codeql-standard-libraries/java/semmle/code/java/Expr.qll/type.Expr$Expr.html) | [AssignOrExpr](https://codeql.github.com/codeql-standard-libraries/java/semmle/code/java/Expr.qll/type.Expr$AssignOrExpr.html) | | [Expr](https://codeql.github.com/codeql-standard-libraries/java/semmle/code/java/Expr.qll/type.Expr$Expr.html) ^= [Expr](https://codeql.github.com/codeql-standard-libraries/java/semmle/code/java/Expr.qll/type.Expr$Expr.html) | [AssignXorExpr](https://codeql.github.com/codeql-standard-libraries/java/semmle/code/java/Expr.qll/type.Expr$AssignXorExpr.html) | [AssignOp](https://codeql.github.com/codeql-standard-libraries/java/semmle/code/java/Expr.qll/type.Expr$AssignOp.html) | | [Expr](https://codeql.github.com/codeql-standard-libraries/java/semmle/code/java/Expr.qll/type.Expr$Expr.html) «= [Expr](https://codeql.github.com/codeql-standard-libraries/java/semmle/code/java/Expr.qll/type.Expr$Expr.html) | [AssignLShiftExpr](https://codeql.github.com/codeql-standard-libraries/java/semmle/code/java/Expr.qll/type.Expr$AssignLShiftExpr.html) | [AssignOp](https://codeql.github.com/codeql-standard-libraries/java/semmle/code/java/Expr.qll/type.Expr$AssignOp.html) | | [Expr](https://codeql.github.com/codeql-standard-libraries/java/semmle/code/java/Expr.qll/type.Expr$Expr.html) »= [Expr](https://codeql.github.com/codeql-standard-libraries/java/semmle/code/java/Expr.qll/type.Expr$Expr.html) | [AssignRShiftExpr](https://codeql.github.com/codeql-standard-libraries/java/semmle/code/java/Expr.qll/type.Expr$AssignRShiftExpr.html) | [AssignOp](https://codeql.github.com/codeql-standard-libraries/java/semmle/code/java/Expr.qll/type.Expr$AssignOp.html) | | [Expr](https://codeql.github.com/codeql-standard-libraries/java/semmle/code/java/Expr.qll/type.Expr$Expr.html) »>=` Expr | AssignURShiftExpr | AssignOp |

Accesses

Expression syntax examples CodeQL 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  

A VarAccess that refers to a field is a FieldAccess.

一个指向字段的VarAccess是一个FieldAccess。

Miscellaneous

Expression syntax examples CodeQL class Remarks
(int) f CastExpr  
(23 + 42) ParExpr  
o 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只能作为初始化器或ArrayCreationExpr的子代出现。
@Annot(key=val) Annotation