Bug Finder 缺陷组和缺陷检查项的短名称
要通过代码注解对缺陷进行申述,需使用Bug Finder 缺陷检查项短名称中列出的检查项命令行名称或短名称。
您还可以启用对特定缺陷的检测,方法是将该缺陷的检查项短名称用作 -checkers
选项的参量。您可以通过组名称来指定缺陷组,而不用列出每个单独的缺陷,例如使用 numerical
、data_flow
等组名称。
请参阅查找缺陷 (-checkers)
和Bug Finder 缺陷组。
Bug Finder 缺陷组短名称
缺陷分组 | 命令行参数 |
---|---|
C++ 异常缺陷 | cpp_exceptions |
并发性缺陷 | concurrency |
加密缺陷 | cryptography |
数据流缺陷 | data_flow |
动态内存缺陷 | dynamic_memory |
良好做法缺陷 | good_practice |
数值缺陷 | numerical |
面向对象的缺陷 | object_oriented |
性能缺陷 | performance |
编程缺陷 | programming |
资源管理缺陷 | resource_management |
静态内存缺陷 | static_memory |
安全缺陷 | security |
被污染的数据缺陷 | tainted_data |
Bug Finder 缺陷检查项短名称
缺陷 | 命令行名称 |
---|---|
拷贝赋值运算符中未返回 *this | RETURN_NOT_REF_TO_THIS |
退出处理程序异常终止 | EXIT_ABNORMAL_HANDLER |
浮点操作数被吸收 | FLOAT_ABSORPTION |
访问具有临时存在时间的对象 | TEMP_OBJECT_ACCESS |
内存重新分配后对齐发生改变 | ALIGNMENT_CHANGE |
从文件流中交替执行输入和输出运算间未执行刷新和定位调用 | IO_INTERLEAVING |
声明语法具有多义性 | MOST_VEXING_PARSE |
移动运算可能抛出异常 | MOVE_OPERATION_MAY_THROW |
对空指针执行算术运算 | NULL_PTR_ARITH |
数组访问越界 | OUT_BOUND_ARRAY |
使用被污染的索引进行数组访问 | TAINTED_ARRAY_INDEX |
断言 | ASSERT |
可异步取消的线程 | ASYNCHRONOUSLY_CANCELLABLE_THREAD |
原子加载和存储序列是非原子的 | ATOMIC_VAR_SEQUENCE_NOT_ATOMIC |
在表达式中访问原子变量两次 | ATOMIC_VAR_ACCESS_TWICE |
自动或线程局部变量逃逸出线程 | LOCAL_ADDR_ESCAPE_THREAD |
错误的文件访问模式或状态 | BAD_FILE_ACCESS_MODE_STATUS |
丢弃特权的顺序错误 | BAD_PRIVILEGE_DROP_ORDER |
未调用基类赋值运算符 | MISSING_BASE_ASSIGN_OP_CALL |
基类析构函数不是虚函数 | DTOR_NOT_VIRTUAL |
对相同数据混合进行按位和算术运算 | BITWISE_ARITH_MIX |
对负值执行按位运算 | BITWISE_NEG |
保持锁时阻塞运算 | BLOCKING_WHILE_LOCKED |
字符串格式设定符不正确导致缓冲区溢出 | STR_FORMAT_BUFFER_OVERFLOW |
对非平凡类对象执行字节运算 | MEMOP_ON_NONTRIVIAL_OBJ |
由 const 限定类型的 C++ 引用后续被修改 | WRITE_REFERENCE_TO_CONST_TYPE |
用 const 或 volatile 限定 C++ 引用类型 | CV_QUALIFIED_REFERENCE_TYPE |
通过非原型函数指针进行调用 | UNPROTOTYPED_FUNC_CALL |
使用非预期值调用 memset | MEMSET_INVALID_VALUE |
字符值被吸收转化为 EOF | CHAR_EOF_CONFUSED |
关闭之前已关闭的资源 | DOUBLE_RESOURCE_CLOSE |
由始终为 false 的条件停用的代码 | DEACTIVATED_CODE |
从外部控制路径执行的命令 | TAINTED_PATH_CMD |
常量块加密初始化向量 | CRYPTO_CIPHER_CONSTANT_IV |
常量加密密钥 | CRYPTO_CIPHER_CONSTANT_KEY |
常量参数值可能导致不必要的数据副本 | CONST_PARAMETER_VALUE |
常量返回值可能导致不必要的数据副本 | CONST_RETURN_VALUE |
常量 rvalue 引用参数可能导致不必要的数据副本 | CONST_RVALUE_REFERENCE_PARAMETER |
常量 std::move 输入可能导致更高成本的对象副本 | EXPENSIVE_STD_MOVE_CONST_OBJECT |
加密运算的上下文初始化不正确 | CRYPTO_PKEY_INCORRECT_INIT |
未正确初始化摘要运算的上下文 | CRYPTO_MD_BAD_FUNCTION |
转换或删除不完整的类指针 | INCOMPLETE_CLASS_PTR |
初始化列表中未调用拷贝构造函数 | MISSING_COPY_CTOR_CALL |
内存重叠的复制 | OVERLAPPING_COPY |
修改源操作数的复制运算 | COPY_MODIFYING_SOURCE |
关键数据成员不是私有类 | CRITICAL_DATA_MEMBER_DECLARED_PUBLIC |
与指针相比的 string::c_str() 中的 C 字符串 | STD_STRING_C_STR_COMPARED_TO_POINTER |
数据争用 | DATA_RACE |
相邻位字段的数据争用 | DATA_RACE_BIT_FIELDS |
对标准库函数调用的数据争用 | DATA_RACE_STD_LIB |
死代码 | DEAD_CODE |
死锁 | DEADLOCK |
释放之前已释放的指针 | DOUBLE_DEALLOCATION |
声明不匹配 | DECL_MISMATCH |
捕获通用异常的 catch 声明 | CATCH_FOR_GENERIC_EXCEPTION |
抛出通用异常的 throw 声明 | THROW_FOR_GENERIC_EXCEPTION |
删除 void 指针 | DELETE_OF_VOID_PTR |
字符串操作中目标缓冲区上溢 | STRLIB_BUFFER_OVERFLOW |
字符串操作中目标缓冲区下溢 | STRLIB_BUFFER_UNDERFLOW |
销毁锁定互斥锁 | DESTROY_LOCKED |
从常量种子得出的确定性随机输出 | RAND_SEED_CONSTANT |
双锁 | DOUBLE_LOCK |
双解锁 | DOUBLE_UNLOCK |
重复代码 | DUPLICATED_CODE |
空析构函数可能导致不必要的数据副本 | EMPTY_DESTRUCTOR_DEFINED |
环境指针因前面的运算而失效 | INVALID_ENV_POINTER |
未检查 errno | ERRNO_NOT_CHECKED |
errno 未重置 | MISSING_ERRNO_RESET |
按值捕获异常 | EXCP_CAUGHT_BY_VALUE |
异常处理程序被上一处理程序隐藏 | EXCP_HANDLER_HIDDEN |
从相对路径执行二进制文件可以被外部执行者所控制 | RELATIVE_PATH_CMD |
执行外部控制命令 | TAINTED_EXTERNAL_CMD |
高成本成员初始化 | EXPENSIVE_MEMBER_INITIALIZATION |
高成本 std::function 的类型定义 | EXPENSIVE_STD_FUNCTION |
高成本的未使用对象 | EXPENSIVE_UNUSED_OBJECT |
高成本使用 map 而不是使用 set | EXPENSIVE_USE_OF_MAP_INSTEAD_OF_SET |
高成本使用 std::any_cast | EXPENSIVE_ANY_CAST |
高成本循环分配 | EXPENSIVE_ALLOC_IN_LOOP |
高成本的常量 std::string 构造 | EXPENSIVE_CONSTANT_STD_STRING |
基于范围的 for 循环迭代中的高成本复制 | EXPENSIVE_RANGE_BASED_FOR_LOOP_ITERATION |
高成本动态强制转换 | EXPENSIVE_DYNAMIC_CAST |
高成本局部变量复制 | EXPENSIVE_LOCAL_VARIABLE |
高成本逻辑运算 | EXPENSIVE_LOGICAL_OPERATION |
高成本的按值传递 | EXPENSIVE_PASS_BY_VALUE |
高成本后增量运算 | EXPENSIVE_POST_INCREMENT |
高成本的按值返回 | EXPENSIVE_RETURN_BY_VALUE |
不必要 std::move 导致高成本返回 | EXPENSIVE_RETURN_STD_MOVE |
高成本返回 const 对象 | EXPENSIVE_RETURN_CONST_OBJECT |
高成本使用标准算法而未采用已有更高效的方法 | EXPENSIVE_USE_OF_STD_ALGORITHM |
高成本使用容器的 count 方法 | EXPENSIVE_CONTAINER_COUNT |
高成本使用容器的 insertion 方法 | EXPENSIVE_CONTAINER_INSERTION |
高成本使用容器的 size 方法 | EXPENSIVE_CONTAINER_EMPTINESS_CHECK |
高成本使用 map 的方括号运算符插入值或赋值 | EXPENSIVE_MAP_INSERT_OR_ASSIGN |
高成本使用非成员 std::string operator+() 而非简单的 append 方法 | EXPENSIVE_STD_STRING_APPEND |
高成本使用 std::string 方法而非更高效的重载 | EXPENSIVE_USE_OF_STD_STRING_METHODS |
高成本使用 std::string 处理空字符串字面值 | UNNECESSARY_EMPTY_STRING_LITERAL |
高成本使用 C 标准库中的字符串函数 | EXPENSIVE_USE_OF_C_STRING_API |
高成本使用 substr() 缩短 std::string | EXPENSIVE_STD_STRING_RESIZE |
在检查时间和使用时间之间(TOCTOU)进行文件访问 | TOCTOU |
向子进程暴露文件描述符 | FILE_EXPOSURE_TO_CHILD |
文件无法编译 | file_does_not_compile |
chroot() 之后未调用 chdir("/") 即进行文件操作 | CHROOT_MISUSE |
浮点数转换溢出 | FLOAT_CONV_OVFL |
浮点数除以零 | FLOAT_ZERO_DIV |
使用相等运算符进行浮点比较 | BAD_FLOAT_OP |
浮点数溢出 | FLOAT_OVFL |
格式字符串设定符和参量不匹配 | STRING_FORMAT |
从信号处理程序调用的函数不是异步安全的 | SIG_HANDLER_ASYNC_UNSAFE |
从信号处理程序调用的函数不是异步安全的(严格) | SIG_HANDLER_ASYNC_UNSAFE_STRICT |
分配有绝对地址的函数指针 | FUNC_PTR_ABSOLUTE_ADDR |
可虚假失败的函数未置于循环中 | SPURIOUS_FAILURE_NOT_WRAPPED_IN_LOOP |
可虚假唤醒的函数未置于循环中 | SPURIOUS_WAKEUP_NOT_WRAPPED_IN_LOOP |
缓冲区大小被硬编码 | HARD_CODED_BUFFER_SIZE |
循环边界被硬编码 | HARD_CODED_LOOP_BOUNDARY |
用于操作内存的对象大小被硬编码 | HARD_CODED_MEM_SIZE |
敏感数据被硬编码 | HARD_CODED_SENSITIVE_DATA |
使用外部控制元素进行主机更改 | TAINTED_HOSTID |
不正确的数组初始化 | IMPROPER_ARRAY_INIT |
不正确的 erase-remove 惯用法 | STD_REMOVE_WITHOUT_ERASE |
对设备文件进行不当的 I/O 操作 | INAPPROPRIATE_IO_ON_DEVICE |
对 RSA 算法运算使用不兼容的填充 | CRYPTO_RSA_BAD_PADDING |
类型不兼容导致无法覆盖 | VIRTUAL_FUNC_HIDING |
加密运算不一致 | CRYPTO_CIPHER_BAD_FUNCTION |
传递给 va_arg 的数据类型不正确 | VA_ARG_INCORRECT_TYPE |
加密算法的密钥不正确 | CRYPTO_PKEY_INCORRECT_KEY |
缩进不正确的语句 | INCORRECT_INDENTATION |
网络连接操作顺序不正确 | BAD_NETWORK_CONNECT_ORDER |
不正确的测试注册或定义 | PSTUNIT_MISUSE_REGISTRATION |
不正确地使用模拟 API | PSTUNIT_MISUSE_MOCKING |
不正确地使用测试脚手架 | PSTUNIT_MISUSE_FIXTURES |
不正确地使用测试设置/拆解 API | PSTUNIT_MISUSE_SETUP_TEARDOWN |
不正确的指针缩放 | BAD_PTR_SCALING |
灵活数组成员大小的语法不正确 | FLEXIBLE_ARRAY_MEMBER_INCORRECT_SIZE |
向 va_start 传递不正确的类型数据 | VA_START_INCORRECT_TYPE |
在 C++ 中不正确地使用 offsetof | OFFSETOF_MISUSE |
不正确使用 va_start | VA_START_MISUSE |
不正确的值转发 | INCORRECT_VALUE_FORWARDING |
字符串长度计算效率低下 | INEFFICIENT_BASIC_STRING_LENGTH |
低效使用 for 循环 | PREFER_RANGE_BASED_FOR_LOOPS |
低效使用 sprintf | inefficient_sprintf |
无限循环 | INFINITE_LOOP |
结构体填充可能导致信息泄漏 | PADDING_INFO_LEAK |
未遵守内联约束 | INLINE_CONSTRAINT_NOT_RESPECTED |
整数常量溢出 | INT_CONSTANT_OVFL |
整数转换溢出 | INT_CONV_OVFL |
整数除以零 | INT_ZERO_DIV |
整数溢出 | INT_OVFL |
超出整数精度 | INT_PRECISION_EXCEEDED |
无效的内存组织假设 | INVALID_MEMORY_ASSUMPTION |
无效的指针删除 | BAD_DELETE |
无效的文件位置 | INVALID_FILE_POS |
无效的指针释放 | BAD_FREE |
无效的迭代器用法 | INVALID_ITERATOR_USAGE |
无效的科学记数法格式 | INVALID_NOTATION_ON_E_CONSTANT |
无效的 == 运算符使用 | BAD_EQUAL_EQUAL_USE |
无效的 = 运算符使用 | BAD_EQUAL_USE |
无效的标准库浮点例程使用 | FLOAT_STD_LIB |
无效的标准库整数例程使用 | INT_STD_LIB |
无效的标准库内存例程使用 | MEM_STD_LIB |
无效的标准库例程使用 | OTHER_STD_LIB |
无效的标准库字符串例程使用 | STR_STD_LIB |
无效的 va_list 参量 | INVALID_VA_LIST_ARG |
连接已连接的线程或分离已分离的线程 | DOUBLE_JOIN_OR_DETACH |
Lambda 用作 typeid 操作数 | LAMBDA_TYPE_MISUSE |
LDAP 注入 | LDAP_INJECTION |
从外部控制路径加载的库 | TAINTED_PATH_LIB |
一行包含多条语句 | MORE_THAN_ONE_STATEMENT |
从相对路径加载库可以被外部执行者所控制 | RELATIVE_PATH_LIB |
循环界限值被污染 | TAINTED_LOOP_BOUNDARY |
以分号终止的宏 | SEMICOLON_TERMINATED_MACRO |
包含多个语句的宏 | MULTI_STMT_MACRO |
构造函数中存在未初始化的成员 | NON_INIT_MEMBER |
内存分配大小被污染 | TAINTED_MEMORY_ALLOC_SIZE |
比较浮点值内存 | MEMCMP_FLOAT |
比较填充数据内存 | MEMCMP_PADDING_DATA |
比较字符串内存 | MEMCMP_STRINGS |
内存泄漏 | MEM_LEAK |
方法不是常量 | METHOD_NOT_CONST |
数据长度和大小不匹配 | DATA_LENGTH_MISMATCH |
Windows 上的分配/取消分配函数不匹配 | WIN_MISMATCH_DEALLOC |
RSA 算法缺失盲化 | CRYPTO_RSA_NO_BLINDING |
缺失块加密初始化向量 | CRYPTO_CIPHER_NO_IV |
switch case 缺失 break | MISSING_SWITCH_BREAK |
传输数据时未对字节重新排序 | MISSING_BYTESWAP |
缺失对容器保留方法的调用 | MISSING_CONTAINER_RESERVE |
切换条件缺少 case | MISSING_SWITCH_CASE |
缺失证书认证中心列表 | CRYPTO_SSL_NO_CA |
缺失加密算法 | CRYPTO_CIPHER_NO_ALGORITHM |
缺失要处理的加密数据 | CRYPTO_CIPHER_NO_DATA |
缺失加密最终步骤 | CRYPTO_CIPHER_NO_FINAL |
缺失加密密钥 | CRYPTO_CIPHER_NO_KEY |
缺失 constexpr 设定符 | MISSING_CONSTEXPR |
缺失用于加密、解密或签名运算的数据 | CRYPTO_PKEY_NO_DATA |
缺失显式关键字 | MISSING_EXPLICIT_KEYWORD |
哈希更新运算后缺失最终步骤 | CRYPTO_MD_NO_FINAL |
缺失哈希算法 | CRYPTO_MD_NO_ALGORITHM |
缺失锁 | BAD_UNLOCK |
字符串数组中缺失 null | MISSING_NULL_CHAR |
线程属性缺失初始化或重复初始化 | BAD_THREAD_ATTRIBUTE |
未重载对应的分配或释放函数 | MISSING_OVERLOAD_NEW_DELETE_PAIR |
RSA 算法缺失填充 | CRYPTO_RSA_NO_PADDING |
缺失密钥生成参数 | CRYPTO_PKEY_NO_PARAMS |
缺失对等密钥 | CRYPTO_PKEY_NO_PEER |
缺失私钥 | CRYPTO_PKEY_NO_PRIVATE_KEY |
缺失 X.509 证书的私钥 | CRYPTO_SSL_NO_PRIVATE_KEY |
缺失公钥 | CRYPTO_PKEY_NO_PUBLIC_KEY |
未对释放的指针进行重置 | MISSING_FREED_PTR_RESET |
缺失 return 语句 | MISSING_RETURN |
哈希运算缺失加密盐 | CRYPTO_MD_NO_SALT |
缺失解锁 | BAD_LOCK |
缺失虚拟继承 | MISSING_VIRTUAL_INHERITANCE |
缺失 X.509 证书 | CRYPTO_SSL_NO_CERTIFICATE |
误用 FILE 对象 | FILE_OBJECT_MISUSE |
误用 errno | ERRNO_MISUSE |
在信号处理程序中误用 errno | SIG_HANDLER_ERRNO_MISUSE |
误用窄字符串或宽字符串 | NARROW_WIDE_STR_MISUSE |
误用 readlink() | READLINK_MISUSE |
误用不可重入标准函数的返回值 | NON_REENTRANT_STD_RETURN |
误用符号扩展字符值 | CHARACTER_MISUSE |
误用具有灵活数组成员的结构体 | FLEXIBLE_ARRAY_MEMBER_STRUCT_MISUSE |
修改由不可重入标准函数返回的内部缓冲区 | WRITE_INTERNAL_BUFFER_RETURNED_FROM_STD_FUNC |
对 const 对象执行移动运算 | MOVE_CONST_OBJECT |
移动运算使用复制 | MOVE_OPERATION_USES_COPY |
使用的多个互斥锁基于同一条件变量 | MULTI_MUTEX_WITH_ONE_COND_VAR |
多个线程等待同一条件变量 | SIGNALED_COND_VAR_NOT_UNIQUE |
未向上下文添加数据 | CRYPTO_MD_NO_DATA |
Noexcept 函数因异常而退出 | NOEXCEPT_FUNCTION_THROWS |
不符合 AUTOSAR 规范 | autosar_lib_non_compliance |
未初始化的指针 | NON_INIT_PTR |
未初始化的变量 | NON_INIT_VAR |
不安全的哈希算法 | CRYPTO_MD_WEAK_HASH |
不安全的密钥生成参数 | CRYPTO_PKEY_WEAK_PARAMS |
不安全的 RSA 公钥指数 | CRYPTO_RSA_LOW_EXPONENT |
不安全的 SSL/TLS 协议 | CRYPTO_SSL_WEAK_PROTOCOL |
空指针 | NULL_PTR |
对象切片 | OBJECT_SLICING |
打开之前已打开的资源 | DOUBLE_RESOURCE_OPEN |
运算符 new 未重载可能过度对齐的类 | MISSING_OVERLOAD_NEW_FOR_ALIGNED_OBJ |
重叠赋值 | OVERLAPPING_ASSIGN |
未完整访问的数组 | PARTIALLY_ACCESSED_ARRAY |
部分覆盖重载的虚函数 | PARTIAL_OVERRIDE |
部分重复代码 | ALMOST_DUPLICATED_CODE |
存储在文件系统中的纯文本密码 | PLAIN_TEXT_PASSWORD_IN_FILESYSTEM |
指针访问越界 | OUT_BOUND_PTR |
使用被污染的偏移量进行指针解引用 | TAINTED_PTR_OFFSET |
指向销毁的临时对象的指针或引用 | POINTER_TO_TEMPORARY_OBJECT |
堆栈变量的指针或引用超出作用域 | LOCAL_ADDR_ESCAPE |
指向未初始化值的指针转换为常量指针 | NON_INIT_PTR_CONV |
可能发生复制粘贴错误 | COPY_PASTE_ERROR |
可能无效的布尔操作数运算 | INVALID_OPERATION_ON_BOOLEAN |
可能的 sizeof 误用 | SIZEOF_MISUSE |
switch 表达式的数据类型可能不当 | INAPPROPRIATE_TYPE_IN_SWITCH |
运算符优先级规则导致可能的非预期表达式计算 | OPERATOR_PRECEDENCE |
整数到浮点数的转换存在精度损失 | INT_TO_FLOAT_PRECISION_LOSS |
预定义宏用作对象 | MACRO_USED_AS_OBJECT |
可预测的块加密初始化向量 | CRYPTO_CIPHER_PREDICTABLE_IV |
可预测的加密密钥 | CRYPTO_CIPHER_PREDICTABLE_KEY |
从可预测种子得出的可预测随机输出 | RAND_SEED_PREDICTABLE |
在宏参量中使用预处理器指令 | PRE_DIRECTIVE_MACRO_ARG |
特权丢弃未经验证 | MISSING_PRIVILEGE_DROP_CHECK |
公共静态字段不是常量 | PUBLIC_STATIC_FIELD_NOT_CONST |
在转换中删除限定符 | QUALIFIER_MISMATCH |
sizeof 操作数中的冗余表达式 | SIZEOF_USELESS_OP |
引用未命名的临时文件 | LOCAL_REF_TO_UNNAMED_TEMPORARY |
资源注入 | RESOURCE_INJECTION |
资源泄漏 | RESOURCE_LEAK |
未检查敏感函数的返回值 | RETURN_NOT_CHECKED |
从计算异常信号处理程序返回结果 | SIG_HANDLER_COMP_EXCP_RETURN |
向封装数据成员返回非常量句柄 | BREAKING_DATA_ENCAPSULATION |
移位运算的右操作数越界 | SHIFT_OVFL |
未在运算符中测试自赋值 | MISSING_SELF_ASSIGN_TEST |
分号与 if、for 或 while 语句在同一行 | SEMICOLON_CTRL_STMT_SAME_LINE |
敏感数据被打印输出 | SENSITIVE_DATA_PRINT |
释放前未清除敏感堆内存 | SENSITIVE_HEAP_NOT_CLEARED |
未检查服务器证书的通用名 | CRYPTO_SSL_HOSTNAME_NOT_CHECKED |
在信号处理程序内访问共享数据 | SIG_HANDLER_SHARED_OBJECT |
负值移位 | SHIFT_NEG |
不安全的宏中带副作用的参量 | SIDE_EFFECT_IN_UNSAFE_MACRO_ARG |
表达式的副作用被忽略 | SIDE_EFFECT_IGNORED |
从信号处理程序内部调用 signal | SIG_HANDLER_CALLING_SIGNAL |
在多线程程序中调用 signal | SIGNAL_USE_IN_MULTITHREADED_PROGRAM |
符号变化整数转换溢出 | SIGN_CHANGE |
SQL 注入 | SQL_INJECTION |
用不正确的参量调用标准函数 | STD_FUNC_ARG_MISMATCH |
静态未调用函数 | UNCALLED_FUNC |
std::endl 可能导致不必要的刷新 | STD_ENDL_USE |
对不可移动类型调用 std::move | STD_MOVE_UNMOVABLE_TYPE |
用悬空指针初始化 std::string_view | DANGLING_STRING_VIEW |
可能带非预期副作用的流参量 | STREAM_WITH_SIDE_EFFECT |
在指向不同数组的指针之间做减法或进行比较 | PTR_TO_DIFF_ARRAY |
除法操作数被污染 | TAINTED_INT_DIVISION |
模操作数被污染 | TAINTED_INT_MOD |
被污染的 NULL 或不以 null 结尾的字符串 | TAINTED_STRING |
符号变化转换被污染 | TAINTED_SIGN_CHANGE |
可变长度数组大小被污染 | TAINTED_VLA_SIZE |
敏感函数使用了污染源 | TAINTED_SOURCE_USE_CUSTOM |
字符串格式被污染 | TAINTED_STRING_FORMAT |
线程特有内存泄漏 | THREAD_MEM_LEAK |
Throw 参量表达式调用 new | THROW_EXPRESSION_CALLS_NEW |
Throw 参量出现意外异常 | THROW_ARGUMENT_EXPRESSION_THROWS |
未设置 TLS/SSL 连接方法 | CRYPTO_SSL_NO_ROLE |
TLS/SSL 连接方法设置不正确 | CRYPTO_SSL_BAD_ROLE |
va_arg 调用次数相对当前参量列表太多 | TOO_MANY_VA_ARG_CALLS |
Typedef 不匹配 | TYPEDEF_MISMATCH |
Umask 与 chmod-style 参量一起使用 | BAD_UMASK |
未捕获异常 | UNCAUGHT_EXCEPTION |
未捕获异常 | UNCAUGHT_EXCEPTION |
不确定的内存清理 | UNCERTAIN_MEMORY_CLEANING |
堆栈中存在未清除的敏感数据 | SENSITIVE_STACK_NOT_CLEARED |
通过标记串联创建通用字符名称 | PRE_UCNAME_JOIN_TOKENS |
未修改的变量未使用 const 进行限定 | UNMODIFIED_VAR_NOT_CONST |
头文件中未命名的命名空间 | UNNAMED_NAMESPACE_IN_HEADER |
在重新分配前执行不必要的构造 | UNNECESSARY_CONSTRUCTION_BEFORE_ASSIGNMENT |
不必要的特殊成员函数实现 | UNNECESSARY_IMPL_OF_SPECIAL_MEMBER_FUNCTION |
对参数的不必要引用 | EXPENSIVE_PASS_BY_REFERENCE |
不必要的填充 | UNNECESSARY_STRUCT_PADDING |
不必要地使用 std::string::c_str() 或等效的字符串方法 | EXPENSIVE_C_STR_STD_STRING_CONSTRUCTION |
无保护动态内存分配 | UNPROTECTED_MEMORY_ALLOCATION |
不可达代码 | UNREACHABLE |
不可靠的函数指针转换 | FUNC_CAST |
不可靠的指针转换 | PTR_CAST |
不安全的系统函数调用 | UNSAFE_SYSTEM_CALL |
指针和整数之间的不安全转换 | BAD_INT_PTR_CAST |
从字符串到数值的不安全转换 | UNSAFE_STR_TO_NUMERIC |
不安全的标准加密函数 | UNSAFE_STD_CRYPT |
不安全的标准函数 | UNSAFE_STD_FUNC |
无符号整数常量溢出 | UINT_CONSTANT_OVFL |
无符号整数转换溢出 | UINT_CONV_OVFL |
无符号整数溢出 | UINT_OVFL |
对测试编写 API 使用了不受支持的语法 | PSTUNIT_UNSUPPORTED_SYNTAX |
未使用的变量 | UNUSED_VARIABLE |
未使用的参数 | UNUSED_PARAMETER |
无用的 if 条件 | USELESS_IF |
无用包含 | USELESS_INCLUDE |
无用预处理器条件句指令 | USELESS_PREPROC_CONDITION |
使用禁止的 C/C++ 关键字 | FORBIDDEN_KEYWORD |
使用禁止的函数 | FORBIDDEN_FUNC |
使用禁止的宏 | FORBIDDEN_MACRO |
使用自动变量作为 putenv 族函数参量 | PUTENV_AUTO_VAR |
使用危险标准函数 | DANGEROUS_STD_FUNC |
使用外部控制的环境变量 | TAINTED_ENV_VARIABLE |
使用不确定字符串 | INDETERMINATE_STRING |
使用大小参量为零的 memset | MEMSET_INVALID_SIZE |
使用 new 或 make_unique,而非更高效的 make_shared | MISSING_MAKE_SHARED |
使用不安全的临时文件 | NON_SECURE_TEMP_FILE |
使用过时的标准函数 | OBSOLETE_STD_FUNC |
在未检查最大缓冲区的情况下使用路径操作函数 | PATH_BUFFER_OVERFLOW |
对数值使用纯字符类型 | BAD_PLAIN_CHAR_USE |
使用之前已关闭的资源 | CLOSED_RESOURCE_USE |
使用之前已释放的指针 | FREED_PTR |
使用 setjmp/longjmp | SETJMP_LONGJMP_USE |
使用信号终止线程 | THREAD_KILLED_WITH_SIGNAL |
无用的捕获 | USELESS_CAPTURE |
使用被污染的指针 | TAINTED_PTR |
使用被污染的指针 | TAINTED_PTR |
使用未定义的线程 ID | UNDEFINED_THREAD_ID |
大小不为正数的可变长度数组 | NON_POSITIVE_VLA_SIZE |
变量遮蔽 | VAR_SHADOWING |
易受攻击的路径操作 | PATH_TRAVERSAL |
易受攻击的权限分配 | DANGEROUS_PERMISSIONS |
易受攻击的伪随机数生成器 | VULNERABLE_PRNG |
弱加密算法 | CRYPTO_CIPHER_WEAK_CIPHER |
弱加密模式 | CRYPTO_CIPHER_WEAK_MODE |
对 RSA 算法使用弱填充 | CRYPTO_RSA_WEAK_PADDING |
写入后未被读取 | USELESS_WRITE |
写入 const 限定对象 | CONSTANT_OBJECT_WRITE |
写入只读资源 | READ_ONLY_RESOURCE_WRITE |
错误分配转换对象的大小 | OBJECT_SIZE_MISMATCH |
在 sizeof 中使用错误的类型 | PTR_SIZEOF_MISMATCH |
未检查 X.509 对等证书 | CRYPTO_SSL_CERT_NOT_CHECKED |