Skip to main content
Moderne OnlyThis recipe is proprietary to Moderne and runs on the Moderne platform or CLI — it isn’t part of the open-source catalog. Available with a Moderne subscription.Contact Sales

Find Java constructor field assignments

Recipe IDio.moderne.prethink.FindJavaConstructorFieldAssignments
Artifactio.moderne.recipe:rewrite-prethink

Report written immediate constructor-body assignments from an explicit formal parameter to an owned non-static field. Retain actual original-model constructor, parameter, field-reference and assignment identities and source ranges. Named nested/local constructors retain their own identities; eligible direct writes after delegation remain source facts. Source facts only; no property evaluation, delegation propagation, runtime injection or execution inference.

Single recipeOpenRewriteModerne Proprietary License
Try in PlatformTry this recipe in the Moderne platform. Not a user yet? You’ll get a no-setup demo environment, with nothing to install or configure.

Usage​

Run this recipe

This recipe has no required configuration options. Users of Moderne can run it via the Moderne CLI.

You will need to have configured the Moderne CLI on your machine before you can run the following command.

shell
mod run . --recipe FindJavaConstructorFieldAssignments

If the recipe is not available locally, then you can install it using:

RELEASE resolves to the newest release and LATEST to the newest build of any kind, including snapshots. Either one lets mod config recipes upgrade pull in later versions without editing this command; a pinned version stays where you put it.

mod config recipes jar install io.moderne.recipe:rewrite-prethink:RELEASE

Data tables​

Java constructor field assignments
io.moderne.prethink.table.JavaConstructorFieldAssignments

Written immediate constructor-body assignments from a bare explicit formal parameter to an owned non-static field. One row per source occurrence, without deduplication. Actual UUIDs are original-model-local; joins require verified VCS/input/producer namespaces and unique source inventory. No JavaType.Variable object identity binding, String/property evaluation or runtime state inference.

Export after a run
mod study . --last-recipe-run \
--data-table io.moderne.prethink.table.JavaConstructorFieldAssignments
ColumnDescription
Source pathOriginal written .java compilation-unit source path.
Source setSole actual JavaSourceSet name, preserving null/empty; null when missing or duplicated. Never inferred from a path.
Project IDSole actual JavaProject marker UUID, or null when missing/duplicated. Opaque original-model-local identity.
Project nameSole actual JavaProject name, preserving null/empty. Descriptive only; never an identity fallback.
Source set IDSole actual JavaSourceSet marker UUID, or null when missing/duplicated. Joins also require the exact original project/input namespace.
Source file IDActual original J.CompilationUnit UUID. Does not establish constructor/body identity or stability across model copies.
Constructor IDActual written constructor J.MethodDeclaration UUID. Overloads and named nested/local constructors retain their own occurrences; no outer constructor identity is inherited.
Constructor body IDActual constructor-body J.Block UUID observed directly, never inferred from source-file, signature or Git identity.
Constructor signatureExact attributed JavaType.Method.toString() for the constructor. Retains available types; not a unique declaration identity or complete-attribution guarantee.
Constructor start lineOne-based original sanitized-printer line at the full written constructor declaration start, including its annotations and excluding prefix whitespace/comments.
Constructor start columnOne-based UTF-16 column at the full written constructor declaration start; tabs count as one.
Constructor end lineOne-based original line at the exclusive full constructor declaration end, including its body.
Constructor end columnOne-based UTF-16 column at the exclusive full constructor declaration end.
Parameter declaration IDActual explicit formal parameter J.VariableDeclarations UUID. Distinct from its NamedVariable parameter ID.
Parameter IDActual sole formal-parameter NamedVariable UUID. No JavaType.Variable object identity or synthetic parameter identity is substituted.
Parameter indexZero-based written formal-parameter ordinal in this exact constructor; a varargs parameter occupies one slot. J.Empty and explicit receiver parameters are excluded; no synthetic formals are inferred.
Parameter nameActual simple name of the structurally matched explicit formal parameter in this exact constructor.
Parameter typeAvailable attributed formal-parameter JavaType.toString(), or null for missing/Unknown type. Not an assignability or complete-attribution claim.
Parameter start lineOne-based original sanitized-printer line at the full formal J.VariableDeclarations start, including written annotations/type/name and excluding prefix whitespace/comments.
Parameter start columnOne-based UTF-16 column at the full formal-parameter declaration start, including written annotations.
Parameter end lineOne-based original line at the exclusive full formal-parameter declaration end. A following parameter comma is excluded.
Parameter end columnOne-based UTF-16 column at the exclusive full formal-parameter declaration end, excluding a following comma.
Field ownerActual attributed non-static target field declaring-type FQN, required to equal this constructor's declaring class. No inherited/outer-this or spelling-based owner inference.
Field nameActual attributed owned-field name at the explicitly written this.field LHS. Not a source declaration UUID.
Field typeAvailable attributed target-field JavaType.toString(), or null for missing/Unknown component type. Owner attribution remains required.
Field reference IDActual LHS J.FieldAccess name J.Identifier UUID. This identifies the reference token, not a JavaType.Variable object or field declaration.
Field start lineOne-based original sanitized-printer line at the LHS field-name token start; the this. qualifier is excluded.
Field start columnOne-based UTF-16 column at the LHS field-name token start, excluding this.
Field end lineOne-based original line at the exclusive LHS field-name token end.
Field end columnOne-based UTF-16 column at the exclusive LHS field-name token end.
Assignment IDActual immediate constructor-body J.Assignment UUID. Repeated writes retain separate rows, including eligible direct writes after this/super delegation statements; delegation itself is not followed.
Assignment start lineOne-based original sanitized-printer line at the assignment-expression start, excluding prefix whitespace/comments.
Assignment start columnOne-based UTF-16 column at the assignment-expression start.
Assignment end lineOne-based original line at the exclusive J.Assignment expression end. The statement semicolon is excluded.
Assignment end columnOne-based UTF-16 column at the exclusive assignment-expression end, excluding the semicolon.
Assignment sourceExact original sanitized-printer J.Assignment expression slice. Preserves written formatting; excludes prefix whitespace/comments and the statement semicolon.
RHS IDActual bare RHS J.Identifier UUID, structurally bound to an explicit formal parameter of this exact constructor. Not the parameter declaration UUID.
RHS start lineOne-based original sanitized-printer line at the bare RHS identifier start.
RHS start columnOne-based UTF-16 column at the bare RHS identifier start, excluding prefix whitespace/comments.
RHS end lineOne-based original line at the exclusive bare RHS identifier end.
RHS end columnOne-based UTF-16 column at the exclusive bare RHS identifier end.
Source files that had results
org.openrewrite.table.SourcesFileResults

