Oracle Solaris Studio 12.4 Man Pages

Exit Print View

Updated: January 2015
 
 

codean(1)

Name

codean - 代码分析器的命令行界面

Synopsis

codean
     [-s] [-d] [-c] [--fullpath ] [-f source-file1
     [-f source-file2 ... ]] [-n number-of-lines]
     [--save [-t]] [--whatisnew |  --whatisfixed]
     [--tag tag-name] [-D destination-directory]
     [--ref reference-path]   [--showerrors   error-code]
     [--hideerrors error-code] [--showwarnings warning-code]
     [--hide-warnings warning-code] [executable|directory]

Description

codean (/'code-an/) 命令会启动代码分析器命令行工具 (Codean)。Codean 可以结合三种分析类型,帮助您生成既安全又强健的高质量 C 和 C++ 应用程序。Codean 使用从 Previse、Uncover 和 Discover 收集的数据作为输入来读取 Analytics 文件。然后,Codean 会生成文本和 html 格式的输出。Codean 还提供了一种机制来将数据存储在历史归档文件中。以后,您可以将较新的数据与您创建的归档文件中的数据进行比较。

tag-name 是标记名称。reference 是用于比较最近数据的参考可执行文件或目录。error-code 是三字母错误代码。warning-code 是三字母警告代码。请注意,由三个字母构成的错误代码 或由三个字母构成的警告代码必须全部是大写字母或全部是 小写字母。有关错误代码和警告代码的完整列表,请参见 Oracle Solaris Studio 代码分析器用户指南。

Options

codean 接受以下选项:

-s

处理静态数据。您可以指定多个选项,也可以留空。如果留空,Codean 会处理所有可能的选项,具体取决于 .analyze/static(dynamic, coverage)/latest 存在与否。

-d

处理动态数据。您可以指定多个选项,也可以留空。如果留空,Codean 会处理所有可能的选项,具体取决于 .analyze/static(dynamic, coverage)/latest 存在与否。

-c

处理覆盖数据。您可以指定多个选项,也可以留空。如果留空,Codean 会处理所有可能的选项,具体取决于 .analyze/static(dynamic, coverage)/latest 存在与否。

--fullpath

显示完整文件路径。

-f source-file

仅显示给定源文件中的问题。您可以指定多个源文件。

-n number-of-lines

显示指定行数的源代码。

--save [-t]

保存最近的报告。如果指定了 -t,将以相同的标记名称覆盖保存的报告。

--whatisnew

仅显示自上次运行之后出现的新问题。如果使用校验和无法找到保存的副本来与其进行比较(很可能是缺少 .analyze/history/ 目录或该目录为空目录),Codean 会先在内部执行保存命令,然后再进行比较。

--whatisfixed

仅显示已修复的问题。如果使用校验和无法找到保存的副本来与其进行比较(很可能是缺少 .analyze/history/ 目录或该目录为空目录),Codean 会先在内部执行保存命令,然后再进行比较。

--tag tag-name

指定保存的报告的标记名称。该选项会命名保存的副本(如果与 --save 配对)以及查找要比较的历史副本(如果与 –-whatisnew–-whatisfixed 配对)。使用该选项可指定标记名称。存在 --save 时,如果未指定标记名称,Codean 会检查可执行文件的最近报告的最近修改时间,并使用该时间戳作为标记名称。格式为 hh::mm:ssmonddyear,例如 12:52:16Jul 12012。存在 --whatisnew--whatisfixed 时,如果未指定标记名称,会将最近的报告与最近保存的副本进行比较。

-D destination-directory

指定一个位置来存放所有结束报告。该标志必须后跟目标目录。

--ref reference-path

--reference-path 仅与 --whatisnew--whatisfixed 配对,用于指定要比较的其他文件。reference-path 是一个必须指定的引用可执行文件或目录名称。例如,如果您有 2 个 cg 二进制文件(cg.pass 和 cg.fail),则可以相互比较这两个文件。

codean -s --whatisnew --ref cg.pass cg.fail

使用前一个命令可显示将 cg.fail Previse 报告与 cg.pass Previse 报告进行比较所发现的新问题。

--showerrors error-code

显示 "error-code" 类型的错误。"error-code" 可以使用由三个字母构成的错误代码作为值,"MLK" 表示内存泄漏错误,"all" 表示所有错误。

--hideerrors error-code

隐藏 "error-code" 类型的错误。"error-code" 可以使用由三个字母构成的错误代码作为值,"MLK" 表示内存泄漏错误,"all" 表示所有错误。

--showwarnings warning-code

显示 "warning-code" 类型的警告。"warning-code" 可以使用由三个字母构成的警告代码作为值,"MLK" 表示内存泄漏警告,或 "all" 表示所有警告。

--hidewarnings warning-code

显示 "warning-code" 类型的警告。"warning-code" 可以使用由三个字母构成的警告代码作为值,"MLK" 表示内存泄漏警告,或 "all" 表示所有警告。

有关如何监视错误修复的示例

有关如何监视错误修复的示例

下节介绍如何监视错误修复的效果,特别是如何跟踪动态内存访问,因为错误具有无效的内存访问。

  1. 在修复之前编译目标源。

  2. 使用 Discover 检测二进制文件。确保使用 discover -a 命令生成 Analytics 输出。

  3. 运行检测过的二进制文件。

  4. 在 Codean 中使用以下命令存储 Analytics 输出:

    codean --save --tag before_bugfix -d a.out

    将在 a.out.analyze/history/before_bugfix/ 下创建一个历史归档文件,还会在该目录中创建一个历史文件 dynamic

  5. 修复错误。

  6. 重新编译目标源。

  7. 在 Discover 中使用 discover -a 命令重新检测该二进制文件。

  8. 重新运行检测过的二进制文件。

  9. 显示比较结果:您可以运行 Codean 来确保错误导致的无效内存访问已消失。使用以下命令:

    codean --whatisfixed --tag before_bugfix -d a.out

    前述命令还生成一个新的 Analytics 输出文件 a.out.analyze/dynamic/fixed_before_bugfix,该文件仅包含已修复的动态问题。然后您可以使用 Codean 或代码分析器 GUI 查看这些已修复的问题。

  10. [可选] 您还可以运行 Codean 以确保不会引入新的错误。使用以下命令:

    codean --whatisnew --tag before_bugfix -d a.out

    与使用 --whatisfixed 命令相似,此命令也会在 a.out.analyze/dynamic/new_before_bugfix 中生成一个新的 Analytics 输出文件,其中仅包含新的动态问题。