UE使用CodeChecker和clang-tidy生成静态分析报告

💡 原文中文,约56200字,阅读约需134分钟。
📝

内容提要

本文介绍了在UE项目中集成CodeChecker和clang-tidy进行静态分析的方案,包括UBT改造、编译数据库处理、模块化配置和问题报告生成,旨在提高代码质量和发现潜在问题。

🎯

关键要点

  • 现代C++项目可以使用静态分析工具检查潜在问题。
  • UE项目在编译流程上有特殊扩展,直接使用静态分析工具会遇到问题。
  • 本文分享了对UBT的改造方案和工具链,以支持CodeChecker和clang-tidy的集成。
  • 整个静态分析流程分为准备阶段、构建分析阶段、分析执行阶段和报告处理阶段。
  • 准备阶段包括UBT改造和环境变量配置,以支持高版本Clang。
  • 构建分析阶段生成编译数据库并进行后处理,以便静态分析工具正确解析。
  • 分析执行阶段使用CodeChecker进行静态分析,并生成诊断报告。
  • 报告处理阶段提取重要问题并生成Markdown格式的问题报告。
  • UBT的改造包括环境变量配置和工具链的修改,以支持系统编译器和依赖修复。
  • FixClangDatabase.py用于修复编译数据库中的问题,确保静态分析的准确性。
  • ExtractNotification.py用于生成问题报告,提取重要的静态分析问题并查找最后提交人信息。
  • 支持提取的checker包括空指针调用、非空参数传入空值等常见问题。

延伸问答

如何在UE项目中集成CodeChecker和clang-tidy进行静态分析?

可以通过对UBT进行改造,配置环境变量,生成编译数据库,并使用CodeChecker和clang-tidy执行分析来集成这两个工具。

UBT的改造方案包括哪些内容?

UBT的改造方案包括环境变量配置、工具链修改、支持高版本Clang和依赖修复等。

静态分析的流程分为哪几个阶段?

静态分析的流程分为准备阶段、构建分析阶段、分析执行阶段和报告处理阶段。

如何生成静态分析的报告?

可以通过ExtractNotification.py提取重要问题,并生成Markdown格式的问题报告。

FixClangDatabase.py的作用是什么?

FixClangDatabase.py用于修复编译数据库中的问题,确保静态分析的准确性。

支持提取的checker包括哪些常见问题?

支持提取的checker包括空指针调用、非空参数传入空值等常见问题。

➡️

继续阅读