2010-05-19 12 views
9

Me gustaría un mecanismo para lanzar una advertencia en tiempo de compilación de forma manual. Lo estoy usando para marcar el código sin terminar, así que no puedo olvidarlo más tarde. @Deprecated está cerca, pero avisa en el sitio del llamante, no en el sitio de creación. Estoy usando eclipse. Algo como #Advertencia en C#.fuerza de advertencia en java

+2

¿Estás utilizando Eclipse? Puede usar // TODO en los comentarios, aparecen en la vista Tareas. – Etienne

Respuesta

6

¿Por qué no agregar un indicador en el código fuente como //TODO: o algo así? ¿Y luego solo busca todas las ocurrencias de TODO en el archivo? Incluso podría tener alguna bandera especial como FINISHME o algo así.

Si tiene cientos de TODO en su proyecto del equipo, puede filtrar por una cadena, p. sus iniciales en los menús de la parte superior derecha del panel de tareas.

2

Cree una anotación que imprime una advertencia.

+1

¿qué, como una extensión de eclipse? suena como un gran dolor –

+0

No, nada de eso. –

+0

¿quiere decir que genera una advertencia en tiempo de ejecución? –

1

Se podría tratar de lanzar una excepción si se llama un método sin terminar (por ejemplo)

throw new UnsupportedOperationException() 

(O puede crear su propia Excepción). Obviamente, esto solo ayudará en tiempo de ejecución (a menos que haga una búsqueda o algo en su código, pero Todo sería una mejor solución para eso)

Y si usa eclipse, puede marcar su código inacabado con // TODO y se mostrará en su lista de tareas (y en el canal derecho si lo tiene configurado). Obviamente, las cosas pueden ser muy ruidosas si tienes muchas etiquetas de Todo.

+0

no es bueno, esto cambia la firma del método al agregar una cláusula throws en toda la jerarquía de herencia –

+2

@Dustin Getz: simplemente use una subclase de RuntimeException o Error. Esto no afecta la jerarquía o las personas que llaman. –

+2

@Dustin Además, UnsupportedOperationException es una RuntimeException –

1

Hago esto todo el tiempo simplemente poniendo "*** IZQUIERDA AQUÍ ***" o algo así. Como esto no es válido para Java o C++ o casi cualquier sintaxis de otro idioma, el compilador le da un mensaje de error.

Por supuesto que da un error y no una advertencia. Si desea compilar de otra manera con éxito, supongo que una cosa fácil de hacer sería poner una declaración que sepa que generará una advertencia de compilación con un comentario que diga "terminar esto" o lo que sea.

0

no estoy seguro de si hay algo así en java

pero aquí es algo que puede ayudarle a:

compilar el código de abajo de esta manera:

javac -Xprint verbose.java

public class verbose{ 

    public @interface SomeMessage { 
     String somevalue(); 
    } 


    @SomeMessage(
     somevalue = "WHOOOOHOOOO000000000000000" 
    ) 

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

Cuando quiero advertir a los usuarios acerca de llamar a un método, utilizo (incorrectamente) la anotación @Deprecated incorporada que genera una advertencia en el lado del llamante. En realidad, tiene un significado ligeramente diferente, pero no me importa.

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

Mucho mejor que usar la anotación desaprobada en mi humilde opinión, la anotación suprimir advertencias.

@SuppressWarnings("XXX")

se pueden anotar en casi todas partes y siempre que XXX no es una advertencia válida usted recibirá una advertencia de Eclipse sobre eso.

+0

no funcionó aquí. Error: "Error de sintaxis en token (s), construcciones fuera de lugar" – RSFalcon7

Cuestiones relacionadas