如何将 override 关键字添加到大型 C++ 代码库中?

Sop*_*hit 5 c++ overriding

我有一个包含数千个源文件的大型 C++ 代码库。我想override在合适的地方添加关键字。我的一些明显被覆盖的函数实际上并没有覆盖基类中的任何函数,我想抓住这些或至少让它们脱颖而出。

我尝试手动完成,但代码库太大。我尝试使用 clang-modernize,但它没有提供有用的说明。我还担心它无法理解为 Visual Studio 编写的代码库。

如何将 override 关键字添加到我的代码库中,而无需在任务上花费数周或更长时间?

vlp*_*vlp 2

看来 clang-modernize 已经转变为clang-tidy支持这一点。

示例代码(test.cpp):

struct Base {
    virtual void reimplementMe(int a) {}
};
struct Derived : public Base  {
    virtual void reimplementMe(int a) {}
};
Run Code Online (Sandbox Code Playgroud)

clang-tidy 调用(试运行):

clang-tidy-6.0 -checks='modernize-use-override' test.cpp -- -std=c++11
Run Code Online (Sandbox Code Playgroud)

要实际修复您的代码(请确保有一个有效的备份):

clang-tidy-6.0 -checks='modernize-use-override' -fix test.cpp -- -std=c++11
Run Code Online (Sandbox Code Playgroud)

给予:

struct Base {
    virtual void reimplementMe(int a) {}
};
struct Derived : public Base  {
    void reimplementMe(int a) override {}
};
Run Code Online (Sandbox Code Playgroud)

注意:使用了这篇精彩文章中的示例——查看详细说明并检查下一部分其中描述了如何转换更大的项目。

祝你好运!