Skip to content

Instantly share code, notes, and snippets.

View olegosipenko's full-sized avatar
🎳
Lebowski

Oleg Osipenko olegosipenko

🎳
Lebowski
  • Wildberries
  • Yekaterinburg, Russia
View GitHub Profile
@olegosipenko
olegosipenko / AdbCommands
Created April 12, 2022 16:59 — forked from Pulimet/AdbCommands
Adb useful commands list
adb help // List all comands
== Adb Server
adb kill-server
adb start-server
== Adb Reboot
adb reboot
adb reboot recovery
adb reboot-bootloader
@olegosipenko
olegosipenko / NonExhaustiveWhen.kt
Created December 1, 2019 12:54
For blog post about sealed classes, when expressions and custom detekt rule Raw
override fun visitLambdaExpression(lambdaExpression: KtLambdaExpression) {
super.visitLambdaExpression(lambdaExpression)
val whenExpressions = lambdaExpression.bodyExpression?.statements
?.filterIsInstance<KtWhenExpression>()
if (whenExpressions?.isNotEmpty() == true) {
report(
CodeSmell(
issue, Entity.from(lambdaExpression), MESSAGE
@olegosipenko
olegosipenko / detekt.yml
Created September 19, 2019 10:56
For blog post about sealed classes, when expressions and custom detekt rule
detekt-rules:
NonExhaustiveWhen:
active: true
@olegosipenko
olegosipenko / build.gradle
Created September 19, 2019 10:55
For blog post about sealed classes, when expressions and custom detekt rule
detekt project(":detekt-rules")
@olegosipenko
olegosipenko / io.gitlab.arturbosch.detekt.api.RuleSetProvider
Created September 19, 2019 10:54
For blog post about sealed classes, when expressions and custom detekt rule
com.github.olegosipenko.detektrules.CustomRulesetProvider
@olegosipenko
olegosipenko / CustomRulesetProvider.kt
Created September 19, 2019 10:53
For blog post about sealed classes, when expressions and custom detekt rule
class CustomRulesetProvider: RuleSetProvider {
override val ruleSetId: String = "detekt-rules"
override fun instance(config: Config): RuleSet = RuleSet(
ruleSetId,
listOf(
NonExhaustiveWhen(config)
)
)
}
@olegosipenko
olegosipenko / NonExhaustiveWhenTest.kt
Created September 19, 2019 10:53
For blog post about sealed classes, when expressions and custom detekt rule
companion object {
@JvmStatic
fun compliantProvider(): Stream<Arguments> =
Stream.of(
arguments(COMPLIANT_WHEN_DOT, "dot expression"),
arguments(COMPLIANT_WHEN_PROPERTY, "property"),
arguments(COMPLIANT_WHEN_RETURN, "return")
)
}
@olegosipenko
olegosipenko / NonExhaustiveWhenTest.kt
Created September 19, 2019 10:52
For blog post about sealed classes, when expressions and custom detekt rule
@DisplayName("compliant ")
@MethodSource("compliantProvider")
@ParameterizedTest(name = "{1} should not warn")
internal fun testCompliantWhen(source: String, whenKind: String) {
val findings = NonExhaustiveWhen().lint(source)
assertThat(findings).isEmpty()
}
@olegosipenko
olegosipenko / NonExhaustiveWhenTest.kt
Created September 19, 2019 10:51
For blog post about sealed classes, when expressions and custom detekt rule
@Test
@DisplayName("non compliant when statement should warn")
internal fun nonCompliantCodeShouldWarn() {
val findings = NonExhaustiveWhen()
.lint(WHEN_STATEMENT.trimIndent())
assertThat(findings).hasSize(1)
assertThat(findings[0].message).isEqualTo(MESSAGE)
}