深入研究Clang(十) Clang Static Analyzer简介

简介: Clang Static Analyzer 官网地址:http://clang-analyzer.llvm.org/Clang Static Analyer是一个源码分析工具,它可以发现C、C++和Objective-C程序中的bug。

Clang Static Analyzer 官网地址:http://clang-analyzer.llvm.org/

Clang Static Analyer是一个源码分析工具,它可以发现C、C++和Objective-C程序中的bug。现在Clang Static Analyer既可以作为一个单独的工具使用,也可以集成在Xcode中使用。作为单独的工具使用的时候,可以通过命令行调用,作为一个代码库编译的时候的一个串行的动作运行。Clang Static Aanlyer是百分百开源的项目,是Clang项目的一部分。像Clang项目剩下的部分一样,它是被实现成了一个C++的库的形式,这样的话它可以被其他的工具和应用调用。(注:该段文字基本上是对官网的一个介绍的翻译,并无太多个人 的理解,因为这块官网已经介绍的比较简明了。)


Clang Static Analyer作为单独工具被调用的时候,就涉及到了scan-build。

scan-build的官网地址:http://clang-analyzer.llvm.org/scan-build.html

官网对scan-build的解释就是一个确保用户可以在他们的代码库上运行static analyzer的命令行实体。scan-build在正常编译clang之后就会生成,是和clang同目录的一个可执行文件,如果已经make install的话,那么在系统里可以随意直接调用scan-build。我在虚拟机上针对我的一个小程序,简单调用了一下scan-build,在我自己的待分析的项目目录下 输入命令行:

scan-build make 

得到了一个结果如下:

scan-build: Using '/usr/local/bin/clang-3.9' for static analysis
scan-build: Removing directory '/tmp/scan-build-2017-03-29-152946-3220-1' because it contains no reports.
从结果也可以看出,并没有发现什么错误,并且声称了一个未包含错误报告的目录。

目录
相关文章
|
前端开发 IDE 编译器
LLVM编译器前端 Clang 简介
昨天晚上安装rails的开发环境,被ruby的编译搞的有点崩溃。下载的ruby的源码不能用系统自带的gcc -4.21编译,也不能用系统自带的clang进行编译,必须下载并使用gcc -4.2进行编译才能通过。今天稍微看看编译器的一些背景。
557 0
LLVM编译器前端 Clang 简介
|
编译器 iOS开发 Windows
带你读《LLVM编译器实战教程》之一:构建和安装LLVM
本书的前半部分将向您介绍怎么样去配置、构建、和安装LLVM的不同软件库、工具和外部项目。接下来,本书的后半部分将向您介绍LLVM的各种设计细节,并逐步地讲解LLVM的各个编译步骤:前段、中间表示(IR)、后端、即时编译(JIT)引擎、跨平台编译和插件接口。本书包含有大量翔实的示例和代码片段,以帮助读者平稳顺利的掌握LLVM的编译器开发环境。
20189 0
|
Android开发 C语言 C++
《深入理解LLVM》第一章 LLVM简介
第一章 LLVM简介 作者:史宁宁 1.1 LLVM是什么 LLVM是什么?这是一个虽然基础,但是也曾经让很多新入门的人迷惑的一个问题。从字面上来讲,LLVM(Low Level Virtual Machine)是一个底层虚拟机,LLVM曾经有一部分功能对虚拟机有所帮助。
2531 0
|
前端开发 rax C语言
|
Web App开发 JavaScript
深入研究Clang(七) Clang Lexer代码阅读笔记之Lexer
作者:史宁宁(snsn1984) 源码位置:clang/lib/Lexer.cpp 源码网络地址:http://clang.llvm.org/doxygen/Lexer_8cpp_source.html Lexer.cpp这个文件,是Clang这个前端的词法分析器的主要文件,它的内容是对Lexer这个类的具体实现,原文件的注释中:“This file implements the Lexer and Token interfaces.” 这么解释这个文件的,但是Token只有两个简单函数的实现,剩下的都是Lexer的实现。
1622 0
|
存储 C语言 C++
深入研究Clang(六) Clang Lexer代码阅读笔记之Preprocesser
作者:史宁宁(snsn1984) clang/include/clang/Lex/Preprocesser.h 这个文件是包含clang::Preprocesser类的定义的头文件。
1270 0
|
自然语言处理
深入研究Clang(五) Clang Lexer代码阅读笔记之Lexer
作者:史宁宁(snsn1984) Clang的Lexer(词法分析器)的源码的主要位置如下: clang/lib/Lex    这里是主要的Lexer的代码; clang/include/clang/Lex   这里是Lexer的头文件代码的位置; 同时,Lexer还使用了clangBasic库,所以要分析Lexer的代码,clangBasic(clang/lib/Basic)的一些代码也会用到。
1248 0
|
C++ 索引 Python
LLVM每日谈之二十一 一些关于编译器和LLVM/Clang的代码
作者:史宁宁(snsn1984) 自己收集了一些LLVM/Clang的代码,并且自己也在一点一点的写一些LLVM/Clang以及编译器的代码,在这里把这些代码库分享出来,欢迎大家交流探讨。
1152 0
|
自然语言处理 前端开发 C语言
深入研究Clang(四) Clang编译器的简单分析
作者:史宁宁(snsn1984) 首先我们确定下Clang编译器的具体内容和涵盖范围。之前在《LLVM每日谈之二十 Everything && Clang driver 》中曾经提到过,Clang driver(命令行表示是clang)和Clang前端(按照具体实现来说就是Clang的那些库所实现的前端)是不同的,同时还存在一个Clang编译器(命令行表示是clang -cc1)。
1467 0