是否存在Java框架/编译器插件/静态分析工具
- 强制所有返回值非空,除非它们被显式标记为空(通过注释或其他方式)
- 在给定的包列表
本质上,这意味着强制执行Kotlin模型,默认情况下,除非特别标记,否则没有任何东西可以为空。
请注意,只查找@Notnull注释并只执行这些注释的工具是不够的,不允许null返回值应该是默认值。或者,该工具可以专注于解引用可能为空的值,并强制它们不能为空,除非标记为空,然后它们可能要求您执行空检查。
很明显,你仍然可以把那种解决方案的问题作为相关问题,把它们联系在一起。也高兴地发现这个问题是否已经被问过,没有找到一个匹配的现有问题我自己。
检查器框架的null检查器做这个。
关于您的第一个需求,null Checker文档说:
null Checker支持的最重要的注释是
@NonNull
和@Nullable
。@NonNull
很少写入,因为它是默认值。
关于第二个需求,您可以使用-AonlyDefs
命令行选项。它的文档说:
将
-AonlyDefs
命令行选项设置为匹配类名(而不是文件名)的正则表达式,该类名的定义应该进行类型检查。
它匹配完全限定的类名,所以你可以指定一个包名。
除了mernst接受的答案外,我还发现了ErrorProne框架的NullAway插件。教程:https://www.baeldung.com/java-nullaway主页面:https://github.com/uber/NullAway
将不得不在某个时候尝试这两个,到目前为止,它们似乎都符合我的需要。