问题标签 [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 投票
2 回答
141 浏览

java - 检查器框架,有什么方法可以静音/禁用 type.anno.before.modifier 警告?

我以为我会尝试一下检查器框架,但我得到了很多

对于此代码

这似乎是我应该写的建议

但这违背了 JLS,有没有办法禁用它?

0 投票
2 回答
205 浏览

java - Checker Framework argument.type.incompatible 不受欢迎的正面

所以我从空值检查器那里得到这个错误

这是抱怨System.console()可能为空,在阅读 javadoc 时这是真的。所以我Objects.requireNonNull()现在把它包装起来,它抱怨参数requireNonNull不能为空,这显然不是真的。

我如何告诉NullnessChecker忽略Objects.requireNonNull()?我对明确的 NPE 很好,这只是我不想要的偶然的。我相信 checker 已经为此提供了一个存根。

0 投票
1 回答
193 浏览

java - 检查器框架初始化.fields.uninitialize 误报

这是我的错误

这些是由 picocli 初始化的,所以我添加了 SuppressWarnings,不确定为什么它仍然会发生。

我试过把

在类、构造函数以及如您所见的字段上。如何让 checkerframework 开心?

这是完整的源代码检查器框架,因为如果我这样做了,它就不会编译。

0 投票
1 回答
97 浏览

java - Checker Framework argument.type.incompatible false positive with commons-lang3

这是我的错误(是的,commons-lang3 jira 上有一个开放的错误)。

我试着做这个src/java/main/org/apache/commons/lang3/BooleanUtils.astub,我试着把那个文件放进去src/main/resources/

但我并将其添加到我的 gradle 配置中

但我明白了

我该如何解决这个问题?

0 投票
1 回答
74 浏览

java - 从启用 Checker 框架的构建中创建 Jar?

我正在将 Checker Framework 添加到现有的 Java Gradle 构建中。我已经集成了 Checker 并提出了问题,这一切都很好。但是现在我已经添加了它,我的构建不再像以前那样生成 .jar 文件。

以前,我会在 .jar 获得一个 .jar build/libs/myproject.jar。现在我看到了build/checkerframeworkbuild/main但没有build/libs,也没有 .jar。

build.gradle的在下面。以前有人尝试过吗?有成功吗?

我想我也会接受一个显示如何在构建之外运行 Checker 的答案,例如gradle check使用 Checker 运行构建并gradle build生成 .jar。但如果可能的话,我真的更喜欢只有一个构建步骤。

谢谢!

0 投票
1 回答
82 浏览

java - Checker 框架 - 运行时保留

所以我正在尝试使用检查器框架(来自https://checkerframework.org/),并且我有以下代码:

我如何理解这是有效的,是我可以运行类似的东西

javacheck -processor positiveness Ceker.java

然后检查器会告诉我,我没有规则来测试是否double a总是积极的 - 所以我转到 main 方法并将其更改为:

现在,我的问题是 - 我可以不添加额外的检查代码,@Positive如果违反合同,让该注释在运行时自动抛出异常吗?

0 投票
1 回答
76 浏览

java - 如何告诉 Checker Framework 空检查在另一个方法中?

我正在尝试在现有代码库上采用检查器框架(v 3.18.1),该代码库曾经具有较旧的 jsr305 注释,并且遇到了一些仅通过阅读手册就难以解决的情况(至少对我而言)。

目前我正试图告诉空值检查器另一个方法包含一个空值检查来保护有问题的值。

我将这个示例放在一起,显示了我遇到的问题,{*1} 处的检查器错误:

}

注意:我试过添加“这个”。对那些表达,但它没有任何区别。

我想消除 {*1} 处的错误,但是我宁愿避免 castNonNull() 调用,即使我按照建议将代码复制到我自己的项目中。相反,如果需要的话,我不介意改变一些方法的内部代码(比如在 getException2ndVariety() 实现中的尝试),但我希望这种模式可以用注释而不是运行时断言来表达。

任何建议都非常感谢。

0 投票
1 回答
48 浏览

build.gradle - 以前的哪些 javac 错误会阻止 checkerFramework 检查器在类中运行?

我正在使用checkerFramework gradle 插件来静态分析代码中的空值和污染。当我通过 gradle 运行检查器时,只有我的一个类被正确检查。所有其他类都返回有关检查器未运行的模棱两可的错误:

链接的手册没有提到可能导致这种情况的原因。我在我正在使用的主类的一些静态实例变量前面添加了一些@Nullable注释,但撤消这些注释并不能解决问题。

我的 build.gradle 是这样设置的:

在哪里可以找到有关此错误的更多详细信息?

0 投票
1 回答
59 浏览

gradle - 如何仅在一个类上执行检查器框架?

背景

我正在使用带有 gradle 的检查器框架:

构建.gradle:

现在,当我运行 ./gradlew build 时,它正在查看我的构建中的所有类。我不希望检查器框架查看每个类,而只查看特定的 .java 文件。

问题

如何将检查器框架限制为对一个 .java 文件运行静态分析?

0 投票
0 回答
71 浏览

java - Checker 框架 - MapStruct 转换器的问题

我正在尝试将检查器框架的 Nullness 检查器添加到我们的项目中,但是我的 MapStruct 转换器有问题。

转换器示例

假设我有一个从 User 到 UserDto 的转换器,如下所示:

这会生成以下实现:

问题

现在的问题是 Checker 框架抱怨return null;,因为实现在 convert 方法上方没有 @Nullable 。

另一个问题是当转换器使用此处自动装配的其他转换器时,这会导致initialization.field.uninitialized 错误。

我尝试过的事情

现在我知道我可以简单地使用 -AskipDefs 完全忽略转换器,但是我仍然希望它检查将 @Nullable 值从 User 分配给 UserDto 中的 @NonNull 值不会有问题(反之亦然,这可能会在项目中留下一个漏洞)。

我想到的另一个解决方案是在转换器接口中为这些错误代码添加 @SuppressWarning 注释,但是如果我没有弄错mapstruct-issues , mapstruct 无法将任何注释传播到实现。

存根文件在这里也无济于事。

这里有某种处理生成代码的解决方案吗?