Если рассказывать по опыту юзания всего этого:
— scalafix — комбайн, который умеет и ругаться на ошибки, и переписывать код — единственный инструмент собственно, который умеет это делать. Еще кажется самым живым из тех, что есть, туда довольно легко законтрибутить кастомные правила (их можно
в скаладексе поискать по тегу). Scaluzzi — одно из выделяющихся, так как позволяет форсить фп-подходы. Organize-imports тоже оказался очень приятным, сгруппированные разделенные импорты без блочных гораздо проще воспринимать оказалось.
— scapegoat — умеет только ругаться, но зато на большой набор линтов из коробки, плюс есть статья с объяснением что-почему. Кастомных линтов не видел к нему, но кажется они существуют. Хорошо встраивается в CI — умеет работать в сонаре и делать html-репорты с проблемами (что, увы, бесполезно при `-Xfatal-warnings`), но плохо в локальный воркфлоу, так как работает примерно как test-coverage тулзы — компилирует код заново в специальные папочки, абсолютно игнорируя прошлые результаты компиляции. То бишь 200 секунд на каждый запуск его. Единственный линтер, который умеет ругать неиспользуемые context-bounds. (Будет встроено в компилятор с 2.13.5)
— wart-remover — тоже только ругающийся линтер с большим набором правил встроенных и кастомных. К сожалению, довольно часто фолспозитивит, но легко настраивается.
— scalac — на удивление в самом компиляторе оч много опций, которые кидают полезные ворнинги на всякие проблемы, их проще всего включить с помощью плагина sbt-tpolecat. Настраивается оч гибко через
scalac -Wconf:help
. Я бы сказал, что включить на проекте
-Werror
или
-Xfatal-warnings
(чтобы любой ворнинг воспринмался как ошибка компиляции) бустит чистоту кода и соблюдение хороших практик на том же уровне, что подключение всяких линтеров.
— IntelliJ IDEA — тоже умеет много всего — ругаться и переписывать, но если в проекте есть макросы, шейплесс или cats.Resource (или ваще что угодно, это чета рандомное), то начинает делать буквально неправильные вещи — не комплировать, убирать нужные импорты, плохо форматировать 🙁
Итог — оставил на маленьких проектах только скалафикс с правилами и скалак, на паре больших все вышеперечисленные.