问题标签 [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 - 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)
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
我需要做什么来解决这个错误?
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 typeIdUser
,IdCustomer
are the custom types that should not be assignable to each otherIdBottom
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
java - 如何抑制所有初始化错误
当我有一个简单的测试类
检查器框架的初始化检查器正确报告问题:
根据Initialization Checker 的文档,它应该能够通过命令行参数禁用初始化检查器:
要禁用初始化检查,请提供命令行参数
-AsuppressWarnings=uninitialized
当我们使用这个参数时(在 checker-framework 2.2.1 中)我们仍然得到一个初始化错误:
我错过了什么还是这是一个错误?
注意:当我们使用-AsuppressWarnings=initialization
then 时不再显示错误 - 但这也会抑制与空值相关的问题:请参阅此SO讨论。
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 和其他注释处理器,但显然不会运行检查器。
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 中的错误吗?
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 插件能给我这些选项,而不是让我在每次保存后手动检查,但我在文档中找不到我想要的方法。
java - 提取给定方法句柄的@Nullable/@NonNull 注释
我正在玩 CheckerFramework 并想提取方法的返回值和参数的有效 @Nullable/@NonNull 注释,例如some.package.Thing: Object compute(Object,Collection)
。到目前为止,我发现的唯一方法是生成在不同空值上下文中使用此方法的源代码,以便我可以从检查器结果中推断出注释。但是我很确定有一种方法可以扩展 NullnessChecker,这样我就可以在类路径上给它一个方法句柄(通过反射获得)并导出有效的空值注释。谁能给我一些关于从哪里开始的提示?
checker-framework - 我可以为我的整数参数设置一个范围吗
我可以为整数参数设置一个范围以确保整数值在给定范围之间
它从字面上检查参数 i 是否在给定范围之间?
maven - 检查器框架无法解析符号${org.checkerframework:jdk8:jar} 问题
我试图通过 Maven 存储库添加检查器框架我遵循检查器框架手动步骤但我在 intelij ide 上收到此错误
其他人提到在Google 群组上遇到同样的问题,请提供任何帮助
我的maven包是这样的
告诉我是否错过任何步骤,它也不允许删除错误的那一行