变得铿锵有力地修复头文件

问题描述 投票:10回答:2

我正在将目前用gcc编译的项目移动到clang,并且有一堆gcc没有生成的警告(-Winconsistent-missing-override)。 clang-tidy用于修复*.cpp文件中的这些错误,但是它没有触及hpp文件,因为在数据库中找不到编译命令(正如我所料)。

我正在使用ninja来构建项目,并使用ninja -t compdb cc cxx > .build/compile_commands.json来生成编译数据库。我试过跑:

clang-tidy-3.6 -p .build/      \
      $(find src/ -name *.cpp) \
      $(find src/ -name *.hpp) \
      --checks=misc-use-override --fix

修复错误。它拒绝触摸头文件抱怨:

Skipping .../src/header/file.hpp. Compile command not found.
c++ clang++ llvm-clang automated-refactoring clang-tidy
2个回答
10
投票

我通过指定--header-filter=src/选项来实现它。有趣的是,修复程序最终被多次应用,导致输出如下:

void f() override override override override override;

我通过分别在每个源文件上运行clang-tidy来解决这个问题。另请注意,使用<build-path>指定的-p还必须包含要应用样式的.clang-format配置。

这是我当前的命令迭代:

find src/ -name '*.cpp' -exec \
     clang-tidy-3.6 -p . --header-filter=src/ {}
               --checks=misc-use-override --fix

0
投票

正确使用“-header-filter”时要小心。在“标题”之前没有两个“减号”字符!不像在nishantjr回复。

如图所示:http://releases.llvm.org/3.9.0/tools/clang/tools/extra/docs/clang-tidy/index.html

在铿锵的9.0中仍然如此。

© www.soinside.com 2019 - 2024. All rights reserved.