问题标签 [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 回答
348 浏览

java - Checker Framework 可以与 Error Prone 一起使用吗?

Checker 框架可以与 Error Prone 一起使用吗?据我所知,它们填补了编译时检查的重叠目的,但它们并没有做所有相同的事情。我使用 gradle,但我怀疑两个插件可以同时使用(实际上有一个开放的错误)。javac如果在命令行上手动执行此操作,我如何在一次调用中同时针对文件运行检查器和容易出错的文件?

0 投票
3 回答
999 浏览

java - 是否可以在编译时以外的运行时进行验证检查?

使用以下 Java 代码:

是否可以在编译时以外的运行时通过注释检查构造函数参数 ?就我个人而言,我仍然没有找到任何可以在运行时进行验证检查的检查器框架。但是,是否可以实现一个注释处理器来进行运行时检查?value@NonNull

0 投票
1 回答
233 浏览

java - “如果函数返回非空,则为非空”?

考虑一个方法,例如ConcurrentHashMap'scompute方法:

我想对此进行注释以使用检查器框架进行可空性检查:

但这不太正确:我希望能够推断它返回? extends @NonNull V,以避免在我知道remappingFunction永远不会返回的情况下进行空检查null,例如:

可以表达吗?

0 投票
1 回答
525 浏览

java - 如何在 Findbugs 中使用 Checker Framework 注释?

我正在将代码库从 18.0 迁移到 Guava 26.0-jre。静态代码检查由 Findbugs (3.0.0) 处理。事实证明,Guava从 JSR305 迁移到了 Checker Framework

因此,现有代码如下:

最终出现错误:

我的问题是:如何强制 Findbugs 理解 Checker Framework 的注释?有什么办法可以顺利做到这一点吗?我用谷歌搜索了一些 Findbugs 的插件,但一无所获。

0 投票
1 回答
889 浏览

java - 检查器框架、-Xlint:all 和 JUnit

我试图从一开始就保持一个非常干净和严格的项目,包括:

  1. 检查器框架的使用。
  2. 启用所有编译器警告并将它们视为错误(-Xlint:all-Werror)。
  3. 使用JUnit

以下是 Maven 的相关部分pom.xml

不幸的是,一旦我引入了一个使用@Test注释的测试类,我就会收到以下编译警告,因此会出现构建错误:

警告:java:没有处理器声明任何这些注释:org.junit.jupiter.api.Test

如何避免这个警告?

0 投票
1 回答
50 浏览

typescript - 用于 TypeScript 的 CheckerFramework

TypeScript有类似CheckerFramework的东西吗?我希望能够在编译时使用注释来查找代码问题,例如@Nullable在您立即调用函数的参数上。

0 投票
1 回答
537 浏览

java - 注释名称中的“+”是否有特殊含义?

我正在查看Checker Framework提供的中央 maven 存储库中自定义注释 jdk-8的 .jar 文件的字节码。

在那里我注意到Object.classClass.class文件中有一些无效的 Java 代码。当我在 Eclipse 中加载 jar 时,它是一个注释,语法如下:

现在,据我所知,这个注解名称是无效的 Java。但是,我假设它可能对编译器有意义(类似于编译器分配给匿名类的名称)。我不确定是什么,我在网上搜索也找不到任何关于它的信息。因此,查询。

任何帮助表示赞赏。

0 投票
1 回答
105 浏览

java - 使用 ErrorProne 强制类型注释?

是否有使用 ErrorProne 对类型和参数强制注释的示例?

例如,

0 投票
1 回答
90 浏览

java-8 - 多个@EnsuresNonNullIf 应该没问题;但编译器抱怨

Checker Framework 的手册声称“您可以在单个方法上编写多个 @EnsuresNonNullIf 注释”,但是如果我尝试这样做,我会看到以下消息:

Eclipse Java 编译器生成的错误消息:

不可重复类型@EnsuresNonNullIf 的重复注释。只有标记为@Repeatable 的注解类型可以在一个目标上多次使用。

MVN javac 编译器生成的错误消息:

[错误] Blabla.java:[?,?] org.checkerframework.checker.nullness.qual.EnsuresNonNullIf 不是可重复的注释类型

我正在注释 10 年前的代码,所以我希望一些配置技巧可以安全一天:-) 没有多个 @EnsuresNonNullIf 我准备进行相当多的手动代码注释来修复我的误报我对...不感兴趣

PS:我尝试同时使用 checker-framework-2.8.1 和 2.9.0,结果相似,并且始终使用<maven.compiler.source>1.8</maven.compiler.source>

0 投票
2 回答
147 浏览

java - 证明迭代键的 `get` 的非空性

  • 我有一个具有类似地图功能的接口,但没有实现 Java 的 Map 接口。
  • 地图接口也实现了Iterable<Object>;它遍历地图的键
  • 我想this在增强循环的主体中使用(见下文),但没有断言,并用于get检索迭代键的值,并且没有[ERROR]来自 Checker Framework。
  • 这完全有可能吗?您能否提供从哪里开始的指示或可供学习的示例?我随意地尝试@KeyFor在这里和那里撒一些 s,但是由于缺乏完全了解我在做什么,可能需要一段时间才能找到正确的位置 ;-)
  • 我知道我们可能会使用“Entry Iterator”并避免首先解决这个问题,但我真的只是想学习如何教 Checker 框架关于键迭代器和@Nullable get方法之间的语义关系。

这是一个最小的工作示例: