根据注解修改Kotlin编译后的代码输出(不生成单独的代码)

问题描述 投票:0回答:1

有没有办法创建一个可以修改正在编写的代码的 Kotlin 编译器插件?

我不想创建单独的生成代码,而是实际修改代码本身。

例如,给出以下来源:

原创

@Composable
fun MyScreen() {
    Surface {
        Button(onClick = { 
            println("Clicked") 
        })
    }
}

我想将输出代码更改为:

已通过插件修改

@Composable
fun MyScreen() {
    Surface {
        Button(onClick = 
            track("MyScreen", "Surface", "Button") {
                println("Clicked")
            }
        )
    }
}

或者甚至只是更改导入:

原创

import androidx.compose.material.Button

@Composable
fun MyScreen() {
    ...
}

已通过插件修改

import com.mycompany.project.wrappers.Button

@Composable
fun MyScreen() {
    ...
}
android kotlin aspectj kotlinpoet kotlin-symbol-processing
1个回答
0
投票

KSP 不提供修改函数体,因为 KSP 无法查看函数体

使用自己编写的 Kotlin 编译器插件,可以实现函数体表达式的修改。 Kotlin 编译器插件将允许您在编译时修改代码。

© www.soinside.com 2019 - 2024. All rights reserved.