сохранить существующий код для произвольных настроек scalafmt
Я пытаюсь аккуратно внедрить scalafmt в большую существующую кодовую базу и хочу, чтобы он практически не вносил никаких изменений, за исключением нескольких не вызывающих споров настроек, с которыми может согласиться вся команда.
С некоторыми настройками вроде maxColumn
Я могу изменить значение по умолчанию 80
к чему-то абсурдному, как 5000
чтобы не было изменений. Но с другими настройками я должен сделать выбор, который изменит существующий код, например, сcontinuationIndent.callSite
. Для этого параметра требуется число, которое агрессивно внесет изменения при первом запуске нашей кодовой базы.
Могу ли я что-нибудь сделать в моей конфигурации scalafmt, чтобы сохранить весь мой код, за исключением нескольких конкретных настроек?
РЕДАКТИРОВАТЬ: Я также приму предложения других инструментов, которые решают ту же проблему.
1 ответ
Рассмотрим project.includeFilters:
Настройте, какие исходные файлы должны быть отформатированы в этом проекте.
# manually include files to format. project.includeFilters = [ regex1 regex2 ]
Например, скажем, у нас есть структура проекта с foo
, bar
, baz
и т. д. такие пакеты
someProject/src/main/scala/com/example/foo/*.scala
someProject/src/main/scala/com/example/bar/*.scala
someProject/src/main/scala/com/example/baz/qux/*.scala
...
Тогда следующие .scalafmt.conf
project.includeFilters = [
"foo/.*"
]
continuationIndent.callSite = 2
...
будет форматировать только файлы в foo
пакет. Теперь мы можем перейти к постепенному внедрению форматирования кодовой базы посылка за пакетом.
project.includeFilters = [
"foo/.*"
"bar/.*"
]
continuationIndent.callSite = 2
...
или даже файл за файлом
project.includeFilters = [
"foo/FooA\.scala"
"foo/FooB\.scala"
]
continuationIndent.callSite = 2
...