Clion Profiling
CLion plugin repository contains over 1200 plugins that you can install to enrich the out-of-the-box CLion functionality. Some of those plugins are already bundled in CLion, and no prior action is required to start using them. However, there are other helpful and qualitative plugins that can improve or even transform your workflow in CLion. This article gives a selection of such valuable plugins.
Please note that the 3rd party plugins are not officially tested or supported by the CLion team, so we cannot guarantee their stability. Selection criteria for this compilation were: download statistics, rating, maintenance status, and user feedback.
The plugins are grouped by the tasks they target, each described in the corresponding chapter:
Learn the IDE
Plugin | Description |
---|---|
CLion Help | Bundles the entire CLion web help for offline use. |
Keymap exporter | Prints the PDF version of the CLion keymap. |
Key Promoter X | Shows keystroke equivalents to mouse presses: |
Get comfortable with the UI
Plugin | Description |
---|---|
Main Menu Toggler | Switches visibility of the main menu on and off by a single action or a shortcut. |
Frame Switcher | Lets you switch between projects, windows, and frames, alternatively to Alt+Tab and the View menu. The switcher works even with multiple IDE instances, and lets you assign shortcuts to various actions, customizing or expanding the pre-defined shortcut set. |
Active Tab Highlighter | Highlights the currently active tab. The highlighting color is easily configurable, which is especially useful for the Darcula scheme. |
Focus on Active Task | Filters the project tree to show only the currently opened and related paths and files. |
As an example, here is how your CLion screen on macOS with Darcula scheme would look like with the filtered project tree, highlighted active tab, and the invoked frame switcher:
It looks like there are a couple features that are only available in CLion, being profiling and valgrind. Rust-analyzer 8 days ago. I remember that Rust used to be only supported in CLion. Debugging Rust used to be only supported in CLion. CPU profiling now works on Apple Silicon (M1 chip). In this release we’ve introduced Code Coverage for remote toolchains, and we’ve improved coverage information collection performance for such cases. The problem causing the Clangd language engine to crash when. You can use Callgrind to create profiling output. It is part of Valgrind. Callgrind-output could be used with KCacheGrind, which is probably worth a look as long as you're using Linux. Conan CLion Plugin. Conan CLion plugin adds Conan support to Jetbrains CLion. CLion version 2018.1 and above. Conan executable in path environment variable. Using the Plugin Matching Profiles. Before running the build for the first time, please match a Conan profile to each CMake profile. To do this click on the Match profiles icon.
Tune the code editor
Plugin | Description |
---|---|
CMake Quickdocs | Makes the Quick Documentation pop-up available in CMakeLists.txt files. |
CMake Highlighter | Provides syntax highlighting and navigation for CMakeLists.txt files. |
The screenshot below illustrates how these two plugins work in pair (notice the pop-up with the name of the action invoked, shown by the Presentation Assistant plugin):
Plugin | Description |
---|---|
Swagger | Helps in editing Swagger specifications. |
OpenAPI Specifications | Provides IDE support for Swagger and OpenAPI specification files. See OpenAPI for more information. |
OpenAPI Generator | Generates client, server, and documentation code out of OpenAPI specifications. |
Plugin | Description |
---|---|
String Manipulation | Provides an assortment of actions for working with any kind of text: C/C++ code or comments, any ASCII symbols, JavaScript, SQL, XML, or text in other languages. |
String Realigner | Adds three string reformat actions: join, split, and wrap/unwrap strings. |
Shifter | Detects a selection, line, or keyword at caret and moves it up or down with a single keystroke. |
Plugin | Description |
---|---|
IdeaVim | Provides Vim emulation with features like motion keys, marks, registers, and visual mode commands. |
Emacs+ Patched | Adds two Emacs keymaps: Emacs+ and Mac Emacs+. |
Clion Profiling Windows
Plugin | Description |
---|---|
VS Code Keymap | Adds the default VS Code keymap. |
Plugin | Description |
---|---|
Translation | Incorporates multiple language engines and supports text-to-speech. |
hunspell | Provides spell checking based on Hunspell dictionaries. |
Plugin | Description |
---|---|
EditorConfig | Helps maintain common code style across teams and IDEs: it enables the CLion editor to read the EditorConfig file format and adhere to defined styles. |
Eclipse Dark, Tempo-theme, Google Developer Tibau, IdeaLight, Nord, ChroMATERIAL, Material Theme, Rainglow Schemes Collections.
Integrate more frameworks and build systems
Plugin | Description |
---|---|
Conan CLion plugin | Lets you create and upload cross-compilation Conan packages in the lines of your CMake workflow: Take a look at the Getting Started blog post and our webinar to learn more on working with Conan in CLion. |
Plugin | Description |
---|---|
Docker Integration | Enables you to download and build images, create and start containers, and manage other Docker tasks. See Docker Integration for detail. |
Clion Profiling System
Plugin | Description |
---|---|
UE4 SDK Support | Adds extra completion options for reflection specifiers in Unreal Engine 4 code that CLion does not provide by default. Note that starting v4.20, Unreal Engine can generate a CMake structure out of your UE code and open it as a project in CLion. |
Plugin | Description |
---|---|
Bazel | Lets you import a Bazel BUILD file (with its own language supported in CLion) and run Bazel configurations. |
Add languages and file types support
Plugin | Description |
---|---|
IntelliJ Rust | Enables you to create and develop Rust applications and debug them using the Cargo build system. See the dedicated article for a thorough description of Rust support in CLion. |
Plugin | Description |
---|---|
Swift Support | Provides the Swift language and Swift Package Manager support, letting you use CLion as a fully-functional Swift IDE. Learn more. |
Plugin | Description |
---|---|
Protobuf Support | Helps you work with Google’s Protocol buffers (the *.proto files). |
Plugin | Description |
---|---|
BashSupport | Provides bash command language support. |
PowerShell | Adds PowerShell intellisense and scripts execution. |
Fortran (see this article for the Fortran support details), Lua, Dart, Mathematica, LaTex, Gherkin.
Facilitate Debugging

