сохранить существующий код для произвольных настроек 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
...
Другие вопросы по тегам