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

java - FormatMethod:如何将他们的参数转发到另一个格式方法?

我不明白为什么我会收到与@FormatMethod.

这是一个非常简单的示例,但失败了:

它失败并显示以下错误消息:

我错过了什么?
我正在使用版本:javac 1.8.0-jsr308-2.1.14

我尝试做的与文档中的示例非常相似: 10.5 @FormatMethod

您的项目可能包含将其参数转发给格式方法的方法。例如,考虑以下日志方法:

您应该使用 @FormatMethod 注释来注释这样的方法。这指示格式字符串检查器检查方法的每次调用。此检查类似于对内置格式方法(如 String.format)的每次调用所做的检查。

提示:您可以在Checker Framework Live Demo
中轻松重现该问题。

  • 不要忘记更改Choose a type system:Format String Checker
  • 请记住,在线工具使用的是旧版本的 Checker Framework ( 2.1.10@ 08.09.2017)
0 投票
1 回答
763 浏览

java - 未找到 Netbeans 错误注释处理器“org.checkerframework.checker.nullness.NullnessChecker”

我正在尝试让 NonNull 注释在 NetBeans 中工作,而且一直令人头疼。

我按照https://checkerframework.org/manual/#netbeans上的说明进行操作,可以确认已将checker-qual.jar其添加为编译库和处理器库。我已启用注释处理并添加org.checkerframework.checker.nullness.NullnessChecker为注释处理器。

在源代码中,我可以导入 importorg.checkerframework.checker.nullness.qual.NonNull@NonNull编译注释。但是,在构建时,我得到了这个:

error: Annotation processor 'org.checkerframework.checker.nullness.NullnessChecker' not found

我需要做什么来解决这个错误?

0 投票
1 回答
56 浏览

java - Subtype check error for lambda

I am trying to implement a simple subtyping check for the checker-framework.
It does basically work, but I get an error related to lambda-usage that I don't understand.

I've created a simple test-project on github: checkerfw-test so that anyone can easily reproduce the issue.

The typesystem that I use is much like the RegEx example in the docs/src.
Here's a link to my types:

  • IdDomainObject is the top type
  • IdUser, IdCustomer are the custom types that should not be assignable to each other
  • IdBottom is the bottom type

The compilation of my testFromCallable2() function:

fails with this error-message:

I don't think this should fail, because the lambda returns exactly the specified type.

The test-source also contains a function testFromCallable1, which does the same, just without a lambda and this code works:

What am I missing?

Note:
I am just beginning to use the subtype-checker, so I think I did not understand all the docs about subtyping yet: e.g. maybe I have just set some wrong values for some of the annotations on my type-definitions (e.g. @ImplicitFor, @DefaultFor, ...)

I am using checker-framework version 2.2.0

0 投票
1 回答
1056 浏览

java - 如何抑制所有初始化错误

当我有一个简单的测试类

检查器框架的初始化检查器正确报告问题:

根据Initialization Checker 的文档,它应该能够通过命令行参数禁用初始化检查器:

要禁用初始化检查,请提供命令行参数
-AsuppressWarnings=uninitialized

当我们使用这个参数时(在 checker-framework 2.2.1 中)我们仍然得到一个初始化错误:

我错过了什么还是这是一个错误?

注意:当我们使用-AsuppressWarnings=initializationthen 时不再显示错误 - 但这也会抑制与空值相关的问题:请参阅此SO讨论

0 投票
1 回答
1095 浏览

android - 在 Android 上运行 Checker 框架

我想使用 Checker Framework 对我的应用程序进行一些静态分析——在运行时检查 Nullability 失败、UI 约束失败等。我按照https://checkerframework.org/manual/#android-gradle 上的说明尝试让它运行,但我收到一个错误,即 checkTypes 不是任务。我认为我正确地遵循了说明,并且修复了他们的大小写不匹配问题。任何想法如何解决它?我的 build.gradle 如下:

