KOTLIN_BROADCAST Telegram 1894
❗️Как проверять структуру Kotlin-кода на соответствие архитектуре и неймингу

Про инструменты для статического анализа Kotlin-кода я уже писал в отдельном посте. Но когда нужно проверить не стиль форматирования, а именно именование, расположение и иерархию классов, обычных линтеров недостаточно. Тут нужен инструмент, который умеет смотреть на проект целиком и анализировать код между файлами.

Для Kotlin такую задачу отлично решает библиотека Konsist. Проверки в ней выглядят как обычные Unit-тесты (поддерживается несколько тестовых JVM движков).

Например, в одном из проектов я добавил правила:
👉 Все классы, чьи имена заканчиваются на ViewModel, должны наследоваться от ViewModel (к сожалению, заставить использовать именно Jetpack ViewModel не получилось).
👉 Все свойства с типом MutableStateFlow<*> должны быть недоступны за пределами класса.
private var viewModels: List<KoClassDeclaration> = emptyList()

@BeforeTest
fun setup() {
// Собираем все классы, чьи имена оканчиваются на ViewModel
viewModels = Konsist
.scopeFromProject()
.classes()
.withName { name -> name.endsWith("ViewModel") }
}

@Test
fun `Every ViewModel class extends from 'ViewModel'`() {
viewModels.assertTrue { viewModel ->
viewModel.hasParentWithName("ViewModel", indirectParents = true)
}
}

@Test
fun `MutableStateFlow properties in ViewModel are not visible outside`() {
viewModels
.properties()
.filter { property ->
property.hasType { type ->
type.hasNameMatching(Regex("MutableStateFlow<\\w+>"))
}
}
.assertTrue { property ->
property.hasPrivateModifier || property.hasProtectedModifier
}
}


Правила можно делать любой сложности — от проверки нейминга до соответствия архитектуре.
Всё это запускается как обычные JVM-тесты и выполняется достаточно быстро ⚡️

❗️ konsist пока не достиг версии 1.0 но активно идёт к ней! Работает исправно и позволяет масштабировать правила структуры кода на всё команду!

#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍46🔥142



tgoop.com/kotlin_broadcast/1894
Create:
Last Update:

❗️Как проверять структуру Kotlin-кода на соответствие архитектуре и неймингу

Про инструменты для статического анализа Kotlin-кода я уже писал в отдельном посте. Но когда нужно проверить не стиль форматирования, а именно именование, расположение и иерархию классов, обычных линтеров недостаточно. Тут нужен инструмент, который умеет смотреть на проект целиком и анализировать код между файлами.

Для Kotlin такую задачу отлично решает библиотека Konsist. Проверки в ней выглядят как обычные Unit-тесты (поддерживается несколько тестовых JVM движков).

Например, в одном из проектов я добавил правила:
👉 Все классы, чьи имена заканчиваются на ViewModel, должны наследоваться от ViewModel (к сожалению, заставить использовать именно Jetpack ViewModel не получилось).
👉 Все свойства с типом MutableStateFlow<*> должны быть недоступны за пределами класса.

private var viewModels: List<KoClassDeclaration> = emptyList()

@BeforeTest
fun setup() {
// Собираем все классы, чьи имена оканчиваются на ViewModel
viewModels = Konsist
.scopeFromProject()
.classes()
.withName { name -> name.endsWith("ViewModel") }
}

@Test
fun `Every ViewModel class extends from 'ViewModel'`() {
viewModels.assertTrue { viewModel ->
viewModel.hasParentWithName("ViewModel", indirectParents = true)
}
}

@Test
fun `MutableStateFlow properties in ViewModel are not visible outside`() {
viewModels
.properties()
.filter { property ->
property.hasType { type ->
type.hasNameMatching(Regex("MutableStateFlow<\\w+>"))
}
}
.assertTrue { property ->
property.hasPrivateModifier || property.hasProtectedModifier
}
}


Правила можно делать любой сложности — от проверки нейминга до соответствия архитектуре.
Всё это запускается как обычные JVM-тесты и выполняется достаточно быстро ⚡️

❗️ konsist пока не достиг версии 1.0 но активно идёт к ней! Работает исправно и позволяет масштабировать правила структуры кода на всё команду!

#kotlin

BY Kotlin Multiplatform Broadcast


Share with your friend now:
tgoop.com/kotlin_broadcast/1894

View MORE
Open in Telegram


Telegram News

Date: |

Members can post their voice notes of themselves screaming. Interestingly, the group doesn’t allow to post anything else which might lead to an instant ban. As of now, there are more than 330 members in the group. On June 7, Perekopsky met with Brazilian President Jair Bolsonaro, an avid user of the platform. According to the firm's VP, the main subject of the meeting was "freedom of expression." During a meeting with the president of the Supreme Electoral Court (TSE) on June 6, Telegram's Vice President Ilya Perekopsky announced the initiatives. According to the executive, Brazil is the first country in the world where Telegram is introducing the features, which could be expanded to other countries facing threats to democracy through the dissemination of false content. Activate up to 20 bots Telegram desktop app: In the upper left corner, click the Menu icon (the one with three lines). Select “New Channel” from the drop-down menu.
from us


Telegram Kotlin Multiplatform Broadcast
FROM American