默认启用的 Polyspace Bug Finder 缺陷检查项
当您启动 Bug Finder 分析时,会默认启用这些检查项。要查看在分析生成代码时默认启用的检查项列表,请参阅默认为生成的代码启用 Polyspace Bug Finder 缺陷检查项。
缺陷 | 命令行名称 |
---|---|
浮点操作数被吸收 | FLOAT_ABSORPTION |
访问具有临时存在时间的对象 | TEMP_OBJECT_ACCESS |
内存重新分配后对齐发生改变 | ALIGNMENT_CHANGE |
从文件流中交替执行输入和输出运算间未执行刷新和定位调用 | IO_INTERLEAVING |
数组访问越界 | OUT_BOUND_ARRAY |
断言 | ASSERT |
原子加载和存储序列是非原子的 | ATOMIC_VAR_SEQUENCE_NOT_ATOMIC |
在表达式中访问原子变量两次 | ATOMIC_VAR_ACCESS_TWICE |
未调用基类赋值运算符 | MISSING_BASE_ASSIGN_OP_CALL |
基类析构函数不是虚函数 | DTOR_NOT_VIRTUAL |
字符串格式设定符不正确导致缓冲区溢出 | STR_FORMAT_BUFFER_OVERFLOW |
通过非原型函数指针进行调用 | UNPROTOTYPED_FUNC_CALL |
字符值被吸收转化为 EOF | CHAR_EOF_CONFUSED |
关闭之前已关闭的资源 | DOUBLE_RESOURCE_CLOSE |
转换或删除不完整的类指针 | INCOMPLETE_CLASS_PTR |
初始化列表中未调用拷贝构造函数 | MISSING_COPY_CTOR_CALL |
修改源操作数的复制运算 | COPY_MODIFYING_SOURCE |
数据争用 | DATA_RACE |
相邻位域的数据争用 | DATA_RACE_BIT_FIELDS |
对标准库函数调用的数据争用 | DATA_RACE_STD_LIB |
死代码 | DEAD_CODE |
死锁 | DEADLOCK |
释放之前已释放的指针 | DOUBLE_DEALLOCATION |
声明不匹配 | DECL_MISMATCH |
字符串操作中目标缓冲区上溢 | STRLIB_BUFFER_OVERFLOW |
字符串操作中目标缓冲区下溢 | STRLIB_BUFFER_UNDERFLOW |
双锁 | DOUBLE_LOCK |
双解锁 | DOUBLE_UNLOCK |
环境指针因前面的运算而失效 | INVALID_ENV_POINTER |
errno 未重置 | MISSING_ERRNO_RESET |
按值捕获异常 | EXCP_CAUGHT_BY_VALUE |
异常处理程序被上一处理程序隐藏 | EXCP_HANDLER_HIDDEN |
浮点数转换溢出 | FLOAT_CONV_OVFL |
浮点数除以零 | FLOAT_ZERO_DIV |
格式字符串设定符和参量不匹配 | STRING_FORMAT |
不正确的数组初始化 | IMPROPER_ARRAY_INIT |
类型不兼容导致无法覆盖 | VIRTUAL_FUNC_HIDING |
传递给 va_arg 的数据类型不正确 | VA_ARG_INCORRECT_TYPE |
不正确的指针缩放 | BAD_PTR_SCALING |
向 va_start 传递不正确的类型数据 | VA_START_INCORRECT_TYPE |
在 C++ 中不正确地使用 offsetof | OFFSETOF_MISUSE |
不正确使用 va_start | VA_START_MISUSE |
不正确的值转发 | INCORRECT_VALUE_FORWARDING |
无限循环 | INFINITE_LOOP |
未遵守内联约束 | INLINE_CONSTRAINT_NOT_RESPECTED |
整数转换溢出 | INT_CONV_OVFL |
整数除以零 | INT_ZERO_DIV |
无效的内存组织假设 | INVALID_MEMORY_ASSUMPTION |
无效的指针删除 | BAD_DELETE |
无效的指针释放 | BAD_FREE |
无效的 = 运算符使用 | BAD_EQUAL_USE |
无效的 == 运算符使用 | BAD_EQUAL_EQUAL_USE |
无效的标准库浮点例程使用 | FLOAT_STD_LIB |
无效的标准库整数例程使用 | INT_STD_LIB |
无效的标准库内存例程使用 | MEM_STD_LIB |
无效的标准库例程使用 | OTHER_STD_LIB |
无效的标准库字符串例程使用 | STR_STD_LIB |
无效的 va_list 参量 | INVALID_VA_LIST_ARG |
Lambda 用作 typeid 操作数 | LAMBDA_TYPE_MISUSE |
比较填充数据内存 | MEMCMP_PADDING_DATA |
比较字符串内存 | MEMCMP_STRINGS |
缺失锁 | BAD_UNLOCK |
字符串数组中缺失 null | MISSING_NULL_CHAR |
缺失 return 语句 | MISSING_RETURN |
缺失解锁 | BAD_LOCK |
误用 FILE 对象 | FILE_OBJECT_MISUSE |
误用 errno | ERRNO_MISUSE |
在信号处理程序中误用 errno | SIG_HANDLER_ERRNO_MISUSE |
误用符号扩展字符值 | CHARACTER_MISUSE |
误用具有灵活数组成员的结构体 | FLEXIBLE_ARRAY_MEMBER_STRUCT_MISUSE |
对 const 对象执行移动运算 | MOVE_CONST_OBJECT |
Noexcept 函数因异常而退出 | NOEXCEPT_FUNCTION_THROWS |
未初始化的指针 | NON_INIT_PTR |
未初始化的变量 | NON_INIT_VAR |
空指针 | NULL_PTR |
对象切片 | OBJECT_SLICING |
打开之前已打开的资源 | DOUBLE_RESOURCE_OPEN |
运算符 new 未重载可能过度对齐的类 | MISSING_OVERLOAD_NEW_FOR_ALIGNED_OBJ |
部分覆盖重载的虚函数 | PARTIAL_OVERRIDE |
未完整访问的数组 | PARTIALLY_ACCESSED_ARRAY |
指针访问越界 | OUT_BOUND_PTR |
堆栈变量的指针或引用超出作用域 | LOCAL_ADDR_ESCAPE |
可能的 sizeof 误用 | SIZEOF_MISUSE |
运算符优先级规则导致可能的非预期表达式计算 | OPERATOR_PRECEDENCE |
预定义宏用作对象 | MACRO_USED_AS_OBJECT |
在宏参量中使用预处理器指令 | PRE_DIRECTIVE_MACRO_ARG |
资源泄漏 | RESOURCE_LEAK |
从计算异常信号处理程序返回结果 | SIG_HANDLER_COMP_EXCP_RETURN |
未在运算符中测试自赋值 | MISSING_SELF_ASSIGN_TEST |
在信号处理程序内访问共享数据 | SIG_HANDLER_SHARED_OBJECT |
表达式的副作用被忽略 | SIDE_EFFECT_IGNORED |
符号变化整数转换溢出 | SIGN_CHANGE |
从信号处理程序内部调用 signal | SIG_HANDLER_CALLING_SIGNAL |
用不正确的参量调用标准函数 | STD_FUNC_ARG_MISMATCH |
可能带非预期副作用的流参量 | STREAM_WITH_SIDE_EFFECT |
在指向不同数组的指针之间做减法或进行比较 | PTR_TO_DIFF_ARRAY |
Throw 参量出现意外异常 | THROW_ARGUMENT_EXPRESSION_THROWS |
va_arg 调用次数相对当前参量列表太多 | TOO_MANY_VA_ARG_CALLS |
Typedef 不匹配 | TYPEDEF_MISMATCH |
通过标记串联创建通用字符名称 | PRE_UCNAME_JOIN_TOKENS |
头文件中未命名的命名空间 | UNNAMED_NAMESPACE_IN_HEADER |
不可达代码 | UNREACHABLE |
不可靠的函数指针转换 | FUNC_CAST |
不可靠的指针转换 | PTR_CAST |
无符号整数转换溢出 | UINT_CONV_OVFL |
使用自动变量作为 putenv 族函数参量 | PUTENV_AUTO_VAR |
使用之前已关闭的资源 | CLOSED_RESOURCE_USE |
使用之前已释放的指针 | FREED_PTR |
无用的 if 条件 | USELESS_IF |
大小不为正数的可变长度数组 | NON_POSITIVE_VLA_SIZE |
变量遮蔽 | VAR_SHADOWING |
写入后未被读取 | USELESS_WRITE |
写入 const 限定对象 | CONSTANT_OBJECT_WRITE |
写入只读资源 | READ_ONLY_RESOURCE_WRITE |
在 sizeof 中使用错误的类型 | PTR_SIZEOF_MISMATCH |
要启用其他检查项和编码规则,请配置检查项选择。请参阅Prepare Checkers Configuration for Polyspace Bug Finder Analysis或在 Polyspace as You Code 中设置检查项。