refactor/null-safety-integration#273
Merged
Splatcrafter merged 28 commits intodevelopfrom Apr 21, 2026
Merged
Conversation
…modules - Add `Objects.requireNonNull` assertions in key constructors, methods, and field accesses. - Annotate fields, method parameters, and return types for improved static analysis and runtime safety. - Update related test cases to handle changes. Signed-off-by: Erik Pförtner <splatcrafter@splatgames.de>
- Wire up `aether-style-guard` as an Error Prone annotation processor under a new `-Pstyleguard` profile, modelled after the existing `-Pnullability` profile. - Enable the six checkers (`RequireThisPrefix`, `RequireParameterNullness`, `RequireFinalParameter`, `RequireMethodReturnNullness` as `ERROR`; `RequireJavadocPresent` as `WARN`; `RequireJavadocComplete` as `ERROR`) with `-XepDisableAllChecks` so unrelated Error Prone checks stay silent. - Default the auto-fix insertion annotation to JetBrains via `-XepOpt:AetherStyleGuard:NotNull/Nullable`. - Introduce a `styleguard.extra.args` property placeholder so bulk auto-fix runs can append `-XepPatchChecks:...` and `-XepPatchLocation:IN_PLACE` from the command line without editing the profile. - Profile is strictly opt-in; default `mvn clean install` is unchanged. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Erik Pförtner <splatcrafter@splatgames.de>
…, and return types across modules Signed-off-by: Erik Pförtner <splatcrafter@splatgames.de>
…or enhanced null-safety across modules Signed-off-by: Erik Pförtner <splatcrafter@splatgames.de>
…boxing - Added `.devcontainer` configuration with a Dockerfile based on `mcr.microsoft.com/devcontainers/java:1-21-bookworm`. - Configured Java (with Maven and Gradle) and Python (with Pipx) features. - Enabled security-hardening settings: restricted capabilities, strict egress firewall, and resource limits. - Installed native Claude Code binary and added IntelliJ JetBrains plugin. Signed-off-by: Erik Pförtner <splatcrafter@splatgames.de>
…entation and readability Signed-off-by: Erik Pförtner <splatcrafter@splatgames.de>
…s for consistent indentation and enhanced readability throughout the module. Signed-off-by: Erik Pförtner <splatcrafter@splatgames.de>
…c and migration classes. Signed-off-by: Erik Pförtner <splatcrafter@splatgames.de>
…serialization compatibility with `serialVersionUID`. Include `@NotNull` annotations for null-safety and enhance readability across multiple classes. Signed-off-by: Erik Pförtner <splatcrafter@splatgames.de>
…adability across modules. Signed-off-by: Erik Pförtner <splatcrafter@splatgames.de>
…adability across modules. Signed-off-by: Erik Pförtner <splatcrafter@splatgames.de>
…classes. Reformat method signatures for indentation and readability. Signed-off-by: Erik Pförtner <splatcrafter@splatgames.de>
…ation, improved readability, and enhanced clarity across modules. Signed-off-by: Erik Pförtner <splatcrafter@splatgames.de>
Signed-off-by: Erik Pförtner <splatcrafter@splatgames.de>
- Update aether-style-guard from 0.1.0-SNAPSHOT to 0.1.1 - Add -XepExcludedPaths to exclude generated sources (e.g. JMH) from checks - Add combine.children="append" to benchmarks annotationProcessorPaths so the JMH annotation processor is appended to the profile's ErrorProne paths Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Erik Pförtner <splatcrafter@splatgames.de>
- RequireFinalParameter: add final to parameters in FixRegistrar, RecordCodecBuilder, BatchTransform - RequireJavadocComplete: add @param tags to record compact constructors (Dynamic, DataResult.Success/Error, Either.Left/Right, RecordCodecBuilder.Field/Builder1-8) and @return tags to all {inheritDoc} override methods in Type.FieldType, Type.TaggedChoiceType, SimpleType, and all TypeTemplate.apply() implementations in DSL Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Erik Pförtner <splatcrafter@splatgames.de>
- RequireMethodReturnNullness: add @NotNull to unannotated return types in JacksonJsonOps, JacksonTomlOps, JacksonXmlOps, JacksonYamlOps, SnakeYamlOps - RequireThisPrefix: qualify nodeFactory field access with this. in all four Jackson Ops implementations Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Erik Pförtner <splatcrafter@splatgames.de>
- RequireJavadocComplete: add @param tags to DiagnosticContextImpl.LogEntry compact constructor (level, message, args) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Erik Pförtner <splatcrafter@splatgames.de>
- RequireMethodReturnNullness: add @NotNull to return types in MigrateCommand, ValidateCommand, XmlJacksonFormatHandler Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Erik Pförtner <splatcrafter@splatgames.de>
- RequireFinalParameter: add final to CoverageGap constructor parameter Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Erik Pförtner <splatcrafter@splatgames.de>
- RequireParameterNullness: add @NotNull to unannotated parameters in AetherAssertions, DynamicAssert, DataResultAssert, TypedAssert, AssertingContext - RequireMethodReturnNullness: add @NotNull to return types in DynamicAssert, AssertingContext, MigrationTester - RequireFinalParameter: add final to SchemaTester parameter - RequireThisPrefix: qualify field accesses in RecordingContext - RequireJavadocComplete: add @param tags to RecordingContext.LogEntry compact constructor Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Erik Pförtner <splatcrafter@splatgames.de>
- RequireParameterNullness: add @NotNull to all @benchmark setup/teardown method parameters across BenchmarkRunner, CollectionCodecBenchmark, PrimitiveCodecBenchmark, ConcurrentMigrationBenchmark, and all format/ core benchmark classes Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Erik Pförtner <splatcrafter@splatgames.de>
Adds a mandatory styleguard job (needs: build) to both ci-pr.yml and ci-push.yml. Any violation of RequireThisPrefix, RequireParameterNullness, RequireFinalParameter, RequireMethodReturnNullness or RequireJavadocComplete will break the build, ensuring AI-generated and human-written code stays consistent. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Erik Pförtner <splatcrafter@splatgames.de>
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
Signed-off-by: Erik Pförtner <splatcrafter@splatgames.de>
Signed-off-by: Erik Pförtner <splatcrafter@splatgames.de>
- RequireJavadocPresent: add Javadoc to public/protected methods in anonymous and local classes that override interface methods across api (codec, optic, type, rewrite, fix, dsl), examples, schema-tools, spring-boot-starter, and testkit modules - RequireJavadocComplete: document every @param and @return on those overrides using {@inheritdoc}, and add missing @param tags to the compact constructors of FixFieldOperations, DataFixersSummary, and FieldDiagnosticsSummary Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Erik Pförtner <splatcrafter@splatgames.de>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Integrates
aether-style-guard 0.1.1across the entire codebase, resolves all reportedviolations in every module, and enforces compliance as a mandatory CI gate on PRs and pushes.
Type of Change
Related Issues
None.
Changes
aether-style-guardfrom0.1.0-SNAPSHOTto0.1.1; harden styleguardMaven profile with
-XepExcludedPathsto skip JMH-generated sources in benchmarks module;add
combine.children="append"to benchmarksannotationProcessorPathsso the JMHannotation processor is appended to rather than replacing the ErrorProne processors
RequireMethodReturnNullnessandRequireJavadocCompleteviolations acrossDSL,terNullness,Dynamic,DataResult,Either,Type,SimpleType,RecordCodecBuilder,FixRegistrar,BatchTransformJacksonJsonOps,JacksonTomlOps,JacksonXmlOps,JacksonYamlOps,SnakeYamlOpsRequireJavadocCompleteonDiagnosticContextImpl.LogEntrycompact constructorMigrateCommand,ValidateCommand,XmlJacksonFormatHandlerRequireFinalParameterinCoverageGapRecordingContext,AetherAssertions,DynamicAssert,DataResultAssert,TypedAssert,AssertingContext,MigrationTester,SchemaTesterGameExample,PlayerV2ToV3FixRequireParameterNullnessandRequireMethodReturnNullnessacrossall 13 benchmark classes
Aether Style Guardjob to bothci-pr.ymlandci-push.yml; runsmvn -B clean compile -Pstyleguardand breaks the build on any violationVerification
Breaking Changes
None.
AI Disclosure
Javadoc
@param/@returntags across all modules.Checklist