Как использовать один или несколько SemanticRules со скалафиксом, похожим на Transformer скаламеты?
В учебнике https://scalacenter.github.io/scalafix/docs/developers/tutorial.html я вижу, как SemanticRule
реализован для скалафикса. Я хотел бы вызвать его непосредственно в исходном коде файла Scala, который я прочитал с диска, и преобразовать файл.
В скалярах я могу сделать следующее:
val f = .... // some File
val path = f.toPath
val bytes = java.nio.file.Files.readAllBytes(path)
val text = new String(bytes, "UTF-8")
val input = Input.VirtualFile(path.toString, text)
val source = input.parse[Source].get
val transformer = new MyTransformer()
val transformedSource = transformer(source)
// The transformed source can be written into an output file
Я хотел бы сделать то же самое с скалафиксом, но с SemanticRule
, Если я прочитаю это: https://scalacenter.github.io/scalafix/docs/developers/tutorial.html, это только покажет мне, как я могу запустить программу scalafix с файлом путь к файлу правил Scala, но это не то, что я хочу.
1 ответ
Единственный способ, который я знаю, - это использовать путь к файлу к правилу, если он находится в одном файле и не имеет внешних зависимостей, или публиковать его иначе.
Примеры проектов для генерации кода с помощью Scalafix: