Как найти методы установки и получения с помощью сопоставителей Clang AST? [закрыто]C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как найти методы установки и получения с помощью сопоставителей Clang AST? [закрыто]

Сообщение Anonymous »

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

Код: Выделить всё

struct S {
int m_x;

int getX()                 // getter
{
return m_x;
}

void setX(int x)           // setter
{
m_x = x;
}
};
Для обоих типов методов я хочу проверить, содержит ли тело один
оператор. Тело метода получения должно представлять собой оператор return с возвращаемым
значением члена класса. Тело установщика должно представлять собой оператор назначения
, который присваивает переданный параметр члену класса. (Это
возможно, не достаточно толерантный набор критериев на практике, но меня
удовлетворит это в первом приближении.)
Я обнаружил, что Я могу использовать средство сопоставления cxxMethodDecl, чтобы найти все методы,
но неясно, как копаться в телах или проверять различные
свойства. Ни один из примеров в документации (ссылка выше) не делает этого; самым близким кажется пример:

Код: Выделить всё

cxxConstructorDecl(
isCopyConstructor()
).bind("prepend_explicit")
но, похоже, это зависит от существования примитивного сопоставителя

Код: Выделить всё

isCopyConstructor
для классификации тела метода (или, возможно, просто его
сигнатуры? в документации не сказано, что на самом деле делает любой из них),
и нет isSetter или подобного.< /p>
Как написать выражение соответствия, чтобы найти все методы установки и получения
в единице перевода?

Подробнее здесь: https://stackoverflow.com/questions/791 ... t-matchers
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Получение источника AST Clang's AST
    Anonymous » » в форуме C++
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Изучение того, как использовать Clang Ast Matchters для внедрения правил или кодовых кодов Clang-Tidy
    Anonymous » » в форуме C++
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Clang AST Matchers: как найти функцию с определенным именем?
    Anonymous » » в форуме C++
    0 Ответы
    36 Просмотры
    Последнее сообщение Anonymous
  • Org.mockito.Exceptions.misusing.InvalidUseOfMatchersException: Недопустимое использование сопоставителей аргументов
    Anonymous » » в форуме JAVA
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous
  • Издевательский лист в junit дает недопустимое использование исключения сопоставителей
    Anonymous » » в форуме JAVA
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»