用途:在 Java 项目中添加 jSpecify 支持,通过注解显式声明空值预期,从而预防 NullPointerException。
主要能力:提供 Maven 与 Gradle 的接入方式;要求在 src/main/java 下每个包创建或更新 package-info.java 并添加 @org.jspecify.annotations.NullMarked(不得删除原有代码);可用 scripts/verify_nullmarked.py 校验非空包是否都有 package-info.java;支持从 JSR-305/javax、Jakarta、JetBrains、Spring、Android、FindBugs/SpotBugs、Checker Framework、Eclipse JDT 等注解库迁移,OpenRewrite MigrateToJSpecify 可自动化常见情况;支持大型代码库增量采用,用 @NullUnmarked 逐步扩大 NullAway 检查范围;可选 Kotlin 互操作,K2 编译器可读取 Java API 上的 JSpecify 注解。
用法:Maven 在 pom.xml 添加 org.jspecify:jspecify:1.0.0 依赖并配置 nullability-maven-plugin;Gradle 在 build.gradle 或 build.gradle.kts 中启用 net.ltgt.errorprone 5.1.0 与 net.ltgt.nullaway 3.1.0,配置 errorprone 的 RequireExplicitNullMarking 与 nullaway,并添加 jspecify、error_prone_core 2.50.0、nullaway 0.13.7 依赖。
适用场景:需要统一空值语义、减少空指针、迁移旧注解库或分阶段引入静态空值检查的 Java 项目。
限制:资料未提供具体收费、平台支持范围与效果保证;迁移细节见 references/annotation-migration.md,增量采用见 references/incremental-adoption.md,Kotlin 互操作见 references/kotlin-interop.md。