Как проверить / прочитать файл Java внутри плагина Gradle - PullRequest
0 голосов
/ 08 июня 2018

Я пишу плагин 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?Если да, то как?

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Я согласен с вашей мыслью, что использование парсера является правильным способом решения этой проблемы.Я нашел обсуждение синтаксического анализа Kotlin , в котором есть указатели на 2 проекта на GitHub, которые используют грамматики antlr4 для разбора Kotlin . Второй проект , по-видимому, в основном является копией первого, но предоставляет несколько более полезные примеры его использования.

0 голосов
/ 08 июня 2018

Итак, я нашел этот проект: http://javaparser.org/, который, как мне кажется, направит меня в правильном направлении, но любые предложения приветствуются, поскольку я не знаю, является ли это предпочтительным / правильным подходом

...