分析代码

要使用代码分析工具,请在 分析菜单 中或在 (启动项目调试) 按钮的下拉菜单中选择它。在 调试 模式下,通过在调试器工具栏菜单中选择工具来切换工具。

{Performance Analyzer in Debug mode}

调试 模式下,将视图拖动到屏幕上的新位置。视图的大小和位置会被保存以便于未来的会话。选择 视图 > 视图 > 重置为默认布局 以将视图重置为其原始大小和位置。

提高 QML 性能

Qt Creator 随带了 QML 性能分析器,用于检测运行 QML 代码时的绑定评估和信号处理。这对于识别潜在的性能瓶颈,尤其是在绑定评估中非常有用。

在 QML 代码中发现问题

在项目中对 QML 和 JavaScript 代码运行 静态检查 以查找常见问题,类似于使用 JSLint

使用 Clang Tools 在 C++ 代码中发现问题

Qt Creator 随带以下 Clang 工具,通过静态分析在 C、C++ 和 Objective-C 源代码中查找问题。

  • Clang-Tidy,它具有针对典型编程错误的诊断和修复,例如违反样式或接口误用。
  • Clazy,它帮助 Clang 理解 Qt 语义。它显示与 Qt 相关的编译器警告,从不必要的内存分配到 API 的误用都有涉及,并提供了一些问题的重构操作。

使用 Cppcheck 在 C++ 代码中发现问题

安装 Cppcheck 静态分析工具,以检测 C++ 代码中的未定义行为和危险编码结构。Cppcheck 不实际运行应用程序就分析源代码。

检查代码覆盖率

在 macOS、Linux 或 Windows 上安装用于 Tcl、QML、C# 和 C/C++ 程序的代码覆盖率工具链 Coco,以分析应用程序作为测试套件一部分的运行方式,例如。使用结果使测试更高效和完整。

您可以

  • 找到未经过测试的代码部分。
  • 找到冗余的测试,然后将其删除。Coco 可以识别源代码中受测试覆盖的部分。它可以检测新测试是否覆盖了现有测试未覆盖的源代码行。
  • 通过显示从未执行过的代码来找到死代码。
  • 计算最佳测试执行顺序,以最大化每次运行的测试覆盖率。这对于手动测试特别有用。
  • 分析应用程序的两个独立版本并比较差异。这使得可以查看哪些测试受到源代码修改的影响,并且还可以对补丁或热补丁的测试覆盖率进行一些测量。
  • 测量应用程序和测试的执行时间。

防止代码侵蚀

安装 Axivion Suite 以保护软件免受侵蚀。通过静态代码分析、架构分析和代码气味检测,您可以

  • 检查源代码中的潜在运行时错误。
  • 使用度量标准生成关于源代码内部质量的定量信息。
  • 运行样式检查以达到编码指南的合规性。
  • 在源代码中检测重复和类似代码片段。
  • 识别不同级别的循环依赖。
  • 检测未到达的代码。

利用 Valgrind 工具进行性能分析

Valgrind 工具套件 安装 Memcheck 和 Callgrind 以检测内存泄漏和函数执行分析。

您可以在本地开发主机上或在其他主机上远程运行 Valgrind 工具。您可以使用它们分析您在 Qt Creator 中设置了项目的应用程序以及您没有项目的应用程序。

Valgrind 工具仅在本地上受 Linux 和 macOS 支持。然而,根据 Valgrind.org,macOS 10.8 和 10.9 的支持是实验性的,并且大部分都存在问题。您可以从任何开发主机在一个远程 Linux 机器或设备上运行这些工具。

要运行 Valgrind 工具分析您具有项目应用程序,在 Qt Creator 中打开项目并选择要运行项目的包。包指定是否本地或远程运行 Valgrind 工具。

有关分析您没有项目的应用程序的更多信息,请参阅 在外部应用程序上运行 Valgrind 工具

要为 Valgrind 工具设置优先级,选择 首选项 > 分析器。您可以在项目的 运行设置 中覆盖每个项目的通用设置。

使用 Heob 检测内存泄漏

在 Windows 上,安装 Heob 堆观察者以检测缓冲区溢出和内存泄漏。

分析 CPU 使用情况

在 Linux 上,使用 Perf 分析 Linux 桌面和嵌入式设备上的应用程序的 CPU 和内存使用情况。

性能分析器 使用 Linux 内核中捆绑的 Perf 工具,定期捕获应用程序的调用链并使用时间线视图或火焰图进行可视化。

可视化 Chrome 追踪事件

使用Chrome Trace Format Visualizer查看Chrome跟踪事件。这在查看大型跟踪文件时特别有用,而这些文件使用内置的跟踪查看器(chrome://tracing)难以可视化。

另请参阅为项目启用工具包如何:分析,以及分析器

©本文件中的文档贡献归各自所有者版权所有。本文件提供的文档受< способы как быть на субботнике?GNU自由文档许可1.3版本的条款许可,由自由软件基金会发布。Qt以及相应的标志是芬兰和/或全球其他国家的Qt有限责任公司注册商标。所有其他商标是各自所有者的财产。