W przypadku PMD, jeśli chcesz zignorować określone ostrzeżenie, możesz użyć // NOPMD
tej linii do zignorowania.
Czy istnieje coś podobnego do FindBugs?
źródło
W przypadku PMD, jeśli chcesz zignorować określone ostrzeżenie, możesz użyć // NOPMD
tej linii do zignorowania.
Czy istnieje coś podobnego do FindBugs?
Początkowe podejście FindBugs obejmuje pliki konfiguracyjne XML, czyli filtry . Jest to naprawdę mniej wygodne niż rozwiązanie PMD, ale FindBugs działa na kodzie bajtowym, a nie na kodzie źródłowym, więc komentarze oczywiście nie są opcją. Przykład:
<Match>
<Class name="com.mycompany.Foo" />
<Method name="bar" />
<Bug pattern="DLS_DEAD_STORE_OF_CLASS_LITERAL" />
</Match>
Jednak, aby rozwiązać ten problem, FindBugs wprowadził później inne rozwiązanie oparte na adnotacjach (patrz SuppressFBWarnings
), które można wykorzystać na poziomie klasy lub metody (moim zdaniem wygodniejsze niż XML). Przykład (może nie najlepszy, ale cóż, to tylko przykład):
@edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
value="HE_EQUALS_USE_HASHCODE",
justification="I know what I'm doing")
Zauważ, że odkąd FindBugs 3.0.0 SuppressWarnings
został wycofany na korzyść z @SuppressFBWarnings
powodu konfliktu nazw z Javą SuppressWarnings
.
<dependency> <groupId>net.sourceforge.findbugs</groupId> <artifactId>annotations</artifactId> <version>1.3.2</version> <scope>provided</scope> </dependency>
<dependency><groupId>com.google.code.findbugs</groupId><artifactId>annotations</artifactId><version>3.0.0</version><scope>provided</scope></dependency>
do swojej POM, jeśli chcą skorzystać@SuppressFBWarnings
.Jak inni wspomnieli, możesz użyć
@SuppressFBWarnings
Adnotacji. Jeśli nie chcesz lub nie możesz dodać innej zależności do swojego kodu, możesz sam dodać adnotację do swojego kodu, Findbugs nie ma znaczenia, w której paczce jest adnotacja.Źródło: https://sourceforge.net/p/findbugs/feature-requests/298/#5e88
źródło
Oto bardziej kompletny przykład filtra XML (powyższy przykład sam w sobie nie będzie działał, ponieważ pokazuje tylko fragment kodu i brakuje
<FindBugsFilter>
tagów początkowego i końcowego):Jeśli korzystasz z wtyczki FindBugs dla Androida Studio, przejdź do pliku filtru XML, używając Plik-> Inne ustawienia-> Ustawienia domyślne-> Inne ustawienia-> FindBugs-IDEA-> Filtr-> Wyklucz pliki filtrów-> Dodaj.
źródło
Zaktualizuj Gradle
Znajdź raport FindBugs
Znajdź konkretną wiadomość
Zaimportuj poprawną wersję adnotacji
Dodaj adnotację bezpośrednio nad obraźliwym kodem
Zobacz tutaj, aby uzyskać więcej informacji: findbugs Spring Adnotation
źródło
compile 'net.sourceforge.findbugs:annotations:1.3.2'
składni, która jest krótsza.testCompile 'com.google.code.findbugs:annotations:3.0.0'
i adnotacji@SuppressFBWarnings
W chwili pisania tego tekstu (maj 2018) FindBugs wydaje się być zastąpiony przez SpotBugs . Korzystanie z
SuppressFBWarnings
adnotacji wymaga kompilacji kodu w Javie 8 lub nowszej i wprowadza zależność od czasu kompilacjispotbugs-annotations.jar
.Używanie pliku filtru do filtrowania reguł SpotBugs nie ma takich problemów. Dokumentacja jest tutaj .
źródło
Chociaż inne odpowiedzi tutaj są prawidłowe, nie są one pełnym przepisem na rozwiązanie tego problemu.
W duchu kompletności:
Musisz mieć adnotacje findbugs w pliku pom - to tylko czas kompilacji, więc możesz użyć
provided
zakresu:Pozwala to na użycie
@SuppressFBWarnings
innej zależności, która zapewnia@SuppressWarnings
. Powyższe jest jednak jaśniejsze.Następnie dodajesz adnotację nad metodą:
Na przykład
Obejmuje to zarówno nazwę błędu, jak i powód wyłączenia skanowania.
źródło
Zostawię to tutaj: https://stackoverflow.com/a/14509697/1356953
Pamiętaj, że działa
java.lang.SuppressWarnings
to bez potrzeby używania osobnej adnotacji.źródło
java.lang.SuppressWarnings
nie mogę pracować Ma zachowanie źródła, więc nie jest widoczny dla findbugs.