Ctags: javascript: получил "ctags: предупреждение: игнорирование нулевого тега"

Созданный на 25 апр. 2016  ·  18Комментарии  ·  Источник: 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

Все 18 Комментарий

Есть какие-нибудь обновления по этому поводу?

Или я что-то не так делаю? Код, который я пытаюсь пометить, - это Javascript / React :)

По-видимому, это связано с деструктуризацией объекта, например:

    const { name, email } = user;

Я плохо изучил предупреждение.
Однако введенные вами данные выглядят действительными, поскольку я тестировал ввод в команде узла
Я бы хотел, чтобы вы открыли новый выпуск для ввода.
Если вы хорошо разбираетесь в JavaScript, я хотел бы знать спецификацию как справочную.
См. Https://github.com/universal-ctags/ctags/issues/1949#issuecomment -457829914, как я боролся.

const { name, email } = user;

name и email должны быть правильно помечены.


[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'

Если вы хорошо разбираетесь в JavaScript, я хотел бы знать спецификацию как справочную.

Не уверен, получил ли я ваш вопрос, но спецификация деструктуризации объектов находится в спецификации ECMAScript:
https://www.ecma-international.org/ecma-262/6.0/#sec -destructuring-assignment

:)

Спасибо. Вот что мне нужно.

Почему этот вопрос не решается? У меня такая же проблема.

Спасибо. Вот что мне нужно.

как убрали предупреждение?

как убрали предупреждение?

Я не удалял предупреждение.

как убрали предупреждение?

Я не удалял предупреждение.

ну, у меня такая же проблема, {A, B} = some_obj можно правильно проанализировать с помощью ctags.

Похоже, никто не собирается исправлять эту проблему

Похоже, никто не собирается исправлять эту проблему

Для деструктурной привязки пробовал один раз.

[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

В ветке очень много изменений.
Поэтому слияние его с основной веткой, которую мы используем ежедневно, требует большего внимания.

this[0] = function() {};

В этом случае ctags ничего не говорит.

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

В этом случае я получил предупреждение. Это будет важное исправление подсказки для исходного ввода.

Похоже, никто не собирается исправлять эту проблему

Для деструктурной привязки пробовал один раз.

[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

В ветке очень много изменений.
Поэтому слияние его с основной веткой, которую мы используем ежедневно, требует большего внимания.

Пробовал, очень хорошее решение, спасибо.
Вы сделали эти ветки, столько заплаток.

Привет

Хотя это не способствует возникновению проблемы в самих тегах ctags, я создал функцию оболочки ctags которая игнорирует это конкретное предупреждение для файлов JavaScript: https://gist.github.com/dietrichm/9e518549fd609173182ce36ac4726df2

На всякий случай, если вы часто запускаете ctags в командной строке и хотите скрыть предупреждения, пока проблема не будет исправлена.

Дитрих

Я также получаю это предупреждение при деструктуризации массива:
const [lang, setLang] = useState("en")

@Strangehill , не могли бы вы добавить такой же комментарий к # 1112?

конечно

Спасибо.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

jespinal picture jespinal  ·  8Комментарии

liuchengxu picture liuchengxu  ·  8Комментарии

trevordmiller picture trevordmiller  ·  9Комментарии

jagjordi picture jagjordi  ·  9Комментарии

jayceekay picture jayceekay  ·  13Комментарии