45得票3回答
在clang-tidy中忽略系统头文件

tldr; 如何在clang-tidy中隐藏系统头文件中的警告? 我有以下的最小示例源文件,其中会在系统头文件中触发 clang-tidy 警告: #include <future> int main() { std::promise<int> p; p...

14得票4回答
如何在使用Clang和LibTooling时使用标准库

我想使用Clang和LibTooling创建一些C++源代码分析和转换工具。我按照这个教程构建了Clang和LibTooling,并且已经能够运行和创建一些分析工具以及使用我构建的Clang二进制文件编译C++程序。然而,如果我在源文件或我的工具中包含标准库的头文件,我会遇到编译或运行源文件/...

13得票1回答
clang:自定义属性在AST中不可见

我按照官方手册描述,在clang中实现了自定义属性: http://clang.llvm.org/docs/InternalsManual.html#how-to-add-an-attribute 因此,我将以下代码添加到Attr.td中:def MyAttr: InheritableAttr...

10得票1回答
OCLint ASTMatcher规则。匹配NS_ENUM

我正在尝试创建一个OCLint规则,它可以匹配typedef enum和typedef NS_ENUM声明,但是进展不太顺利。 我有一个Objective-C文件(TestClass.m),其中包含以下枚举声明:typedef NS_ENUM(NSInteger, TestEnum) { ...

9得票2回答
如何使用Clang的libtooling来正确匹配#include(或#define)?

我正在编写一个libtooling重构工具。我有一个类,假设叫做Foo,它在一个名为foo.h的头文件中定义。我想知道foo.h是否被包含在一个文件中。目前,要检查bar.cc是否包含foo.h,我只是使用recordDecl(hasName("Foo"))进行匹配。 这个方法有效,因为如果b...

7得票2回答
如何在clang的AST中查找隐式删除的默认构造函数?

考虑在foo.cc中的以下结构定义: struct Foo { int &bar; }; 因为bar具有引用类型,隐式平凡的默认构造函数Foo::Foo()被隐式删除。然而,这个事实似乎没有反映在clang生成的AST中。例如,运行clang -Xclang -ast-dum...