Jaka jest lista ważnych @SuppressWarnings
nazw ostrzegawczych w Javie?
Bit, który przychodzi w między ("")
in @SuppressWarnings("")
.
java
eclipse
warnings
compiler-warnings
suppress-warnings
Ron Tuffin
źródło
źródło
"ProhibitedExceptionDeclared"
w Eclipse Collections Framework (org.eclipse.collections.impl.block.function.checked.ThrowingFunction
) i nie jest to wymienione poniżej.Odpowiedzi:
To zależy od twojego IDE lub kompilatora.
Tutaj jest lista dla Eclipse Galileo:
Lista dla Indigo dodaje:
Lista dla Juno dodaje:
Kepler i Luna używają tej samej listy znaczników, co Juno ( lista ).
Inne będą podobne, ale różnią się.
źródło
void foo( Object o ) { boolean b; if ( ( b = o == null ) ) o = new Object(); o.toString(); }
. Niektóre środowiska (np. NetBeans 7.3 z JDK Java 6 [1.6.0_41]) generują"o possibly null"
podczaso.toString()
połączenia, nawet jeślio
w tym momencie nie mogą być puste.semicolon
nie wydaje się działać w luna? :( Czy ktoś może sprawdzić, czysemicolon
rzeczywiście jest poprawny?Wszystkie wartości są dozwolone (nierozpoznane są ignorowane). Lista rozpoznawanych jest specyficzna dla kompilatora.
W Java Poradniki
unchecked
ideprecation
są wymienione jako dwóch ostrzeżeń wymaganych w specyfikacji języka Java, dlatego powinny one być ważne ze wszystkimi kompilatorów:Określone sekcje w specyfikacji języka Java, w których są zdefiniowane, nie są spójne między wersjami. W Java SE 8 specyfikacji
unchecked
ideprecation
są oznaczone jako kompilator w sekcji 9.6.4.5. @SuppressWarnings i 9.6.4.6 @Deprecated , odpowiednio.Dla kompilatora firmy Sun działający
javac -X
daje listę wszystkich wartości rozpoznawanych przez tę wersję. W przypadku wersji 1.5.0_17 wygląda na to, że:źródło
Lista jest specyficzna dla kompilatora. Ale oto wartości obsługiwane w Eclipse :
Sun JDK (1.6) ma krótszą listę obsługiwanych ostrzeżeń:
Najnowsze dostępne javac (1.6.0_13) dla komputerów Mac mają następujące obsługiwane ostrzeżenia
źródło
Nową ulubioną rzeczą jest dla mnie
@SuppressWarnings("WeakerAccess")
IntelliJ, który nie pozwala na narzekać, kiedy uważa, że powinieneś mieć słabszy modyfikator dostępu niż używasz. Musimy mieć publiczny dostęp do niektórych metod wspierania testów, a@VisibleForTesting
adnotacja nie zapobiega ostrzeżeniom.ETA: „Anonimowy” skomentował na stronie @MattCampbell połączonej z następującą niezwykle przydatną notatką:
źródło
Zauważyłem, że
//noinspection
można go wygenerować automatycznie w IntelliJ@SuppressWarninigs
przed wyciągiem//noinspection
, naciskając Alt + Enter, gdy masz ostrzeżenie, a następnie użyj klawisza strzałki w prawo, aby wyświetlić opcję Pomiń dla ...Skończyło się tutaj, gdy chciałem ukryć ostrzeżenie „przełącznik ma za mało etykiet” z ostrzeżeniem IntelliJ. Nie znalazłem pełnej listy
@SuppressWarning
wsparcia IntelliJ, ale//noinspection
zrobiłem to dla mnie.źródło
//noinspection SwitchStatementWithTooFewBranches
przedswitch
działa tak samo dla mnie.Wydaje się, że jest to o wiele bardziej kompletna lista, na której znalazłem ostrzeżenia specyficzne dla Androida-Studio, których nie mogłem znaleźć gdzie indziej (np. SynchronizeOnNonFinalField)
https://jazzy.id.au/2008/10/30/list_of_suppresswarnings_arguments.html
Och, teraz wytyczne SO są sprzeczne z ograniczeniami SO. Z jednej strony mam raczej skopiować listę, niż podać tylko link. Ale z drugiej strony przekroczyłoby to maksymalną dozwoloną liczbę znaków. Miejmy więc nadzieję, że link się nie zepsuje.
źródło
JSL 1.7
Dokumentacja Oracle wspomina:
unchecked
: Niesprawdzone ostrzeżenia są identyfikowane przez ciąg „niezaznaczone”.deprecation
: Kompilator Java musi wygenerować ostrzeżenie o wycofaniu, gdy zostanie użyty typ, metoda, pole lub konstruktor, którego deklaracja jest opatrzona adnotacją @Deprecated (tzn. Zastąpiona, wywołana lub przywołana przez nazwę), chyba że: [...] użycie znajduje się w jednostce, która jest opatrzona adnotacjami, aby ukryć ostrzeżenie za pomocą adnotacji @SuppressWarnings („wycofanie”); lubNastępnie wyjaśnia, że implementacje mogą dodawać i dokumentować własne:
źródło
unchecked
jest to jedyna rekomendowana przez standard; w następnej sekcji od cytowanej przez ciebie napisano, że ostrzeżenia o rezygnacji nie powinny być generowane, gdy „Wykorzystanie dotyczy jednostki, która ma adnotację w celu zniesienia ostrzeżenia za pomocą adnotacji@SuppressWarnings("deprecation")
”Chcę tylko dodać, że istnieje główna lista parametrów pomijania IntelliJ pod adresem : https://gist.github.com/vegaasen/157fbc6dce8545b7f12c
Wygląda dość kompleksowo. Częściowy:
źródło
Jeśli używasz SonarLint, wypróbuj metodę lub klasę całego łańcucha kalmarów: @SuppressWarnings („squid: S1172”)
źródło