跳过正文
Background Image
  1. Posts/

代码覆盖率工具 Squish Coco 使用示例

·596 字·2 分钟· ·
沈显鹏
作者
沈显鹏
目录

准备工作
#

  1. 申请 免费试用许可 并安装
    • 会收到包含用户名/密码的邮件,用于登录下载。
  2. 本文测试环境为 Windows,因此下载并安装 Windows 版本的 Squish Coco 及其 VS 插件。
  3. 安装 Visual Studio 2010 及以上版本(本文使用 VS2017 Professional)。

安装 VS 插件
#

进入 ..squishcoco\Setup 目录,双击 SquishCocoVSIX2017.vsix,重新打开 VS2017 后即可看到插件入口。


创建示例项目
#

  1. 在 Visual Studio 中选择 File → New → Project…
  2. 选择 Visual C++Win32 Console Application 模板。
  3. 项目命名为 squishcoco_sample,点击 OKFinish

此时程序尚未插桩,需要为构建添加新的配置。

configuration-manager

  1. 打开 Build → Configuration Manager…
  2. Configuration 列点击 New…
  3. New Project Configuration 窗口中:
    • Name 填写 Code Coverage
    • Copy settings from 选择 ReleaseDebug
    • 点击 OK

添加测试代码
#

squishcoco_sample.cpp

#include "stdafx.h"
extern int myprint();

int _tmain(int argc, _TCHAR* argv[]) {
    int age;
    printf("Enter your age: ");
    scanf("%d", &age);
    if (age > 0 && age <= 40)
        printf("You're young guys\n");
    else if (age > 40 && age <= 70)
        printf("You're midle guys\n");
    else if (age > 70 && age <= 100)
        printf("You're old guys\n");
    else
        printf("You're awesome\n");

    myprint();
    return 0;
}

myprint.cpp

#include "stdafx.h"

int myprint() {
    printf("you have call printf function\n");
    return 0;
}

启用代码覆盖率插桩
#

使用 VS 插件:

squishcoco-add-in

  1. 点击 Tools → Code Coverage Build Mode…
  2. Project 选择 squishcoco_sample
  3. Configuration 选择 Code Coverage
  4. 底部选择 Modify → 点击 Enable code coverage for C++ projects

执行后,SquishCoco 会在输出窗口显示对编译器、链接器等附加的参数配置。


构建项目
#

构建后会生成:

  • 可执行文件 squishcoco_sample.exe
  • 插桩信息文件 squishcoco_sample.exe.csmes

双击 .csmes 文件会在 CoverageBrowser 中打开,此时因未运行程序,所有插桩行会显示为灰色。


收集和查看覆盖率结果
#

  1. 双击运行 squishcoco_sample.exe,会生成 squishcoco_sample.exe.csexe 覆盖率快照文件。

  2. 在 CoverageBrowser 中:

    • 点击 File → Load Execution Report…
    • 选择快照文件并 Import
  3. 代码窗口中已执行的行会以绿色高亮显示。


最终结果示例
#

squishcoco-result

相关文章

C/C++ 代码覆盖率工具
·225 字·1 分钟
代码覆盖率衡量自动化测试覆盖的代码行、语句或代码块的比例,是评估 QA 质量的重要指标。本文列出了常见的 C/C++ 代码覆盖率工具及其特性。
DevOps 实践
·242 字·1 分钟
本文介绍了 DevOps 实践的核心概念、目标和实施方法,强调了持续集成、持续交付和自动化的重要性。
GitSCM clone code don't display branch
·546 字·2 分钟
如何在 Jenkins 中使用 GitSCM插件克隆代码时,确保正确显示分支信息,避免出现 HEAD detached 状态的问题。
通过参数化上传文件到 FTP 服务器
·359 字·1 分钟
本文介绍了如何使用 Windows Batch 脚本通过参数化的方式上传文件到 FTP 服务器,避免在脚本中硬编码 FTP 凭据。
Jenkins Linux Agent 配置
·353 字·1 分钟
本文提供了 Jenkins Linux Agent 的逐步配置指南,包括 Java 运行时的准备、节点创建以及常见问题的排查方法。
Jenkins Windows Agent 配置
·608 字·2 分钟
本文提供 Jenkins Windows Agent 的详细配置步骤,包括 Java 运行时准备、节点创建以及常见问题的排查方法。