| 接口名 | 路径 | 主要功能 | 实现模块 |
|---|---|---|---|
| LsiClass | element/LsiClass.kt |
类结构抽象 | 所有模块 |
| LsiField | element/LsiField.kt |
字段/属性抽象 | 所有模块 |
| LsiMethod | element/LsiMethod.kt |
方法抽象 | 所有模块 |
| LsiType | element/LsiType.kt |
类型系统抽象 | 所有模块 |
| LsiAnnotation | element/LsiAnnotation.kt |
注解抽象 | 所有模块 |
| LsiElement | element/LsiElement.kt |
元素基础接口 | 所有模块 |
| LsiFile | file/LsiFile.kt |
文件结构抽象 | PSI相关 |
| LsiProject | project/LsiProject.kt |
项目结构抽象 | PSI相关 |
| LSI 核心接口 | APT 实现类 | 底层映射 | 关键特性 |
|---|---|---|---|
| LsiClass | AptLsiClass |
javax.lang.model.element.TypeElement |
支持Java类、接口、枚举 |
| LsiField | AptLsiField |
javax.lang.model.element.VariableElement |
支持字段、常量 |
| LsiMethod | AptLsiMethod |
javax.lang.model.element.ExecutableElement |
支持方法、构造器 |
| LsiType | AptLsiType |
javax.lang.model.type.TypeMirror |
支持原始类型、泛型 |
| LsiAnnotation | AptLsiAnnotation |
javax.lang.model.element.AnnotationMirror |
支持注解属性提取 |
| LSI 核心接口 | KSP 实现类 | 底层映射 | 关键特性 |
|---|---|---|---|
| LsiClass | KspLsiClass |
com.google.devtools.ksp.symbol.KSClassDeclaration |
支持Kotlin类、数据类 |
| LsiField | KspLsiField |
com.google.devtools.ksp.symbol.KSPropertyDeclaration |
支持val/var属性 |
| LsiMethod | KspLsiMethod |
com.google.devtools.ksp.symbol.KSFunctionDeclaration |
支持函数、伴生对象 |
| LsiType | KspLsiType |
com.google.devtools.ksp.symbol.KSType |
支持可空性、泛型 |
| LsiAnnotation | KspLsiAnnotation |
com.google.devtools.ksp.symbol.KSAnnotation |
支持注解参数 |
| LSI 核心接口 | Reflection 实现类 | 底层映射 | 关键特性 |
|---|---|---|---|
| LsiClass | ClazzLsiClass |
java.lang.Class |
运行时类分析 |
| LsiField | ClazzLsiField |
java.lang.reflect.Field |
运行时字段访问 |
| LsiMethod | ClazzLsiMethod |
java.lang.reflect.Method |
运行时方法调用 |
| LsiType | ClazzLsiType |
java.lang.Class |
类型反射 |
| LsiAnnotation | ClazzLsiAnnotation |
java.lang.annotation.Annotation |
运行时注解 |
| LSI 核心接口 | PSI 实现类 | 底层映射 | 关键特性 |
|---|---|---|---|
| LsiClass | PsiLsiClass |
com.intellij.psi.PsiClass |
Java PSI深度集成 |
| LsiField | PsiLsiField |
com.intellij.psi.PsiField |
Java字段支持 |
| LsiMethod | PsiLsiMethod |
com.intellij.psi.PsiMethod |
Java方法支持 |
| LsiType | PsiLsiType |
com.intellij.psi.PsiType |
Java类型系统 |
| LsiAnnotation | PsiLsiAnnotation |
com.intellij.psi.PsiAnnotation |
Java注解支持 |
| LSI 核心接口 | Kotlin PSI 实现类 | 底层映射 | 关键特性 |
|---|---|---|---|
| LsiClass | KtLsiClass |
org.jetbrains.kotlin.psi.KtClass |
传统Kotlin PSI |
| LsiField | KtLsiField |
org.jetbrains.kotlin.psi.KtProperty |
Kotlin属性支持 |
| LsiMethod | KtLsiMethod |
org.jetbrains.kotlin.psi.KtNamedFunction |
Kotlin函数支持 |
| LsiType | KtLsiType |
org.jetbrains.kotlin.psi.KtTypeReference |
Kotlin类型系统 |
| LsiAnnotation | KtLsiAnnotation |
org.jetbrains.kotlin.psi.KtAnnotationEntry |
Kotlin注解支持 |
| LSI 核心接口 | K2 实现类 | 底层映射 | 关键特性 |
|---|---|---|---|
| LsiClass | Kt2LsiClass |
org.jetbrains.kotlin.psi.KtClass + KaClassSymbol |
K2符号系统 |
| LsiField | Kt2LsiField |
org.jetbrains.kotlin.psi.KtProperty + KaPropertySymbol |
精确类型推断 |
| LsiMethod | Kt2LsiMethod |
org.jetbrains.kotlin.psi.KtNamedFunction + KaFunctionSymbol |
语义分析 |
| LsiType | Kt2LsiType |
org.jetbrains.kotlin.analysis.api.types.KaType |
完整类型系统 |
| LsiAnnotation | Kt2LsiAnnotation |
org.jetbrains.kotlin.psi.KtAnnotationEntry + KaAnnotation |
符号级注解 |
| LSI 核心接口 | 统一实现类 | 底层映射策略 | 关键特性 |
|---|---|---|---|
| LsiClass | UnifiedLsiClass |
自动识别Java/Kotlin | 统一类接口 |
| LsiField | UnifiedLsiField |
根据文件类型选择 | 统一字段接口 |
| LsiMethod | UnifiedLsiMethod |
自动适配PSI类型 | 统一方法接口 |
| LsiType | UnifiedLsiType |
智能类型解析 | 统一类型接口 |
| LsiAnnotation | UnifiedLsiAnnotation |
统一注解处理 | 统一注解接口 |
| 扩展模块 | 核心功能类 | 依赖接口 | 增强能力 |
|---|---|---|---|
| lsi-database | LsiFieldDatabaseExt |
LsiField, LsiClass | 数据库映射功能 |
| lsi-database | LsiClassDatabaseExt |
LsiClass | 表/索引/外键支持 |
| lsi-intellij | ModuleUtil |
LsiProject | 模块管理功能 |
| lsi-intellij | ProjectExt |
LsiProject | 项目级操作 |
// 扩展函数桥接模式 - 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()
}
}| LSI 环境 | 实现类 | 底层环境 | 特性 |
|---|---|---|---|
| LsiEnvironment | AptLsiEnvironment |
ProcessingEnvironment |
APT处理环境 |
| LsiEnvironment | KspLsiEnvironment |
SymbolProcessorEnvironment |
KSP处理环境 |
| LsiEnvironment | ReflectionLsiEnvironment |
运行时环境 | 反射环境 |
| LsiEnvironment | IntelliJLsiEnvironment |
Project |
IntelliJ环境 |
所有实现模块都通过统一的LSI接口提供一致的代码结构操作能力,底层通过不同的元编程技术桥接解析逻辑。