0

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

error: [type.checking.not.run] NullnessChecker did not run because of a previous error issued by ja
vac
public class Main {
       ^

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

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

plugins {
    // Checker Framework pluggable type-checking
    id 'org.checkerframework' version '0.6.3'
}

checkerFramework {
checkers = [
        'org.checkerframework.checker.nullness.NullnessChecker',
        'org.checkerframework.checker.tainting.TaintingChecker'
           ]
}


apply plugin: 'org.checkerframework'

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

4

1 回答 1

0

您没有显示完整的 javac 输出。相关错误应该就在error: [type.checking.not.run]您显示的行的上方。

Checker 框架作为 javac 的插件运行。当 javac 在一个类中发出错误(包括任何 Checker Framework 错误)时,javac 可能会或可能不会处理其他类。不幸的是,用户没有很好的方法来预测 javac 会走多远。您最好的选择是专注于对您最重要的代码,并在继续其他课程之前依次解决每个错误。

于 2021-11-27T23:50:59.517 回答