Я пишу плагин Gradle, который должен сканировать файлы Kotlin и определить, есть ли определенный интерфейс, включенный в класс.Например, с этим фрагментом кода:
class MyClass {
interface MyInterface {
fun doSomething()
}
}
мой плагин распечатывает на консоли, что был найден интерфейс MyInterface , и для этого фрагмента:
class MySecondClass {}
не будет ничего печатать.
Я успешно создал структуру плагина и DefaultTask , как это, где я получаю файл, который необходимо проверить из пользовательского ввода (написанный на Kotlin):
open class MyGradleTas : DefaultTask() {
@InputFile lateinit var inputFile: File
@OutputDirectory lateinit var outputDirectory: File
@TaskAction
fun run() {
// How can I inspect the Java/Kotlin code inside the inputFile object
}
}
Как проверить объект inputFile File ?Есть ли способ преобразовать его в UAST или PSI?Если да, то как?