Одна из самых больших проблем в крупных Kotlin-проектах — поддержание консистентности, но обеспечить её сложно: это означает бесконечные напоминания и споры в PR'ах. Здесь и проявляет себя
Konsist — относительно новая библиотека для Kotlin.
Konsist позволяет проверять следующее:
🔸Каждый наследник
ViewModel должен иметь суффикс
ViewModel🔸Классы с аннотацией
@Repository должны находиться в пакете ..repository..
🔸Параметры конструктора должны быть отсортированы в алфавитном порядке
🔸Имена параметров конструктора должны быть производными от имени класса
🔸Инъекция через поля и префикс
m запрещены
🔸Каждый публичный член в пакете
api должен быть задокументирован с помощью
KDocТакже Konsist позволяет проверять архитектуру проекта. Например,
Clean Architecture:
🔸
Domain-слой независим
🔸
Data-слой зависит от
Domain-слоя🔸
Presentation-слой зависит от
Domain-слояКак же он соотносится с ArchUnit?
ArchUnit работает с байткодом JVM и не учитывает специфику Kotlin. Konsist анализирует код непосредственно и понимает Kotlin, а также намного проще в использовании.
Для меня Konsist — это инструмент для обеспечения консистентности проекта. Достаточно договориться о правилах, написать unit-тесты — и обсуждения в PR'ах больше не нужны, так как правила теперь соблюдаются автоматически ✌️
👉
@MobDevPortal | #tips