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