SDAP接入Clang Static Analyzer

Posted 软件开发及质量检测

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SDAP接入Clang Static Analyzer相关的知识,希望对你有一定的参考价值。

SDAP接入Clang Static Analyzer


LLVM 是开源的编译器框架系统,可以认为有 一个广义的 LLVM 和一个狭义的 LLVM 。广义的 LLVM 指的是一个完整的 LLVM 编译器框架系统,包括了前端、优化器、后端、众多的库函数以及很多的模块;而狭义的 LLVM 则是聚焦于编译器后端功能的一系列模块和库,包括代码优化、代码生成、JIT 等,Clang则是其C/C++语言的前端。

SDAP接入Clang Static Analyzer

Clang Static Analyzer是Clang工具的之一,位于LLVM的前端,可以基于数据流的符号执行分析,找到源代码的问题,也可以基于抽象语法树AST进行代码问题查找。

SDAP接入Clang Static Analyzer



scan-build是一个命令行工具,它能够帮助使用者运行静态分析器(clang static analyzer)检查源代码,使其能正常的构建。当一个项目在构建中,源码会被静态分析器分析并查找源码的漏洞,如:
$ scan-build make
当构建完成时,结果将会以一个web网页的形式呈现给使用者。类似于scan-build,scan-view也是一个命令行工具,它能打开由scan-build生成的web网页,显示bug报告。
Clang Static Analyzer利用不同的checker来检测源码不同类型的bug的。静态分析器会默认使用6类checkers(default checker):
· Core Checkers:提供一些一般性的检查,比如是否被0除、是否使用空指针和使用未初始化参数等。
· C++ Checkers:提供C++检查。
· Dead Code Checkers:检查没有使用的代码。
· OS X Checkers:检查Objective-C和Apple's SDKs的使用情况。
· Security Checkers:检查不安全API的使用和基于CERT Secure Coding Standards的检查。
· Unix Checkers:检查Unix和POSIX API的使用情况。
其中,每一类的checkers中包含有不同的checker负责检查不同细分类型的bug。比如core checkers类中的一个checker:core.CallAndMessage 该checker主要负责检查函数调用的逻辑错误或者信息表达的错误,比如未初始化的参数,空的函数指针等。
用户可以方便的根据API进行自定义基于AST或者数据流的检查器编写。

SDAP  无缝接入和内置Clang Static Analyzer,并定制大量checker,供用户继续选择使用。

Make software testing tools more useful,perfect and intelligient.




以上是关于SDAP接入Clang Static Analyzer的主要内容,如果未能解决你的问题,请参考以下文章

技术分享|Clang Static Analyzer Checker简介

#盲盒+码# Clang Static Analyzer scan-build

软件漏洞检测(Bug Finding):Clang Static Analyzer(进阶与实战)

软件漏洞检测(Bug Finding):Clang Static Analyzer(进阶与实战)

软件漏洞检测(Bug Finding):Clang Static Analyzer(进阶与实战)

markdown How-to-use-Clang-Static-Analyze.md