Plugin | Description |
---|---|
Compiler Explorer plugin | Lets you work with Compiler Explorer right from CLion: you can view compilation results got from various remote compilers and easily switch between them. The plugin shows the list of sources taken from your project tree and provides a way to pass compiler flags and set additional options to tune the disassembly layout for your needs. |
Grep Console | Helps in analyzing logs and parsing console output. Grepping means searching for plain-text lines that contain a match to some regular expression. The plugin enables you to grep the application output, highlight and filter the results, and even change the output or execute an action upon a match: |
UndoDB | Integrates the Undo ’s record, rewind and replay technology for Linux C/C++ applications in CLion. With Undo, you can record the program’s execution down to single instruction for further replay and analysis. This way, the debugger gets reversible: you can step forwards and backwards in your code and see exactly what is happening, leading up to easier bug capturing. Take a look at this blog post to find out more on using Undo in CLion. |
Run Configuration as Action | Lets you register Run/Debug configurations as actions in CLion, and call them via shortcuts or additional toolbar buttons. |
Get profiling data
CLion integrates the CPU Profiler available on macOS and Linux. It collects performance metrics for your application and visualizes them in ready-to-analyze flame graphs and call trees. However, if you need to explore the overall application behavior or report a performance issue, consider the plugins described below: they inform you about the CPU usage level and lets you generate thread dumps.
Plugin | Description |
---|---|
CPU Usage Indicator | Adds the CPU load indicator to the status bar, lets you get a thread dump and configure the settings of the Performance Watcher (which is the CLion’s frozen UI thread dumper): |
Performance Testing | Introduces Help Diagnostics menu with options to get the performance summary about your hardware and capture CPU snapshots for indexing and test scripts execution: |
Gather statistics
Plugin | Description |
---|---|
Statistics | Collects the overall project-level statistics: project files with line counts, sorted by extension and size. |
Code::Stats | Tracks the changes you make in project files and detects the syntax of the language you use. The results are presented in infographics of your XPs (Experience Points, roughly the amount of keystrokes) for different languages. |
Completion Stats Collector | Sends the anonymized data of your code completion patterns to JetBrains developers. It helps the team implement machine learning algorithms and therefore improve completion efficiency. |
Expand the scope of VCS-related actions
Plugin | Description |
---|---|
GitFlow | Integrates the UI for the Git Flow branching model. |
GitScope | Highlights the changed code, analogically to the git diff command. |
GitToolBox | Enriches the default Git integration with features like Git status display, Auto fetch, Behind tracker, and others. |
Find Pull Request | Finds GitHub pull requests for the selected line. |
Git Commit Template and Git Commit Message Plugin | Provide templates for Git commit messages. |
GitLab | Adds the GitLab -specific Checkout support and the dialogs of GitLab Share, Merge Request, and Merge Request List. |
GitLink | Opens files and commits to storages like GitHub or Stash in default browser via a single shortcut. |
Plugin | Description |
---|---|
SVNToolBox | Enhances the built-in SVN support: adds the Status Bar component, enriches the Project View, and provides more Subversion context menu actions. |
Visual SorceSafe Integration | Adds Visual SourceSafe settings and commands. |
Pre Commit Hook | Runs a custom pre-created script before any commit to ‘hook’ the changes. |
Automate builds, track issues, and review code
Plugin | Description |
---|---|
TeamCity plugin | Integrates the JetBrains’ TeamCity, a continuous integration server. This plugin lets you configure notifications, run builds and tests, view changes, assign investigations, and perform other TeamCity actions without leaving the IDE. |
Visual Studio Team Services | Enables you to work with Git and TFVC repositories on Visual Studio Team Services (VSTS) or Team Foundation Server (TFS) 2015+. |
Wrike | Links your commits with the corresponding Wrike tasks. |
Plugin | Description |
---|---|
YouTrack Integration | Extends the bundled Task Management functionality to provide deeper integration with JetBrains' YouTrack bug tracker. |
Yandex.Tracker Integration | Integrates Yandex.Tracker. |
Mantis | Lets you create, edit, and delete issues from the Mantis bug tracker. |
Plugin | Description |
---|---|
UpSource plugin | Integrates the LetBrains' UpSource. |
Gerrit Code Review | Integrates the Gerrit Code Review tool. |
Plugin | Description |
---|---|
IDETalk | Helps in code-related communications between developers by providing functions like inside-the-IDE message exchange, getting and sending stack traces and ‘code pointers’ to your partner, view the partner’s opened files and differences between your files and theirs. |
Floobits plugin | Provides collaborative real-time development across multiple editors and IDEs for team members with Floobits accounts. |
Stay creative and productive
Last but not least, CLion plugin repository contains a collection of time management plugins, as well as other tools to increase your productivity. Find a few notable examples below.
Time management plugin | Description |
---|---|
Darkyen’s Time Tracker | Implements simple time management technique of tracking the time you actually spend on a project: it adds a tracking bar widget that you manually start for counting. |
Pomodoro-tm | Helps you manage the time spent on a task using Pomodoro Technique. |
Git Time Metric | Tracks the time of reading and working on the code that you store in a Git repository. |
WakaTime | Performs time tracking and collects the language, OS, branch/commit, and other statistics of your work session. |
Also, if you like mind mapping to visually structure your ideas, the IDEA Mind Map plugin will let you create and edit mind maps in MMD format right in CLion. With stackoverflow, you can search a line of code or comment in StackOverflow just by a right click.
And just for fun, try the Nyan Progress Bar to brighten the status bar when waiting for some of the time-consuming CLion actions to finish, or enjoy emojis in commits with the Emoji for Git Commits plugin.
New Features
#6992 Provide initial experimental support for custom deriveprocedural macros. Now the plugin can expand such procedural macro calls and take into account expanded
impl
itemsin type inference and name resolution (other types of items are ignored for now).
Note, it’s only an initial implementation,so it may work in an unexpected way in some cases. The feature is disabled by default for now. To turn it on, youshould enableUse experimental name resolution engine
option inPreferences Languages & Frameworks Rust
settings and enableorg.rust.cargo.evaluate.build.scripts
andorg.rust.macros.proc
experimental features.Don’t forget to reload a project structure after enabling the corresponding features viaRefresh Cargo Projects
action on Cargo tool window. See tracking issue formore details and the current status of procedural macros support#7093 Now the plugin takes Cargo config into account during evaluation of
cfg
conditions.Note, it works since Rust 1.52.0 (currently in beta)Introduce new intention actions:
#6845, #7115
Enable/Disable feature state
to toggles feature state from acfg
attribute (by @Kobzol)By the way, we have a blog post about cargo features support
#7071
Share in Playground
to share a selected Rust code on Rust PlaygroundPreviously, this feature was only available as
Rust Share in Playground
action inTools
and context menus#6960
Expand dependency specification
forCargo.toml
#6837
Create struct
to create a struct from an unresolved struct literal (by @Kobzol)
#5650 Now
Use destructuring declaration
intention action replaces usages of destructured variable (by @Kobzol)#6986 Allow specifying the function return type in
Create function
intention action if the inferred return typeis unknown (by @Kobzol)Improve code folding:
#7111 Support folding for multiline
where
clauses (by @Stzx)#7112 Enable folding for series of use items by default (by @Stzx)
You can disable it viaImports
option inSettings Editor General Code Folding
settings#7112 Support
Method bodies
option ofSettings Editor General Code Folding - General
settingsto fold function/method bodies by default (by @Stzx)
Improve experimental crate-local index:
#6801 Add
Cargo.toml
inspection that checks crate dependency version requirements that do not match any knowncrate version (by @Kobzol)#6599 Use semantic versioning to improve version sorting in dependency completion
#7004 Don’t perform code completion and run inspections if the index is not ready
Note, the corresponding feature is disabled by default for now. To use it, enable
org.rust.crates.local.index
experimental feature#7142 Drop support of
org.rust.cargo.fetch.out.dir
experimental feature.Useorg.rust.cargo.evaluate.build.scripts
instead if you need to evaluateenv!('OUT_DIR')
in yourinclude!
macro calls
Clion Memory Profiling
Fixes
Name resolution fixes:
#7119 Correctly resolve qualified attributeprocedural macro paths (like
#[foo::bar]
)#7132 Resolve field shorthandto a local variable in the case of unresolved struct literal
Improvements of new name resolution engine:
#7089 Correctly resolve macros with absolute paths (like
::foo::bar!()
)#7057 Exclude some cfg-disabled items from completion
Change Signature
refactoring (Refactor Change Signature
or Ctrl+F6) fixes:#7081 Fix some false positives in name conflict detection (by @Kobzol)
#7080 Do not needlessly import default type arguments (by @Kobzol)
#7076 Correctly place function visibility after attributes (by @Kobzol)
#7108 Insert correct
use
item by auto-import feature in the case of arenamedCargo package#7101 Fix false positive in
Needless lifetimes
inspection when the lifetime is used inwhere
clause (by @Kobzol)#5491 Add line break after opening brace in struct blocks by built-in formatter (by @Kobzol)
#7131 Fix false-positive proofreading warnings for sentences written in several sequential Rust comments.Note, you can enable/disable proofreading in Rust files in
Preferences Editor Proofreading Grammar
settings#7121 Reload project model automatically when workspace-root
Cargo.toml
file is changed (and saved).Previously it was work only for packageCargo.toml
files#7079 Fix proc macro expansion if proc macro crate is added as separate cargo project in
Cargo
tool window#7072 Place
Show the result of macro expansion
intention lower in the intention list#6013 Don’t run some inspections on Rust files outside a valid Cargo project to avoid expected false positive errors
#7070 Don’t show errors related to Rust edition if we don’t known the edition (by @Stzx)
#7150 Fix
Can't find process starter
error when running DTraceprofiler with CLion 2021.1#6201 Avoid Cargo project duplication in the project model. This fixes some issues related to such duplications
Internal Improvements
#7114 Don’t show “Tip of the Day” at startup in internal IDEs (for the plugin developers)
#7094 Enable Gradle Build Cache for local builds(see #7094 for more details)
#6903 Introduce
2021
edition variant in the plugin and adjust the corresponding code
Full set of changes can be found here