2011-12-27 13 views
5

Tengo curiosidad si es posible utilizar una anotación en una clase o método que, durante o antes del tiempo de ejecución, reemplaza los comentarios con el registro de la cadena de comentario. Por ejemplo, si en android:Reemplazar el comentario de Java con el registro durante o antes del tiempo de ejecución

@LogComments 
class MyActivity extends Activity { 
    @Override public void onCreate(Bundle b) { 
     super.onCreate(b); 
     // set some local vars 
     int a = 1; 
     int b = 2; 
    } 
} 

se traduciría en algo así como

class MyActivity extends Activity { 
    @Override public void onCreate(Bundle b) { 
     super.onCreate(b); 
     Log.d("TAG", "set some local vars"); 
     int a = 1; 
     int b = 2; 
    } 
} 
+3

Eso tendría que ser antes de la compilación, los comentarios no se conservan en los archivos de clase. – Mat

+1

No creo que exista tal herramienta y no creo que sea una buena idea. Los registros están destinados a rastrear lo que hace el prorgam en la etapa de depuración (y, por lo general, esos registros deben eliminarse). Los registros también pueden usarse para algunos registros de alto nivel, como informes de errores o para ayudar a los desarrolladores a usar una herramienta. Los comentarios están destinados a explicar la parte difícil del código. Ellos no tienen el mismo intento. * – Snicolas

+1

Ah, y en Android, es más que recomendable eliminar cada llamada al registro antes de liberar un producto. Por lo general, a través de la ofuscación – Snicolas

Respuesta

1

Fuera de la caja. No, no hay nada que exista para permitir esto.

Ahora, si quisiera compilar esto usted mismo, podría crear algún tipo de extensión del compilador que le permita analizar el archivo y traducir los comentarios en expresiones de registro dependiendo de la anotación que esté presente. Pero esto tendría que ocurrir como un paso de la fase de compilación porque los comentarios no están separados del archivo de clase, por lo que no habría forma de que ocurriera en el tiempo de ejecución.

Pero, estás hablando de un proyecto lateral bastante grande para crear algo como esto. Además, existen limitaciones para este enfoque, como escribir los valores variables en el tiempo de ejecución que no sería posible sin agregar algún tipo de lenguaje de expresión a los comentarios. Al final creará algo complejo frente a algo que ya existe, es robusto y se usa millones de veces al usar la API.

+0

esto es interesante, ¿alguna vez has hecho esto antes? Si es así, ¿tienes alguna lectura recomendada sobre el tema en general? – dskinner

+0

Parece complejo de hecho. Y no todos los comentarios pueden transformarse en una llamada de registro de una manera directa. – user802421

+0

¿Está buscando algo en particular? Hice algunas búsquedas breves hace un tiempo y encontré Polyglot for java http://www.cs.cornell.edu/projects/polyglot/ pero tendré que investigar un poco más más adelante. – dskinner

0

No, esto no es posible porque se eliminan los comentarios en tiempo de ejecución. Lo mejor que puedo pensar es leer el javadoc en tiempo de ejecución y registrarlos. Pero eso no incluye comentarios que no sean de javadoc.

0

¿Qué estás tratando de lograr?

Si desea habilitar el inicio de sesión por clase, puede utilizar algún tipo de indicador (la finalización estática final lo hará) que deshabilitará o habilitará el registro. Eche un vistazo a este hilo: How do I enable/disable log levels in Android? para obtener más consejos sobre cómo iniciar sesión en Android.

+0

Ya tengo un método estático para manejar los registros vinculados a mi instancia de la aplicación android y en base a la construcción de la hormiga propiedades. El logro es saber cómo lograr estos elementos, ya sea antes o durante el tiempo de ejecución de Java. El problema que generó la pregunta se puede ver en un comentario sobre la pregunta principal, pero una solución para ese tema es irrelevante para la pregunta. – dskinner

Cuestiones relacionadas