Описание тега libtooling

LibTooling - это библиотека для поддержки написания автономных инструментов на основе Clang.
2 ответа

clang libTooling: Как узнать, из какого заголовка вышел элемент AST?

Примеры, найденные в Интернете для инструментов clang, всегда выполняются на игрушечных примерах, которые обычно являются действительно тривиальными программами на Си. Я создаю инструмент, который выполняет преобразования исходного кода в код C++, ч…
22 сен '14 в 01:27
0 ответов

Неустановленный шаблон функции / класса ast не генерируется clang

Я работаю над синтаксическим анализатором C/C++, основанным на clang libtooling. Я использую AST, сгенерированный clang для разбора кода. Недавно я заметил, что для шаблонного класса или функции, которая не является экземпляром Clang, не генерируетс…
0 ответов

Может ли addToCallGraph сделать все для меня, чтобы сгенерировать граф вызовов?

Я хочу сгенерировать граф вызовов для конкретной функции в файле.cpp. Я получаю функцию decl с помощью AST Matcher. Затем я передаю decl в функцию addToCallGraph; clang::CallGraph CG; CG.addToCallGraph(std::move(function_decl)); После этого я пытаюс…
25 апр '17 в 22:26
1 ответ

Функция обработки CLang LibTooling Аргументы шаблона

Я хочу обрабатывать аргументы шаблона по-разному, так что для кода: template <class T> class A { public: A() {} }; void faa(A<int>& param); Я хотел бы знать, что param является специализацией шаблона и получить доступ к его параметра…
06 авг '15 в 16:58
2 ответа

Как правильно сопоставить #include (или #defines) с помощью libtooling Clang?

Я пишу инструмент рефакторинга libtooling. У меня есть класс, скажем Fooопределяется в заголовке foo.h, Я хочу увидеть, если foo.h включен в файл. В настоящее время, чтобы проверить, если bar.cc включает в себя foo.hЯ просто соответствую, используя …
19 ноя '14 в 23:53
2 ответа

Как получить исходное местоположение #includes, используя clang libtooling?

Есть ли способ получить clang::SourceLocation для каждого #include в файле его clang::FileID или же clang::FileEntry или что-то?
17 апр '17 в 09:09
1 ответ

Повторная обработка ASTUnit с относительными путями включения заголовка завершается неудачно

Я использую libclang's LibTooling получить данные о завершении кода из исходных файлов C++. ASTUnits генерируются из файла compile_commands.json, созданного с помощью CMake с Ninja как генератор. В командах вызова компилятора есть относительные пути…
15 июн '17 в 08:56
1 ответ

Clang libtooling: определить расположение макроса

У меня есть заголовок header.h с макроопределением, которое расширяется до определения класса и исходного файла test.cpp который включает в себя header.h и использует этот макрос. Тогда я использую RecursiveASTVisitor посетить всех CXXRecordDecl"S. …
20 сен '15 в 19:38
1 ответ

Как получить имена аргументов указателей на функции, используя clang LibTooling?

Скажем, я анализирую такой код: struct Foo { void(*setParam)(const char* name, int value); }; Я использую Clang LibTooling и получаю FieldDecl на setParam, Я подумал, что могу получить типы аргументов, например, так: auto ft = fieldDecl->getFunct…
24 дек '18 в 08:25
0 ответов

Как собрать Clang LibTooling на Mac OS?

Я хочу использовать LibTooling clang на Mac OS X Yosemite. Документы Clang показывают только, как создать clang и llvm, но мне нужен LibTooling, а не целый clang (xcode уже предоставил clang и llvm). Как собрать LibTooling, не создавая еще один лязг?
01 ноя '14 в 11:46
1 ответ

Инструмент лягушка: включить путь

Я хотел бы изменить путь включения моего инструмента лязга в соответствии с вводом. Когда я запускаю приведенный ниже код в примере тестового файла, у меня появляется ошибка компиляции "заголовок не найден". #include "clang/Frontend/FrontendActions.…
05 авг '18 в 15:44
1 ответ

Как исключить встроенную / системную функцию во время анализа функции clang libtooling

Я пытаюсь проанализировать функции с помощью Clang libtooling. Вот исходный код, который я хочу проанализировать: #include <stdio.h> int main(){ int a = 100; printf("a==%d", a); } Когда я запустил свой инструмент, чтобы получить все функции, у…
08 июл '17 в 21:47
1 ответ

Запустите ClangTool для определенных файлов, указанных в командной строке

Я работаю с Clang Libtooling. Мне нужно запустить мой clang MyFrontendAction для определенных файлов, указанных в командной строке. CommonOptionsParser OptionsParser(argc, argv, MyToolCategory); ClangTool Tool(OptionsParser.getCompilations(), Option…
07 июл '15 в 14:24
1 ответ

Clang Ast посетитель для объявления одной переменной нескольких строк

Я новичок в разработке Clang libTooling. рассмотрим следующее объявление переменной int i, j, k = 10; ^ ^ Для моего требования проекта я хочу захватить все выражение объявления, включая "i", "j" и "k". Как захватить полное выражение объявления, вклю…
0 ответов

Извлечение вызова функции в коде AC с использованием Clang

Я хочу написать программу, которая разлагает выражения (в коде C), в которых они имеют вызовы функций, и извлекает каждый вызов функции в переменную. Например: x = A() + B(); следует изменить на: a = A(); b = B(); x = a + b; Я пишу это, используя Cl…
1 ответ

Добавить файл памяти в Clang CompilerInstance

Я пытаюсь создать инструмент с помощью clang, и мне было интересно, возможно ли добавить файл включения из памяти в CompilerInstance препроцессор.Моя цель - добавить #include <my_globals.hpp> в мои файлы и динамически включить этот файл с соот…
06 июл '17 в 08:31
0 ответов

Как использовать AST как для пользовательского интерфейса, так и для статического анализа

Я работаю над проектом на основе libTooling, где я написал пользовательский класс действий внешнего интерфейса, ссылаясь на это. Теперь я хочу запустить статический анализ clang в том же инструменте. В настоящее время я снова запускаю инструмент для…
2 ответа

Как я могу использовать LibTooling/Clang в Visual Studio?

Я пытаюсь использовать LibTooling для замены имен функций и переменных в файлах C-кода. Поэтому я скачал llvm и следовал инструкциям, чтобы настроить его в Windows, используя GMake и Visual Studio 2015. Есть много руководств (например, этого), котор…
21 окт '15 в 09:28
1 ответ

Исключение при запуске пользовательского инструмента внешнего интерфейса для некоторых входных файлов.

Я написал пользовательский инструмент внешнего интерфейса Clang по следующей ссылке. http://clang.llvm.org/docs/RAVFrontendAction.html Теперь я даю исходный код Clang самому своему инструменту внешнего интерфейса для статического анализа. Мой инстру…
0 ответов

Как использовать clang libtooling для изменения определенного определения ctor

Я просто хочу переписать конкретное определение ctor. Чтобы найти что-то, что нужно изменить, я использую "нормальный" ". DeclarationMatcher ClassMatcher2 = cxxRecordDecl(isDerivedFrom("X"), has(fieldDecl( hasType( cxxRecordDecl( isDerivedFrom("AA")…
02 дек '15 в 09:06