# bb-plugins-module **Repository Path**: llorando/bb-plugins-module ## Basic Information - **Project Name**: bb-plugins-module - **Description**: source codes of Code Generation Annotation Processing Tool - **Primary Language**: Java - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-08-21 - **Last Updated**: 2024-08-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## feature ### 新增class - 新建domain entity类时,自动添加@Gen相关注解 ### 删除Gen注解 - 删除当前编辑器打开文件中的代码生成注释;支持ctrl-z回退 - 批量删除当前文件所在模块/项目中的代码生成注释;支持ctrl-z回退 ### 重构domain entity - 重构【移动/重命名】domain entity时候,修改@Genxxx注解中的路径。(domain.xxx.creator中的包名) - 重构【移动/重命名】package时,连带修改其下domain entity内@Genxxx注解中的路径 ### 重新生成Gen注解 - 在当前编辑器打开文件中/选中的java文件中生成Gen注解;支持ctrl-z回退 - 在选中的模块/项目中,批量在domain entity中添加Gen注解;支持ctrl-z回退 ### 自动添加文档注释 - 自动为指定domain entity类的属性字段添加@Field注解;支持ctrl-z回退;考虑支持调有道云api完成初步翻译 - 在选中的模块/项目中,批量为domain entity的属性字段添加@Field注解;支持ctrl-z回退;考虑支持调有道云api完成初步翻译 - 自动为指定Reqeust类的属性字段添加@Schema注解;支持ctrl-z回退;考虑支持调有道云api完成初步翻译 - 在选中的模块/项目中,批量为Reqeust文件的属性字段添加@Schema注解;支持ctrl-z回退;考虑支持调有道云api完成初步翻译 - 自动为指定Response类的属性字段添加@Schema注解;支持ctrl-z回退;考虑支持调有道云api完成初步翻译 - 在选中的模块/项目中,批量为Response文件的属性字段添加@Schema注解;支持ctrl-z回退;考虑支持调有道云api完成初步翻译 - 自动为指定Response类的属性字段添加@Schema注解;支持ctrl-z回退;考虑支持调有道云api完成初步翻译 - 在选中的模块/项目中,批量为Response文件的属性字段添加@Schema注解;支持ctrl-z回退;考虑支持调有道云api完成初步翻译 ### 代码生成 - 指定domain entity,根据其上的Gen注解生成代码;不覆盖现有文件;支持ctrl-z回退 - 自动为指定项目/模块中的domain entity生成代码;不覆盖现有文件;支持ctrl-z回退 ## 快捷键 - 删除当前文件中代码生成注释 - 批量删除当前文件所在模块中的代码生成注释 - 批量删除当前文件所在项目中的代码生成注释 - 生成当前文件中代码生成注释 - 批量生成当前文件所在模块中的代码生成注释 - 批量生成当前文件所在项目中的代码生成注释 ## summary idea插件的开发,是面向PsiElement编程。目前认识包括以下几个方面的内容: - 对PsiElement树的读写。PsiElement是idea中所有元素的基本抽象。元素的PsiElement结构可通过Tools->View Psi Structure看到 - 对可变数据结构的访问控制。提高并发读效率;当前线程存在写任务时,会阻塞读任务,避免返回脏数据。可通过Application.run()或者ReadAction.compute。 - 对可变数据结构的写控制。所有对PsiElement元素的修改都在Event Dispatch Thread下进行;单线程,保证write进程执行的时候,没有其他的读写任务。可通过WriteCommandAction操作。 - 响应式编程。idea的代码中使用了大量的响应式编程,完成特定场景下的代码逻辑的灵活定义 finally块在子线程结束后才会执行,不会并发 # reference https://intellij-support.jetbrains.com/hc/en-us/search