在clang-tidy中匹配来自现有上下文的某些函数声明

时间:2019-07-02 06:26:24

标签: c++ abstract-syntax-tree googletest cppunit clang-tidy

我想编写一个自定义的clang-tidy检查以将代码从cppunit移植到googletest。

class SomeTest: public CPPUNIT_NS::TestFixture {
  CPPUNIT_TEST_SUITE(SomeTest);
  CPPUNIT_TEST(shouldDoSomething);
  CPPUNIT_TEST_SUITE_END();

...

protected:
  void shouldDoSomething();
  void otherFunction(int times = 0);
};

CPPUNITFRAMEWORK_TEST_SUITE_REGISTRATION(SomeTest);

...

void SomeTest::shouldDoSomething() {...}
void SomeTest::otherFunction(int) {}

我希望能够替换

void SomeTest::shouldDoSomething() {...}

使用

TEST_F(SomeTest, shouldDoSomething) {...}

我可以将CPPUNIT_TEST(...)宏中的函数名称与

匹配
stringLiteral(hasAncestor(callExpr(callee(functionDecl(hasName("getTestNameFor"))))))

但是我不知道是否可以重复使用此信息以匹配函数声明,因此我实际上可以将其替换为googletest

0 个答案:

没有答案