Czasami podczas debugowania masz nieosiągalny fragment kodu. Czy mimo to należy wyłączyć ostrzeżenie?Java: Jak @SuppressWarnings nieosiągalny kod?
Odpowiedz
Jedynym sposobem, aby to zrobić na dowolnym kompilatorze jest @SupressWarnings("all")
.
Jeśli używasz platformy Eclipse, spróbuj @SuppressWarnings("unused")
.
To nie jest jedyny sposób. Zobacz moją odpowiedź (http://stackoverflow.com/a/6025389/8946). –
@SoftwareMonkey Twoje podejście wciąż powoduje ostrzeżenia w Eclipse i IntelliJ. Jest to jedyne rozwiązanie, które działa na kompilatorach i IDE. –
Jak Cletus tells us,
To zależy od IDE lub kompilator.
To powiedziawszy, przynajmniej dla Eclipse, nie ma sposobu, aby to zrobić. W mojej konfiguracji Eclipse nieosiągalny kod powoduje błąd podczas kompilacji, a nie tylko ostrzeżenie. Pamiętaj też, że różni się to od "martwego kodu", np.
if (false)
{
// dead code here
}
dla których Eclipse (domyślnie) wysyła ostrzeżenie, a nie błąd.
Java ma (prymitywne) wsparcie dla debugowania jak to w tym prostego if
na stałych logicznych nie będzie generować takie ostrzeżenia (i rzeczywiście, gdy ocena jest fałszywy kompilator usunie cały blok warunkowy). Więc można zrobić:
if(false) {
// code you don't want to run
}
Podobnie, jeśli chwilowo wstawienie wcześniejszego rozwiązania do debugowania, można to zrobić tak:
if(true) { return blah; }
lub
if(true) { throw new RuntimeException("Blow Up!"); }
I pamiętać, że specyfikacja Java jawnie deklaruje, że ciągle fałszywe bloki warunkowe są usuwane w czasie kompilacji, a IIRC, stale prawdziwe mają usunięty warunek. Obejmuje takie jak:
public class Debug
{
static public final boolean ON=false;
}
...
if(Debug.ON) {
...
}
javac nie generuje ostrzeżeń dla 'if (false)', ale kompilator Eclipse ma. –
@Daniel: To niefortunne; nie powinno to dotyczyć zwykłego 'if (false)' lub gdy jedyną zmienną warunkową jest 'static final boolean' ustawiony na 'false'. –
Podobają mi się ostrzeżenia, ponieważ przypominają mi, żebym wrócił i zrobił coś z martwego kodu, ale IIRC domyślnie ustawił błąd w starej wersji Eclipse, więc uciekłbym się do rzeczy takich jak 'if (Math.abs (0) = = 0) '. –
Według Java Language Specification:
Jest to błąd kompilacji, jeśli oświadczenie nie może być wykonany, ponieważ jest nieosiągalny.
Czasami można wyłączyć nieosiągalny kod w martwym kodzie (np. Treść if (false) {...}
). Ale to błąd jest częścią definicji języka.
- 1. Nieosiągalny kod na klamrze zamykającej konstruktora
- 2. Java: pełna lista parametrów @SuppressWarnings (...) (w Netbeans)?
- 3. #if DEBUG i instrukcja powrotu - nieosiągalny kod ostrzegawczy
- 4. Android Studio zgłasza "Nieosiągalny kod" z porównaniem enum
- 5. Co to jest użycie @SuppressWarnings
- 6. Czy mogę utworzyć adnotację Java, która "rozszerza" @SuppressWarnings?
- 7. WebLogic 12c - Docelowy nieosiągalny wyjątek
- 8. Mylące nieosiągalny błąd wzorca
- 9. Jak najlepiej przetestować kod Java?
- 10. Jak napisać efektywny kod Java?
- 11. Jak wykryć nieosiągalny kod w warunku Perla, który zawsze jest fałszywy?
- 12. suppressWarnings() nie działa z operatorem potoku
- 13. profil java kod
- 14. Kod java nie działa
- 15. Uruchom kod Java Online
- 16. Kod źródłowy API Java
- 17. Obsługiwane wartości @SuppressWarnings w Android Studio
- 18. Jak sprawić, by numer był nieosiągalny (podobnie jak blokada połączeń)?
- 19. Jak debugować skompilowany kod Java w Eclipse
- 20. Jak pisać przyjazny kod optymalizacji Java JIT?
- 21. Łączenie wielu adnotacji @SuppressWarnings - Eclipse Indigo
- 22. Co to jest SuppressWarnings ("odznaczone") w Javie?
- 23. Wartość @SuppressWarnings z adnotacją jako superinterfejsem
- 24. co znaczy osiągalny/nieosiągalny w git?
- 25. Nieosiągalny kontekst zabezpieczeń za pomocą Feign RequestInterceptor
- 26. Czy błąd kompilacji "Nieosiągalny kod wykryty" został wyświetlony zamiast błędu w TypeScript?
- 27. gradle drukuje ostrzeżenie, chociaż ustawienie SuppressWarnings ma wartość
- 28. Komunikat o błędzie portu ICMP nieosiągalny
- 29. Chociaż (fałsz) powoduje błąd kompilacji nieosiągalny oświadczenie
- 30. Wyjątek dla programu Webdriver: "Chrom nieosiągalny"
Prawdopodobnie nie - nieosiągalny kod jest zazwyczaj oznaką źle zakodowanej metody. Czy mógłbyś to opublikować? Musi to być jakiś sposób, żeby to zmienić. –
Wygląda na to, że dodał wczesny powrót, lub prawdopodobnie "jeśli (fałsz) ...", do debugowania. Nic w tym złego. –
dlaczego tłumić ostrzeżenie podczas debugowania? pojawi się ostrzeżenie przypominające o usunięciu kodu po zakończeniu debugowania - IMO najlepiej * nie * tłumić ostrzeżeń związanych z debugowaniem. Tłumienie ma sens w przypadku * znanych i niepotrzebnych ostrzeżeń * w * kodzie produkcyjnym *. – vaxquis