静态语义分析构建

静态语义分析构建

静态语义处理;
学习笔记,仅供个人知识导航用处,不作其它用途
部分段落翻译自博客中列出的 参考文献

1. JDT(Java开发工具, Java development tools)

了解JDT是啥,了解其工具集

1.1 JDT插件的组件内容

  • JDT APT

    Annotation Processor Tool(注解处理工具)

  • JDT Core

    非UI的基础设施

  • JDT Debug

    实现了Java Debug支持,能够作用于任意兼容JDPA的目标JVM。实现在由平台Debugger提供的语言无关的Debug模式之上。

  • JDT Text

    提供了Java编辑器的一些特性

  • JDT UI

    实现Java Workspace的UI,例如

    • Package Explorer
    • Type Hierarchy View
    • Java Outline View
    • Wizards for creating Java elements

1.2 参考文献

2. AST(抽象语法树, Abstract Syntax Tree)

对于静态分析来说,抽象语法树是最基础的技术

2.1 Eclipse JDT - Abstract Syntax Tree (AST) and the Java Model

Eclipse JDT提供了API用来访问和操作Java源码。它通过 Java Model , Abstract Syntax Tree(AST) 来访问Java源码:

  • The Java Model

    Java Model被定义在 org.eclipse.jdt.core 插件。Java Model以树状结构呈现。

    Java Model

    Project ElementJava Model elementDescription
    Java projectIJavaProjectThe Java project which contains all other objects.
    src folder / bin folder / or external libraryIPackageFragmentRootHold source or binary files, can be a folder or a library (zip / jar file )
    Each packageIPackageFragmentEach package is below the IPackageFragmentRoot, sub-packages are not leaves of the package, they are listed directly under IPackageFragmentRoot
    Java Source FileICompilationUnitThe Source file is always below the package node
    Types / Fields / MethodsIType / IField / IMethodTypes, fields and methods
  • The Abstract Syntax Tree (AST)

    • AST定义了对源代码进行修改,创建,读取,删除的API
    • AST的main package是 org.eclipse.jdt.core.dom 包,位于 org.eclipse.jdt.core 插件包下
    • 每个 Java source element 都是ASTNode类的子类,每个具体的ASTNode实现类都提供了这个对象的具体信息
      • MethodDeclaration, 提供方法信息
      • VariableDeclarationFragment, 提供变量声明的相关信息
      • SimpleName, 非Java关键字字符串
    • AST通常是从Java Model中的ICompilationUnit创建的,AST一般的工作处理流程如下:
      • 给定一个用于解析的Java源码
      • 通过 org.eclipse.jdt.core.dom.ASTParser 解析源码,并返回一个AST
      • 对AST进行操作,如修改等
      • AST上的改变,通过IDocument接口,写回到源码上
    • 更多的代码例子,参考文章:Eclipse JDT - Abstract Syntax Tree (AST) and the Java Model

2.2 参考文献

3. 工具

写文章过程中搜索到的工具

Markdown 在线工具

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值