zu unterdrücken, wenn ich einen einfachen Test-Klasse habenWie alle Initialisierung Fehler
public final class InitTest {
private String field;
public InitTest() {
init();
}
private void init() {
field = "";
}
}
Die Initialisierung checker des checker-Rahmen korrekt die Probleme berichtet:
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
Nach dem docs of the Initialization Checker, es sollte in der Lage sein, die Initialisierungsprüfung über ein Befehlszeilenargument zu deaktivieren:
Wenn wir dieses Argument (in checker-Framework 2.2.1) verwenden wir noch einen Fehler bei der Initialisierung erhalten:
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
Bin ich etwas fehlt oder ist das ein Fehler?
Hinweis: Wenn wir -AsuppressWarnings=initialization
verwenden, wird kein Fehler mehr angezeigt - dies würde jedoch auch die Probleme mit der Nullheit unterdrücken: siehe SO discussion.
Hier ist die verwandte [Ausgabe 1590] (https://github.com/typetools/checker-framework/issues/1590) – TmTron