有没有办法创建一个可以修改正在编写的代码的 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() {
...
}
KSP 不提供修改函数体,因为 KSP 无法查看函数体。
使用自己编写的 Kotlin 编译器插件,可以实现函数体表达式的修改。 Kotlin 编译器插件将允许您在编译时修改代码。