了解更多开源请访问:开源基础软件社区https://ost.51cto.com1。ClangStaticAnalyzer简介ClangStaticAnalyzerCSA是一种源代码分析工具,可以发现C、C++和Objective-C程序中的错误。目前,它可以从命令行运行,如果您使用macOS,也可以在Xcode中运行。当从命令行运行时,工具和代码构建串联运行。该探查器是100%开源的,是Clang项目的一部分。与Clang中的其他工具一样,它被实现为一个C++库,可以被其他工具和应用程序调用。2.ClangStaticAnalyzer命令行工具静态分析器被设计为一个GUI工具。其目的是通过查看非交互式标准输出来查找程序中难以跟踪的错误执行路径。但是,可以从命令行调用静态分析器来获取分析结果,然后在图形界面中交互式地查看分析结果。以下两个工具通常用于从命令行运行分析器,它们都是分析结果的包装脚本,调用底层的Clang编译器:Scan-Build是一个古老而简单的命令行工具,可以在编译项目。用于查看静态分析器警告。您可以在Web浏览器中查看分析结果。对于只想在办公桌前或在非常简单的协作环境中查看静态分析结果的个人开发人员很有用。适用于所有主要平台(Windows、Linux、macOS),并在许多Linux发行版中作为软件包提供。不包括对交叉翻译单元分析的支持。CodeChecker是一种Web服务器,可按需对项目运行静态分析器并维护问题数据库。非常适合在协作环境中管理大量静态分析器警告。通常比扫描构建功能更丰富。支持增量分析:结果可存入数据库,后续分析运行可对比列出新增缺陷。通过CodeChecker在Linux上完全支持交叉翻译单元(CTU)分析。您还可以运行clang-tidychecker检查程序。开源,但在开源项目之外,即不属于LLVM项目。3.CodeChecker工具CodeChecker是基于LLVM/ClangStaticAnalyzer工具链构建的静态分析工具,用于替代scan-build工具,可用于Linux或macOS开发环境。CodeChecker工具属于python的库文件,在pypi上维护。安装这个工具,使用命令如下:pip3installcodechecker还需要安装cppcheck等,命令如下:sudoapt-getinstallcppcheck另外还需要使用如下环境变量,在~/openharmony/prebuilts/clang/ohos/linux-x86_64/llvm/bin目录下有clang-tidy等命令行工具会用到。exportPATH=~/openharmony/prebuilts/clang/ohos/linux-x86_64/llvm/bin:$PATHexportCC_LOGGER_GCC_LIKE="gcc:g++:clang:clang++:cc:c++"4.CodeChecker基本用法在继续使用之前提供了一个简单的示例文件simple.c包含明显的错误。#includestructS{intx;};voidf(structSs){}voidtest(){structSs;f(s);//警告}inttest2(intx){return5/(x-x);//警告}intmain(){test();测试2(532);printf("Hej\r\r");}和用到的Makefile:all:simple.cgcc-osimple_mksimple.cclean:rm-f*.osimple_mk(1)CodeCheckerlog生成分析日志执行以下命令在编译期间生成分析日志。makecleanCodeCheckerlog-b"make"-ocompile_commands.json输出如下:zhushangyuan@DESKTOP-RPE9R4O:~/CSA$makecleanrm-f*.osimple_mkzhushangyuan@DESKTOP-RPE9R4O:~/CSA$CodeCheckerlog-b"make"-ocompile_commands.json[INFO2022-12-0621:11]-开始构建...[INFO2022-12-0621:11]-使用CodeCheckerld-logger.gcc-osimple_mk简单。简单。c:在函数'test2':simple.c:16:11:警告:除以零[-Wdiv-by-zero]返回5/(x-x);//警告~^~~~~~[INFO2022-12-0621:11]-构建成功完成。生成的文件内容比较简单:.c"}](2)CodeCheckeranalyze分析项目执行如下命令输出分析报告。reports文件夹主要是一些plist文件,是xml格式的文件,用来记录编译错误信息。CodeCheckeranalyzecompile_commands.json-o./reports(3)CodeCheckerparse查看分析结果可以使用如下命令,以纯文本形式显示分析出的缺陷和统计信息。CodeCheckerparse--print-steps./reports上面的命令不好读,可以用下面的命令在浏览器中查看。使用浏览器Firefox或MSEdge打开./reports_html/index.html。CodeChecker解析./reports-ehtml-o./reports_htmlfirefox|msedge.exe./reports_html/index.html缺陷列表示意图如下:分析结果统计信息如下:缺陷展示页面如下:(4)CodeCheckerstore存放分析结果并且可以使用CodeChecker服务器命令创建一个网站,然后执行CodeCheckerstore命令将分析结果存储到数据库中。然后通过浏览器http://localhost:8555/Default访问网页,在浏览器上管理分析结果。mkdir./wsCodeCheckerserver-w./ws-v8555&CodeCheckerstore./reports--namemy-project--urlhttp://localhost:8555/Default了解更多开源信息,请访问:开源基础软件社区https://ost.51cto.com。