CLion 2023.3 Help

List of C/C++ inspections

Data flow analysis

Inspection

Description

Default 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

Reports the references to local values that escape the function.

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

Memory leak

Reports memory allocations (either the new operator or the malloc() function) that were not released before becoming unaccessible.

For more information, refer to Inspection: Memory leak.

Warning Warning

Not initialized field

Reports the fields that may not have been initialized before usage, including the cases when initialization and usage take place in different functions.

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 variable

Detects the variables that are declared but not used and never accessed for reading.

Warning Warning

Unused parameter

Detects 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

Functions

Inspection

Description

Default 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

General

Inspection

Description

Default 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.

For more information, refer to Inspection: Argument selection defects.

Warning Warning

Clangd errors and warnings

Reports 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.

Disabled

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

Inspection

Description

Default Severity

Clang-Tidy

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

For more information, refer to Clang-Tidy integration.

Warning Warning

Clazy

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:

MISRA checks settings

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.

Warning Warning

Unused code

Inspection

Description

Default 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.

For more information, refer to Inspection: Unused include directive.

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 alias

Reports using statements that are never used.

Last modified: 11 February 2024