codechecker

codechecker

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

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

CodeChecker静态分析代码检查C/C++开源工具Github开源项目
<h1 align="center"> <br> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/8686cba7-0712-4692-8eb6-23ca46344cf4.png" alt="CodeChecker" width="200"> <br> CodeChecker <br> </h1> <p align="center"> <a href="https://github.com/Ericsson/codechecker/actions"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/5e267e10-dc61-4d35-bb35-a10aad69bfe3.svg" alt="Github Action"> </a> <a href="https://gitter.im/codecheckerHQ/Lobby?utm_source=share-link&utm_medium=link&utm_campaign=share-link"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/bce5b29e-2f9a-4c5d-82ea-d11a79ee2915.svg" alt="Gitter"> </a> <a href="https://codechecker.readthedocs.io/en/latest/?badge=latest"> <img src="https://readthedocs.org/projects/codechecker/badge/?version=latest" alt="Documentation Status"> </a> <a href="https://securityscorecards.dev/viewer/?uri=github.com/Ericsson/codechecker"> <img src="https://api.securityscorecards.dev/projects/github.com/Ericsson/codechecker/badge" alt="OpenSSF Scorecard Score"> </a> </p>

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可以用作可视化分析器结果的通用工具。

支持以下工具:

语言分析器
C/C++Clang 静态分析器
Clang Tidy
[Clang sanitizer](https://github.com/Ericsson/codechecker/blob/master/supported_code_analyzers.md#clang-sanitizers
Cppcheck
Facebook Infer
Coccinelle
Smatch
Kernel-Doc
Sparse
cpplint
C#Roslynator.DotNet.Cli
JavaSpotBugs
Facebook Infer
PythonPylint
Pyflakes
JavaScriptESLint
TypeScriptTSLint
GoGolint
MarkdownMarkdownlint
Sphinx

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

常用工具

这些实用工具也可以在 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服务器容器。

<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/8879d2cd-a159-4444-88a5-f97dabb0f9ec.jpg" width="100">

Visual Studio Code插件

<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/557dba7c-978d-4915-b588-28fb26bf5994.png" width="100">

您可以从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应用程序。

开发者文档

会议论文、演讲

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

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

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多