Coverity 使用手册(1)

来源:互联网 发布:淘宝商家找大淘客 编辑:程序博客网 时间:2024/06/07 20:33

第 1.4 章 Coverity 分析

1.4.1. 配置
1.4.2. 构建
1.4.3. 分析
1.4.4. 提交
1.4.5. 支持 Coverity 分析的任务

本章将向您介绍完成分析(在基于服务器的中央构建环境中运行)所需的常见任务序列。有关该环境的信息,请参阅第 3.1 章 中央部署模型。有关详细的分析步骤

完成分析的先决条件

  • 要运行分析,您必须拥有 Coverity Analysis 的有效许可证。

  • 您需要拥有访问 Coverity Connect 数据流的权限,才可以将您的分析结果发送至该数据流。您还需要知道您的 Coverity Connect 用户名、密码和 Coverity Connect 主机或数据端口

    Coverity Connect 管理员通常负责设置数据流,为您提供向数据流提交问题的权限,以及提供您需要的其他信息

      

    Coverity Wizard(请参阅 了解详情)可以在 Coverity Connect 中创建数据流,而不是通过 Coverity Connect UI。但是,您仍需要知道您的 Coverity Connect 登录凭证和主机。数据流配置需要有 Coverity Connect 管理权限。

    有关通过 Coverity Connect UI 创建数据流的信息,请参阅 Coverity Platform 8.6 用户和管理员指南中的“配置项目和数据流”


1.4.1. 配置

在运行分析之前,您通常可以使用 cov-configure  命令为本机编译器和/或脚本语言(如 Javascript)生成一次性配置。当您执行分析流程的构建步骤时(请参阅第 1.4.2 节 “构建”),可以使用该配置。

该配置提供了有关要捕获和分析的源文件的语言的信息,并且提供了用于模拟您的本机编译器的设置、其选项、定义和版本。正确的配置允许 Coverity Analysis 在分析流程的构建步骤中正确转译本机编译器的参数,以及将源代码分析成优化的高效分析表格。

1.4.2. 构建

1.4.2.1. 构建捕获(为编译的语言)
1.4.2.2. 文件系统捕获(对于脚本)

生成配置之后,您需要捕获构建和/或文件系统至可以分析的目录(即中间目录)。您通常可以使用 cov-build 命令来完成该流程的这一部分。

1.4.2.1. 构建捕获(为编译的语言)

构建捕获是您需要编译的代码(如 C/C++)的整个分析工作流的一部分。Coverity Analysis 编译器将您的源代码构建为软件的中间表示。中间表示是二进制形式的源代码,可以为 Coverity Analysis 提供您的软件操作视图(为了软件问题的高效分析已进行优化)。使用 Coverity Analysis 编译器编译所有源代码通常是一个迭代过程。尽管 Coverity Analysis 尽力分析每个支持的编译器生成的编译代码,但特定代码库的细微差别有时会引入些许不兼容。不过,分析此类代码库仍可以生成有用的结果。

cov-build 命令将封装本机构建以观察本机编译器调用和操作。它将调用常规构建系统,并运行 cov-translate 命令,以将本机编译器的命令行参数转译为 Coverity Analysis 编译器命令行参数。对于每个观察到的本机编译器调用,cov-translate 都将针对具有相同参数的相同文件运行 Coverity Analysis 编译器,这将依次调用 cov-emit 命令来编译文件并将中间表示输出到中间目录中。


图 1.4.1. 示例:使用 Coverity Analysis 编译器构建源(Coverity Static Analysis 构建)



Coverity Analysis 编译器需要关于构建流程、依赖项和仅在本机构建期间才会显示的构建相关程序的信息。由于 cov-build 分析并编译每个源文件,首先使用本机编译器,然后使用 Coverity Analysis 编译器,因此完成 cov-build 流程的时间比仅使用本机编译器来编译源代码的时间长。

请注意,构建源代码的最简单方式是使用 cov-build,因为您不必修改本机构建。但是,cov-build 命令不允许您指定要编译的源文件。它仅会编译本机构建编译的任何代码(未更改的源代码除外)。如果您需要指定要编译的源代码,可以直接调用 cov-translate 命令。该任务较复杂,需要您修改本机构建流程,但也可能提高构建效率。运行 cov-translate 也是在 AIX 系统上运行 Coverity Analysis 编译器的唯一受支持方式。有关更多信息,请参阅第 3.3.3 节 “替代构建命令:cov-translate”。

1.4.2.2. 文件系统捕获(对于脚本)

文件系统捕获是用脚本语言(例如 Javascript、PHP、Python 和 Ruby)编写的已解译代码库的整个分析工作流的一部分。它将使用特殊的 cov-build 选项来生成和/或指定要用作分析候选的文件列表。被认为适合分析的文件将发出到中间目录中。

文件系统捕获可能会与构建捕获合并到一个统一的工作流中。有关示例,请参阅第 2.1 章 Coverity 分析入门 中的构建步骤。

1.4.3. 分析

使用或不使用 cov-build 构建源(对于前一种构建流程,请参阅第 1.4.2 节 “构建”)之后,您可以针对源代码运行 Coverity 分析来查找软件问题。您可以使用 cov-analyze  来分析代码和使用所有受支持的编程语言编写的脚本。

1.4.4. 提交

完成分析(请参阅第 1.4.3 节 “分析”)之后,您可以提交(或推送)分析结果至 Coverity Connect,以便开发人员和团队领导者可以高效地查看、管理和修复他们拥有的软件问题。

您可以使用 cov-commit-defects  命令将结果发送至 Coverity Connect 数据库中的数据流。必须先完成某些 Coverity Connect 配置任务(请参阅完成分析的先决条件),您才能将分析结果提交给 Coverity Connect,以便开发人员可以在 Coverity Connect 中查看(如果已设置,还可以在 Coverity Desktop 中查看)他们拥有的问题。请参阅了解主要的 Coverity Connect 工作流,以了解有关使用 Coverity Connect 查看和管理问题的信息。


目前Coverity已经属于Synopsys,原厂销售经理韩葆,邮箱Bao.Han@synopsys.com, 电话:15210834682


0 0
原创粉丝点击