NullAway Versions Save

A tool to help eliminate NullPointerExceptions (NPEs) in your Java code with low build-time overhead

v0.10.15

6 months ago
  • [IMPORTANT] Update minimum Error Prone version and Guava version (#843) NullAway now requires Error Prone 2.10.0 or later
  • Add Spring mock/testing annotations to excluded field annotation list (#757)
  • Update to Checker Framework 3.39.0 (#839) [Support for JDK 21 constructs]
  • Support for JSpecify's 0.3.0 annotation [experimental]
    • Properly check generic method overriding in explicitly-typed anonymous classes (#808)
    • JSpecify: handle incorrect method parameter nullability for method reference (#845)
    • JSpecify: initial handling of generic enclosing types for inner classes (#837)
  • Build / CI tooling for NullAway itself:
    • Update Gradle and a couple of plugin versions (#832)
    • Run recent JDK tests on JDK 21 (#834)
    • Fix which JDKs are installed on CI (#835)
    • Update to Error Prone 2.22.0 (#833)
    • Ignore code coverage for method executed non-deterministically in tests (#838 and #844)
    • Build NullAway with JSpecify mode enabled (#841)

v0.10.14

8 months ago

IMPORTANT: This version introduces EXPERIMENTAL JDK 21 support.

  • Bump Checker Framework dependency to 3.38.0 (#819)
    • Note: Not just an internal implementation change. Needed to support JDK 21!
  • Treat parameter of generated Record.equals() methods as @Nullable (#825)
  • Build / CI tooling for NullAway itself:
    • Fixes Codecov Report Expired error (#821)
    • Updated Readme.md with Codecov link (#823)
    • Remove ASM-related hack in build config (#824)
    • Run tests on JDK 21 (#826)

v0.10.13

8 months ago
  • Allow library models to define custom stream classes (#807)
  • Avoid suggesting castToNonNull fixes in certain cases (#799)
  • Ensure castToNonNull insertion/removal suggested fixes do not remove comments (#815)
  • Support for JSpecify's 0.3.0 annotation [experimental]
    • Generics checks for method overriding (#755)
    • Make GenericsChecks methods static (#805)
    • Add visitors for handling different types in generic type invariance check (#806)
  • Build / CI tooling for NullAway itself:
    • Bump versions for some dependencies (#800)
    • Update to WALA 1.6.2 (#798)
    • Update to Error Prone 2.21.1 (#797)
    • Enable contract checking when building NullAway (#802)
    • Bump Error Prone Gradle Plugin version (#804)
    • Modify JMH Benchmark Workflow For Shellcheck (#813)
    • Bump gradle maven publish plugin from 0.21.0 to 0.25.3 (#810)
    • Use Spotless to enforce consistent formatting for Gradle build scripts (#809)
    • Remove unnecessary compile dependence for jar-infer-cli (#816)
    • Added Codecov to CI Pipeline (#820)

(Due to the timing of the release, the commit for PR #820 is actually missing from the tagged/released version, despite being present in the release notes. However, since that PR is only an internal tooling change for measuring code coverage, no difference should be visible in the released artifact. Thus, we have opted to not change/patch the release)

v0.10.12

9 months ago

Note: This is the first release built with Java 11. In particular, running JarInfer now requires a JDK 11 JVM. NullAway is still capable of analyzing JDK 8 source/target projects, and should be compatible with the Error Prone JDK 9 javac just as the release before, but a JDK 11 javac is recommended.

  • Update to WALA 1.6.1 and remove ability to build on JDK 8 (#777)
  • Fix compatibility issue when building on JDK 17 but running on JDK 8 (#779)
  • Fix JDK compatibility issue in LombokHandler (#795)
  • Improve auto-fixing of unnecessary castToNonNull calls (#796)
  • Support for JSpecify's 0.3.0 annotation [experimental]
    • JSpecify: avoid crashes when encountering raw types (#792)
    • Fix off-by-one error in JSpecify checking of parameter passing (#793)
  • Build / CI tooling for NullAway itself:
    • Fix Publish Snapshot CI job (#774)
    • Add step to create release on GitHub (#775)
    • Build the Android sample app on JDK 17 (#776)
    • Update to Error Prone 2.20.0 (#772)
    • Add tasks to run JDK 8 tests on JDK 11+ (#778)
    • Switch to Spotless for formatting Java code (#780)
    • Added GCP JMH Benchmark Workflow (#770)
    • Set concurrency for JMH benchmarking workflow (#784)
    • Disable daemon when running benchmarks (#786)
    • Update to Gradle 8.2.1 (#781)

v0.10.11

10 months ago

What's Changed

  • NULL_LITERAL expressions may always be null (#749)
  • Fix error in Lombok generated code for @Nullable @Builder.Default (#765)
  • Support for specific libraries/APIs:
    • Added support for Apache Validate (#769)
    • Introduce FluentFutureHandler as a workaround for Guava FluentFuture (#771)
  • Internal code refactorings:
    • [Refactor] Pass resolved Symbols into Handler methods (#729)
    • Prepare for Nullable ASTHelpers.getSymbol (#733)
    • Refactor: streamline mayBeNullExpr flow (#753)
    • Refactor LibraryModelsHandler.onOverrideMayBeNullExpr (#754)
    • Refactor simple onOverrideMayBeNullExpr handlers (#747)
  • Support for JSpecify's 0.3.0 annotation [experimental]
    • JSpecify generics checks for conditional expressions (#739)
    • Generics checks for parameter passing (#746)
    • Clearer printing of types in errors related to generics (#758)
  • NullAwayInfer/Annotator data serialization support [experimental]
    • Update path serialization for class files (#752)
  • Build / CI tooling for NullAway itself:
    • Update to Gradle 8.0.2 (#743)
    • Fix CI on Windows (#759)
    • Upgrade to Error Prone 2.19.1 (#763)
    • Upgrade maven publish plugin to 0.21.0 (#773)

New Contributors

Full Changelog: https://github.com/uber/NullAway/compare/v0.10.10...v0.10.11