Source files that were modified by the recipe run.

Export after a run
mod study . --last-recipe-run \
--data-table org.openrewrite.table.SourcesFileResults
ColumnDescription
Source path before the runThe source path of the file before the run. null when a source file was created during the run.
Source path after the runA recipe may modify the source path. This is the path after the run. null when a source file was deleted during the run.
Parent of the recipe that made changesIn a hierarchical recipe, the parent of the recipe that made a change. Empty if this is the root of a hierarchy or if the recipe is not hierarchical at all.
Recipe that made changesThe specific recipe that made a change.
Estimated time savingAn estimated effort that a developer to fix manually instead of using this recipe, in unit of seconds.
CycleThe recipe cycle in which the change was made.
Source files that had search results
org.openrewrite.table.SearchResults

Search results that were found during the recipe run.

Export after a run
mod study . --last-recipe-run \
--data-table org.openrewrite.table.SearchResults
ColumnDescription
Source path of search result before the runThe source path of the file with the search result markers present.
Source path of search result after run the runA recipe may modify the source path. This is the path after the run. null when a source file was deleted during the run.
ResultThe trimmed printed tree of the LST element that the marker is attached to.
DescriptionThe content of the description of the marker.
Recipe that added the search markerThe specific recipe that added the Search marker.
Source files that errored on a recipe
org.openrewrite.table.SourcesFileErrors

The details of all errors produced by a recipe run.

Export after a run
mod study . --last-recipe-run \
--data-table org.openrewrite.table.SourcesFileErrors
ColumnDescription
Source pathThe file that failed to parse.
Recipe that made changesThe specific recipe that made a change.
Stack traceThe stack trace of the failure.
Recipe performance
org.openrewrite.table.RecipeRunStats

Statistics used in analyzing the performance of recipes.

Export after a run
mod study . --last-recipe-run \
--data-table org.openrewrite.table.RecipeRunStats
ColumnDescription
The recipeThe recipe whose stats are being measured both individually and cumulatively.
Source file countThe number of source files the recipe ran over.
Source file changed countThe number of source files which were changed in the recipe run. Includes files created, deleted, and edited.
Cumulative scanning time (ns)The total time spent across the scanning phase of this recipe.
Max scanning time (ns)The max time scanning any one source file.
Cumulative edit time (ns)The total time spent across the editing phase of this recipe.
Max edit time (ns)The max time editing any one source file.