Find collection null-safety idioms
Recipe ID
org.openrewrite.kotlin.idiom.FindCollectionNullSafety$KtRecipeArtifact
io.moderne.recipe:recipes-kotlinlistOf(...).filterNotNull() vs listOfNotNull(...), map { }.filterNotNull() vs mapNotNull { }, filter { it != null }.map { it!! } chains, firstOrNull patterns where single is intended, ?.x.orEmpty() mixed-call shapes.
Usage
This recipe has no required configuration options. You’ll need the Moderne CLI configured before running the command below.
mod run . --recipe org.openrewrite.kotlin.idiom.FindCollectionNullSafety$KtRecipeIf the recipe isn’t available locally, install it with:
mod config recipes jar install io.moderne.recipe:recipes-kotlin:0.2.0Definition
This recipe runs the following recipes in order.
- Find
listOf(a, b, c).filterNotNull()patternsorg.openrewrite.kotlin.idiom.FindListOfFilterNotNull$KtRecipe - Find
setOf(a, b, c).filterNotNull()patternsorg.openrewrite.kotlin.idiom.FindSetOfFilterNotNull$KtRecipe - Find
map { ... }.filterNotNull()chainsorg.openrewrite.kotlin.idiom.FindMapThenFilterNotNull$KtRecipe - Find
filter { it != null }.map { it!! }chainsorg.openrewrite.kotlin.idiom.FindFilterMapToMapNotNull$KtRecipe - Find
firstOrNull { } ?: error(...)patternsorg.openrewrite.kotlin.idiom.FindFirstOrNullElvisError$KtRecipe - Find
x?.firstOrNull()callsorg.openrewrite.kotlin.idiom.FindFirstOrNullOnNullableReceiver$KtRecipe - Find
x?.something.orEmpty()patternsorg.openrewrite.kotlin.idiom.FindOrEmptyAfterSafeCall$KtRecipe
Data tables
Structured output this recipe can produce.
- Source files that had resultsSource files that were modified by the recipe run.
org.openrewrite.table.SourcesFileResults - Source files that had search resultsSearch results that were found during the recipe run.
org.openrewrite.table.SearchResults - Source files that errored on a recipeThe details of all errors produced by a recipe run.
org.openrewrite.table.SourcesFileErrors - Recipe performanceStatistics used in analyzing the performance of recipes.
org.openrewrite.table.RecipeRunStats