跳到主要内容

LSI 核心接口与实现模块映射

自动收集自 lib/lsi/README.md

LSI 这一组主要放语言结构抽象层,以及不同解析方式下的实现适配。

目录导航

  • lsi-core:核心抽象接口
  • lsi-apt:APT 适配
  • lsi-ksp:KSP 适配
  • lsi-kt / lsi-k2:Kotlin 语义方向适配
  • lsi-psi / lsi-psiandkt:PSI 相关适配
  • lsi-reflection:运行时反射适配
  • lsi-intellij:IntelliJ 平台相关适配
  • lsi-jimmer:Jimmer 相关适配

怎么看这份 README

  • 如果你只是想快速判断有没有现成实现,上面的目录导航就够用
  • 如果你要继续做二次开发,下面这份映射表就是核心资料

lsi-core 核心接口与各模块实现类映射表

1. 核心接口定义 (lsi-core)

接口名路径主要功能实现模块
LsiClasselement/LsiClass.kt类结构抽象所有模块
LsiFieldelement/LsiField.kt字段/属性抽象所有模块
LsiMethodelement/LsiMethod.kt方法抽象所有模块
LsiTypeelement/LsiType.kt类型系统抽象所有模块
LsiAnnotationelement/LsiAnnotation.kt注解抽象所有模块
LsiElementelement/LsiElement.kt元素基础接口所有模块
LsiFilefile/LsiFile.kt文件结构抽象PSI相关
LsiProjectproject/LsiProject.kt项目结构抽象PSI相关

2. lsi-apt 实现映射

LSI 核心接口APT 实现类底层映射关键特性
LsiClassAptLsiClassjavax.lang.model.element.TypeElement支持Java类、接口、枚举
LsiFieldAptLsiFieldjavax.lang.model.element.VariableElement支持字段、常量
LsiMethodAptLsiMethodjavax.lang.model.element.ExecutableElement支持方法、构造器
LsiTypeAptLsiTypejavax.lang.model.type.TypeMirror支持原始类型、泛型
LsiAnnotationAptLsiAnnotationjavax.lang.model.element.AnnotationMirror支持注解属性提取

3. lsi-ksp 实现映射

LSI 核心接口KSP 实现类底层映射关键特性
LsiClassKspLsiClasscom.google.devtools.ksp.symbol.KSClassDeclaration支持Kotlin类、数据类
LsiFieldKspLsiFieldcom.google.devtools.ksp.symbol.KSPropertyDeclaration支持val/var属性
LsiMethodKspLsiMethodcom.google.devtools.ksp.symbol.KSFunctionDeclaration支持函数、伴生对象
LsiTypeKspLsiTypecom.google.devtools.ksp.symbol.KSType支持可空性、泛型
LsiAnnotationKspLsiAnnotationcom.google.devtools.ksp.symbol.KSAnnotation支持注解参数

4. lsi-reflection 实现映射

LSI 核心接口Reflection 实现类底层映射关键特性
LsiClassClazzLsiClassjava.lang.Class运行时类分析
LsiFieldClazzLsiFieldjava.lang.reflect.Field运行时字段访问
LsiMethodClazzLsiMethodjava.lang.reflect.Method运行时方法调用
LsiTypeClazzLsiTypejava.lang.Class类型反射
LsiAnnotationClazzLsiAnnotationjava.lang.annotation.Annotation运行时注解

5. lsi-psi 实现映射 (Java)

LSI 核心接口PSI 实现类底层映射关键特性
LsiClassPsiLsiClasscom.intellij.psi.PsiClassJava PSI深度集成
LsiFieldPsiLsiFieldcom.intellij.psi.PsiFieldJava字段支持
LsiMethodPsiLsiMethodcom.intellij.psi.PsiMethodJava方法支持
LsiTypePsiLsiTypecom.intellij.psi.PsiTypeJava类型系统
LsiAnnotationPsiLsiAnnotationcom.intellij.psi.PsiAnnotationJava注解支持

