想了解更多关于开源的分析内容,请访问:
51CTO 开源基础软件社区
https://ost.51cto.com
Clang 静态分析器CSA是分析一个源代码分析工具,可查找 C、静态C++ 和 Objective-C 程序的分析bugs。
目前可以从命令行中运行,静态或者如果您使用 macOS,分析则可以在 Xcode 中使用。静态当从命令行中运行时,分析该工具和代码构建串联运行。静态
该分析器是分析100%开源的,是静态Clang项目的一部分。类似Clang的其他工具,它实现为C++库,可以被其他工具和应用调用。
静态分析器在设计上是一个 GUI 工具。其目的是找到程序中的错误执行路径,这些路径很难通过查看非交互式标准输出进行获取。但是,可以从命令行调用静态分析器来获取分析结果,稍后在图形界面中以交互方式查看分析结果。以下两个工具通常用于从命令行运行分析器,这两种工具都是封装的脚本,用于分析结果、调用底层的Clang编译器:
CodeChecker 是一个静态分析工具,基于LLVM/Clang Static Analyzer工具链进行构建的,用来替代scan-build工具,可以用于Linux或macOS开发环境上。
CodeChecker工具属于python的库文件,维护在pypi上。安装该工具,使用命令如下:
pip3 install codechecker
还需要安装下cppcheck等,命令如下:
sudo apt-get install cppcheck
另外,需要使用下述环境变量,在~/openharmony/prebuilts/clang/ohos/linux-x86_64/llvm/bin目录下有clang-tidy等命令行工具会使用到。
export PATH=~/openharmony/prebuilts/clang/ohos/linux-x86_64/llvm/bin:$PATH
export CC_LOGGER_GCC_LIKE="gcc:g++:clang:clang++:cc:c++"
继续使用之前提供一个简单的示例文件simple.c,里面包含明显的错误。
#include <stdio.h>
struct S {
int x;
};
void f(struct S s){
}
void test() {
struct S s;
f(s); // warn
}
int test2(int x){
return 5/(x-x); // warn
}
int main(){
test();
test2(532);
printf("Hej\r\r");
}
以及使用到的Makefile:
all: simple.c
gcc -o simple_mk simple.c
clean:
rm -f *.o simple_mk
执行如下命令,在编译的时候生成分析日志。
make clean
CodeChecker log -b "make" -o compile_commands.json
执行输出信息如下:
zhushangyuan@DESKTOP-RPE9R4O:~/CSA$ make clean
rm -f *.o simple_mk
zhushangyuan@DESKTOP-RPE9R4O:~/CSA$ CodeChecker log -b "make" -o compile_commands.json
[INFO 2022-12-06 21:11] - Starting build...
[INFO 2022-12-06 21:11] - Using CodeChecker ld-logger.
gcc -o simple_mk simple.c
simple.c: In function ‘test2’:
simple.c:16:11: warning: division by zero [-Wdiv-by-zero]
return 5/(x-x); // warn
~^~~~~~
[INFO 2022-12-06 21:11] - Build finished successfully.
生成的文件内容比较简单:
[
{
"directory": "/home/zhushangyuan/CSA",
"command": "/usr/bin/gcc -o simple_mk simple.c",
"file": "simple.c"
}
]
执行如下命令,输出分析报告。reports文件夹下主要是些plist文件,属于xml格式的文件,用于记录编译错误信息。
CodeChecker analyze compile_commands.json -o ./reports
可以使用如下命令,使用纯文本方式展示分析出来的缺陷以及统计信息。
CodeChecker parse --print-steps ./reports
上述命令易读性较差,可以使用下述命令,在浏览器里查看。使用浏览器Firefox或MS Edge打开./reports_html/index.html即可。
CodeChecker parse ./reports -e html -o ./reports_html
firefox | msedge.exe ./reports_html/index.html
缺陷列表示意图如下:
分析结果统计信息如下:
缺陷展示页面如下:
可以使用CodeChecker server命令创建一个Web站点,然后执行CodeChecker store命令把分析结果存储在数据库。然后通过浏览器http://localhost:8555/Default进行网页访问,可以在浏览器上对分析结果进行管理。
mkdir ./ws
CodeChecker server -w ./ws -v 8555 &
CodeChecker store ./reports --name my-project --url http://localhost:8555/Default
想了解更多关于开源的内容,请访问:
51CTO 开源基础软件社区
https://ost.51cto.com。
责任编辑:jianghua 来源: 51CTO开源基础软件社区 Clang分析工具CSA(责任编辑:时尚)
商务部:预计全年实际使用外资将突破万亿元大关 全面参与全球经济合作
华凯创意(300592.SZ)2020年度业绩盈转亏至6248.34万元 不送红股
陕西建工集团一季度营收同比增长13.18% 继续保持逆势快速增长
航天科技集团研制大气环境监测卫星大气一号上线 高精度监测能力提升
分期乐提前还款利息的计算方式是怎样的 分期乐分36期可以提前还款吗?