CLion starts 2020.1 Early Access Program: improvements to Clang-based tools and debugger, new font and editor theme, and more

Anastasia Kazakova

Hi,

We’ve got a lot planned for 2020 and 2020.1 and now it’s time to start our regular Early Access Program!

EAP builds are free and give you a preview of the upcoming changes and enhancements. They might not be stable and might contain functionality that doesn’t make it to the final release. And if you decide to try these builds, please, inform us of any issues you run into or any inconveniences you experience as early as possible, so we have time to investigate and can try to address them before the release.

CLion EAP launched

You can download the first EAP build (201.4515.29) from our site, via the Toolbox App, or as a snap package (for Ubuntu) and install it side by side with the stable release build.

DOWNLOAD CLION 2020.1 EAP

Clang-based tools in CLion

Clangd-based code completion

Clangd-based code completion, introduced in CLion 2019.3, has been significantly improved thanks to dozens of various issue fixes, for example:

  • Missing keywords, like switch, try, catch, and others, were added to the completion lists.
  • Operators have been added to the completion list.
  • Completion after a dot has been added in structure initialization:

Structure completion

ClangFormat

If you turn ClangFormat on in CLion settings, then CLion will use it not only for formatting the code or the reformat action, but also for indenting after Enter or Backspace are pressed. This makes the indentation more accurate.
Besides, if you enable ClangFormat on the project without .clang-format config file, CLion will suggest creating one for you. The configuration will be similar to the one you currently have in CLion’s own code style settings. You may refuse, then ClangFormat will be enabled with the default LLVM style.
ClangFormat config creation

Additionally, we are now working on enabling ClangFormat by default in cases where a ClangFormat config file is found in the project root. This change should arrive later during this EAP program.

Clang-Tidy

Similarly, when a .clang-tidy config file is detected in the project, CLion now turns off the use of the IDE settings for Clang-Tidy automatically. If you prefer the previous behavior, uncheck the Prefer .clang-tidy files over IDE settings in Settings/Preferences | Editor | Inspections | C/C++ | General | Clang-Tidy.

Data Flow Analysis

CLion’s Data Flow Analysis (DFA) is a set of powerful checks that most compilers don’t do. These checks have been available in CLion from the very early versions of the product. They analyze how the data flows through your code and detect potential issues based on that. For example, DFA detects that the second condition in the second if clause is always true when reached in the code sample below:
DFA
DFA can also detect endless loops, missing return statements, infinite recursion, and more.

DFA can catch lots of potentially serious problems. However, it requires very accurate code parsing and resolve, and it can take a significant amount of time. Especially, when the underlying resolve is slow. That’s why in 2020.1 we’ve moved DFA to a Clangd-based engine. This is still a work in progress, and many known issues are linked to the parent ticket CPP-17578 (like, for example, some issues with DFA when macros or templates are used, or the issue with the inspection settings CPP-17707). Feel free to report any new issues you find to our issue tracker.

Debug

Debugging of custom targets

Remote GDB Server and Embedded GDB Server configurations allow you to debug your application on a remote host or at the microcontroller from the CLion running on your local machine. Previously, only CMake projects were supported as the configuration worked only with the CMake targets. Now we’ve also added custom targets support there. For example, if you work with the embedded project using Makefiles as a project model, you can now simply follow our workaround via the compilation database to get a Makefiles project to work in CLion and then use the custom targets to build your project locally and debug remotely on a microcontroller.

Note, if you have already created any of these configurations in CLion v2019.3 or earlier, when you first open such a project in 2020.1, CLion will store previous Run/Debug Configuration settings in the projectFilesBackup directory in the project folder. You’ll be notified about this in the editor:
Convert project

New EAP build also improves the Embedded GDB server workflow. CLion now stops the debugger correctly if you close your project. Additionally, the Embedded GDB Server configuration now automatically uses the configured Reset command after the executable has been downloaded.

Debugger for the Visual Studio C++ toolchain

Some time ago we bundled the LLDB-based debugger that is suitable for debugging applications compiled with the Microsoft Visual Studio C++ toolchain. This is an experimental debugger developed by the JetBrains team, so in its early stages it was added to CLion as an experimental feature, but disabled by default.
Now, the debugger for the Microsoft Visual C++ toolchain is enabled by default! Which means that for this toolchain it will be the default debugger and you can start using it right away! Still, to enable bundled support for native visualizers, use Preferences/Settings | Build, Execution, Deployment | Debugger Data Views | Enable NatVis renderers for LLDB.
Please share your feedback with us on how the debugger works for your projects in our tracker or here in comments! We’d love to know in which direction you’d like us to further improve it.

Editor

Quick Documentation on mouseover

The Quick Documentation popup works as a universal tool to get more information about a code element that is under the caret. Not only does it preview the code documentation, but it also provides information about function signature, inferred types, and macro replacement. And now in 2020.1, it’s available on mouseover!
Documentation on hover
The behavior can be controlled controlled using the setting in Editor | General | Other | Show quick documentation on mouse move.

