跳过导航链接 | |
退出打印视图 | |
![]() |
Oracle Solaris Studio 12.3 代码分析器用户指南 Oracle Solaris Studio 12.3 Information Library (简体中文) |
代码分析器可以分析以下三种类型的数据:
编译期间检测到的静态代码错误
由内存错误搜索工具 Discover 检测到的动态内存访问错误和警告
由代码覆盖工具 Uncover 测量的代码覆盖数据
除了允许您访问各种分析类型以外,代码分析器还集成了静态代码检查和动态内存访问检查,用于向在代码中发现的错误添加置信度级别。通过将静态代码检查与动态内存访问分析和代码覆盖分析结合使用,将可以在应用程序中找到其他错误检测工具通过自身无法找到的许多重要错误。
代码分析器还可精确定位代码中的核心问题,修复这些问题后可能会消除其他问题。一个核心问题通常会伴有多个其他问题,例如,因为这些问题具有一个通用分配点或出现在同一函数中的同一数据地址上。
静态代码检查可在编译期间检测代码中出现的常见编程错误。C 和 C++ 编译器的 -xanalyze=code 选项利用编译器既广泛又成熟的控制和数据流分析框架来分析应用程序是否存在潜在的编程和安全缺陷。
有关收集静态错误数据的信息,请参见收集静态错误数据。
有关代码分析器分析的静态代码错误的列表,请参见静态代码问题。
通常,很难以找到代码中与内存相关的错误。在运行程序之前使用 Discover 对程序进行检测时,Discover 会在程序执行期间动态捕捉并报告内存访问错误。例如,如果您的程序分配了一个数组但未将其初始化,然后尝试从数组中的某个位置执行读取操作,程序可能会出现异常行为。如果使用 Discover 对程序进行检测,然后运行此程序,Discover 将捕捉该错误。
有关收集动态内存访问错误数据的信息,请参见收集动态内存访问数据。
有关代码分析器分析的动态内存访问问题的列表,请参见动态内存访问问题。
代码覆盖是软件测试的重要部分。该工具提供了测试时执行或未执行的代码区域的相关信息,使您可以改进测试套件以测试更多代码。代码分析器使用由 Uncover 收集的数据确定程序中哪些函数是未覆盖函数,以及在添加覆盖相关函数的测试时将添加到应用程序总覆盖的覆盖百分比。
有关收集代码覆盖数据的信息,请参见收集代码覆盖数据。