CodeChecker是建立在LLVM/Clang静态分析仪工具链上的静态分析基础架构,可在Linux或MacOS(OS X)开发环境中取代scan-build 。

查看我们的演示,显示开源项目的一些分析结果!
通过交叉翻译单元分析,统计分析(可用检查时), CPPCHECK , GCC静态分析仪和Facebook推论分析仪执行Clang-Tidy , Clang静态分析仪。
通过窃听任何构建过程(例如CodeChecker log -b "make" )来创建JSON编译数据库。
自动分析GCC跨编译项目:检测GCC或CLANG编译器配置并形成相应的Clang Analyzer Incocations。
增量分析:只有更改的文件及其依赖项需要重新分析。
假阳性抑制,有可能添加评论评论。
结果在命令行或静态HTML中可视化。
您可以存储和可视化数千个分析仪的分析报告,例如Clang静态分析仪(C/C ++),Clang Tidy(C/C ++),Facebook推断(C/C ++,Java),Clang Sanitizers(C/C ++)(C/C ++),Spotbugs(Java),Pythint(Python),Eslint(Javas),...
有关完整列表,请参见支持的分析师
Web应用程序,用于查看具有简化,简单体验的发现的代码缺陷(带有PostgreSQL或SQLite后端)。
Gerrit和GitLab集成显示了分析结果,例如GitLab或Gerrit评论。
可过滤(缺陷检查器名称,严重性,源路径等)和可比较(计算项目的两个分析之间的差异,表明已修复了哪些错误并新引入了哪些错误)结果查看。
DIFF模式:这显示了自您上次分析仪执行以来已引入的错误列表。
结果可以与其他开发人员共享,评论和审核系统有助于代码缺陷的交流。
易于实现的基于节俭的服务器客户通信,用于存储和查询发现的缺陷。
支持多个错误可视化前端,例如Web应用程序,命令行工具和Eclipse插件。
CodeChecker命令有许多子命令,例如可以使用这些子命令来记录和分析您的项目,打印结果或启动Web服务器。有关完整列表,请参见下表或检查此命令的帮助消息( CodeChecker --help ):
CodeChecker子命令 | 描述 |
|---|---|
analyze | 为JSON编译数据库中记录的文件执行支持的代码分析仪。 |
analyzer-version | 打印正在使用的CodeChecker Analyzer软件包的版本。 |
analyzers | 列表支持和可用的分析仪。 |
check | 对项目进行分析,并打印为标准输出。 |
checkers | 列出可用于代码分析的调查器。 |
cmd | 查看分析从命令行上运行的服务器上的结果。 |
fixit | 根据分析仪的建议应用自动修复程序。 |
log | 运行构建命令,收集执行的编译命令,然后将其存储在JSON文件中。 |
parse | 打印分析摘要并以人为可读的格式产生。 |
server | 启动并管理Codechecker Web服务器。 |
store | 将分析结果保存到数据库。 |
version | 打印正在使用的CodeChecker软件包的版本。 |
web-version | 打印正在使用的CodeChecker服务器软件包的版本。 |
CodeChecker cmd命令还具有许多其他子命令,可用于从运行的CodeChecker服务器中获取数据(产品,运行,结果,统计)。有关完整列表,请参见下表或检查此子命令的帮助消息( CodeChecker cmd --help ):
CodeChecker cmd命令 | 描述 |
|---|---|
runs | 列出可用分析运行。 |
history | 节目运行多个跑步的历史。 |
results | 列表分析结果(发现)给定运行的摘要。 |
diff | 比较两个分析并显示差异。 |
sum | 显示跳棋的统计数据。 |
token | 访问子命令与配置由CodeChecker服务器管理的个人访问令牌有关。 |
del | 删除分析运行。 |
update | 更新分析运行。 |
suppress | 管理和导入CodeChecker服务器上报告的抑制。 |
products | 访问子命令与配置由CodeChecker服务器管理的产品有关。 |
components | 访问子命令与配置由CodeChecker服务器管理的源组件有关。 |
login | 对需要特权的CodeChecker服务器进行身份验证。 |
export | 来自CodeChecker的输出评论和审查状态。 |
import | 导入评论并将状态审查到CodeChecker中。 |

步骤1 : CodeChecker log运行给定的构建命令并记录执行的编译步骤。这些步骤以JSON格式写入输出文件(编译数据库)。
步骤2 : CodeChecker analyze使用先前创建的JSON编译数据库对项目进行分析,输出分析导致机器可读(PLIST)格式。
步骤3 :在此步骤中,您可以做多个事情:
解析和精美打印摘要和分析结果文件( CodeChecker parse )的结果。
将结果存储到运行的Codechecker服务器( CodeChecker store )。
比较两个分析结果/运行,以显示两者之间不同的结果( CodeChecker cmd diff )。
ETC。
有关如何使用CodeChecker的更多信息,请参见我们的用户指南。
入门(如何使用示例)
分析仪用户指南
避免或抑制误报
检查器和静态分析仪配置
海湾合作委员会不兼容
抑制误报
Web服务器用户指南
Web GUI用户指南
命令行和Web UI功能概述
安全配置
配置身份验证
配置授权
部署
使用Docker部署服务器
服务器配置
配置服务器记录
在一台服务器中设置多个CodeChecker存储库
连续集成(CI)
CodeChecker作为GitHub动作
用Gerrit和Jenkins设置CI门控
数据库配置
PostgreSQL数据库后端设置指南
CodeChecker服务器和数据库架构升级指南
CodeChecker可以用作可视化分析仪结果的通用工具。
支持以下工具:
| 语言 | 分析仪 |
|---|---|
| C/C ++ | Clang静态分析仪 |
| 叮当整洁 | |
| clang消毒剂 | |
| CPPCHECK | |
| Facebook推断 | |
| 球球 | |
| Smatch | |
| 内核-Doc | |
| 疏 | |
| cpplint | |
| C# | Roslynator.dotnet.Cli |
| 爪哇 | 斑点 |
| Facebook推断 | |
| Python | 皮层 |
| 碎片 | |
| JavaScript | eslint |
| 打字稿 | tslint |
| 去 | 戈林特 |
| 降价 | Markdownlint |
| 狮身人面像 |
有关详细信息,请参阅支持的代码分析仪文档和报告转换器工具。
有用的工具,也可以在CodeChecker之外使用。
构建Logger(从您的构建中生成JSON编译数据库)
PLIST/SARIF到HTML转换器(从给定的PLIST或SARIF文件生成HTML文件)
报告转换器工具(将分析结果从其他分析仪转换为CodeChecker报告目录格式)))
翻译单元收集器(收集翻译单元的源文件或获取取决于给定标头文件的源文件)
报告哈希发电机(为报告生成唯一的哈希标识符)
辅助脚本用于日常分析
pip安装CodeCheckerCodeChecker在PYPI上可用,可以使用以下命令安装:
PIP3安装CodeChecker
注意:此软件包可以安装在Linux , OSX和Windows系统上,其中pip3命令可用。在OSX上,必须安装intercept-build以进行记录( CodeChecker log )。在Windows上,没有记录。
snap软件包管理器安装CodeCheckerCodeChecker可在Snap Store上使用,可以使用以下命令安装:
sudo snap install codechecker - 典型
注意:不幸的是,SNAP软件包仅支持下部命令名称。因此,您需要使用codechecker命令,而不是到处都是CodeChecker 。有关CodeChecker Snap软件包中可用命令的完整列表,请运行snap info codechecker 。
有关详细的依赖性列表,以及有关如何安装新的Clang和Clang Tidy版本的说明,请参阅要求。以下命令用于在Ubuntu 20.04 LTS上引导CodeChecker:
#为开发和分析环境安装强制性依赖。 clang clang-tidy cppcheck g ++建立卷曲
GCC-Multilib git Python3-Dev Python3-VENV Python3-stetoopools#对于Venv_dev Target和Ubuntu 23 Linux,安装一个附加库:SUDO APT-GET安装LibPQ-DEV#安装Web的nodejs依赖网络依赖性。对于Debian/Ubuntu,您可以使用#以下命令。有关更多信息,请参见官方文档:#https://nodejs.org/en/download/package-manager/curl-curl -sl https://deb.nodesource.com/setup_16.x | sudo -e bash-
sudo apt -get install -y nodejs#查看codechecker源代码.git clone https://github.com/ericsson/codechecker.git--depth 1〜/codecheckercd〜/codechecker##创建一个python firtualenv,并设置为您的环境。 `venv`.ake venvsource $ pwd/venv/bin/activate#[可选]如果要使用外部身份验证方法(ldap/pam),请按照#docs/web/authentication.md#外部 - authentication-methods##构建codechecker poffect.make witch usectstort of partect of partect of partect of partect of partect of of partect of partect of partect of partect of of partect of partect of partect,路径=“ $ pwd/build/codechecker/bin:$ path” CD。注意:
默认情况下, make package也将构建32bit和64bit LDLOGGER共享对象。如果您想构建和包装64 bit only共享对象和ldlogger二进制文件,则可以将BUILD_LOGGER_64_BIT_ONLY环境变量设置为YES然后在包装BUILD_LOGGER_64_BIT_ONLY=YES make package 。
默认情况下,如果尚未构建make package ,则将构建UI代码,或更改UI代码。如果您不想构建UI代码,则可以将BUILD_UI_DIST环境变量设置为NO ,然后再构建: BUILD_UI_DIST=NO make package 。
使用make standalone_package而不是make package ,以避免在运行CodeChecker之前手动激活环境。
如果您将系统的Python升级到了较新的版本(例如,将Ubuntu从3.8 LTS升级到3.11 LTS),则已安装的环境将无法开箱即用。要解决此问题,请运行以下命令以升级您的checker_env :
CD〜/CODECHECKER/VENV Python3 -M Venv。
有关Mac OS X的安装说明,请参见Mac OS X安装指南文档。
要在Docker中运行Codechecker服务器,请参阅Docker文档。您可以在Docker Hub上找到Codechecker Web-Server容器。
您可以从Visual Studio Marketplace或Open VSX安装和使用CodeChecker Vscode扩展名。
主要功能:
从编辑器运行CodeChecker分析,并自动查看结果。
保存时重新分析当前文件。
作为构建系统的一部分,命令和构建运行CodeChecker的任务。
浏览发现的报告,并直接显示代码中的复制步骤。
在繁殖步骤之间导航。

有关如何安装和使用此插件的更多信息,请参见此扩展程序的存储库。

CodeChecker可以通过可重复使用的GITHUB操作执行您的项目!您只需要指定构建命令,就好像您将在本地运行分析一样。
有关更多信息,请查看有关GitHub Action市场的CodeChecker静态分析动作。
这些步骤必须始终在您希望执行分析的新命令提示中采取。
源〜/codechecker/venv/bin/activate#codechecker包装#注意:如果要始终指定CodeChecker的完整路径,请跳过此行,如果您始终指定CodeChecker的完整路径=〜/codechecker/build codechecker/codechecker/bin/bin/bin:$ path#path path path path path path path of ind off clang/clang/clang und inf ins inf inf lin inf lin face in Inflang/line face.路径>/build/bin:$路径
使用check命令分析您的项目:
CodeChecker check -b "cd ~/your-project && make clean && make" -o ./results
check将打印分析仪在项目中发现的问题的概述。报告将以plist XML格式存储在./results Results目录中。
您可以通过执行将结果可视化为静态HTML
CodeChecker parse -e html ./results -o ./reports_html
索引页面将在./reports_html/index.html中生成所有记者列表
如果您有数百个结果,则可能需要使用数据库后端将它们存储在Web服务器上。
在另一个终端或背景过程中启动CodeChecker Web和存储服务器。默认情况下,它将在localhost:8001上收听。
包含报告的SQLITE数据库将放置在您的工作区目录中( ~/.codechecker默认情况下),可以通过-w标志提供。
CodeChecker server
将您的分析报告存储到服务器上,以便能够使用Web查看器。
CodeChecker store ./results -n my-project
打开浏览器中的CodeChecker Web查看器,应该向您迎接您的Web应用程序,向您显示分析结果。
建筑学
包装布局
依赖性
节俭界面
包装和集成测试
有关Codechecker基础架构的概述是在PLDI 2020给出的。
Márton,Gábor和Krupp,Dániel :
工具谈话:Codechecker
关于基础设施的高级概述,可以在2015年欧洲LLVM会议演讲中获得。
Krupp,Dániel和Orbán,György和Horváth,Gábor和Babati,Bence :
Clang静态分析工具集的工业经验