Одна из самых больших проблем в крупных 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