#c #code-analysis #clang
#c #анализ кода #clang
Вопрос:
Пожалуйста, кто-нибудь знает, есть ли у clang возможность возвращать определение или объявление символа (или ссылку)?
Я имею в виду: есть опция для исполняемого файла clang с именем -code-completion-at=path_to_file:line:coloumn clang просмотрит код и вернет вам строки завершения (т.Е., Если есть, например, std::string_type_variable. .. он возвращает вам все методы и атрибуты, которые вы можете вызвать из std::string .
Теперь я хочу, чтобы clang возвращал файл и координаты, с которых начинается определение символов. так что, если это std::string_type_variable — я хочу вернуть мне координаты, где я записал std::string переменную; в коде.
Я хочу использовать его в vim вместо устаревшей функциональности cscope / ctags (система тегов, использующая ctags / cscope в vim, не знает контекста — его вообще нельзя использовать в больших проектах) Я знаю, что есть продолжение clang (http://blog.wuwon.id.au/2011/10/vim-plugin-for-navigating-c-with.html ) но это не работает правильно (на самом деле у меня вообще не работает)
Возможно ли это вообще? это не должно быть так сложно, если он может вернуть завершение, он, вероятно, уже знает, откуда он прочитал определение переменной…
Комментарии:
1. Почему это должно быть
clang
так?2. Это не обязательно должно быть … вы знаете о чем-то еще? Достаточно быстро?
3. В Vim теперь есть плагин clang_complete и YouCompleteMe, который должен соответствовать вашим требованиям.
Ответ №1:
Clang предоставляет такую функциональность с помощью разделяемой библиотеки libclang, но есть простой пример того, как ее использовать. Если вы создали clang из исходного кода, взгляните на исполняемый файл c-index-test . Его источник находится в tools / c-index-test.
Комментарии:
1. спасибо, я посмотрю … хотя на первый взгляд это как-то не работает 🙂
2. Итак, я играл с c-index-test и обнаружил много функциональных возможностей. Большое спасибо, это именно то, что мне было нужно. 🙂