问题标签 [checker-framework]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
477 浏览

maven - Jenkins 中的 Checker Framework 报告?

如何配置以便在 Jenkins 中提取和报告 Checker Framework 发出的警告(例如,通过使用Analysis Collector Plugin)?

作为记录,我使用 maven 和checkersplugin并将<failOnError>配置设置为false,并且 Checker Framework 警告显示在 Jenkins 的控制台输出中。

0 投票
2 回答
802 浏览

java - 在 Eclipse Maven 项目中使用 Checker 框架

我想通过他们的Eclipse Plugin使用 Checker Framework 。如果我有一个没有依赖项的项目,这似乎可以正常工作。

但是,当我尝试对我的 Maven 项目进行检查时,我收到了数百条警告,说:

cannot find symbol

在控制台中,我得到以下报告:

"MainActivity.java:33: error: package de.my.dependency does not exist import de.my.dependency;"

我假设 Eclipse Checker 插件无法解决 Maven 依赖项,我能做些什么来解决这个问题吗?

感谢帮助 :)

0 投票
3 回答
780 浏览

java - 参数中的不兼容类型

当我使用Checker 框架编译我的代码时,它会抱怨:

对于第一个论点:

我知道DatabaseMetadata.getColumns()允许空目录(第一个参数)。我如何告诉 Checker 框架?

0 投票
2 回答
22072 浏览

java - 如何抑制“未知枚举常量”警告?

java.lang.annotation.ElementType.TYPE_USEJDK8 中添加的 Checkers 框架参考。当我在 JDK7 下使用它时,我收到以下警告:

unknown enum constant java.lang.annotation.ElementType.TYPE_USE

这是一个合理的警告,但是对于我认为无害的情况,我该如何压制它

0 投票
2 回答
387 浏览

java - @EnsuresNonNullIf 注释给出“条件后置条件不满足”-警告

我正在使用检查器框架和类型注释来检查@Nullable@NonNull. 在类似 Map 的类1中,Java 规范声明get(…)-methodsnull在映射不包含该键的条目时返回。因此,这些方法具有 -@Nullable注释。但是,contains(…)退货时true,我想保证get(…)不会退货null

如何指定条件 NonNull?

据我所知,您可以通过使用 注释contains(…)-methods来实现这一点@EnsuresNonNullIf,如下所示:

但是,这会导致警告:

我应该如何解决这个“不满足后置条件”的警告?

我的环境:

  • Maven:3.0.4
  • Java:1.7.0_25(甲骨文)
  • Checker 框架 1.7.0(通过 maven 插件)

这个 Gist演示了这个问题。


1)它扩展了地图的功能,以检索具有“相似”键的条目。

0 投票
1 回答
1063 浏览

java - Java 范围构造不能使用类型使用进行注释

我想用@Nullable-annotation(来自Java Checker Framework)注释一个完全限定的类名,例如:

但是,这会导致错误:

如何注释完全限定的类名?

0 投票
1 回答
654 浏览

java - 创建对象时如何处理注释并设置默认值

我想编写代码,如下所示。

假设 MyClass 方法如下所示

因此,当有人使用注释创建 MyClass 对象时,它应该将默认值设置为某个 x(比如 20)。

在检查器框架中,它允许我们在代码中进行如下注释。

有谁知道我们如何在编译时将其分成两部分,如下所示?

或者如果我们能够像下面这样传递默认值也可以。

这可以使用注释处理器来实现吗/需要使用像 ASM 这样的字节码处理器来完成它吗?以更有意义的方式更新。

0 投票
1 回答
508 浏览

java - 使用 Java Checker Framework 的 Nullness Checker 注释可重入性

我正在使用 Java 8 试用Checker Framework的 Nullness 检查器。当我在以下代码上运行检查器时:

x.f();检查器对可能的空引用 x的取消引用发出警告。当然,这是有道理的。Checker Framework 不知道做什么map.put。map 对象可能已经引用了this,然后调用setX(null)它。

现在我的问题如下。有什么方法可以告诉 Checker Framework 一个方法不会修改除了它被调用的对象之外的任何对象?因为map.put不调用setX方法,所以 的值x不会改变。

为了摆脱警告,我可以将调用方法更改为:

现在没有任何警告。这也是有道理的:不能从外部访问局部变量。但我不喜欢仅仅为了消除警告而引入这个局部变量。

或者,我可以x通过@MonotonicNonNull. 但在我的实际用例中,我想保留将字段设置为空的可能性。

提前致谢!

0 投票
1 回答
124 浏览

checker-framework - 在我运行它的 eclipse 插件之前是否有必要安装检查器框架?

当我在 Eclipse 中打开其首选项对话框时,我的控制台会打印一些错误。

有什么建议吗?

非常感谢。

0 投票
0 回答
733 浏览

eclipse - Eclipse 自定义 @NonNull 注释被忽略

我想使用 Eclipse 的“null 分析”功能,但我宁愿使用 javax.annotation.Nonnull 注释而不是 org.eclipse.jdt.annotation.NonNull 注释。我似乎无法让 Eclipse 识别我配置的任何自定义注释。

我正在使用 Eclipse Luna 4.4.2。

我创建了一个仅包含以下类的新测试项目:

我的编译器设置配置为使用 javax 注释:

空分析设置

空规范的注释

我的项目包含 checker-1.8.10 JAR 以提供注释。

使用这些设置,Eclipse 报告 0 个错误。

如果我选中“对空规范使用默认注释”并将我的测试类更改为使用 Eclipse 的注释,我会得到:

空类型不匹配

任何人都知道我做错了什么或者这可能是一个 Eclipse 错误吗?我还尝试了来自谷歌的 jsr305 JAR 而不是检查器,以防万一这是一个问题,但这没有帮助。