Clang-Tidy更改了c文件的签名,但没有更改关联的标头

时间:2017-05-26 09:27:57

标签: clang const signature clang-tidy

我有这个c文件

#include "pointer.h"
int switcher(int * i) {
 int a = *i;
    switch (a) {
        case 1: 
            return 0;
        default: 
            return 1;
    }
}  

且关联的标题只包含一行

int switcher(int * i);

这使用clang编译。

如果我现在使用clang-tidy(clang-tidy -fix pointer.c -checks = * -header-filter =。*)我得到以下结果

#include "pointer.h"
int switcher(const int * i) {
    int a = *i;
    switch (a) {
        case 1: 
            return 0;
        default: 
            return 1;
    }
}

和标题

#ifndef _HOME_GWE_PROJEKTE_CLANG_TIDY_POINTER_H
#define _HOME_GWE_PROJEKTE_CLANG_TIDY_POINTER_H

int switcher(int * i);

#endif

函数的签名已从(int i)更改为(const int i),这很好。头文件也被更改(警卫),但签名保持不变。从而。代码不再编译。

我的compile_commands.json看起来像这样

[
{
  "directory": "/home/gwe/projekte/clang/tidy",
  "command": "clang -c pointer.c -I.",
  "file": "pointer.c"
}
]

这是一个铿锵有力的错误还是我做错了? 谢谢你的帮助?

最好的问候,格奥尔格

1 个答案:

答案 0 :(得分:1)

此错误已报告给llvm.org。

bugs.llvm.org//show_bug.cgi?id=33219