Ctags: Não detecta um símbolo de httpd (regressão)

Criado em 13 dez. 2016  ·  8Comentários  ·  Fonte: universal-ctags/ctags

Olá,

As últimas ctags universais (249c3c0c2a974ab03f7c307684563239096399a8) não detectam o símbolo ap_os_create_privileged_process neste código (inclua / 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 retornou uma saída vazia:

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

No entanto, a edição de ctags universais de 7 de maio de 2016 (e5b7a2508db6e1374ea78a300cc9b45f4b26b02a) o detectou corretamente:

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(

Não consigo nem consertar isso com nenhuma opção de -I . É necessário usar o analisador OldC neste caso.

Obrigada.

Todos 8 comentários

Desculpe pelo atraso. Eu tenho uma pergunta. e5b7a25 é encontrado por git bisect? ou não?
Acho que esse bug pode ser introduzido quando @pragmaware trabalhou no atributo para a função que pedi a ele para corrigir. Este e o # 1241 podem detectar o mesmo bug.

Este é um bug, mas pode ser difícil de consertar, eu acho.

Não tenho tempo para consertar agora, mas esse bug tem impactos na minha vida diária. Vou encontrar tempo de qualquer maneira.
Quando eu encontrar tempo, vou atribuir isso a mim. Isso significa que até que o campo responsáveis ​​seja nulo, @pragmaware , você tem uma alteração para corrigir isso :-P.

Talvez o analisador possa ter heurísticas para esse tipo de coisa, mas bem, deixo @pragmaware decidir se vale a pena / viável sem quebrar muitas coisas.

Mas com seu novo pré-processador, você pode facilmente corrigir o problema com -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(

Sim, essa parte do analisador foi primeiro muito "permissiva", depois tornei-a muito rígida. Acho que vou ter que encontrar uma maneira de fazer isso ir para algum lugar no meio. Vou tentar consertar agora.

@pragmaware , obrigado.

Você poderia escrever sobre a poderosa opção -D para http://docs.ctags.io/en/latest/parser-cxx.html .
Esta não é a primeira vez que informamos a um usuário -D option.

Fechado via # 1245

Ctags 6e839be606cbc750e6e6a7e6d16fe375adbef5ca detecta bem este símbolo autônomo. Mas o arquivo de cabeçalho inicial contém o seguinte 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);

E, por algum motivo, os ctags não o detectam neste caso. Esse problema pode estar relacionado a # 1251.

Hm, este caso é bastante difícil de consertar sem quebrar outros casos.
Ou seja, uma versão mais antiga do analisador detectou este, mas quebrou em outros lugares ....

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

alphaCTzo7G picture alphaCTzo7G  ·  7Comentários

songouyang picture songouyang  ·  15Comentários

trevordmiller picture trevordmiller  ·  9Comentários

jayceekay picture jayceekay  ·  13Comentários

blackb1rd picture blackb1rd  ·  8Comentários