编译检查插件框架以强制执行无空 return
Compilation Check Plugin Framework to enforce no null return
有没有Java的框架/编译器插件/静态分析工具
- 强制所有 return 值都是非空的,除非它们被明确标记为 Nullable(通过注释或其他方式)
- 在给定的包列表中
从本质上讲,这将意味着强制执行 Kotlin 模型,默认情况下,除非特别标记,否则任何内容都不能为 null。
请注意,仅查找 @Notnull 注释并仅强制执行这些注释的工具是不够的,不允许空 return 值应该是默认值。或者,该工具可以专注于取消引用可能为 null 的值,并强制它们不能为 null,除非被标记为 null,然后它们可能会要求您进行 null 检查。
显然,您仍然可以将寻求此类解决方案的问题作为相关问题显然 link 放在一起。也很高兴知道是否已经有人问过这个问题,我自己没有找到匹配的现有问题。
Nullness Checker of the Checker Framework 执行此操作。
关于您的第一个要求,Nullness Checker documentation 说:
The most important annotations supported by the Nullness Checker are @NonNull
and @Nullable
. @NonNull
is rarely written, because it is the default.
关于您的第二个要求,您可以使用-AonlyDefs
command-line 选项。它的 documentation 表示:
set the -AonlyDefs
command-line option to a regular expression that matches class names (not file names) whose definitions should be type-checked.
它匹配 fully-qualified class 个名称,因此您可以指定一个包名称。
除了mernst 接受的答案外,我还找到了ErrorProne 框架的NullAway 插件。
教程:https://www.baeldung.com/java-nullaway
主页:https://github.com/uber/NullAway
在某个时候将不得不尝试两者,到目前为止它们似乎都符合我的需要。
有没有Java的框架/编译器插件/静态分析工具
- 强制所有 return 值都是非空的,除非它们被明确标记为 Nullable(通过注释或其他方式)
- 在给定的包列表中
从本质上讲,这将意味着强制执行 Kotlin 模型,默认情况下,除非特别标记,否则任何内容都不能为 null。
请注意,仅查找 @Notnull 注释并仅强制执行这些注释的工具是不够的,不允许空 return 值应该是默认值。或者,该工具可以专注于取消引用可能为 null 的值,并强制它们不能为 null,除非被标记为 null,然后它们可能会要求您进行 null 检查。
显然,您仍然可以将寻求此类解决方案的问题作为相关问题显然 link 放在一起。也很高兴知道是否已经有人问过这个问题,我自己没有找到匹配的现有问题。
Nullness Checker of the Checker Framework 执行此操作。
关于您的第一个要求,Nullness Checker documentation 说:
The most important annotations supported by the Nullness Checker are
@NonNull
and@Nullable
.@NonNull
is rarely written, because it is the default.
关于您的第二个要求,您可以使用-AonlyDefs
command-line 选项。它的 documentation 表示:
set the
-AonlyDefs
command-line option to a regular expression that matches class names (not file names) whose definitions should be type-checked.
它匹配 fully-qualified class 个名称,因此您可以指定一个包名称。
除了mernst 接受的答案外,我还找到了ErrorProne 框架的NullAway 插件。 教程:https://www.baeldung.com/java-nullaway 主页:https://github.com/uber/NullAway
在某个时候将不得不尝试两者,到目前为止它们似乎都符合我的需要。