← All recipes
Moderne licensed

Add @Nullable to a field assigned a nullable value

Recipe IDio.moderne.nullability.AddNullableToNullAssignedField
Artifactio.moderne.recipe:rewrite-nullability

Adds a JSpecify @Nullable to a @NonNull reference field that is assigned a provably-nullable value, which would otherwise trigger NullAway's "assigning @Nullable expression to @NonNull field" error inside a @NullMarked scope. A value is provably nullable when it is the null literal, a call to a nullable-returning method, or a reference to a @Nullable variable or field. Only fires where NullAway is active; idempotent, and leaves a field unchanged when it cannot be resolved. Java sources only.

Single recipeProprietary

Usage

This recipe has no required configuration options. You’ll need the Moderne CLI configured before running the command below.

mod run . --recipe io.moderne.nullability.AddNullableToNullAssignedField

If the recipe isn’t available locally, install it with:

mod config recipes jar install io.moderne.recipe:rewrite-nullability:0.3.1

Options

NameTypeDescription
annotatedPackagesStringComma-separated package prefixes to limit the fix to (matching NullAway's AnnotatedPackages option). When unset, the recipe fixes all packages.
e.g. com.example

Data tables

Structured output this recipe can produce.

  • Null-safety fixes by rungEach residual null-safety fix applied, tagged with the precedence rung that produced it, so the share bottoming out at a last-resort `requireNonNull` assertion can be tracked.io.moderne.nullability.table.NullFixes
  • Declined null-safety fixes needing reviewEach site the recipe declined to auto-fix because the fix is a design decision (the value is explicitly `null` on some path, so the slot likely should be `@Nullable`), for human triage.io.moderne.nullability.table.DeclinedNullFixes
  • 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