问题标签 [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.
java - Checker Framework 可以与 Error Prone 一起使用吗?
Checker 框架可以与 Error Prone 一起使用吗?据我所知,它们填补了编译时检查的重叠目的,但它们并没有做所有相同的事情。我使用 gradle,但我怀疑两个插件可以同时使用(实际上有一个开放的错误)。javac
如果在命令行上手动执行此操作,我如何在一次调用中同时针对文件运行检查器和容易出错的文件?
java - 是否可以在编译时以外的运行时进行验证检查?
使用以下 Java 代码:
是否可以在编译时以外的运行时通过注释检查构造函数参数 ?就我个人而言,我仍然没有找到任何可以在运行时进行验证检查的检查器框架。但是,是否可以实现一个注释处理器来进行运行时检查?value
@NonNull
java - “如果函数返回非空,则为非空”?
考虑一个方法,例如ConcurrentHashMap
'scompute
方法:
我想对此进行注释以使用检查器框架进行可空性检查:
但这不太正确:我希望能够推断它返回? extends @NonNull V
,以避免在我知道remappingFunction
永远不会返回的情况下进行空检查null
,例如:
可以表达吗?
java - 如何在 Findbugs 中使用 Checker Framework 注释?
我正在将代码库从 18.0 迁移到 Guava 26.0-jre。静态代码检查由 Findbugs (3.0.0) 处理。事实证明,Guava从 JSR305 迁移到了 Checker Framework。
因此,现有代码如下:
最终出现错误:
我的问题是:如何强制 Findbugs 理解 Checker Framework 的注释?有什么办法可以顺利做到这一点吗?我用谷歌搜索了一些 Findbugs 的插件,但一无所获。
typescript - 用于 TypeScript 的 CheckerFramework
TypeScript有类似CheckerFramework的东西吗?我希望能够在编译时使用注释来查找代码问题,例如@Nullable
在您立即调用函数的参数上。
java - 注释名称中的“+”是否有特殊含义?
我正在查看Checker Framework提供的中央 maven 存储库中自定义注释 jdk-8的 .jar 文件的字节码。
在那里我注意到Object.class
和Class.class
文件中有一些无效的 Java 代码。当我在 Eclipse 中加载 jar 时,它是一个注释,语法如下:
现在,据我所知,这个注解名称是无效的 Java。但是,我假设它可能对编译器有意义(类似于编译器分配给匿名类的名称)。我不确定是什么,我在网上搜索也找不到任何关于它的信息。因此,查询。
任何帮助表示赞赏。
java - 使用 ErrorProne 强制类型注释?
是否有使用 ErrorProne 对类型和参数强制注释的示例?
例如,
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>
java - 证明迭代键的 `get` 的非空性
- 我有一个具有类似地图功能的接口,但没有实现 Java 的 Map 接口。
- 地图接口也实现了
Iterable<Object>
;它遍历地图的键 - 我想
this
在增强循环的主体中使用(见下文),但没有断言,并用于get
检索迭代键的值,并且没有[ERROR]
来自 Checker Framework。 - 这完全有可能吗?您能否提供从哪里开始的指示或可供学习的示例?我随意地尝试
@KeyFor
在这里和那里撒一些 s,但是由于缺乏完全了解我在做什么,可能需要一段时间才能找到正确的位置 ;-) - 我知道我们可能会使用“Entry Iterator”并避免首先解决这个问题,但我真的只是想学习如何教 Checker 框架关于键迭代器和
@Nullable get
方法之间的语义关系。
这是一个最小的工作示例: