首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从psiFile获取所有类(和内部类)?(intellij插件)

从psiFile获取所有类(和内部类)的方法是使用IntelliJ插件的PSI(Program Structure Interface)API。PSI是IntelliJ平台提供的一组API,用于分析和操作代码的结构。

要从psiFile获取所有类(和内部类),可以按照以下步骤进行:

  1. 导入必要的类和包:
代码语言:txt
复制
import com.intellij.psi.*;
import com.intellij.psi.search.GlobalSearchScope;
  1. 获取psiFile对应的Project对象:
代码语言:txt
复制
Project project = psiFile.getProject();
  1. 使用PsiManager获取psiFile的PsiJavaFile对象:
代码语言:txt
复制
PsiJavaFile psiJavaFile = (PsiJavaFile) PsiManager.getInstance(project).findFile(psiFile.getVirtualFile());
  1. 使用PsiJavaFile的getClasses()方法获取所有的PsiClass对象:
代码语言:txt
复制
PsiClass[] psiClasses = psiJavaFile.getClasses();
  1. 遍历psiClasses数组,获取每个PsiClass对象的信息:
代码语言:txt
复制
for (PsiClass psiClass : psiClasses) {
    // 获取类名
    String className = psiClass.getName();
    
    // 获取内部类
    PsiClass[] innerClasses = psiClass.getInnerClasses();
    
    // 其他操作,如获取类的方法、字段等
}

通过以上步骤,你可以从psiFile获取到所有的类(包括内部类)以及它们的相关信息。

对于IntelliJ插件的开发,可以使用IntelliJ Platform SDK提供的各种API来实现各种功能。关于IntelliJ插件开发的更多信息,你可以参考IntelliJ插件开发官方文档

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云开发者工具 IntelliJ IDEA 插件:提供了一系列与腾讯云开发相关的功能和工具,方便开发者在IntelliJ IDEA中进行云开发。
  • 腾讯云云服务器 CVM:提供弹性、安全、稳定的云服务器,满足各种计算需求。
  • 腾讯云对象存储 COS:提供安全、稳定、低成本的云端对象存储服务,适用于存储和处理各种非结构化数据。
  • 腾讯云人工智能 AI:提供多种人工智能服务,包括图像识别、语音识别、自然语言处理等,帮助开发者构建智能化应用。
  • 腾讯云区块链 BaaS:提供简单易用的区块链服务,帮助开发者快速搭建和管理区块链网络。
  • 腾讯云音视频处理:提供音视频处理服务,包括转码、截图、水印、音视频合成等功能,适用于多媒体处理需求。

请注意,以上链接仅供参考,具体的产品选择应根据实际需求和情况进行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

IntelliJ IDEA 插件开发》第一节:两种方式创建插件工程

/docs/intellij/disposers.html 介绍开发 IDEA 插件的工程方式有两种,分别是模板方式 Gradle 工程方式。...Project 工程信息、PsiFile 文件信息,以及对应的路径。...运行测试 运行过程 点击 Plugin 绿色箭头,正常启动程序一样 这个时候它会打开一个新的 IDEA 工程,并在这个工程中默认安装你开发好的插件 在新打开的 IDEA 插件工程中,选中工程后,点击...当然你也可以使用 project.getName() 获取工程名称。 5. 运行测试 Gradle 测试运行相当于是运行 :runIde ,也是普通的代码调试一样。...就像你使用的一些的插件一样,帮助你生成get、set,或者提取采集接口信息,也包括你写了多少行代码,思考它们是如何实现的。

2K30

小伙伴想写个 IDEA 插件么?这些 API 了解一下!

