Clang
梦在哪里
coder
展开
-
使用Clang作为库 —— 为应用程序选择正确的接口
为应用程序选择正确的接口1. LibClang2. Clang Plugins3. LibTooling本文为译文,点击此处查看原文。Clang提供了用于编写需要有关程序的语法和语义信息的工具的基础设施。本文将简要介绍编写clang工具的不同方法,以及它们的优缺点。1. LibClangLibClang是clang的一个稳定的高级C接口。当你有疑问时,LibClang可能是您想要使用的接口...原创 2019-05-30 10:52:03 · 1274 阅读 · 0 评论 -
使用Clang作为编译器 —— ThreadSanitizer
ThreadSanitizer1. 介绍2. 如何构建3. 支持的平台4. 使用(Usage)4.1 __has_feature(thread_sanitizer)4.2 __attribute__((no_sanitize("thread")))5. 黑名单(Blacklist)6. 限制7. 当前的状态8. 更多的信息本文为译文,点击此处查看原文。1. 介绍ThreadSanitizer...原创 2019-06-05 17:51:50 · 2505 阅读 · 0 评论 -
使用 Clang Tools —— ClangCheck
本文为译文,点击此处查看原文。ClangCheck 是一个围绕 LibTooling 的小的 wrapper,可以用来进行基本的错误检查和 AST 转储。$ cat <<EOF > snippet.cc> void f() {> int a = 0> }> EOF$ ~/clang/build/bin/clang-check snippe...原创 2019-06-05 18:02:11 · 2049 阅读 · 0 评论 -
使用 Clang Tools —— ClangFormat
ClangFormat1. 独立的工具2. Vim 集成3. Emacs 集成4. BBEdit 集成5. CLion 集成6. Visual Studio 集成7. 用于补丁重新格式化的脚本(Script for patch reformatting)本文为译文,点击此处查看原文。ClangFormat描述了一组构建在 LibFormat 之上的工具。它可以以多种方式支持您的工作流,包括一个...原创 2019-06-06 09:53:51 · 3427 阅读 · 0 评论 -
使用 Clang Tools —— 概述
概述1. Clang Tools 组织2. 核心 Clang Tools2.1 clang-check2.2 clang-format3. 扩展 Clang Tool3.1 clang-tidy4. 新工具的想法本文为译文,点击此处查看原文。Clang Tools是为 C++ 开发人员设计的独立命令行(可能还有GUI)工具,这些开发人员已经在使用 Clang 作为他们的编译器,并且很喜欢 Cl...原创 2019-06-06 10:13:55 · 5671 阅读 · 0 评论 -
设计文档 —— Clang CFE 内部手册
Clang CFE 内部手册1. 介绍2. LLVM 支持库(LLVM Support Library)3. Clang 基本库(Clang “Basic” Library)3.1 诊断子系统(The Diagnostics Subsystem)3.1.1 Diagnostic*Kinds.td 文件3.1.2 格式化字符串(The Format String)3.1.3 格式化一个诊断参数(Fo...原创 2019-06-06 16:30:59 · 2100 阅读 · 0 评论 -
Clang:一个面向LLVM的C语言家族前端
Clang:一个面向LLVM的C语言家族前端1. 特性和目标1.1 终端用户特性1.1.1 快速编译和低内存使用1.1.2 富有表现力的诊断1.1.3 GCC的兼容性1.2 实用程序和应用程序1.2.1 基于库的架构1.2.2 支持不同的客户1.2.3 与ide的集成1.2.4 使用LLVM 'BSD'许可证1.3 内部设计与实现1.3.1 一个真实的,高质量的编译器1.3.2 一个简单且可编程的...翻译 2019-06-13 17:54:56 · 1547 阅读 · 0 评论 -
使用Clang作为库 —— Clang 的重构引擎
Clang 的重构引擎1. 介绍2. 重构操作规则(Refactoring Action Rules)3. 规则类型4. 如何创建规则5. 重构操作规则需求(Refactoring Action Rule Requirements)6. 选择需求(Selection Requirements)7. 其他需求8. 重构选项(Refactoring Options)本文为译文,点击此处查看原文。本...翻译 2019-06-04 09:49:37 · 1369 阅读 · 0 评论 -
使用Clang作为编译器 —— Assembling a Complete Toolchain
装配一个完整的工具链1. 介绍2. 工具2.1 Clang 前端2.2 其他语言的语言前端2.3 汇编器2.4 链接器3. 运行时库3.1 编译器运行时(Compiler runtime)3.2 原子库(Atomics library)3.3 Unwind 库3.4 Sanitizer 运行时3.5 C 标准库3.6 C++ ABI 库3.7 C++ 标准库本文为译文,点击此处查看原文。1. ...原创 2019-06-04 14:27:39 · 3717 阅读 · 0 评论 -
使用Clang作为编译器 —— Clang 语言扩展
1. 介绍本文档描述了 Clang 提供的语言扩展。除了这里列出的语言扩展之外,Clang 还旨在支持广泛的 GCC 扩展。有关这些扩展的更多信息,请参阅 GCC手册。2. 特性检查宏语言扩展可能非常有用,但只有在您知道可以依赖它们的情况下。为了允许细粒度特性检查,我们支持三个内置类似函数的宏。这允许您直接测试代码中的某个特性,而不必求助于autoconf或脆弱的“编译器版本检查”。2.1...原创 2019-06-04 17:54:46 · 5158 阅读 · 0 评论 -
clang-refactor中的'-selection'参数解析
clang/Frontend/CommandLineSourceLoc.h定义了struct ParsedSourceLocation,它定义了一个函数’FromString(StringRef Str)’,用于从一个字符串构造一个ParsedSourceLocation定义了struct ParsedSourceRange,它定义一个函数’fromString(StringRef St...原创 2019-06-21 18:14:24 · 494 阅读 · 0 评论 -
AST matchers 和 Clang refactoring tools
AST匹配器和Clang重构工具1. Visitors vs. matchers2. 使用 `clang-query` 来测试 `matchers` 并研究 AST本文为译文,点击此处查看原文。在过去的几年中,Clang tooling 受到了很多关注和开发重点。最后,给出了一个方便、准确、开源、支持良好的 C++ 代码程序化分析和重构框架;我觉得这很令人兴奋。这种快速开发的一个重要结果是,...翻译 2019-07-01 18:47:11 · 1668 阅读 · 1 评论 -
C++中的命令行参数
1. 简单的读取命令行参数test.cpp#include <iostream>using namespace std;int main(int argc, char **argv) { for(int i=0; i<argc; i++){ cout << argv[i] << " "; } cout<<endl;...原创 2019-06-28 10:19:57 · 927 阅读 · 0 评论 -
Clang中的重构操作规则需求(RefactoringActionRuleRequirement)简介
1. Clang中目前存在的重构操作规则需求继承关系如下:一个重构操作规则需求(RefactoringActionRuleRequirement)决定何时可以调用一个重构操作规则(RefactoringActionRule)。只有在满足所有需求时才能调用该规则。子类必须实现 Expected<T> evaluate(RefactoringRuleContext &) ...原创 2019-06-28 10:27:45 · 480 阅读 · 0 评论 -
使用Clang作为编译器 —— AddressSanitizer
AddressSanitizer(未完成)1. 介绍2. 如何构建3. 使用(Usage)4. 用符号表现报告(Symbolizing the Reports)5. 额外的检查(Additional Checks)5.1 初始化顺序检查(Initialization order checking)5.2 内存泄漏检测(Memory leak detection)6. 问题抑制(Issue Supp...原创 2019-06-05 17:07:35 · 4853 阅读 · 0 评论 -
使用Clang作为编译器 —— Clang 静态分析器
Clang 静态分析器本文为译文,点击此处查看原文。Clang Static Analyzer是一个源代码分析工具,它可以发现 C、C++ 和 Objective-C 程序中的 bug。它基于符号执行技术实现了路径敏感的、过程间分析。这是静态分析器文档页面。请参阅官方工具页面。目前,它既可以作为一个独立的工具运行,也可以在Xcode中运行。独立工具从命令行调用,并计划与代码库的构建一起运...原创 2019-06-05 15:33:31 · 2311 阅读 · 0 评论 -
使用Clang作为库 —— 如何编写基于 ASTFrontendActions 的 RecursiveASTVisitor
如何编写基于ASTFrontendActions的RecursiveASTVisitor原创 2019-05-30 14:29:49 · 4560 阅读 · 6 评论 -
使用Clang作为库 —— 外部Clang示例
外部Clang示例1. 介绍2. 项目和工具列表本文为译文,点击此处查看原文。1. 介绍本页面提供了一些人们使用 Clang 所做的事情的示例,这些示例可以作为开发自己工具的有用指南(或起点)。它们甚至可能对一些像如何设置您的构建以集成Clang这样普通(但必要)的东西都有帮助。Clang基于库的设计旨在促进外部项目的使用,我们一直对改进 Clang 以更好地服务于外部用户感兴趣。Clan...原创 2019-05-30 11:32:06 · 1823 阅读 · 0 评论 -
使用Clang作为库 —— LibFormat
LibFormat1. 设计2. 接口3. Style Options本文为译文,点击此处查看原文。LibFormat是一个基于Clang实现自动源代码格式化的库。本文档描述了LibFormat接口和设计,以及一些基本的样式讨论。如果您只想使用clang-format作为一个工具或集成到一个编辑器中,请签出ClangFormat。1. 设计FIXME:补充设计。2. 接口LibFor...原创 2019-05-30 14:27:37 · 872 阅读 · 0 评论 -
使用Clang作为库 —— Clang Plugins
Clang Plugins原创 2019-05-30 14:28:45 · 1999 阅读 · 0 评论 -
使用Clang作为库 —— 使用 LibTooling 和 LibASTMatchers 构建工具的教程
使用 LibTooling 和 LibASTMatchers 构建工具的教程原创 2019-05-30 14:51:16 · 5953 阅读 · 4 评论 -
使用Clang作为库 —— Matching the Clang AST
Matching the Clang AST翻译 2019-05-30 14:52:20 · 1223 阅读 · 0 评论 -
使用Clang作为库 —— 如何为 LLVM 设置 Clang Tooling
如何为 LLVM 设置 Clang 工具原创 2019-05-30 14:53:26 · 2295 阅读 · 2 评论 -
使用Clang作为库 —— JSON Compilation Database Format Specification
JSON Compilation Database Format Specification原创 2019-05-30 14:55:05 · 3930 阅读 · 0 评论 -
使用Clang作为编译器 —— Clang 中的属性
Clang 中的属性(待完成)1. 介绍2. 函数属性2.1 #pragma omp declare simd2.2 #pragma omp declare target2.3 _Noreturn2.4 abi_tag2.5 acquire_capability, acquire_shared_capability2.6 alloc_align2.7 alloc_size2.8 allocato...原创 2019-06-05 10:03:15 · 4540 阅读 · 1 评论 -
使用libclang解析C++代码
使用libclang解析C++代码1. libclang?2. libclang!3. 基本的例子4. Cursors(游标)5. Visit children6. CXString7. 打印有意义的输出8. 一个更复杂的例子9. 总结10. 完整的代码本文为译文,点击此处查看原文。在本文中,我将提供一个使用libclang的快速教程。我开始试用libclang,同时实现了一个面向c++的开源...原创 2019-05-28 12:17:11 · 13402 阅读 · 5 评论 -
使用Clang作为库 —— Clang AST
Clang AST1. 介绍2. 检查AST3. AST Context4. AST节点本文档温和地介绍了Clang AST的神秘之处,主要针对那些希望为Clang做贡献的开发人员,或者使用基于Clang AST的工具(如AST matchers)的开发人员。1. 介绍Clang的AST不同于其他编译器生成的AST,因为它非常类似于编写的C++代码和C++标准。例如,括号表达式和编译时常量在...翻译 2019-05-28 12:48:18 · 5937 阅读 · 0 评论 -
使用Clang作为编译器 —— Clang 中的Diagnostic flags
Clang 中的Diagnostic flags(未完成)1. 介绍2. 诊断标记(Diagnostic flags)2.1 -W2.2 -W#pragma-messages2.3 -W#warnings2.4 -WCFString-literal本文为译文,点击此处查看原文。1. 介绍这个页面列出了 Clang 当前支持的诊断标记。2. 诊断标记(Diagnostic flags)2....原创 2019-06-05 11:46:53 · 819 阅读 · 0 评论 -
使用Clang作为编译器 —— 使用 Clang 交叉编译
使用 Clang 交叉编译1. 介绍2. 交叉编译问题(Cross compilation issues)3. Clang中的一般交叉编译选项(General Cross-Compilation Options in Clang)3.1 Target Triple3.2 CPU、FPU、ABI3.3 工具链选项4. 特定目标的库(Target-Specific Libraries)5. Multi...原创 2019-06-05 13:57:07 · 27462 阅读 · 0 评论 -
Clang 中 AST 相关类简介(不定时更新)
Clang 中 AST 相关类简介(不定时更新)1. Decl(declaration)2. Stmt(statement)3. Expr(Expression)3.1 FullExpr3.2 ExprWithCleanups1. Decl(declaration)它表示 程序中的一个定义。2. Stmt(statement)这个类表示程序中的一个语句。语句是程序的基本构建块,一个语句相当...原创 2019-07-04 11:53:16 · 7479 阅读 · 8 评论