CLion 2020.3 EAP: More Advanced Google Test Integration, Qt-Specific Code Completion, Recompile Single File for Makefiles, and More

Anastasia Kazakova

Earlier in September, we began the 2020.3 Early Access Program for CLion which introduces the following enhancements:

Today the new 2020.3 EAP build for CLion is available! Here is a brief overview of the highlights you will find in this new EAP version:

CLion EAP

Build 203.4818.55 is available from our website, via the Toolbox App, or as a snap package (if you are using Ubuntu).

DOWNLOAD CLION 2020.3 EAP

Enhanced Google Test support

CLion supports the top most popular unit testing frameworks for C++ and also comes with a built-in CTest runner for CMake projects. In addition to working on CTest in 2020.3, our team focused on making several improvements to Google Test integration and the built-in test runner in particular:

  • CLion now shows the full test tree in the built-in test runner, while executing tests one by one.
  • For parameterized tests, CLion now shows test parameters right in the test tree.
  • Disabled tests (those with the DISABLED prefix in their names) are now also shown in the test tree with the corresponding icon.

Test runner

Incidentally, our 2020 research shows that 31% of C++ developers are using Google Test, making it the most popular unit testing framework in the world. We hope the above improvements make your experience with Google Test in CLion smoother and more productive.

Recompile single file action for Makefile projects

To speed up the development process, you might sometimes want to compile one file without building the whole project. For this purpose, CLion provides the Recompile action. And now it works for Makefile projects! Use Ctrl+Shift+F9 on Windows/Linux and ⇧⌘F9 on macOS, or simply call it via Build | Recompile ‘file name’.

Recompile action

More help for Qt projects

So far in the 2020.3 EAP, we’ve already announced new Qt templates for Qt Console Executable and Qt Widgets Executable project types. In this build we’ve improved the New project dialog for these templates, adding Qt CMake prefix path field and Qt version:

Qt New Project

The templates themselves were also updated.

The signals and slots mechanism is a central feature of Qt, as these are the entities used for communication between objects. CLion now understands when signals or slots have to be completed, and filters only the corresponding members in the completion dropdown. For example, for signals:

Qt completion for signals

Or slots:

Qt completion for slots

And of course, SIGNAL and SLOT macros are also available in code completion in such locations, while all unrelated class members are filtered out.

And finally, Qt-style auto-import is now supported in CLion. For example, for the QUrl type the #include will be suggested:

Qt import

More accurate code completion for templates

Since moving code completion to our Clangd-based engine in CLion we’ve significantly improved it. It has become faster and more accurate, and we are continuing to improve it. This time we fixed a couple of code completion issues for templates.

  • Fixed: No completion for container elements in the function template is shown (CPP-20919).
  • Fixed: Completion does not work correctly with template types (CPP-22204, CPP-19682).

Templates completion

Clang-Tidy update notification

CLion uses the Clang-based language engine and Clang-Tidy from the corresponding LLVM revision. The version of the built-in Clang-Tidy can be checked in Settings/Preferences | Languages & Frameworks | C/C++ | Clang-Tidy. We release Clang updates quite often. This means that you might find some new checks in CLion. Or, on the contrary, some of the newer checks might not be shown in CLion when the ‘-*’ pattern is used in the configuration files.

We’ve introduced a notification that will tell you when Clang-Tidy has been updated to a newer version, so that you’ll know you might need to update the configuration files.

Clang-Tidy alert

And if you click the Review link in the notification, you’ll get a list of the available new checks and their activation state according to the current configuration file:

Introduced Checks

If you don’t rely on the CLion config for Clang-Tidy and use your own config instead, the notification will also warn you that “clang-tidy files may overwrite your IDE settings”. In that case, you can check your .clang-tidy config files manually.

A few important limitations to note:

  • You likely won’t see the notification right now, as we’ll use the current 12.0.0 version as a baseline and then compare against it during the next Clang-Tidy update.
  • This won’t work for downgrades.
  • This is not available for custom Clang-Tidy binaries selected in CLion, only for the bundled binary.
  • For now, the notification is shown only once per new IDE version launch, but the Clang-Tidy config settings can differ from project to project. We are still looking for an elegant solution to this, and are welcome to ideas.

Other improvements

Other enhancements include:

  • CLion’s WSL support can now pick the openSUSE-Leap-15-2 distributive correctly.
  • We continued our work with the MISRA checks in CLion and added a few more. We are eager to know if you typically use MISRA C++ guidelines with C++11 or higher. We’ve already had some answers from our Twitter followers. If you would like to add your opinion to this discussion, please let us know in the comments.
  • VCS:

    • Git tab was added to the Search Everywhere dialog. There you can find commit hashes and messages, tags, and branches:
      Git in Search Everywhere
    • Now the two most popular buttons – Commit and Commit and Push… – are explicitly shown on the Commit screen.

That’s it for now. The full release notes are available here. Try out the new EAP build today, and please share your feedback with us in the comments below or in our issue tracker.

DOWNLOAD CLION 2020.3 EAP

Your CLion team
JetBrains
The Drive to Develop

Subscribe

Subscribe for updates