编辑:对于未来的读者- javaCompileOptions.annotationProcessorOptions.classNames +=["org.checkerframework.checker.nullness.NullnessChecker"] 行似乎是问题所在。删除它会运行 dagger 和其他注释处理器,但显然不会运行检查器。

0 投票
1 回答
344 浏览

bazel - 使用 Bazel 运行检查器框架

考虑这个 github 存储库。https://github.com/dfabulich/bazel-checker-framework-bug

它包含一个X.java公然违反@Nonnull注释规则的示例文件。

WORKSPACE文件仅包含checker.jar.

BUILD文件调用编译器并将检查器框架配置为java_plugin.

当 Ibazel build x时,构建失败并出现以下错误:

错误:调用类 org.checkerframework.checker.nullness.KeyForAnnotatedTypeFactory 的构造函数时出现 InvocationTargetException;根本原因:java.lang.StackOverflowError;Checker 框架崩溃了。请报告崩溃。要查看完整的堆栈跟踪,请使用 -AprintErrorStack 调用编译器

当我注释掉文件中的plugins行时BUILD,构建成功且没有错误。(这是有道理的,但我最终希望 Checker 框架因return.type.incompatible错误而使此构建失败。)

我在这里犯错了吗?这是 Bazel 中的错误吗?

0 投票
1 回答
200 浏览

eclipse - CheckerFramework Eclipse,对自动构建运行检查

我已经为 Eclipse Oxygen (4.7.2) 安装了 CheckerFramework (2.3.2) 插件。

我能够在文件或项目上手动运行检查器,并从 CheckerFramework 获取警告/错误消息。但这会提供来自 Eclipse 分析和 CheckerFramework 的消息。

我的主要问题是:如何配置 Eclipse/CheckerFramework 以替换内置的 Eclipse 分析并在 Eclipse 自动重新编译保存等文件时自动运行 CheckerFramework 检查器?

我试过配置:

Java -> Compiler -> Errors/Warninigs -> Null Analysis -> Enable annotation based null analysis -> Configure Annotations for Null Specifications

并将注释类指定为

org.checkerframework.checker.nullness.qual.Nullable

但这仅用于注释。是这样,还是 CheckerFramework 有办法代替 Eclipse 注释和代码分析?

我是否需要关闭 EclipseJava -> Compiler -> Errors/Warninigs选项,我想我不想要两个分析器的混合。我希望 CheckerFramework替换内置的 Eclipse 东西。

要在重新构建时自动运行 CheckerFramework 检查,我是否需要从中Project -> Properties -> Builders -> New Ant Builder运行 CheckerFramework?(我不喜欢,但如果需要我猜可以)。

我希望 CheckerFramework 插件能给我这些选项,而不是让我在每次保存后手动检查,但我在文档中找不到我想要的方法。

0 投票
1 回答
123 浏览

java - 提取给定方法句柄的@Nullable/@NonNull 注释

我正在玩 CheckerFramework 并想提取方法的返回值和参数的有效 @Nullable/@NonNull 注释,例如some.package.Thing: Object compute(Object,Collection)。到目前为止,我发现的唯一方法是生成在不同空值上下文中使用此方法的源代码,以便我可以从检查器结果中推断出注释。但是我很确定有一种方法可以扩展 NullnessChecker,这样我就可以在类路径上给它一个方法句柄(通过反射获得)并导出有效的空值注释。谁能给我一些关于从哪里开始的提示?

0 投票
1 回答
33 浏览

checker-framework - 我可以为我的整数参数设置一个范围吗

我可以为整数参数设置一个范围以确保整数值在给定范围之间

它从字面上检查参数 i 是否在给定范围之间?

0 投票
2 回答
399 浏览

maven - 检查器框架无法解析符号${org.checkerframework:jdk8:jar}问题

我试图通过 Maven 存储库添加检查器框架我遵循检查器框架手动步骤但我在 intelij ide 上收到此错误

无法解析符号

其他人提到在Google 群组上遇到同样的问题,请提供任何帮助

我的maven包是这样的

告诉我是否错过任何步骤,它也不允许删除错误的那一行