2010-05-19 14 views
9

Chciałbym mechanizm do ręcznego zgłaszania ostrzeżenia o kompilacji. Używam go do oznaczania niedokończonego kodu, więc nie mogę o tym zapomnieć później. @Deprecated jest blisko, ale ostrzega na stronie dzwoniącego, a nie na stronie tworzenia. Używam zaćmienia. Coś w stylu #Warning w języku C#.ostrzeżenie force w java

+2

Czy używasz Eclipse? Możesz użyć // TODO w komentarzach, które pojawią się w widoku Zadania. – Etienne

Odpowiedz

6

Dlaczego po prostu nie dodać flagi w kodzie źródłowym, np. //TODO: czy coś? A następnie po prostu wyszukać wszystkie wystąpienia TODO w pliku? Możesz nawet mieć specjalną flagę, np. FINISHME lub coś podobnego.

Jeśli masz setki TODO w projekcie od zespołu, możesz filtrować według ciągu, np. Twoje inicjały w prawym górnym rogu menu zadań.

2

Utwórz adnotację, która wyświetla ostrzeżenie.

+1

co, podobnie jak rozszerzenie eclipse? brzmi jak ogromny ból. –

+0

Nie, wcale tak nie jest. –

+0

masz na myśli wyjścia ostrzeżenia w czasie wykonywania? –

1

można spróbować rzucić wyjątek, jeśli niedokończone metoda jest wywoływana (np)

throw new UnsupportedOperationException() 

(Albo można tworzyć własne Exception). Oczywiście będzie to pomocne tylko w czasie wykonywania (chyba że wykonasz wyszukiwanie lub coś w tym kodzie - ale Todo będzie lepszym rozwiązaniem)

A jeśli używasz Eclipse, możesz oznaczyć swój niedokończony kod przez // TODO i pojawi się na twojej liście zadań (i prawej rynnie, jeśli ją skonfigurowałeś). Oczywiście rzeczy mogą stać się bardzo głośne, jeśli masz dużo tagów Todo.

+0

nic dobrego, zmienia to sygnaturę metody, dodając klauzulę throws aż do hierarchii dziedziczenia. –

+2

@Dustin Getz: Wystarczy użyć podklasy RuntimeException lub Error. Nie ma to wpływu na hierarchię ani na osoby dzwoniące. –

+2

@Dustin Ponadto UnsupportedOperationException jest RuntimeException –

1

Robię to cały czas, wkładając "*** LEWO TUTAJ ***" lub takie. Ponieważ nie jest to poprawna Java lub C++ lub prawie jakakolwiek inna składnia języka, kompilator podaje komunikat o błędzie.

Oczywiście, że daje błąd, a nie ostrzeżenie. Jeśli chcesz w inny sposób pomyślnie skompilować, przypuszczam, że łatwą rzeczą byłoby napisanie oświadczenia, o którym wiesz, że wygeneruje ostrzeżenie kompilatora z komentarzem "zakończ to" lub cokolwiek innego.

0

Nie jestem pewien, czy jest coś takiego w java

ale tutaj jest coś, co może pomóc:

skompilować kod poniżej tak:

javac -Xprint verbose.java

public class verbose{ 

    public @interface SomeMessage { 
     String somevalue(); 
    } 


    @SomeMessage(
     somevalue = "WHOOOOHOOOO000000000000000" 
    ) 

    public static void main(){ 
     System.out.println("Hello"); 
    } 
} 
1

Kiedy chcę ostrzec użytkowników o wywołaniu metody, ja (pomyłkę) używam adnotacji wbudowanej @Deprecated, która generuje ostrzeżenie po stronie dzwoniącego. Właściwie ma to nieco inne znaczenie, ale mnie to nie obchodzi.

/** [Additional information...] 
* It is marked as deprecated to warn callers. */ 
@Deprecated public void methodForWhichIWantToCreateAWarning(); 
2

Znacznie lepiej niż przy użyciu przestarzałej adnotacji w mojej skromnej opinii adnotacja suppresswarnings.

@SuppressWarnings("XXX")

może być odnotowany prawie wszędzie i tak długo jak XXX nie jest ważne ostrzeżenie dostaniesz ostrzeżenie od zaćmienia temat.

+0

nie działa tutaj. Błąd: "Błąd składni na tokenach, błędne konstrukcje" – RSFalcon7