提问人:George Measley 提问时间:4/24/2022 更新时间:4/27/2022 访问量:153
编译检查插件框架以强制执行无空返回
Compilation Check Plugin Framework to enforce no null return
问:
有没有适用于 Java 的框架/编译器插件/静态分析工具
- 强制所有返回值都是非 null,除非它们被显式标记为 Nullable(通过批注或其他方式)
- 在给定的软件包列表中
从本质上讲,这意味着强制执行 Kotlin 模型,默认情况下,除非特别标记,否则没有任何内容可以为 null。
请注意,仅查找@Notnull注释并仅强制执行这些注释的工具是不够的,不允许 null 返回值应该是默认设置。或者,该工具可以专注于取消引用可能为 null 的值,并强制它们不能为 null,除非标记为 null,然后它们可能会要求您执行 null 检查。
显然,您仍然可以将这种解决方案的问题作为相关问题提出来,显然可以将它们联系在一起。也很高兴发现这是否已经被问到,我自己没有找到匹配的现有问题。
答:
Checker Framework 的 Nullness Checker 就是这样做的。
关于您的第一个要求,Nullness Checker 文档说:
Nullness Checker 支持的最重要的注释是
@NonNull
和@Nullable
。 很少写入,因为它是默认的。@NonNull
关于您的第二个要求,您可以使用命令行选项。它的文档说:-AonlyDefs
将命令行选项设置为与类名(而不是文件名)匹配的正则表达式,这些类名的定义应进行类型检查。
-AonlyDefs
它与完全限定的类名匹配,因此您可以指定包名称。
评论
除了 mernst 接受的答案外,我还找到了 ErrorProne 框架的 NullAway 插件。 教程:https://www.baeldung.com/java-nullaway 主页:https://github.com/uber/NullAway
将不得不在某个时候尝试两者,到目前为止,它们似乎都符合我的需要。
评论