6. lsi-kt 实现映射 (Kotlin PSI)

LSI 核心接口Kotlin PSI 实现类底层映射关键特性
LsiClassKtLsiClassorg.jetbrains.kotlin.psi.KtClass传统Kotlin PSI
LsiFieldKtLsiFieldorg.jetbrains.kotlin.psi.KtPropertyKotlin属性支持
LsiMethodKtLsiMethodorg.jetbrains.kotlin.psi.KtNamedFunctionKotlin函数支持
LsiTypeKtLsiTypeorg.jetbrains.kotlin.psi.KtTypeReferenceKotlin类型系统
LsiAnnotationKtLsiAnnotationorg.jetbrains.kotlin.psi.KtAnnotationEntryKotlin注解支持

7. lsi-kt2 实现映射 (K2 Analysis)

LSI 核心接口K2 实现类底层映射关键特性
LsiClassKt2LsiClassorg.jetbrains.kotlin.psi.KtClass + KaClassSymbolK2符号系统
LsiFieldKt2LsiFieldorg.jetbrains.kotlin.psi.KtProperty + KaPropertySymbol精确类型推断
LsiMethodKt2LsiMethodorg.jetbrains.kotlin.psi.KtNamedFunction + KaFunctionSymbol语义分析
LsiTypeKt2LsiTypeorg.jetbrains.kotlin.analysis.api.types.KaType完整类型系统
LsiAnnotationKt2LsiAnnotationorg.jetbrains.kotlin.psi.KtAnnotationEntry + KaAnnotation符号级注解

8. lsi-psiandkt 统一接口映射

LSI 核心接口统一实现类底层映射策略关键特性
LsiClassUnifiedLsiClass自动识别Java/Kotlin统一类接口
LsiFieldUnifiedLsiField根据文件类型选择统一字段接口
LsiMethodUnifiedLsiMethod自动适配PSI类型统一方法接口
LsiTypeUnifiedLsiType智能类型解析统一类型接口
LsiAnnotationUnifiedLsiAnnotation统一注解处理统一注解接口

9. 扩展功能映射

扩展模块核心功能类依赖接口增强能力
lsi-databaseLsiFieldDatabaseExtLsiField, LsiClass数据库映射功能
lsi-databaseLsiClassDatabaseExtLsiClass表/索引/外键支持
lsi-intellijModuleUtilLsiProject模块管理功能
lsi-intellijProjectExtLsiProject项目级操作

10. 核心桥接模式实现

// 扩展函数桥接模式 - APT示例
fun TypeElement.toLsiClass(elements: Elements): LsiClass = AptLsiClass(this, elements)

// 扩展函数桥接模式 - KSP示例
fun KSClassDeclaration.toLsiClass(resolver: Resolver): LsiClass = KspLsiClass(this, resolver)

// 扩展函数桥接模式 - Reflection示例
fun <T> Class<T>.toLsiClass(): LsiClass = ClazzLsiClass(this)

// 扩展函数桥接模式 - PSI示例
fun PsiClass.toLsiClass(): LsiClass = PsiLsiClass(this)

// 统一桥接接口 - lsi-psiandkt
fun VirtualFile.toAllLsiClassesUnified(): List<LsiClass> {
return when {
isJavaFile -> psiFile.toLsiClasses() // 使用PSI
isKotlinFile -> ktFile.toLsiClassesK2() // 使用K2
else -> emptyList()
}
}

11. 环境抽象层映射

LSI 环境实现类底层环境特性
LsiEnvironmentAptLsiEnvironmentProcessingEnvironmentAPT处理环境
LsiEnvironmentKspLsiEnvironmentSymbolProcessorEnvironmentKSP处理环境
LsiEnvironmentReflectionLsiEnvironment运行时环境反射环境
LsiEnvironmentIntelliJLsiEnvironmentProjectIntelliJ环境

所有实现模块都通过统一的LSI接口提供一致的代码结构操作能力,底层通过不同的元编程技术桥接解析逻辑。