awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
uber avatar

uber/NullAway

0
View on GitHub↗
4,064 stars·342 forks·Java·MIT·14 views

NullAway

NullAway is a Java static analysis tool and build-time detector designed to identify null pointer risks. It functions as a nullability checker that uses annotations to verify that references are not null before they are dereferenced, preventing runtime crashes.

The analyzer implements the JSpecify standard to ensure consistent nullability annotations across different Java libraries. It distinguishes itself through the use of a service provider interface to model the nullability behavior of third-party libraries that lack source annotations and by providing specialized support for Lombok-generated code.

The tool covers a broad range of safety enforcement capabilities, including Java API contract validation for method overrides and the detection of empty optional value retrieval. Its analysis surface extends to package-level nullability marking and the ability to exclude generated source code from analysis.

Features

  • Null Safety Enforcement - Provides compile-time analysis to detect null pointer risks and enforce null safety across Java codebases.
  • Nullability Standard Implementations - Implements the JSpecify standard to ensure consistent nullability annotations across different Java libraries.
  • Nullability Checkers - Functions as a nullability checker that uses annotations to verify references are not null before dereferencing.
  • Java Static Analysis Tools - Serves as a full static analysis tool for Java source code to enforce null safety rules.
  • Build-Time Null Check Verification - Provides a compiler-integrated check that identifies null pointer risks in Java projects during the build phase.
  • Nullability Annotations - Provides a standardized set of nullability annotations to ensure consistent interpretation across static analysis tools.
  • Syntax Tree Analysis - Analyzes the program's abstract syntax tree to track nullability states across variables and method calls.
  • Null Pointer Exception Detection - Performs local type-based checks using annotations to ensure dereferenced pointers are not null.
  • Static Code Analysis - Integrates automated null checks into the build process to detect potential crashes before deployment.
  • Method Contract Verification - Ensures that overriding methods maintain consistent nullability contracts with their super-type methods.
  • Static Contract Analysis - Performs compile-time verification of behavioral contracts to reason about method nullability.
  • Third Party Library Typing - Provides a way to define nullability behavior for external libraries that lack native annotations.
  • Lombok AST Integration - Recognizes common Lombok annotations to maintain compatibility with in-memory modifications of the abstract syntax tree.
  • Nullability Contract Linting - Verifies that method overrides and library calls maintain consistent nullability rules to prevent runtime crashes.
  • Behavioral Contract Validation - Evaluates behavioral contract annotations to reason about method side effects and return values.
  • Compiler-Integrated Analysis - Integrates directly into the Java compilation process to perform analysis with minimal impact on build speed.
  • Pluggable Service Provider Interfaces - Uses a pluggable service provider interface to model nullability for third-party libraries lacking source annotations.
  • Optional Value Validations - Detects calls to retrieve values from empty optionals unless a presence check is performed first.
  • Package-Level Nullability Marking - Applies nullability rules to entire packages to avoid requiring annotations on every individual class.
  • Standardized Nullability Analyzers - Provides an analysis engine that supports the JSpecify standard for consistent nullability across Java libraries.
  • Code Analysis - Build-time tool to eliminate NullPointerExceptions.
  • Static Analysis Tools - Type-based null-pointer checker for Java.

Star history

Star history chart for uber/nullawayStar history chart for uber/nullaway

How this analysis was created: This summary and feature list are AI-generated from collected project material and can contain mistakes. Stars, license and language are imported from GitHub. Inclusion does not mean that we have tested or audited this project. Check the source documentation for any feature you depend on. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Projects sharing features with NullAway

These projects share indexed features with NullAway. Shared tags can include platform or build tooling; verify the primary use case before treating a result as a replacement.
  • checkstyle/checkstylecheckstyle avatar

    checkstyle/checkstyle

    8,867View on GitHub↗

    Checkstyle is a Java static analysis tool and linter designed to identify and enforce coding standards and best practices. It functions as a code quality auditor and Javadoc validation tool, checking source code against configurable rulesets to ensure structural and stylistic consistency. The project allows for the creation of custom linting rules by extending a core API to inspect the abstract syntax tree. It further enables specialized validation through the use of XPath expressions to query the syntax tree for specific code patterns and violations. Capability areas include the enforcement

    Javacode-qualitycommand-line-toolhacktoberfest
    View on GitHub↗8,867
  • spotbugs/spotbugsspotbugs avatar

    spotbugs/spotbugs

    3,896View on GitHub↗

    SpotBugs is a static analysis tool and bytecode analyzer for Java applications. It scans compiled class files to identify bugs, security vulnerabilities, and performance issues without executing the code. The system functions as both a bug detector and a static application security testing tool to locate logical errors and API misuse. The project distinguishes itself through a plugin-based detector architecture that allows the integration of external libraries to add custom detection rules. It provides specialized security auditing for vulnerabilities such as SQL injection, cross-site scripti

    Java
    View on GitHub↗3,896
  • rrrene/credorrrene avatar

    rrrene/credo

    5,193View on GitHub↗

    Credo is a static analysis tool and linter for Elixir. It functions as a code quality analyzer that scans source code to identify stylistic inconsistencies, common mistakes, and potential security vulnerabilities. The tool provides a customizable framework for defining and testing specialized rules to enforce project-specific coding standards. It identifies complex code fragments and duplication to highlight opportunities for refactoring and simplification. Its capabilities cover automated code reviews, the enforcement of Elixir coding standards, and real-time developer feedback through edit

    Elixir
    View on GitHub↗5,193
  • pycqa/flake8PyCQA avatar

    PyCQA/flake8

    3,760View on GitHub↗

    Flake8 is a Python style checker and static analysis tool that identifies programmatic errors and violations of coding standards in source files. It serves as a linting wrapper that aggregates multiple checkers into a single interface, functioning as a pluggable framework for Python code analysis. The tool incorporates a cyclomatic complexity analyzer to measure the logical complexity of functions and identify code that requires refactoring. It is designed for extensibility, allowing the integration of custom plugins and rules through defined entry points. The system provides capabilities fo

    Pythoncomplexity-analysisflake8linter
    View on GitHub↗3,760
Compare all 30 related projects→

Frequently asked questions

What does uber/nullaway do?

NullAway is a Java static analysis tool and build-time detector designed to identify null pointer risks. It functions as a nullability checker that uses annotations to verify that references are not null before they are dereferenced, preventing runtime crashes.

What are the main features of uber/nullaway?

The main features of uber/nullaway are: Null Safety Enforcement, Nullability Standard Implementations, Nullability Checkers, Java Static Analysis Tools, Build-Time Null Check Verification, Nullability Annotations, Syntax Tree Analysis, Null Pointer Exception Detection.

Which projects share features with uber/nullaway?

Projects with overlapping indexed features include: checkstyle/checkstyle — Checkstyle is a Java static analysis tool and linter designed to identify and enforce coding standards and best… spotbugs/spotbugs — SpotBugs is a static analysis tool and bytecode analyzer for Java applications. It scans compiled class files to… rrrene/credo — Credo is a static analysis tool and linter for Elixir. It functions as a code quality analyzer that scans source code… pycqa/flake8 — Flake8 is a Python style checker and static analysis tool that identifies programmatic errors and violations of coding… golang/lint — This is a static analysis linter and code quality tool for Go. It analyzes source code to identify common coding… troessner/reek — Reek is a static code analyzer for Ruby projects designed to identify design flaws and maintainability issues known as…