CLion 2021.2 Help

List of C/C++ inspections

Data flow analysis

InspectionDescriptionDefault Severity
Constant condition

Analyzes method control and data flow to report conditions that are always true or false and expressions with statically constant values.

Warning Warning
Constant function result

Detects functions whose return value is always equal to the same constant.

Warning Warning
Constant parameter

Detects functions where a parameter is always equal to the same constant.

Warning Warning
Dangling pointer

Detects pointers that point to invalid data, typical cases are double-free and use-after-free problems. Check out this parent ticket for the list of limitations.

Warning Warning
Endless loop

Detects the for, while, and goto statements that can break only by throwing an exception.

Warning Warning
Infinite recursion

Detects when a function produces infinite recursion.

Warning Warning
Local value escapes scope

Detects variables that reference local values that escape their scope.

Warning Warning
Loop condition isn't updated inside the loop

Detects situations where a loop condition is not updated inside the loop, which can cause an infinite loop.

There is a similar inspection in Clang-Tidy, clang-tidy:bugprone-infinite-loop. However, it doesn’t cover loops with exit points and throws up false positives in cases with lambdas or references. This check is disabled in CLion's default Clang-Tidy profile.

Warning Warning
Null dereference

Detects dereferences of pointers that may contain the nullptr.

Warning Warning
Unreachable calls of function

Detects functions whose call sites are never executed.

Warning Warning
Unreachable code

Detects the code that is never executed (dead code).

Warning Warning
Unused local variableDetects the variables that are declared but not used and never accessed for reading. Warning Warning
Unused parameterDetects the parameters that are declared but not used and never accessed for reading. Warning Warning
Unused value

Reports the cases when the value of a variable is never used after the assignment.

Clear the Warn about unused variable initializers checkbox to disable the inspection for default variable initializers (for example, if you prefer to assign nullptr to the variables of pointer type).

The Unused value inspection settings
Warning Warning


InspectionDescriptionDefault Severity
Hiding non-virtual function

Reports when a function hides non-virtual functions with the same signature from the base class.

Warning Warning
Not implemented functions

Detects when a function is declared but not defined.

Warning Warning


InspectionDescriptionDefault Severity
Argument selection defect

Compares the names of arguments in a call and formal parameter names in the declaration to detect the errors like accidental switching of the arguments.

See Inspection: Argument selection defects for details.

Warning Warning
Clangd errors and warningsReports errors and warnings from Clangd. This inspection works in the editor as you type, and you can also get a summary of the results when running inspections manually using Code | Inspect Code.
Empty declaration or statement

Reports the redundant empty declarations and statements that can be safely removed.

Warning Warning
Inconsistent Naming

Reports when a symbol violates the currently selected naming convention.

Find more details in Inspecting code for violations of the naming rules.

Preprocessor directive comment

Finds cases where a preprocessor #endif comment doesn’t match the macro name.

Warning Warning
Simplifiable statement

Suggests to simplify the following types of statements:

  • condition == true
  • condition1? true : condition2
  • if(condition1) return true; return condition2;
  • statements for identical branches

  • if(true) or while(false)

Warning Warning
Unconstrained variable type

Suggests constraining local variables declared as auto if the result of a constrained expression or function call is assigned to them.

This inspection is disabled by default on Windows and is not supported for concepts declared with the requires clause syntax.

Warning Warning
Virtual call from constructor or destructor

Reports when a virtual function is called from a constructor or destructor, helping to prevent situations when virtual functions access the resources that are not yet initialized or have already been destroyed.

Warning Warning

Static Analysis Tools

InspectionDescriptionDefault Severity

Performs various clang-tidy checks related to C++ Core Guidelines, code modernization, readability, and performance issues.

See Clang-Tidy integration for details.

Warning Warning

Performs Qt-related clazy checks.

Warning Warning
MISRA checks

Performs the checks defined by the MISRA C 2012 and MISRA C++ 2008 guidelines. See the list of currently supported checks.

You can adjust the list of checks in the Options section.

Note that on Windows with MSVC (including the case of clang-cl), CLion shows only the MISRA C++ checks. MISRA C checks can't be shown correctly because they apply to a specific language standard configurable via the -std=cXY flag, which is not supported by MSVC.

Unused code

InspectionDescriptionDefault Severity
Unused concepts

Detects C++ concepts that are never used.

Warning Warning
Unused global declaration

Detects when a global function or variable is declared but never accessed or written.

Warning Warning
Unused include directive

Reports the unused or unrequired include directives, which can be safely removed.

See Inspection: Unused include directive for details.

Warning Warning
Unused macro

Detects macro definitions that are never used in the code.

Warning Warning
Unused struct

Detects C/C++ classes and structures that are never used.

Warning Warning
Unused template parameter

Detects C++ class and function template parameters that are never used.

Warning Warning
Unused type aliasReports using statements that are never used.
Last modified: 13 May 2021