Skip to content

refactor/null-safety-integration#273

Merged
Splatcrafter merged 28 commits intodevelopfrom
refactor/null-safety-integration
Apr 21, 2026
Merged

refactor/null-safety-integration#273
Splatcrafter merged 28 commits intodevelopfrom
refactor/null-safety-integration

Conversation

@Splatcrafter
Copy link
Copy Markdown
Member

Summary

Integrates aether-style-guard 0.1.1 across the entire codebase, resolves all reported
violations in every module, and enforces compliance as a mandatory CI gate on PRs and pushes.

Type of Change

  • Refactoring
  • Build / CI

Related Issues

None.

Changes

  • build: bump aether-style-guard from 0.1.0-SNAPSHOT to 0.1.1; harden styleguard
    Maven profile with -XepExcludedPaths to skip JMH-generated sources in benchmarks module;
    add combine.children="append" to benchmarks annotationProcessorPaths so the JMH
    annotation processor is appended to rather than replacing the ErrorProne processors
  • style: fix RequireMethodReturnNullness and RequireJavadocComplete violations across
    DSL, terNullness, Dynamic, DataResult, Either, Type, SimpleType,
    RecordCodecBuilder, FixRegistrar, BatchTransform
  • style(codec): fix all violations in JacksonJsonOps, JacksonTomlOps, JacksonXmlOps,
    JacksonYamlOps, SnakeYamlOps
  • style(core): fix RequireJavadocComplete on DiagnosticContextImpl.LogEntry compact constructor
  • style(cli): fix nullness and return-type annotations in MigrateCommand, ValidateCommand,
    XmlJacksonFormatHandler
  • style(schema-tools): fix RequireFinalParameter in CoverageGap
  • style(testkit): fix all violations in RecordingContext, AetherAssertions, DynamicAssert,
    DataResultAssert, TypedAssert, AssertingContext, MigrationTester, SchemaTester
  • style(examples): fix violations in GameExample, PlayerV2ToV3Fix
  • style(benchmarks): fix RequireParameterNullness and RequireMethodReturnNullness across
    all 13 benchmark classes
  • ci: add mandatory Aether Style Guard job to both ci-pr.yml and ci-push.yml; runs
    mvn -B clean compile -Pstyleguard and breaks the build on any violation

Verification

  • Existing tests pass
  • Manual verification performed (if applicable)

Breaking Changes

None.

AI Disclosure

  • This PR includes AI-generated or AI-assisted content
  • Claude (claude-sonnet-4-6) assisted in applying Error Prone auto-patches and completing
    Javadoc @param/@return tags across all modules.

Checklist

  • Code follows project conventions
  • Public APIs are documented
  • Tests cover new behavior
  • No unnecessary dependencies added
  • AI usage disclosed (if applicable)

Splatcrafter and others added 25 commits April 11, 2026 13:15
…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>
- RequireMethodReturnNullness: add @NotNull to GameExample, PlayerV2ToV3Fix
- RequireParameterNullness: add @NotNull to GameExample parameters

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>
@Splatcrafter Splatcrafter requested a review from a team as a code owner April 20, 2026 18:53
@Splatcrafter Splatcrafter self-assigned this Apr 20, 2026
@Splatcrafter Splatcrafter added refactor Internal code cleanup without changing external behavior (readability, structure, maintainability) design Architecture/API design discussion or decision needed before implementation labels Apr 20, 2026
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 20, 2026

⚠️ Deprecation Warning: The deny-licenses option is deprecated for possible removal in the next major release. For more information, see issue 997.

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

Splatcrafter and others added 3 commits April 20, 2026 20:02
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>
@Splatcrafter Splatcrafter added this to the v1.0.0 milestone Apr 21, 2026
@Splatcrafter Splatcrafter merged commit 46cc869 into develop Apr 21, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

design Architecture/API design discussion or decision needed before implementation refactor Internal code cleanup without changing external behavior (readability, structure, maintainability)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants