Project Icon

codechecker

基于LLVM/Clang的多功能静态代码分析工具

CodeChecker是基于LLVM/Clang的静态代码分析工具,提供命令行C/C++分析和Web报告管理功能。它支持多种分析器,可自动分析GCC交叉编译项目,并支持增量分析。其Web应用可视化代码缺陷,支持结果过滤和比较,集成Gerrit和GitLab。CodeChecker还能可视化多种编程语言的分析结果,是一款通用的代码质量保证工具。


CodeChecker
CodeChecker

Github Action Gitter Documentation Status OpenSSF Scorecard Score

CodeChecker是一个基于LLVM/Clang静态分析器工具链构建的静态分析基础设施,在Linux或macOS(OS X)开发环境中替代scan-build

Web界面显示已分析项目和bug列表

:bulb: 查看我们的演示,展示了一些开源项目的分析结果!

主要特性

命令行C/C++分析

  • 执行Clang-TidyClang静态分析器(具有跨翻译单元分析功能)、统计分析(当有检查器可用时)、CppcheckGCC静态分析器
  • 通过监听任何构建过程(例如,CodeChecker log -b "make")创建JSON编译数据库。
  • 自动分析GCC交叉编译项目:检测GCC或Clang编译器配置并形成相应的clang分析器调用。
  • 增量分析:只需要重新分析已更改的文件及其依赖项。
  • 误报抑制,并可添加审查评论。
  • 在命令行或静态HTML中可视化结果。

基于Web的报告存储

  • 您可以存储和可视化数千个分析报告,包括多种分析器,如Clang静态分析器(C/C++)、Clang Tidy(C/C++)、Facebook Infer(C/C++、Java)、Clang Sanitizers(C/C++)、Spotbugs(Java)、Pylint(Python)、Eslint(Javascript)等。
    完整列表请参见支持的分析器
  • Web应用程序用于查看发现的代码缺陷,体验流畅简便(使用PostgreSQL或SQLite后端)。
  • Gerrit和GitLab集成 将分析结果显示为GitLabGerrit评审。
  • 可过滤(缺陷检查器名称、严重程度、源路径等)和可比较(计算项目两次分析之间的差异,显示哪些bug已修复,哪些是新引入的)的结果查看。
  • **差异模式:**显示自上次分析执行以来引入的bug列表。
  • 结果可与其他开发人员共享,评论审查系统有助于沟通代码缺陷。
  • 易于实现的基于Thrift的服务器-客户端通信,用于存储和查询发现的缺陷。
  • 支持多种bug可视化前端,如Web应用程序、命令行工具Eclipse插件

命令行功能

CodeChecker命令有许多子命令,可用于记录和分析项目、打印结果或启动Web服务器等。完整列表请参见下表或查看此命令的帮助信息(CodeChecker --help):

CodeChecker子命令描述
analyze对JSON编译数据库中记录的文件执行支持的代码分析器。
analyzer-version打印正在使用的CodeChecker分析器包的版本。
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。

使用流程

使用流程图

  • 步骤1CodeChecker log 运行给定的构建命令并记录执行的编译步骤。这些步骤以JSON格式写入输出文件(编译数据库)。
  • 步骤2CodeChecker analyze 使用先前创建的JSON编译数据库对项目进行分析,输出机器可读(plist)格式的分析结果。
  • 步骤3:在这一步,你可以执行多项操作:
    • 解析并美化打印分析结果文件的摘要和结果(CodeChecker parse)。
    • 将结果存储到运行中的CodeChecker服务器(CodeChecker store)。
    • 比较两个分析结果/运行,显示两者之间的差异(CodeChecker cmd diff)。
    • 等等。

有关如何使用CodeChecker的更多信息,请参阅我们的用户指南

用户文档

C/C++分析

基于Web的报告管理

存储分析器工具的报告

CodeChecker可以用作可视化分析器结果的通用工具。

支持以下工具:

详情请参见 支持的代码分析器文档和 报告转换工具

常用工具

这些实用工具也可以在 CodeChecker 之外使用。

辅助脚本

安装指南

通过 pip 安装 CodeChecker

CodeChecker 可在 pypi 上获取, 可以使用以下命令安装:

pip3 install codechecker

注意: 此软件包可以安装在具有 pip3 命令的 LinuxOSXWindows 系统上。在 OSX 上,必须安装 intercept-build 以进行日志记录(CodeChecker log)。在 Windows 上, 日志记录功能不可用。

通过 snap 包管理器安装 CodeChecker

CodeChecker 可在 Snap Store 上获取, 可以使用以下命令安装:

sudo snap install codechecker --classic

注意: 不幸的是,snap 包只支持小写命令名。 因此,你需要在所有地方使用 codechecker 命令而不是 CodeChecker。 要查看 codechecker snap 包中可用命令的完整列表,请运行 snap info codechecker

Linux

有关详细的依赖列表以及如何安装更新版本的 Clang 和 Clang-Tidy 的说明, 请参阅 需求。 以下命令用于在 Ubuntu 20.04 LTS 上引导 CodeChecker:

# 安装开发和分析环境所需的必要依赖。
# 注意:clang 或 clang-tidy 可以是任何足够新的版本,不必来自包管理器!
#       对于 Cppcheck,最低支持版本为 1.80。
#       对于 gcc,最低支持版本为 13.0.0。
sudo apt-get install clang clang-tidy cppcheck g++ build-essential curl \
      gcc-multilib git python3-dev python3-venv python3-setuptools

# 安装 web 所需的 nodejs 依赖。对于 Debian/Ubuntu,你可以使用
# 以下命令。更多信息请参见官方文档:
# https://nodejs.org/en/download/package-manager/
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 ~/codechecker
cd ~/codechecker

# 创建 Python 虚拟环境并将其设置为你的环境。
# 注意:如果你想开发 CodeChecker,请使用 `venv_dev` 目标而不是 `venv`。
make venv
source $PWD/venv/bin/activate

# [可选] 如果你想使用外部身份验证方法(LDAP / PAM),
# 请按照以下说明进行操作
# docs/web/authentication.md#external-authentication-methods

# 构建并安装 CodeChecker 包。
make package

# 为了便于访问,将构建目录添加到 PATH。
export PATH="$PWD/build/CodeChecker/bin:$PATH"

cd ..

注意:

  • 默认情况下,make package将同时构建32位和64位的ldlogger共享对象。如果您只想构建和打包64位共享对象和ldlogger二进制文件,可以在构建包之前设置BUILD_LOGGER_64_BIT_ONLY环境变量为YES: BUILD_LOGGER_64_BIT_ONLY=YES make package
  • 默认情况下,如果UI代码尚未构建或发生变更,make package将构建UI代码。如果不想构建UI代码,可以在构建包之前设置BUILD_UI_DIST环境变量为NO: BUILD_UI_DIST=NO make package
  • 使用make standalone_package代替make package可以避免在运行CodeChecker之前手动激活环境。

系统或Python升级后更新环境

如果您已将系统的Python升级到更新版本(例如,从3.8升级到3.11 - 这在将Ubuntu从20.04 LTS升级到22.04 LTS时会发生),安装的环境将无法直接使用。要解决此问题,请运行以下命令来升级您的checker_env:

cd ~/codechecker/venv
python3 -m venv .

Mac OS X

有关Mac OS X的安装说明,请参阅Mac OS X安装指南文档。

Docker

要在Docker中运行CodeChecker服务器,请参阅Docker文档。 您可以在Docker Hub找到CodeChecker web服务器容器。

Visual Studio Code插件

您可以从Visual Studio MarketplaceOpen VSX安装并使用CodeChecker VSCode扩展。

主要功能:

  • 从编辑器运行CodeChecker分析并自动查看结果。
  • 保存文件时重新分析当前文件。
  • 提供命令和构建任务,可将CodeChecker作为构建系统的一部分运行。
  • 浏览发现的报告并直接在代码中显示复现步骤。
  • 在复现步骤之间导航。

VSCode插件

有关如何安装和使用此插件的更多信息,请参阅此扩展的仓库

GitHub Actions CI

在GitHub Actions中执行CodeChecker

CodeChecker可以通过可重用的GitHub action为您的项目执行! 您只需指定构建命令,就像在本地运行分析一样。

更多信息,请查看GitHub Actions Marketplace上的 CodeChecker静态分析 action。

分析您的第一个项目

在终端中设置环境

每次在新的命令提示符中执行分析时,都必须执行这些步骤。

source ~/codechecker/venv/bin/activate

# CodeChecker包的路径
# 注意: 如果您想始终指定CodeChecker的完整路径,请跳过此行。
export PATH=~/codechecker/build/CodeChecker/bin:$PATH

# 已构建的LLVM/Clang的路径
# 注意: 如果clang作为已安装的Linux包可在您的PATH中使用,请跳过此行。
export PATH=~/<用户路径>/build/bin:$PATH

执行分析

使用check命令分析您的项目:

CodeChecker check -b "cd ~/your-project && make clean && make" -o ./results

check将打印分析器在您项目中发现的问题概览。报告将以plist XML格式存储在./results目录中。

将报告导出为静态HTML文件

您可以通过执行以下命令将结果可视化为静态HTML:

CodeChecker parse -e html ./results -o ./reports_html

将在./reports_html/index.html中生成一个包含所有报告列表的索引页面。

可选: 将结果存储在Web服务器上并查看结果

如果您有数百个结果,您可能希望将它们存储在带有数据库后端的web服务器上。

在另一个终端或作为后台进程启动CodeChecker web和存储服务器。默认情况下,它将监听localhost:8001

包含报告的SQLite数据库将放置在您的工作空间目录中(默认为~/.codechecker),可以通过-w标志提供。

CodeChecker server

将您的分析报告存储到服务器上,以便能够使用Web查看器。

CodeChecker store ./results -n my-project

在浏览器中打开CodeChecker Web查看器,您将看到一个显示分析结果的web应用程序。

开发者文档

会议论文、演讲

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号