1

我在选择的代码库上运行了 clang-tidy,并注意到一些类型定义,包括模板参数被错误地替换为具体类型。我设法用这个示例文件 test.cc 至少复制了其中一个问题:

template <typename T>
struct Test
{
    typedef T test_1;
    typedef T test_2;
    typedef T test_3;
    typedef T test_4;
    typedef T test_5;
    typedef T test_6;
    typedef T test_7;
    typedef T test_8;
    typedef T test_9;
    typedef T test_10;
    typedef T test_11;
};

int main()
{
    Test<int> test;

    return 0;
}

在此文件上运行clang-tidy-6.0 -checks=modernize* test.cc会导致警告将所有typedefs替换为usings,但奇怪的是,第三个和第四个 typedef 替换Tint

/home/john/test/test.cc:6:2: warning: use 'using' instead of 'typedef' [modernize-use-using]
        typedef T test_3;
        ^~~~~~~~~~~~~~~~~
        using test_3 = int
/home/john/test/test.cc:7:2: warning: use 'using' instead of 'typedef' [modernize-use-using]
        typedef T test_4;
        ^~~~~~~~~~~~~~~~~
        using test_4 = int

T正如预期的那样,其余的人都有。出于某种原因,这种行为似乎只在有 11 个或更多类型定义时才会发生。

这是一个已知的错误?有没有一种解决方法,所以我可以让 clang-tidy 自动应用修复,而不会错误地替换一堆 typedef?

4

0 回答 0