Clang AST Matchers: возможен ли фильтр по количеству? - PullRequest
1 голос
/ 28 февраля 2020

Я пытался написать простую программу проверки clang-tidy, которая будет проверять конструктор, который вызывает fopen() более одного раза. Для этого я пытался сопоставить конструктор с более чем одним fopen() вызовами. Я хочу найти потенциальную утечку памяти в случае, если во втором вызове fopen() произойдет какое-либо исключение.

class Dummy_File
{
  FILE *f1_, *f2_;

  public:
    Dummy_File(const char* f1, const char* f2, const char * mode)
    {
        f1_ = fopen(f1, mode);
        f2_ = fopen(f2, mode);
    }
};

Используя это

match cxxConstructorDecl(hasDescendant(callExpr(callee(functionDecl(hasName("fopen")))))).bind("x")

, я смог найти конструктор с помощью fopen. Но я хотел найти конструктор с более чем одним fopen. Мне было интересно, если это возможно для фильтрации на основе количества?

Я проверил совпадения логического сужения (allOf, anyOf, что угодно и только если) , но не нашел ничего, связанного с подсчетом.

...