C++ 程序员相见恨晚的九大工具,让开发如虎添翼

Dori Exterman
Dori Exterman / 5月 10 2021
C++ 程序员相见恨晚的九大工具,让开发如虎添翼

效率第一,是横贯古今社会的铁律。效率是我们生活的价值,工作的价值,甚至是呼吸的价值。对于 Incredibuild 来说,高效更是存在的根本。Incredibuild 的核心在于效率!毕竟,提升效率就是我们的工作。我们已经找到了 C++ 开发效率主要问题——冗长的构建时间,并对症下药,创新推出了减少构建时间的解决方案。其功效也是很颇为惊艳,开发大幅提速,上下文切换有效规避、代码质量提升,维护、代码审查减少,缩短迭代周期等等。

这也是本篇博客研究 C++ 程序员如何巧用工具提升效率的原因。这是我们的主场,我们需要尽地主之谊。

本文所推荐的一些工具,并非都是 C++ 专用。不过作为专注提升效率的C++ 开发人员,任何涉及到效率的工具我们都该有所了解。当我们思考效率和 C++ 时,这些工具就自然手到拈来。

1. Windows Sysinternals (Process Monitor, Process Explorer)

这套工具包含 70 多个 Windows 实用程序和技术资源(现在归微软所有),还包括我今天要讨论的 Process Monitor Process Explorer

Process Monitor(或 Procmon),顾名思义,是一款高级监控和故障排除工具,在微软 Windows 操作系统上可以显示实时文件系统活动。它还能检测应用程序访问的文件或注册表项的问题,例如漏洞、恶意软件等。流行语“保持冷静,运行 Procmon”,侧面体现了它的口碑。

Keep calm and run procmon

图片来源: https://sd.keepcalms.com/i/keep-calm-and-run-procmon.png

Process Explorer 是一个标准的高级任务管理器,用于追踪(或者说探索)活动进程,并显示进程已打开/加载的句柄和 DLL 的信息(允许用户通过 DLL 或句柄进行搜索)。它可以定位句柄和 DLL 中的问题和泄漏,并确定哪些进程是开放的。

2. Wireshark

Wireshark 是一个顶级的、免费网络协议分析软件(也被称为“警犬”软件),可以揭开你在网络或流量方面的隐藏秘密。安全专家和系统管理员偏爱 Wireshark 来解决网络问题,如丢包、延迟、黑客攻击等。得益于全球网络专家和开发人员的不懈努力,这个项目在新技术的推动下不断更新。

3. Visual Assist

在这篇关于 2021 Visual Studio C++ 插件的博客中,我写到了部分关于 Visual Assist 的内容。为什么?因为它是 C++ Visual Studio 插件,同时也是一个提升效率的工具,所以完美符合我们的要求。正如 Visual Assist 网站上的信息,Visual Assist 具有“海量功能,全面提高开发效率”,例如导航、重构、代码辅助、代码生成、代码解读、代码纠正、代码检查、代码片段、调试辅助、工具窗口、源代码链接和配置。此外,Whole Tomato 网站还列出了提高效率的十大功能

4. ReSharper C++ 

另外,ReSharper C++ 也在 Visual Studio C++ 插件列表中榜上有名。这个列表似乎在检测生产效率的功能方面也相当成功。ReSharper C++,由 JetBrains 出品,是一个帮助提升效率的插件。它与 Visual Studio 完全集成,提供了非常全面的自动化功能。本质上来说,ReSharper C++ 改进了 Visual Studio,我们可以通过突出显示代码问题(例如冗余语句、可疑对象取样和不正确的格式说明符)来管理代码,并帮助快速修复。它还可以在项目中导航,搜索和定位任何文件、类型或类型成员,并找到相关用法。当然,和其他许多工具一样,它提供了代码编译、重构和额外的代码生成选项。此外,和 Incredibuild 一样,ReSharper C++ 也支持虚幻引擎。

5. Cppcheck

Cppcheck 是一个开源的跨平台静态代码分析工具,是 C/C++ 守护者。Cppcheck 性能突出,与许多其他静态代码分析工具不同,Cppcheck 不检测代码中的句法错误。这就是为什么它能很好地匹配编译器,因为它能检测到编译器无法检测到的错误,比如内存泄漏、不匹配的内存分配/释放、缓冲区越界、未使用的变量等等。

6. Valgrind

Valgrind 是一种代码分析和内存管理工具,提升 C++ 程序运行速度。它可以检测内存错误管理问题、内存泄漏、分配错误等等疑难杂症。解决了这些问题,我们也就节省了大量的调试时间,这就是我们认定 Valgrind 是一个高效工具的原因。

此外,Valgrind 还提供了一系列工具,如:Cachegrind 工具–缓存分析器、Callgrind–调用图创建、Massif–堆探查器、Helgrind–线程错误检测器等等。但最突出也最受欢迎的是 Memcheck,用于检测内存管理问题。这个问题在 C C++ 程序中很常见,可能会造成系统崩溃以及其他不可预测的错误。

7. C++ Intellisense

Visual Studio 中的 C++ Intellisense 是代码编辑和编译的一个功能合集,让“编码更方便”,并包括“专注提升效率的功能”,如 IntelliCode。 这是一款以机器学习、Intelligent Member 列表过滤、参数信息为基础的代码自动补全工具。

8. TabNine

TabNine 也是一个非常流行的代码自动补全工具,适用于各种编程语言。TabNine 的宗旨是让开发人员更快编写代码,减少错误,利用机器学习发现最佳编码操作。TabNine 算法虽然还很年轻(于 2019 年开发),但它从数百万个经验证的存储库中学习,并鼓励一键完成代码,功能让人惊艳。TabNine 非常直观,我们要做的就是输入代码,并从列表中选择代码,等同于编码中的 Grammarly。不过,请注意,免费版本只适用于小型项目(200kb)。

9. Incredibuild

最后,既然是关于顶级 C++ 效率提升工具列表,没有 Incredibuild 显然说不过去。Incredibuild 的设计与效率提升是天作之合。我们的解决方案的基础就是为了节省 C++ 开发人员时间。使用 Incredibuild, 程序员可以避免浪费时间等待构建完成。我们的进程虚拟化技术,可以在你的网络和云中抓取空闲 CPU,在远程机器上模拟本地环境,并将每台主机无缝地变成一台拥有数百甚至数千个内核的超级计算机。

What’s your Chosen C++ Productivity Tool?

效率其实也是主观问题。一个开发人员不需要的工具可能是另一个开发人员的救命稻草。这就是为什么我们希望听到你们的声音,作为 C++ 开发者,哪个工具是你的最爱?只要给我们发邮件到 sdr @incredituild.com,我们一定会测试你推荐的工具。下次,可能你的工具也将榜上有名。

订阅博客

阅读 Incredibuild 独家内容

Dori Exterman

Dori Exterman 是一名软件开发专家、产品策略分析师,在软件开发行业拥有 20 年的工作经历。作为 Incredibuild 的首席技术官(CTO),他指导公司的产品策略,负责规划产品前景、执行方案、选择技术合作伙伴。在加入 Incredibuild 之前,Dori 在软件公司身兼数职,主要负责各种技术和产品开发,聚焦系统架构、产品性能、先端技术、DevOps、发布管理和 C++.他是开发工具先进技术领域的专家和分享者。