Ich habe das ein von FindBugs berichteten Fehler, aber ich weiß es besser :) siehe folgendes Beispiel:Festlegen eines FindBugs-Filters für Felder mit einer bestimmten Anmerkung?
public class MyClass extends BaseClass {
@CustomInjection
private Object someField;
public MyClass() {
super();
someField.someMethod(); // Bug is here because FindsBugs thinks this is always null
}
}
In meinem Baseclass Konstruktor Ich spritze alle Felder mit der @CustomInjection Annotation mit dem richtigen Objekt so meine kommentierten Felder sind in meinem Fall nicht null.
Ich möchte die Warnung nicht mit 'suppresswarnings' unterdrücken, weil das den Code zu viel stört. Ich bevorzuge es, einen Filter wie Findbugs zu erstellen, erklärt here, aber ich kann nicht herausfinden, wie man Fehler für Felder, die mit einer bestimmten Schnittstelle kommentiert werden, filtert. Ich will auch nicht alle Null Bug Warnungen filtern. Ich denke, es sollte wie etwas sein:
<Match>
<Bug code="UR">
<Field annotation="CustomInjection">
</Match>
Gute Frage! Ich denke nicht, dass das möglich ist. Eine Problemumgehung könnte darin bestehen, einen benutzerdefinierten Detektor zu schreiben, der zuerst nach konfigurierten Annotationen sucht und dann den ursprünglichen Detektor aufruft (sagen wir, ein Filterdetektor). Benutzerdefinierte Filter wären eine bessere Übereinstimmung, aber diese scheinen auch nicht zu existieren. –