JetBrains Mono

You’ve probably already noticed that the default font in the editor has changed! We’re excited to introduce our new open source font – JetBrains Mono. This font was created in pursuit of the very ambitious goal of making working with code more comfortable for everyone. Try it out in this EAP build and let us know whether we are getting close to achieving it! 😉

IntelliJ Light

The light theme is now unified for all operating systems under the name IntelliJ Light. If you are experiencing any issues with it, you can roll back to the previous look and feel in Settings (select Classic Light).

Other improvements

The first CLion 2020.1 EAP build comes bundled with CMake v3.16.

CUDA users will be happy to learn that we’ve fixed the long-standing issue with the launch of CMake CUDA targets that used to run a wrong binary (CPP-10292). We have more improvements planned for CUDA, so stay tuned!

Code Coverage was introduced in CLion 2019.3 and it now works for out of source builds.

Several VCS improvements from the IntelliJ Platform have also been added in this build:

  • The branches popup benefits from an explicit search field and incoming (blue) and outgoing (green) commit indicators next to the branch’s name.
  • A new, truly interactive Rebase from Here dialog has been introduced.
  • New Commit tool window.

You can read more in these IntelliJ IDEA blog posts (1, 2).

DOWNLOAD CLION 2020.1 EAP

Your CLion team
JetBrains
The Drive to Develop

Comments below can no longer be edited.

