编译检查插件框架强制不返回null



是否存在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

将不得不在某个时候尝试这两个,到目前为止,它们似乎都符合我的需要。

最新更新