前言 " 在看完 IDEA 插件开发简易教程后,小伙伴们是否迫不及待的想自己上手整一个插件了?心里规划好了一二三,但是却不知道哪里开始下手。下面我分享下自己整理的一些常用的 API。...PsiClass PsiClass为java或者接口 @Nullable protected PsiClass getTargetClass(Editor editor, PsiFile file)...(); // 获取所有字段 PsiField[] fields = aClass.getFields(); PsiField操作 // 获取字段名 String name = psiField.getName...() PsiElement操作 PsiClassPsiField都实现了PsiElement // 删除 element.delete() // 添加元素, 向一个中添加方法, 字段等, 也可以调用...也可以 Clone Toolkit 这个插件源码,源码中有一些注释。在其他优秀的插件中,同样可有相关使用方法。

2.1K20

IDEA 插件开发实战

简介 IntelliJ IDEA是一款开发工具,提供很多插件功能,比如阿里规范插件(Alibaba Java Coding Guidelines),但是随着日常业务展开,很多工作重复性编码,浪费很多时间...Project level components,在IDEA中每个Project实例创建的,甚至可以为未打开的项目创建组件,可以使用 getComponent(Class)方法Project实例中获取它们...Module level components,它们是为IDEA中加载的每个项目中每个模块创建,使用getComponent(Class)方法可以Module实例获取模块级别组件。...线程模型 平台相关数据结构由读/写锁覆盖,适用于PSI,VFS 项目模型。允许任何线程读取数据。UI线程读取数据不需要任何特殊的工作。...建立文件在VFS持久化存储之间的关联。 本地IO文件中获取 File ioFile = new File(".

39710

IDEA 插件开发实战

简介 IntelliJ IDEA 是一款开发工具,提供很多插件功能,比如阿里规范插件(Alibaba Java Coding Guidelines),但是随着日常业务展开,很多工作重复性编码,浪费很多时间...Module level components,它们是为 IDEA 中加载的每个项目中每个模块创建,使用 getComponent(Class)方法可以 Module 实例获取模块级别组件。...线程模型 平台相关数据结构由读/写锁覆盖,适用于 PSI,VFS 项目模型。允许任何线程读取数据。 UI 线程读取数据不需要任何特殊的工作。...在所有情况下,代码都是在与 ProgressIndicator 对象关联的后台线程上执行的。...建立文件在 VFS 持久化存储之间的关联。 本地 IO 文件中获取 File ioFile = new File(".

2.4K50

为 TheRouter 开发一个 IDEA 插件

idea 插件开发的入门知识,来教你如何实现一个实际项目的功能。...如果你还不知道如何开发一个插件,建议先从这个链接查看官网相关文档 https://plugins.jetbrains.com/docs/intellij/welcome.html。...类似这张图,在路由声明的地方,只需要点一下侧面的导航箭头,就能跳转到所有使用了这个路由页面的地方,并且还能标记出有哪些用到了他。...https://therouter.cn/assets/img/image/TheRouterTransfer.png 导航跳转是如何实现的 在 idea 插件的开发中,有个很重要的就是 LineMarkerProvider...而这个all集合的获取,也是来自另一个SDK中的方法PsiManager.getInstance(project).findFile(virtualFile),他可以将整个项目中的所有代码以 psi 的方式返回给你

25520

方案设计:基于IDEA插件开发字节码插桩技术,实现研发交付质量自动分析

采集信息 四、IDEA 插件开发 五、效果演示 六、总结 七、系列推荐 一、前言 如何保证代码质量? 业务提需求,产品定方案,研发做实现,测试验流程。四种角色的相互配合是确保一个需求上线的必备条件。...此外,Byte Buddy 提供了一种方便的 API,可以使用 Java 代理或在构建过程中手动更改。 无需理解字节码指令,即可使用简单的 API 就能很容易操作字节码,控制方法。...四、IDEA 插件开发 关于 IDEA 插件开发的知识内容较多,可以GitHub搜索一些资料查阅官方文档:https://plugins.jetbrains.com/docs/intellij/gradle-build-system.html...from=jetbrains.org 此处演示案例关于插件开发的内容比较简单,主要是继承 com.intellij.execution.impl.DefaultJavaProgramRunner,Override...其他的就是一些关于 PsiFile API 的使用,感兴趣可以阅读官方文档中的介绍。 五、效果演示 安装插件 安装插件就和我们正常安装一样,不过目前这个插件在开发阶段,所以需要本地安装。

77320

方案设计:基于IDEA插件开发字节码插桩技术,实现研发交付质量自动分析

实际操作举例就是,当你开发完成一个接口,开始测试运行时,我们的插件就可以采集到这个接口的全部信息,包括:接口名称、入参类型内容、出参类型内容、异常信息、调用关系链等。...三、对字节码插桩 这里我们使用的字节码插桩组件是 Byte-buddy,它是一个代码生成操作库,用于在 Java 应用程序运行时创建和修改 Java ,而无需编译器的帮助。...此外,Byte Buddy 提供了一种方便的 API,可以使用 Java 代理或在构建过程中手动更改。 无需理解字节码指令,即可使用简单的 API 就能很容易操作字节码,控制方法。...四、IDEA 插件开发 关于 IDEA 插件开发的知识内容较多,可以GitHub搜索一些资料查阅官方文档:https://plugins.jetbrains.com/docs/intellij/gradle-build-system.html...from=jetbrains.org 此处演示案例关于插件开发的内容比较简单,主要是继承 com.intellij.execution.impl.DefaultJavaProgramRunner,Override

10K182

技术调研,IDEA 插件怎么开发「脚手架、低代码可视化编排、接口生成测试」?

API:在 IDEA 插件开发中,一般都是围绕工程进行的,那么基本要从通过 IDEA 插件 JDK 开发能力中获取到工程信息、信息、文件信息等。...外部功能:这一个是用于把插件能力与外部系统结合,比如你是需要把拿到的接口上传到服务器,还是远程下载文件等等。...TestUI 是基于 Swing 开发的窗体,验证在 AnAction 实现中打开。 plugin.xml 是整个 IDEA 咖啡的配置文件,你所有的窗体都会在这个配置文件里有所体现。 2....七、总结 IDEA 开发技术涉及到了对 IDEA 插件开发 API 的熟悉以及UI界面的开发,所以如果想开发一款 IDEA 插件,基本离不开对 Swing 的编写,不过也不需要太复杂的页面,所有这部分技能还好...八、系列推荐 基于IDEA插件开发字节码插桩技术,实现研发交付质量自动分析 关于低代码编程的可持续性交付设计分析 不重复造轮子都是骗小孩的,教你手撸 SpringBoot 脚手架!

1.4K11

IntelliJ插件开发-京东工程师教你改造你的IDE

那么如何改造我们的IDE实现我们的需求呢? 答案就是给我们IDE开发插件。...>>>> 四、如何开发一个插件 开发前准备 开发用IDE:IntelliJ IDEA community 社区版 9.0+; IntelliJ IDEA community源码: 因为资料太少,很多功能需要去翻阅源代码...Plugin Service IntelliJ平台确保只有一个服务实例被加载,即使该服务被多次调用。服务必须具有用于服务实例化的实现。服务也可以有一个接口,用于获取服务实例并提供服务的API。...定义Action 开发者想要自定义一个Action必须AnAction派生。在插件中创建一个AnAction派生的Java。...经过对IntelliJ源代码的研究,发现可以EditorAction来进行继承,EditorAction继承自AnAction,在此基础上封装了很多编辑器相关的功能。

3.1K20

IntelliJ IDEA 插件开发》第六节:选定对象批量织入“x.set(y.get)”代码,自动生成vo2dto

domian:领域层专门处理代码的生成织入动作,这一层把代码的中锚点位置获取、剪切板信息复制、应用上下文、中get、set的解析,以及最终把生成代码织入到锚点后的操作。...infrastructure:在基础层提供了工具,用于获取剪切板信息锚点位置判断等操作。 2....四、测试验证 点击 Plugin 启动 IDEA 插件,之后有2步操作; 复制你需要被转换的对象,因为复制以后就可以被插件获取到剪切板信息了,也就能提取到get方法集合。...五、扩展接口 获取当前编辑的文件, 通过PsiFile可获得PsiClass, PsiField等 PsiFile psiFile = e.getData(LangDataKeys.PSI_FILE...(); 获取到数据上下文后,通过CommonDataKeys对象可以获得该File的所有信息 Editor editor = CommonDataKeys.EDITOR.getData(dataContext

71120

IntelliJ IDEA 2023.1 最新变化

在这篇博文中了解这个设置如何适用于新旧 UI。 [ 5. 示例项目中的入门提示 对于刚接触 IntelliJ IDEA 编码的用户,我们引入了打开包含示例代码与入门提示的新项目的选项。...在 Coverage(覆盖率)视图中筛选的选项 在 IntelliJ IDEA 2023.1 中,您可以在 Coverage(覆盖率)视图中筛选,关注最近更新的测试时需要特别注意的方法。...此外,使用 Compare with Cluster(与集群比较)图标会打开一个完整差异视图,集群获取资源的当前版本并与本地版本进行比较。 4.... Settings/Preferences | Plugins(设置/偏好设置 | 插件)安装新的 Astro 插件即可获取。...其他 与 IntelliJ IDEA 捆绑的 Android 插件现在提供了 Android Studio Electric Eel 的所有功能,包括对 Android Gradle Plugin (AGP

13110

《Kotlin 程序设计》第七章 Kotlin 编译过程分析第七章 Kotlin 编译过程分析

一通Google之后,毫无收获,Kotlin作为一门新语言,绝大多数的资料都局限于它的用法特性相关。幸好Kotlin所有源码都已开源,遂决定生啃之。...Kotlin中将所有Token按照进行了分类,同时进行了Token分组。...- 选项与声明:用来定制词法分析器,包括名、父、权限修饰符等等,以%开头作为标记 - 词法规则:包括一组正则表达式动作行为,也就是当正则表达式匹配成功后要执行的代码。...例如,在IntelliJ开源的项目来看,PsiJavaFile可表示为Java文件,XmlFile表示为XML文件。...关于如何生成一个简单表达式的AST树,可以参考下图: ?

1.7K20

IDEA Web渲染插件开发(二)— 自定义JsDialog

《IDEA Web渲染插件开发(一)》中,我们了解到了如何编写一款用于显示网页的插件,所需要的核心知识点就是IDEA插件开发JCEF,在本文中,我们将继续插件的开发,为该插件的JS Dialog显示进行自定义处理...接下来,就需要我们针对不同的对话框类型,展示不同的UI,那么需要我们了解如何在IDEA插件中弹出对话框。...IDEA插件对话框 DialogWrapper DialogWrapper是IntelliJ下的所有对话框的基,他并不是一个实际的UI控件,而是一个抽象,在调用其show方法的时候,由IntelliJ...Dialog按钮自定义(重写createActions) IDEA插件的DialogWrapper默认情况下是Cancel+OK的按钮组合。那么如何自定义我们的按钮呢?...,我们定义了一个私有字段JTextField,之所以需要在中持有该引用,是因为我们定义一个方法getText,以便在对话框结束时,可以通过调用PromptDialog.getText来获取用户输入。

60110

如何让你的回调更具Kotlin风味

回调对比 5、Kotlin中回调使用建议 6、Don't Repeat Yourself(DSL回调配置太模板化了,不妨来撸个自动生成代码的AS插件吧) 7、DslListenerBuilder插件基本介绍使用...个人习惯把它作为一个的内部类。类似下面这样 class AudioPlayer(context: Context){ //other logic ......特性,在该lambda作用域this可以内部表达为Builder实例,利用Builder实例调用它内部定义成员函数并且赋值初始化Builder回调lambda成员实例,而这些被初始化过的lambda...所以所有需要自动生成代码的需求都类似这样流程。下次需要生成不一样的代码只需要修改Velocity模板即可。...回调相关内容已经讲得很清楚了,然后还给大家介绍了如何去开发一个自动生成代码的插件

1.6K20
领券