Productivity, productivity, productivity. In this modern age (and all ages really) it’s a value we all live by, work by, breath by, and with the case of Incredibuild, exist by. Incredibuild owes its core existence to productivity! After all, that’s what we’re all about. We have located a major C++ productivity gap – its ridiculously long build times – and came up with a solution to reduce that build time. The benefits are, of course, enormous, starting from faster development and right down to avoiding context switching, improving the quality of the code, reduced maintenance and code revisiting, short iteration cycles, etc.
That’s why this blog post examining productivity tools for C++ developers came naturally to us. This is our turf, where we feel at home.
As for the tools presented here, not all of them are dedicated to C++, but as a C++ developer, and one that shoots for higher productivity, we believe you should have them on your list. These tools are what comes to (our) mind when we think about productivity and C++.
1. Windows Sysinternals (Process Monitor, Process Explorer)
This suite of more than 70 utilities and technical resources for Windows (now owned by Microsoft) also includes the Process Monitor and Process Explorer tools which I’d like to discuss here today.
Process Monitor (or procmon), like the name implies, is an advanced monitoring and troubleshooting tool that presents real-time file system activity on Microsoft Windows operating system. It is used to detect issues that require files or registry keys the app accesses, such as vulnerability issues, malware, and so forth. The meme “Keep calm and run procmon” says it all about how good it is.
Image source: https://sd.keepcalms.com/i/keep-calm-and-run-procmon.png
Process Explorer is an advanced task manager which is considered a standard for keeping track of (or shall I say explore) active processes and presenting information about handles and DLLs that the processes have opened/loaded (allowing users to search by DLL or handle). It is used to locate problematic issues and leaks in handles and DLLs and to establish which processes are open.
Wireshark is a top, free network protocol analysis software (which some call ‘sniffer’) that reveals (or sniffs) what’s under the hood of your network (in terms of traffic). It is used by security experts and/or system administrators to troubleshoot network issues such as dropped packets, latency, hacking attempts and so forth. Thanks to network specialists and contributing developers across the globe, the project keeps updating according to the latest technologies.
3. Visual Assist
I wrote about Visual Assist in this 2021 Visual Studio C++ extensions blog post and here it is again. Why? Because it’s a C++ Visual Studio extension, and it’s also a productivity tool, so it’s a perfect match for our list. As the Visual Assist website itself suggests, Visual Assist has a “wealth of features to enhance developer productivity,” such as navigation, refactoring, coding assistance, code generation, code understanding, code correction, code inspection, code snippets, debug assistance, tool windows, source links, and configuration. In addition, the whole tomato website lists its top 10 features that improve productivity.
4. ReSharper C++
Also on our Visual Studio C++ extensions list is ReSharper C++ by JetBrains. Yup, it seems that that list is quite successful in detecting productivity functionalities. ReSharper C++ is a productivity extension with a full integration with Visual Studio that provides automation capabilities to almost everything you can think of. It basically improves Visual Studio and allows you to manage your code by highlighting code issues, such as redundant statements, suspicious object slicing, and incorrect format specifier, and provides quick fixes. It also assists in navigating through your project, allowing you to search and locate any file, type, or type member, and find their usages. Of course, and like many other tools, it provides code compilation, refactoring and additional code generation options. In addition, and like Incredibuild, it supports Unreal Engine.
This open-source cross-platform static code analysis tool dedicated for C/C++ is a keeper. Cppcheck is a prominent tool due to its functionality. Unlike many other static code analysis tools, it does not detect syntax errors in the code. That’s why it’s such a good match to compilers – it detects bugs they can’t, such as memory leaks, mismatched allocation-deallocation, buffer overrun, unused variables and more.
Valgrind is a code profiling and memory usage management tool that helps make your C++ program faster by detecting memory mismanagement issues, memory leaks, deallocation errors, and so on, that are considered especially difficult to detect. By pointing out these issues, this tool saves you a whole lot of debugging time, which is why we’re considering it a productivity tool.
It offers a collection of tools (Cachegrind tool – cache profiler, Callgrind – call graph creation, Massif – a heap profiler, Helgrind – thread error detector and more), but the most prominent and popular one is Memcheck to detect memory-management issues “that are common in C and C++ programs and that can lead to crashes and unpredictable behavior.”
7. C++ Intellisense
C++ Intellisense in Visual Studio is a collection of features for code editing and compilation that makes “coding more convenient” and includes “productivity-focused features” such as IntelliCode – code-completion recommendations based on ML, Intelligent Member list filtering, parameter information and more.
Another very popular code completion tool for various coding languages, TabNine, is designed to make developers code faster, reduce mistakes, and discover best coding practices using Machine Learning. While quite young (developed in 2019), TabNine algorithm is impressive as it learns from millions of proven repositories and suggests one-click code completion. TabNine is so intuitive, all you have to do is start typing and select the code from the list that appears. It’s kind of a Grammarly for coding. Just note, the free version is only good for small projects (200kb).
Well… We can’t quite create a list of top C++ productivity tools without mentioning our very own tool. Incredibuild and productivity are a match made in heaven. Our solution is built on the foundations of saving C++ developers’ time. Instead of wasting time waiting for their builds to finish, C++ developers can just utilize Incredibuild. Our Virtualized Distributed Processing™ technology harvests idle CPU across your network and the cloud, emulates your local environment on remote machines, and seamlessly turns every host into a supercomputer with hundreds—even thousands—of cores.
What’s your Chosen C++ Productivity Tool?
Productivity can be a kind of subjective issue. One dev’s unnecessary tool is another’s life saver. That’s why we would love to hear from you, C++ devs, and learn which tool made it to the top of your list. Just email us to sdr at incredibuild.com and we’ll be sure to examine your tools. Who knows, they might just make it to our top list as well.