Ctags: No detecta un símbolo de httpd (regresión)

Creado en 13 dic. 2016  ·  8Comentarios  ·  Fuente: universal-ctags/ctags

Hola,

Las últimas etiquetas universales (249c3c0c2a974ab03f7c307684563239096399a8) no detectan el símbolo ap_os_create_privileged_process en este código (incluya / ap_mpm.h de httpd 2.4.18):

AP_DECLARE(apr_status_t) ap_os_create_privileged_process(
    const request_rec *r,
    apr_proc_t *newproc,
    const char *progname,
    const char * const *args,
    const char * const *env,
    apr_procattr_t *attr,
    apr_pool_t *p);

Este comando devolvió una salida vacía:

ctags -x --C-kinds=fpvx --languages=+C --language-force=C include/ap_mpm.h|grep ap_os_create_privileged_process

Sin embargo, la edición de ctags universales del 7 de mayo de 2016 (e5b7a2508db6e1374ea78a300cc9b45f4b26b02a) lo detectó correctamente:

ctags -x --C-kinds=fpvx --languages=+C --language-force=C include/ap_mpm.h|grep ap_os_create_privileged_process
ap_os_create_privileged_process prototype   107 include/ap_mpm.h AP_DECLARE(apr_status_t) ap_os_create_privileged_process(

Ni siquiera puedo arreglar esto con ninguna opción -I . Es necesario utilizar el analizador OldC en este caso.

Gracias.

Todos 8 comentarios

Lamento llegar tarde. Tengo una pregunta. e5b7a25 es encontrado por git bisect? ¿o no?
Creo que este error puede introducirse cuando @pragmaware trabajó en el atributo de la función que le pedí que

Esto es un error, pero supongo que puede ser difícil de solucionar.

No tengo tiempo para arreglarlo ahora, pero este error tiene un impacto en mi vida diaria. Encontraré tiempo de todos modos.
Cuando encuentre tiempo, me lo asignaré. Eso significa que hasta que el campo asignado sea nulo, @pragmaware , tiene un cambio para solucionar esto :-P.

Tal vez el analizador podría tener heurísticas para este tipo de cosas, pero bueno, dejo que @pragmaware decida si vale la pena / es factible sin romper muchas cosas.

Pero con su nuevo preprocesador, puede solucionar fácilmente el problema con -D 'AP_DECLARE(t)=t' :

$ ./ctags -x --C-kinds=+p -D 'AP_DECLARE(t)=t' /tmp/1242.c
ap_os_create_privileged_process prototype     1 /tmp/1242.c      AP_DECLARE(apr_status_t) ap_os_create_privileged_process(

Sí, esa parte del analizador fue primero demasiado "permisiva", luego la hice demasiado estricta. Supongo que tendré que encontrar una manera de hacerlo llegar a algún punto intermedio. Intentaré arreglarlo ahora.

@pragmaware , gracias.

¿Podrías pedir escribir sobre la poderosa opción -D a http://docs.ctags.io/en/latest/parser-cxx.html ?
Esta no es la primera vez que le hacemos saber a un usuario la opción -D .

Cerrado por # 1245

Ctags 6e839be606cbc750e6e6a7e6d16fe375adbef5ca detecta bien este símbolo independiente. Pero el archivo de encabezado inicial contiene el siguiente preámbulo para este símbolo:

AP_DECLARE_HOOK(int, mpm, (apr_pool_t *pconf, apr_pool_t *plog, server_rec *server_conf))

/**
 * comment ...
 */

AP_DECLARE(apr_status_t) ap_os_create_privileged_process(
    const request_rec *r,
    apr_proc_t *newproc,
    const char *progname,
    const char * const *args,
    const char * const *env,
    apr_procattr_t *attr,
    apr_pool_t *p);

Y por alguna razón, ctags no lo detecta en este caso. Este problema puede estar relacionado con el número 1251.

Hm, este caso es bastante difícil de arreglar sin romper otros casos.
Es decir, una versión anterior del analizador captó este pero se rompió en otros lugares ...

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

JulienPivard picture JulienPivard  ·  16Comentarios

songouyang picture songouyang  ·  15Comentarios

masatake picture masatake  ·  18Comentarios

jayceekay picture jayceekay  ·  13Comentarios

cweagans picture cweagans  ·  8Comentarios