编译器、discover 和 uncover 可在您的代码中查找静态代码问题、动态内存访问问题以及覆盖问题。本部分列出了由这些工具发现并由代码分析器分析的特定错误类型。
有关这些错误和警告的更多信息,请参见 Oracle Developer Studio 12.5:代码分析器用户指南 中的 附录 A, 代码分析器分析的错误,。
静态代码检查可查找以下类型的错误:
ABR:数组越界读
ABW:数组越界写
DFM:双重释放内存
ECV:显式强制类型转换违规
FMR:读取释放的内存
FMW:写入释放的内存
INF:无限空循环
MLK:内存泄漏
MFR:缺少函数返回值
MRC:缺少 malloc 返回值检查
NFR:返回未初始化的函数
NUL:NULL 指针解除引用,泄漏指针检查
RFM:返回释放的内存
UMR:读取未初始化的内存。未初始化的内存读取位操作
URV:未使用的返回值
VES:超出范围的局部变量使用
动态内存访问检查可查找以下类型的错误:
ABR:数组越界读
ABW:数组越界写
BFM:释放错误的内存块
BRP:错误的重新分配地址参数
CGB:损坏的保护块
DFM:双重释放内存
FMR:读取释放的内存
FMW:写入释放的内存
FRP:释放的重新分配参数
IMR:无效的内存读取
IMW:无效的内存写入
MLK:内存泄漏
OLP:重叠源和目标
PIR:部分初始化的读取
SBR:堆栈越界读
SBW:堆栈越界写
UAR:读取未分配的内存
UAW:写入未分配的内存
UMR:读取未初始化的内存
动态内存访问检查可查找以下类型的警告:
AZS:分配零大小
MLK:内存泄漏
SMR:推测性未初始化内存读取
代码覆盖检查可确定哪些函数未被覆盖。在结果中,发现的代码覆盖问题会标记为 "Uncovered Function"(未覆盖的函数),并且带有潜在覆盖百分比,此百分比是指在添加覆盖相关函数的测试后要添加到应用程序总覆盖中的覆盖百分比。