Find Java local variable writes
io.moderne.prethink.FindJavaLocalVariableWritesio.moderne.recipe:rewrite-prethinkUsage
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.
mod run . --recipe FindJavaLocalVariableWrites
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.
- RELEASE
- LATEST
- Pinned version
mod config recipes jar install io.moderne.recipe:rewrite-prethink:RELEASE
mod config recipes jar install io.moderne.recipe:rewrite-prethink:LATEST
mod config recipes jar install io.moderne.recipe:rewrite-prethink:0.18.0
Data tables
Java local variable writes
io.moderne.prethink.table.JavaLocalVariableWritesWritten INITIALIZER or SIMPLE_ASSIGNMENT sites for supported regular block locals in their own ordinary method. Retains original declaration, individual variable, write, target and direct RHS identities and ranges, raw nullable types, occurrence multiplicity and explicit binding states. Unknown or ambiguous bindings retain written site facts with null declaration cells. No initializer evaluation, reaching-write selection, value identity, taint or runtime-flow inference.
mod study . --last-recipe-run \
--data-table io.moderne.prethink.table.JavaLocalVariableWrites
| Column | Description |
|---|---|
| Source path | Actual Java compilation-unit source path. |
| Source set | Actual sole JavaSourceSet name; null for missing or ambiguous source-set markers independently of project markers. Preserve empty values. |
| Project ID | Actual sole JavaProject marker UUID; null for missing or ambiguous project markers. Never normalize, borrow or identify by project name. |
| Project name | Actual sole JavaProject name, descriptive only; preserve null and empty independently of source-set markers. |
| Source set ID | Actual sole JavaSourceSet marker UUID; null for missing or ambiguous source-set markers independently of project markers. |
| Source file ID | Actual compilation-unit UUID in the externally verified original VCS, commit, model-input and producer namespace. Equal CU IDs alone do not prove nested-node identity. |
| Declaration ID | Actual J.VariableDeclarations wrapper UUID for a safely RESOLVED supported local binding. Null for UNRESOLVED or AMBIGUOUS; no synthetic identity. |
| Variable ID | Actual individual NamedVariable UUID for a safely RESOLVED local binding. Multiple declarators have distinct IDs sharing the real wrapper; never a JavaType.Variable object identity. |
| Variable type | Opaque observed declaration JavaType.toString for a RESOLVED binding; null for missing or whole Unknown type and unsafe bindings. Never parse or substitute RHS/use type. |
| Variable start line | Full actual individual NamedVariable start, including any initializer and excluding enclosing type or semicolon. One-based line; null unless binding is RESOLVED. |
| Variable start column | Full actual individual NamedVariable start from unchanged Coordinates. One-based UTF-16 column, tab one, CRLF-aware; null unless binding is RESOLVED. |
| Variable end line | Exclusive full actual individual NamedVariable end. One-based line; null unless binding is RESOLVED. Initializer syntax does not establish a value. |
| Variable end column | Exclusive full actual individual NamedVariable end from unchanged Coordinates. One-based UTF-16 column, tab one, CRLF-aware; null unless binding is RESOLVED. |
| Write ID | INITIALIZER uses the actual NamedVariable.id; SIMPLE_ASSIGNMENT uses the actual J.Assignment.id. Tagged original node identity, never a synthetic write UUID. |
| Write kind | INITIALIZER for a supported local with a non-Empty written initializer; SIMPLE_ASSIGNMENT for exactly J.Assignment with a whole bare Identifier LHS naming a supported in-scope local. No reaching-use selection. |
| Write start line | Whole actual NamedVariable start for INITIALIZER or whole J.Assignment expression start for SIMPLE_ASSIGNMENT. One-based line; no trailing statement semicolon or generated coordinate. |
| Write start column | Whole actual write-node start from unchanged Coordinates. One-based UTF-16 column, tab one, CRLF-aware. |
| Write end line | Exclusive whole actual write-node end: NamedVariable or J.Assignment expression, excluding a trailing statement semicolon. One-based line. |
| Write end column | Exclusive whole actual write-node end from unchanged Coordinates. One-based UTF-16 column, tab one, CRLF-aware. |
| Target ID | INITIALIZER uses the actual bare declaration-name Identifier.id; SIMPLE_ASSIGNMENT uses the actual bare LHS Identifier.id. A declaration token is not a read reference; writeKind distinguishes the roles. |
| Target name | Actual target Identifier spelling metadata. Name alone never establishes declaration binding or a cross-table join. |
| Target start line | Actual target Identifier token start from unchanged Coordinates. One-based line; not a generated name span. |
| Target start column | Actual target Identifier token start. One-based UTF-16 column, tab one, CRLF-aware. |
| Target end line | Exclusive actual target Identifier token end. One-based line. |
| Target end column | Exclusive actual target Identifier token end. One-based UTF-16 column, tab one, CRLF-aware. |
| RHS ID | Actual direct getInitializer() or getAssignment() expression UUID. Preserve parentheses, cast, assignment, lambda and new roots; never substitute an inner invocation ID. |
| RHS kind | Stable direct AST kind label: Identifier, FieldAccess, MethodInvocation, NewClass, NewArray, Literal, TypeCast, Parentheses, Assignment, AssignmentOperation, Binary, Unary, Ternary, Lambda, MemberReference, ArrayAccess, InstanceOf or Other. No lazy-proxy class names or unwrapping. |
| RHS type | Opaque actual direct RHS JavaType.toString; null for missing or whole Unknown. Actual literal-null type text may be the string null. Never replace with declared local type, FQN or an effective runtime value; no RHS/declaration type equality requirement. |
| RHS start line | Actual direct RHS expression start from unchanged Coordinates. One-based line; wrappers retained, no guessed or generated range. |
| RHS start column | Actual direct RHS expression start. One-based UTF-16 column, tab one, CRLF-aware. |
| RHS end line | Exclusive actual direct RHS expression end. One-based line; no inner-expression substitution. |
| RHS end column | Exclusive actual direct RHS expression end. One-based UTF-16 column, tab one, CRLF-aware. |
| Binding state | RESOLVED for a safely bound supported actual local, UNRESOLVED for unavailable or conflicting metadata, or AMBIGUOUS for multiple surviving distinct candidates. Unsafe bindings null all seven declaration cells while retaining real write, target and RHS facts. |
| Binding reason | UNIQUE_LOCAL_DECLARATION, BINDING_UNAVAILABLE, CONFLICTING_ATTRIBUTION, MULTIPLE_LOCAL_CANDIDATES or UNSUPPORTED_BINDING_LAYOUT. Initializer association is structurally its own NamedVariable; neither a state nor a reason establishes values, execution, reaching definitions or taint. |
Source files that had results
org.openrewrite.table.SourcesFileResultsSource files that were modified by the recipe run.
mod study . --last-recipe-run \
--data-table org.openrewrite.table.SourcesFileResults
| Column | Description |
|---|---|
| Source path before the run | The source path of the file before the run. null when a source file was created during the run. |
| Source path after the run | A 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 changes | In 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 changes | The specific recipe that made a change. |
| Estimated time saving | An estimated effort that a developer to fix manually instead of using this recipe, in unit of seconds. |
| Cycle | The recipe cycle in which the change was made. |
Source files that had search results
org.openrewrite.table.SearchResultsSearch results that were found during the recipe run.
mod study . --last-recipe-run \
--data-table org.openrewrite.table.SearchResults
| Column | Description |
|---|---|
| Source path of search result before the run | The source path of the file with the search result markers present. |
| Source path of search result after run the run | A recipe may modify the source path. This is the path after the run. null when a source file was deleted during the run. |
| Result | The trimmed printed tree of the LST element that the marker is attached to. |
| Description | The content of the description of the marker. |
| Recipe that added the search marker | The specific recipe that added the Search marker. |
Source files that errored on a recipe
org.openrewrite.table.SourcesFileErrorsThe details of all errors produced by a recipe run.
mod study . --last-recipe-run \
--data-table org.openrewrite.table.SourcesFileErrors
| Column | Description |
|---|---|
| Source path | The file that failed to parse. |
| Recipe that made changes | The specific recipe that made a change. |
| Stack trace | The stack trace of the failure. |
Recipe performance
org.openrewrite.table.RecipeRunStatsStatistics used in analyzing the performance of recipes.
mod study . --last-recipe-run \
--data-table org.openrewrite.table.RecipeRunStats
| Column | Description |
|---|---|
| The recipe | The recipe whose stats are being measured both individually and cumulatively. |
| Source file count | The number of source files the recipe ran over. |
| Source file changed count | The 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. |