Java 如何抑制所有初始化错误
当我有一个简单的测试类Java 如何抑制所有初始化错误,java,checker-framework,Java,Checker Framework,当我有一个简单的测试类 public final class InitTest { private String field; public InitTest() { init(); } private void init() { field = ""; } } checker框架的初始化检查器正确报告问题: InitTest.java:7: error: [initialization.fields.unin
public final class InitTest {
private String field;
public InitTest() {
init();
}
private void init() {
field = "";
}
}
checker框架的初始化检查器正确报告问题:
InitTest.java:7: error: [initialization.fields.uninitialized] the constructor does not initialize fields: field
public InitTest() {
^
InitTest.java:8: error: [method.invocation.invalid] call to init() not allowed on the given receiver.
init();
^
found : @UnderInitialization(java.lang.Object.class) @NonNull InitTest
required: @Initialized @NonNull InitTest
2 errors
根据,它应该能够通过命令行参数禁用初始化检查器:
要禁用初始化检查,请提供命令行参数-AsuppressWarnings=未初始化
当我们使用此参数(在checker framework 2.2.1中)时,仍然会出现初始化错误:
InitTest.java:8: error: [method.invocation.invalid] call to init() not allowed on the given receiver.
init();
^
found : @UnderInitialization(java.lang.Object.class) @NonNull InitTest
required: @Initialized @NonNull InitTest
1 error
我是遗漏了什么还是这是一个错误
注意:当我们使用
-AsuppressWarnings=initialization
时,不再显示错误-但这也会抑制与空性相关的问题:请参见此。-AsuppressWarnings=uninitialized
抑制与初始化本身相关的所有警告。例如,它允许您编写不初始化其所有字段的构造函数
但是,这目前并没有禁用Checker框架中的所有其他检查。Checker框架实现将显示的错误视为方法调用错误(例如,它就是这样打印的)
另一种说法是,
-AsuppressWarnings=uninitialized
影响作为初始化错误打印的消息,但不影响作为其他类型打印的错误。这种行为是一致的,但它不是像您这样的用户所希望的。我将此行为称为Checker框架错误,并在报告中报告。-AsuppressWarnings=uninitialized
将抑制与初始化本身相关的所有警告。例如,它允许您编写不初始化其所有字段的构造函数
但是,这目前并没有禁用Checker框架中的所有其他检查。Checker框架实现将显示的错误视为方法调用错误(例如,它就是这样打印的)
另一种说法是,-AsuppressWarnings=uninitialized
影响作为初始化错误打印的消息,但不影响作为其他类型打印的错误。这种行为是一致的,但它不是像您这样的用户所希望的。我将这种行为称为Checker框架错误,并在报告中报告。这里是相关的,这里是相关的