以下是C/C++检查项列表,包括检查的描述和默认严重性设置:

数据流分析

  • Constant condition(常量条件):分析方法的控制和数据流,以报告条件始终为真或为假以及具有静态常量值的表达式。全局(默认)或局部数据流分析。默认严重性:警告。
  • Constant function result(常量函数结果):检测其返回值始终等于相同常量的函数。全局数据流分析。默认严重性:警告。
  • Constant parameter(常量参数):检测其参数始终等于相同常量的函数。全局数据流分析。默认严重性:警告。
  • Dangling pointer(悬挂指针):检测指向无效数据的指针,典型情况包括双重释放和使用后释放的问题。查看此父级问题以获取限制列表。全局(默认)或局部数据流分析。默认严重性:警告。
  • Endless loop(无限循环):检测只能通过引发异常来中断的 forwhilegoto 语句。全局(默认)或局部数据流分析。默认严重性:警告。
  • Infinite recursion(无限递归):检测函数产生无限递归的情况。全局(默认)或局部数据流分析。默认严重性:警告。
  • Local value escapes scope(局部值逃逸作用域):检测引用了局部值并脱离其作用域的变量。全局(默认)或局部数据流分析。默认严重性:警告。
  • Loop condition isn't updated inside the loop(循环条件未在循环内更新):检测循环条件未在循环内更新的情况,这可能导致无限循环。在Clang-Tidy中也有类似的检查,名为 clang-tidy:bugprone-infinite-loop。但是,它不包括带有退出点的循环,并且在带有lambda表达式或引用的情况下会出现误报。在CLion的默认Clang-Tidy配置文件中禁用了此检查。默认严重性:警告。
  • Null dereference(空指针解引用):检测可能包含 nullptr 的指针的解引用。全局(默认)或局部数据流分析。默认严重性:警告。
  • Unreachable calls of function(无法到达的函数调用):检测从不执行的函数。全局数据流分析。默认严重性:警告。
  • Unreachable code(无法到达的代码):检测永远不会执行的代码(死代码)。全局(默认)或局部数据流分析。默认严重性:警告。
  • Unused local variable(未使用的局部变量):检测已声明但从未使用或未被读取的变量。默认严重性:警告。
  • Unused parameter(未使用的参数):检测已声明但从未使用或未被读取的参数。默认严重性:警告。
  • Unused value(未使用的值):报告在赋值后从未使用变量的情况。全局(默认)或局部数据流分析。可以取消选中“警告未使用的变量初始化程序”复选框,以禁用对默认变量初始化程序的检查(例如,如果您更喜欢将 nullptr 分配给指针类型的变量)。默认严重性:警告。

函数

  • Hiding non-virtual function(隐藏非虚拟函数):报告函数隐藏了来自基类的具有相同签名的非虚拟函数的情况。
  • Not implemented functions(未实现的函数):检测已声明但未定义的函数。

通用

  • Argument selection defect(参数选择缺陷):比较调用中参数的名称和声明中形式参数的名称,以检测错误,例如参数意外交换的情况。
  • Clangd errors and warnings(Clangd错误和警告):报告来自Clangd的错误和警告。此检查会在编辑器中随着输入而工作,还可以在使用“代码 | 检查代码”时手动运行以获取结果摘要。
  • Empty declaration or statement(空声明或语句):报告可以安全删除的多余空声明和语句。
  • Inconsistent Naming(命名不一致):报告符号违反当前选择的命名约定的情况。
  • Preprocessor directive comment(预处理器指令注释):查找预处理器 #endif 注释不匹配宏名称的情况。
  • Simplifiable statement(可简化的语句):建议简化以下类型的语句:condition == truecondition1? true : condition2if(condition1) return true; return condition2;、对等分支的语句 if(true)while(false)
  • Unconstrained variable type(未受限制的变量类型):建议约束已声明为 auto 的本地变量,如果受限制表达式或函数调用的结果被分配给它们。默认情况下,在Windows上此检查被禁用,不支持带有 requires 子句语法的概念。默认严重性:警告。
  • Virtual call from constructor or destructor(从构造函数或析构函数中的虚拟调用):报告从构造函数或析构函数中调用虚拟函数的情况,有助于防止虚拟函数访问尚未初始化或已销毁的资源的情况。

静态分析工具

  • Clang-Tidy(Clang-Tidy检查):执行与C++核心指南、代码现代化、可读性和性能问题相关的各种clang-tidy检查。
  • Clazy(Clazy检查):执行与Qt相关的clazy检查。
  • MISRA checks(MISRA检查):执行MISRA C 2012和MISRA C++ 2008指南中定义的检查。您可以在“选项”部分调整检查列表。注意,在Windows上使用MSVC(包括clang-cl)时,CLion仅显示MISRA C++检查。MISRA C检查不能正确显示,因为它们适用于可通过 -std=cXY 标志配置的特定语言标准,而MSVC不支持此标志。需要在Clangd设置中启用“通过Clangd使用Clang-Tidy”才能使用此功能。默认严重性:警告。

未使用的代码

  • Unused concepts(未使用的概念):检测从未使用的C++概念。
  • Unused global declaration(未使用的全局声明):检测已声明但从未访问或写入的全局函数或变量。
  • Unused include directive(未使用的include指令):报告未使用或不需要的include指令,可以安全删除。
  • Unused macro(未使用的宏):检测代码中从未使用的宏定义。
  • Unused struct(未使用的结构体):检测从未使用的C/C++类和结构体。
  • Unused template parameter(未使用的模板参数):检测从未使用的C++类和函数模板参数。
  • Unused type alias(未使用的类型别名):报告从未使用的using语句。

标签: clion破解, clion破解教程, clion教程, clion基础教程, clion高级教程, clion核心教程, clion免费激活码, clion免费注册码, clion注册码在线生成, clion激活