Ctags: javascript: Obtido "ctags: Aviso: ignorando tag nula"

Criado em 25 abr. 2016  ·  18Comentários  ·  Fonte: universal-ctags/ctags

[yamato@x201]~/var/ctags-github% cat /tmp/foo.js 
if (true) {
    this[0] = function() {};
}

[yamato@x201]~/var/ctags-github% ./ctags -o - /tmp/foo.js 
ctags: Warning: ignoring null tag in /tmp/foo.js(line: 2)
[yamato@x201]~/var/ctags-github% js /tmp/foo.js 
[yamato@x201]~/var/ctags-github%
Parser buenhancement

Todos 18 comentários

Existe alguma atualização sobre isso?

Ou estou fazendo algo errado? O código que estou tentando marcar é Javascript / React :)

Aparentemente, está relacionado à desestruturação de objetos como:

    const { name, email } = user;

Não examinei bem o aviso.
No entanto, a entrada que você deu parece válida quando testei a entrada no comando do nó
Eu gostaria que você abrisse uma nova edição para as contribuições.
Se você é bom em JavaScript, gostaria de saber a especificação como referência.
Veja https://github.com/universal-ctags/ctags/issues/1949#issuecomment -457829914 como eu lutei.

const { name, email } = user;

name e email devem ser bem marcados.


[yamato@slave]~% node
> var user = {name: 'a', email: 'b'}
var user = {name: 'a', email: 'b'}
undefined
> const { name, email } = user;
const { name, email } = user;
undefined
> name
name
'a'

Se você é bom em JavaScript, gostaria de saber a especificação como referência.

Não tenho certeza se entendi sua pergunta, mas a especificação para a Destruição de Objeto está na especificação ECMAScript:
https://www.ecma-international.org/ecma-262/6.0/#sec -destructuring-atribuição

:)

Obrigado. É disso que preciso.

Por que esse problema não foi resolvido? Eu tenho o mesmo problema.

Obrigado. É disso que preciso.

como você removeu o aviso?

como você removeu o aviso?

Não retirei o aviso.

como você removeu o aviso?

Não retirei o aviso.

bem, eu tenho o mesmo problema, {A, B} = some_obj pode ser analisado corretamente por ctags.

Parece que ninguém vai consertar esse problema

Parece que ninguém vai consertar esse problema

Para a ligação destrutural, tentei uma vez.

[jet@living]/tmp% cd /tmp
cd /tmp
[jet@living]/tmp% git clone https://github.com/masatake/ctags.git
git clone https://github.com/masatake/ctags.git
Cloning into 'ctags'...
...
[jet@living]/tmp% cd ctags
cd ctags
[jet@living]/tmp/ctags% git checkout  origin/js-destructual-binding 
git checkout  origin/js-destructual-binding 
Note: switching to 'origin/js-destructual-binding'.
...
HEAD is now at 4eeac5b9 JavaScript: support more forms of destructuring assignments
[jet@living]/tmp/ctags% bash ./autogen.sh
bash ./autogen.sh
+ type autoreconf
...
optlib2c: translating optlib/inko.ctags to optlib/inko.c
+ ./misc/optlib2c optlib/inko.ctags
+ exit 0
[jet@living]/tmp/ctags% ./configure
./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
...
config.status: creating config.h
config.status: executing depfiles commands
[jet@living]/tmp/ctags% make -j 9
make -j 9
REPOINFO   main/repoinfo.h
make  all-recursive
make[1]: Entering directory '/tmp/ctags'
make[2]: Entering directory '/tmp/ctags'
...
  AR       libctags.a
  CCLD     ctags
  CCLD     mini-geany
make[2]: Leaving directory '/tmp/ctags'
make[1]: Leaving directory '/tmp/ctags'
[jet@living]/tmp/ctags% cat /tmp/bar.js 
cat /tmp/bar.js 
const { name, email } = user;

[jet@living]/tmp/ctags% ./ctags -o - /tmp/bar.js 
./ctags -o - /tmp/bar.js 
email   /tmp/bar.js /^const { name, email } = user;$/;" C
name    /tmp/bar.js /^const { name, email } = user;$/;" C

O ramo apresenta muitas mudanças.
Portanto, mesclá-lo com o branch master que usamos diariamente exige mais consideração.

this[0] = function() {};

Nesse caso, ctags não diz nada.

{
    this[0] = function() {};
}

Nesse caso, recebi um aviso. Esta será uma correção de dica importante para a entrada original.

Parece que ninguém vai consertar esse problema

Para a ligação destrutural, tentei uma vez.

[jet@living]/tmp% cd /tmp
cd /tmp
[jet@living]/tmp% git clone https://github.com/masatake/ctags.git
git clone https://github.com/masatake/ctags.git
Cloning into 'ctags'...
...
[jet@living]/tmp% cd ctags
cd ctags
[jet@living]/tmp/ctags% git checkout  origin/js-destructual-binding 
git checkout  origin/js-destructual-binding 
Note: switching to 'origin/js-destructual-binding'.
...
HEAD is now at 4eeac5b9 JavaScript: support more forms of destructuring assignments
[jet@living]/tmp/ctags% bash ./autogen.sh
bash ./autogen.sh
+ type autoreconf
...
optlib2c: translating optlib/inko.ctags to optlib/inko.c
+ ./misc/optlib2c optlib/inko.ctags
+ exit 0
[jet@living]/tmp/ctags% ./configure
./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
...
config.status: creating config.h
config.status: executing depfiles commands
[jet@living]/tmp/ctags% make -j 9
make -j 9
REPOINFO   main/repoinfo.h
make  all-recursive
make[1]: Entering directory '/tmp/ctags'
make[2]: Entering directory '/tmp/ctags'
...
  AR       libctags.a
  CCLD     ctags
  CCLD     mini-geany
make[2]: Leaving directory '/tmp/ctags'
make[1]: Leaving directory '/tmp/ctags'
[jet@living]/tmp/ctags% cat /tmp/bar.js 
cat /tmp/bar.js 
const { name, email } = user;

[jet@living]/tmp/ctags% ./ctags -o - /tmp/bar.js 
./ctags -o - /tmp/bar.js 
email /tmp/bar.js /^const { name, email } = user;$/;" C
name  /tmp/bar.js /^const { name, email } = user;$/;" C

O ramo apresenta muitas mudanças.
Portanto, mesclá-lo com o branch master que usamos diariamente exige mais consideração.

Já tentei, uma solução muito boa, obrigado.
Você fez esses ramos, tantos patches.

Oi

Embora isso não esteja contribuindo para o problema nos ctags em si, criei uma função shell ctags que ignora este aviso específico para arquivos JavaScript: https://gist.github.com/dietrichm/9e518549fd609173182ce36ac4726df2

Apenas no caso de você frequentemente executar ctags na linha de comando e desejar ocultar os avisos até que o problema seja corrigido.

Dietrich

Eu também recebo este aviso com a desestruturação de array:
const [lang, setLang] = useState("en")

@Strangehill , você poderia adicionar o mesmo comentário a # 1112?

é claro

Obrigada.

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

Questões relacionadas

songouyang picture songouyang  ·  15Comentários

jayceekay picture jayceekay  ·  13Comentários

liuchengxu picture liuchengxu  ·  8Comentários

EvanCarroll picture EvanCarroll  ·  14Comentários

fommil picture fommil  ·  19Comentários