35 Responses to CLion starts 2020.1 Early Access Program: improvements to Clang-based tools and debugger, new font and editor theme, and more

  1. Dmitrii Loginov says:

    January 30, 2020

    Thanks for your product. Can I ask do not enforce enable ClangFormat, b/c Clion IDE CodeStyle options are more flexible then clang-format?

    • Anastasia Kazakova says:

      January 30, 2020

      We plan to enforce it only in case ClangFormat config is present in the project root. As it probably means that in general the project should be formatted with the ClangFormat. Isn’t it?

  2. Matt Hurd says:

    January 31, 2020

    FWIW, clangd range-v3 etal issues persist. last good release was 2019.2.5

    • Anastasia Kazakova says:

      January 31, 2020

      Could you please specify some details? What exactly goes wrong?

  3. Taw says:

    January 31, 2020

    It seems that the space between the files in “Project” is larger than the 2019.3 and it’s very awkward. Is this normal? https://imgur.com/a/W8hglfD
    I use Consolas with 1.2 spaces, I am using this for years.

    • Anastasia Kazakova says:

      January 31, 2020

      It works as designed. Now rowHeight corresponds to other platforms ~ 20/12 of the font size. Also it makes rows in different trees, tables and lists more consistent.

      • Taw says:

        February 1, 2020

        On macos it looks quite nice, on Linux xfce it looks horrible.

    • Dmitry Kozhevnikov says:

      January 31, 2020

      If you’ve ever set a non-default `ide.ui.scale` value as a workaround for some issue (i.e. in custom VM options), you might try removing it and see if everything looks OK now.

    • Taw says:

      February 1, 2020

      It looks very ugly, the space is way too big (half would have been perfect). Is there a way to revert to the old look?

      Also, if it’s a desired behaviour, why is marked as a bug (IDEA-231685) and why Ekaterina said “Our developers are currently discussing possible solutions, we will keep you informed. Sorry for inconvenience.”

      @Dmitry: I did not modify the ui.scale

      • Anastasia Kazakova says:

        February 3, 2020

        I’ll check with the team. It might be a regression for 19.3 only but a planned change for 20.1. Anyway, we’ll continue in the ticket.

        • Taw says:

          February 3, 2020

          Thanks, I agree that the old version was too crowded, but the new one…there is too much space…something in the middle would have been great.

        • Tano says:

          February 5, 2020

          With a help of one of your colleagues, I set ithe value to 21 (20 was the old setting, 25 is the new huge one)
          21 is perfect!
          If I can customize it and export/import that setting, I can live with it.

          “Open “Find Action” (Ctrl-Shift-A), find “LaF Defaults” and press Enter
          Find “Tree.rowHeight” property and change it”

        • Tano says:

          February 5, 2020

          Yep, not a solution it resets after restart.
          As I said in the bug, I feel that JetBrains thought that “we have thousands of bugs in the backlog, what would we do? We increase the row space!” 🙂

          • Anastasia Kazakova says:

            February 5, 2020

            Could you please point me to the bug where you were discussing it?

          • Taw says:

            February 9, 2020

            It’s IDEA-231685.
            I really hope that this will be fixed until 2020.1 release, it’s the first time that I won’t upgrade to EAP. Because this affects also the completion popup.

            Sorry but an 25% increase is too much (from 20 to 25). I can live with 21-22, but not with 25, sorry. On my monitor/resolution it looks really ugly.

            “Now rowHeight corresponds to other platforms”
            On macos this space is more “natural”, macos has everything more spaced, but not on linuxes.

            If you don’t change this, please give us the option to modify it by ourselves (tree and completion list). Thanks.

            • Anastasia Kazakova says:

              February 10, 2020

              As far as I understand, the line height was made 5/3 from the font size. However, on some Linux/WM the scaling settings are read and applied incorrectly. Seems we need full details of such cases to be able to reproduce and investigate the issue. Could you please provide them in the ticket if not yet?

          • Taw says:

            February 10, 2020

            Anastasia, i don’t know exact the scaling that they modified, but when I check the internal settings, the 2019.3’s rowHeight was set to 20 and on 2020.1 EAP is 25. So it’s nothing related to font size, it’s just a value that was changed in 2020.1.

            The reproducing mechanism is very simple, I tried on 2 Linuxes and just run CLion. I wonder how this passed the QA, because it’s just opening a basic CLion project in Ubuntu.

            Thanks for your support!

            • Anastasia Kazakova says:

              February 10, 2020

              Could you please submit your comments to the corresponding ticket? It’s the general IntelliJ platform JDK changes. Would be god to resolve the general issue before the release, for sure.

  4. Roman Popov says:

    January 31, 2020

    >Now, the debugger for the Microsoft Visual C++ toolchain is enabled by default! Which means that for this toolchain it will be the default debugger and you can start using it right away!

    Does this mean that it supposed to work? I’ve just tried to run it, hit “Pause Program” button and it shows some assembly listing instead of source code:
    DbgBreakPoint:
    int3
    retq
    int3
    int3
    int3
    int3
    int3
    int3
    nopl (%rax,%rax)

    Looks like some trap inserted by debugger.

    And I don’t see my code on call stack, its just:
    DbgBreakPoint 0x00007ffd6bbc3151
    DbgUiRemoteBreakin 0x00007ffd6bbef01b
    BaseThreadInitThunk 0x00007ffd69177974
    RtlUserThreadStart 0x00007ffd6bb8a271

  5. David Rees says:

    January 31, 2020

    Excited for another EAP! As part of the clang improvements are there plans to get CLion up to IntelliJ Java level for code analysis like hierarchy, dependency, and project views? There are many issues around the general need:
    https://youtrack.jetbrains.com/issue/CPP-2884
    https://youtrack.jetbrains.com/issue/CPP-2833
    https://youtrack.jetbrains.com/issue/CPP-1663

    There are also many related ones under AppCode in YouTrack that don’t have CPP tags (so I worry they may be being missed :).
    https://youtrack.jetbrains.com/issue/OC-10853
    https://youtrack.jetbrains.com/issue/OC-4163
    https://youtrack.jetbrains.com/issue/OC-15926
    https://youtrack.jetbrains.com/issue/OC-10569
    https://youtrack.jetbrains.com/issue/OC-5669

    Thanks!
    dave

    • Anastasia Kazakova says:

      January 31, 2020

      The hierarchies subsystem indeed requires our attention for some time already. We do plan to address it. Not sure though we’ll be able to allocate resources to this in 2020.1. But we’ll try to improve it this year.

    • Anastasia Kazakova says:

      January 31, 2020

      Regarding the https://youtrack.jetbrains.com/issue/OC-10569, Unused Includes were completely reworked last year and are now implemented on top of Clang with different strategies one may configure and use.

  6. Roman Popov says:

    January 31, 2020

    Auto-completion now offers me to use private methods. Code does not compiles.
    AFAIR, previously it didn’t suggest to use private methods. Tool-tip now shows “Using declaration referring to inaccessible member ‘….’ (which refers to accessible member ‘….’) is a Microsoft compatibility extension”. This is incorrect : code does not compiles even with MSVC.

    • Dmitry Kozhevnikov says:

      February 3, 2020

      Hi Roman!

      I cant’ reproduce the issue with a simple example (private methods are shown on a *second* consecutive ctrl-space hit, as before).

      Is it possible for you to share a reproducer (preferably in the tracker)?

  7. Signer says:

    February 1, 2020

    Would very much like to try the new commit workflow, but I can’t because of https://youtrack.jetbrains.com/issue/IDEA-216763

    • Anastasia Kazakova says:

      February 3, 2020

      Indeed (
      For now, you can still use the modal commit dialog that does not have this issue.
      Disable Preferences/Settings | Version Control | Commit Dialog -> Commit from Local Changes

  8. HGH says:

    February 11, 2020

    Android Studio does like to destroy my CMake formatting. Do you have any plans to make CMake (auto)formatting more customizable and more flexible and less intrusive?

    • Anastasia Kazakova says:

      February 11, 2020

      Which particular options are you missing? Can you please specify

  9. Alex says:

    February 24, 2020

    Any plans on fixing https://youtrack.jetbrains.com/issue/IDEA-225699 in this release?

    • Anastasia Kazakova says:

      February 24, 2020

      We still have to investigate the original issue as it was stated to you in the comments. Meanwhile, the workaround is available.

Subscribe

Subscribe for updates