3

我正在尝试设置clang-tidy在 C 项目中强制执行命名约定。该项目由多个外部源组成,并使用普通的 makefile 环境,因此没有类似的工具cmakebear可用于生成编译数据库。

这也是我想要的:使用我想clang-tidy为每个应该检查的文件选择性地调用的自定义环境。

我正在配置该工具,主要用于检查readability-identifier-naming. 为了测试,我有一个.c.h文件,都在同一个目录中,内容如下:

假人.c

#include "dummy.h"
#include "MISSING_module.h"

// EOF

假人.h

#ifndef _DUMMY_H_
#define _DUMMY_H_

#include <stdlib.h>

// EOF

我正在调用的命令是

clang-tidy dummy.c -checks='-*,readability-identifier-naming' -- -DCMAKE_EXPORT_COMPILE_COMMANDS=ON`

但是,clang-tidy仍然遵循#includeC 文件中的内容并检查现有标题:

dummy.h:4:10: error: 'stdlib.h' file not found [clang-diagnostic-error]
#include <stdlib.h>
          ^
Found compiler error(s).

有什么办法可以禁用它吗?clang-diagnostic-error甚至没有启用检查。或者是否有我应该知道的替代工具来强制执行命名约定?

4

1 回答 1

3

看你使用 clang-tidy 的方式:该--选项用于指定编译选项。

clang-diagnostic-error与 clang-tidy 本身没有任何关系。这些是编译器警告,您不能将其关闭。Clang-tidy 需要分析的文件能够编译以构建它在内部用于检查的 AST。您可以clang-diagnostic-errorclang-tidy 文档中找到更多信息。

于 2019-07-08T09:39:59.157 回答