Mam problem zgłoszony przez FindBugs ale wiem lepiej :) patrz poniższy przykład:Jak ustawić filtr FindBugs dla pól z określoną adnotacją?
public class MyClass extends BaseClass {
@CustomInjection
private Object someField;
public MyClass() {
super();
someField.someMethod(); // Bug is here because FindsBugs thinks this is always null
}
}
W moim konstruktora klasy bazowej I wstrzyknąć wszystkie pola z dopiskiem @CustomInjection z właściwego obiektu, więc moje pola są adnotacją not null w moim przypadku.
Nie chcę ukrywać ostrzeżenia za pomocą "suppresswarning", ponieważ spowoduje to zaśmiecenie kodu. Wolę, aby filtr, taki jak findbugs, wyjaśnił here, ale nie mogę znaleźć sposobu na filtrowanie błędów w polach z przypisami do określonego interfejsu. Nie chcę również filtrować wszystkich ostrzeżeń o błędach o zerowym błędzie. Myślę, że powinno być coś takiego:
<Match>
<Bug code="UR">
<Field annotation="CustomInjection">
</Match>
Dobre pytanie! Nie sądzę jednak, żeby było to możliwe. Rozwiązaniem może być napisanie niestandardowego detektora, który najpierw sprawdza skonfigurowane adnotacje, a następnie wywołuje oryginalny detektor (powiedzmy 'FilteringDetector'). Filtry niestandardowe będą lepiej pasować, ale te też nie istnieją. –