@code-pushup/coverage-plugin

中文文档
0.126.4发布于 2026/09/11MITTypeScriptES Module构建来源已验证近 30 天下载 2057

用于跟踪代码覆盖的代码 PushUp 插件QQ

中文使用文档
文档目录9 节
  1. 开始
  2. 关于代码覆盖
  3. LCOV 格式
  4. 插件架构
  5. 插件配置规格
  6. 审计和小组
  7. 审计产出
  8. 覆盖面结果的改变
  9. 以 Nx 单列波提供覆盖结果

@ code- pushup/ coverage- plugin (英语)

npm downloads dependencies

🧪 用于跟踪代码覆盖的代码PushUp插件. ☂️

此插件允许您在您的工程中测量和跟踪代码覆盖 . 它接受LCOV覆盖格式,并合并所提供的任何测试套件的覆盖结果.

以下列方式将测量的覆盖类型映射到代码推倒审计中

  • 该值在0-100之间,代表所有通过的结果的代码覆盖(涵盖/共计(中文(简体) )
  • 得分是转换为 0 - 1 范围的值
  • 缺失的涵盖范围按审计细节(非所谓的功能、未发现的分支或行)的问题绘制

[大 为了在插件内成功运行覆盖工具并直接收集覆盖结果,所有测试需要通过!

开始

  1. 如果还没有安装 @ code- pushup/ cli (英语) 并创建配置文件.

  2. 编写现有的代码覆盖结果文件或命令,用于您选择的生成结果的覆盖工具。 设定 lcov 为配置的记者( Jest 实例) 这里) (中文(简体) ).

  3. 将此插件添加到 plugins 在代码 PushUp CLI 配置文件中的数组(例如 . code-pushup.config.js) (中文(简体) ).

    密码覆盖的路由以 LCOV 格式生成, 并选择定义您要先运行的代码覆盖工具 . 所有覆盖类型都是默认计量的. 如果要集中处理某一类提供的保险,请在 coverageTypes。 。 。 .

    QQ 请注意, 当定义工具命令时, 您仍然需要定义所有相关覆盖结果的路径 .

    配置将类似以下:

    import coveragePlugin from '@code-pushup/coverage-plugin';
    
    export default {
      // ...
      plugins: [
        // ...
        await coveragePlugin({
          reports: ['coverage/lcov.info'],
          coverageToolCommand: {
            command: 'npx',
            args: ['jest', '--coverage', '--coverageReporters=lcov'],
          },
        }),
      ],
    };
    
  4. (可选) 引用单个审计或提供的插件组,您希望在自定义类别中包含( 使用) npx code-pushup print-config 以列出审计和组别.

    QQ 根据每一覆盖类型对总的类别分数的影响分配权重(分配权重0只包括作为额外信息,而不影响类别分数).

    export default {
      // ...
      categories: [
        {
          slug: 'code-coverage',
          title: 'Code coverage',
          refs: [
            {
              type: 'group',
              plugin: 'coverage',
              slug: 'coverage',
              weight: 1,
            },
            // ...
          ],
        },
        // ...
      ],
    };
    
  5. 用 CLI 运行 CLI npx code-pushup collect 并查看或上传报告(参见 CLI 文档) (中文(简体) ).

关于代码覆盖

代码覆盖范围是一个度量标准,它表明通过单位测试执行源代码的百分比. 它可以让人们深入了解测试的有效性,并发现源代码中如果不经过测试,部分内容就得不到检验.

  • 声明覆盖面: 测量至少一个测试中执行的语句数量.
  • 线路覆盖: 测量至少一个测试中执行的行数 。 与语句覆盖不同,任何部分被执行的行都算向行覆盖.
  • 条件覆盖: 测量所有条件值(true编号 :false)在至少一个测试中被评价为有条件陈述.
  • 部门覆盖面: 衡量因有条件声明而执行的分支数量(if编号 :else 在至少一个测试中。 在短路逻辑的情况下,只计算已执行路径. 与条件覆盖不同,它并不能保证条件值的所有组合都经过测试.
  • 职能覆盖:衡量至少一个测试中需要多少功能. 参数值,使用可选参数或默认值,与这个度量无关.

[大 请注意,代码覆盖不同于测试覆盖. 测试覆盖面衡量测试涵盖的接受标准的数量,难以正式核实。 这意味着代码覆盖不能保证所设计的软件符合业务要求.

如果你想了解更多的代码覆盖范围和如何衡量每种类型的覆盖范围,请前往 软件测试帮助。 。 。 .

LCOV 格式

LCOV 格式最初为 日内瓦 覆盖工具在C/C++项目中的结果. 它承认下列实体:

  • TN [测试名称]
  • SF [来源文件]
  • FN [行号] [函数名]
  • FNF [找到的函数数]
  • FNH[被击中的功能数]
  • [点击次数][功能名]
  • BRDA [行号] [块号] [处名] [点击次数]
  • BRF [发现的分支数]
  • BRH [取入的分支数]
  • DA [行数] [点击次数]
  • LF [找到行]
  • LH [线打]

给 是以上信息的来源.

[注] 分支名称通常是一个从0指数化的数字,表示真伪/虚伪条件或循环条件.

插件架构

插件配置规格

该插件接受以下参数:

  • coverageTypes: 您想要跟踪的一系列覆盖类型。 支持的数值 : function, (中文(简体) ), branch, (中文(简体) ), line。默认所有可用的类型.
  • reports: 包含有代码覆盖结果的文件信息阵列. 目前支持LCOV格式.
    • 对于一个单一的项目来说,作为字符串提供结果的路径就足够了.
    • 如果你有一个单曲, 两种结果路径(resultsPath从根到投影的路径pathToProject需要为LCOV格式提供。 对于 Nx 单列, 您可以使用我们的助手函数 getNxCoveragePaths 以自动获取路径信息.
  • (可选) coverageToolCommand:如果您想要运行您的覆盖工具来先生成结果, 您可以在此定义它 .
  • (可选) scoreTargets: 如果您的覆盖目标不是100%, 您可以在此定义范围为 0-1 。 任何超过所定义阈值的分数都会得到完美的分数. 数值不会受到影响.

审计和小组

此插件为您配置中的方便声明提供了一组 。 在这样定义时,所有计量的覆盖范围类型审计都具有相同的权重.

     // ...
     categories: [
       {
         slug: 'code-coverage',
         title: 'Code coverage',
         refs: [
           {
             type: 'group',
             plugin: 'coverage',
             slug: 'coverage',
             weight: 1,
           },
           // ...
         ],
       },
       // ...
     ],

每个覆盖类型仍然有自己的审计。 因此,当您想要包含一个子集的覆盖类型或者为它们分配不同的权重时,您可以采取以下方式:

     // ...
     categories: [
       {
         slug: 'code-coverage',
         title: 'Code coverage',
         refs: [
           {
             type: 'audit',
             plugin: 'coverage',
             slug: 'function-coverage',
             weight: 2,
           },
           {
             type: 'audit',
             plugin: 'coverage',
             slug: 'branch-coverage',
             weight: 1,
           },
           // ...
         ],
       },
       // ...
     ],

审计产出

审计是将一个覆盖类型的所有结果汇总到插件上.

对于函数和分支,一个问题指一个没有包括在任何测试中的分支或函数的单一实例,并算作错误。 在线路覆盖方面,一个问题将任何连续线路的金额组合在一起,以减少问题总数,并算作警告.

例如,以下内容可以作为项目覆盖的审计产出.

{
  "slug": "line-coverage",
  "displayValue": "95 %",
  "score": 0.95,
  "value": 95,
  "details": {
    "issues": [
      {
        "message": "Lines 7-9 are not covered in any test case.",
        "severity": "warning",
        "source": {
          "file": "packages/cli/src/lib/utils.ts",
          "position": {
            "startLine": 7,
            "endLine": 9
          }
        }
      }
    ]
  }
}

覆盖面结果的改变

目前,LCOV结果包括: (empty-report) 缺少覆盖的函数。 这表明了各种进出口,而不是实际的功能。 因此,这些结果被忽略了.

以 Nx 单列波提供覆盖结果

作为插件的一部分,有一个 getNxCoveragePaths 如果您正在使用 Nx 来设置覆盖结果的路径, 帮助者会接受所有相关目标( 例如) . test 或者说 unit-test)和搜索覆盖路径选项. 目前支持 Jest 和 Vest 配置选项 :

  • 对于 @nx/jest 它正在寻找执行者 coverageDirectory 选项.
  • 对于 @nx/vite 它正在寻找执行者 reportsDirectory 选项.

[大 请注意,您需要在您的 project.json 目标选项。 测试配置文件没有被搜索 .

版本与发布记录

@code-pushup/coverage-plugin 共发布 179 个版本,首次发布于 2024/02/05;过去 12 个月发布了 62 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.126.4latest2026/09/111 个月前
0.126.32026/05/195 个月前
0.126.22026/03/317 个月前
0.126.12026/03/317 个月前
0.126.02026/03/307 个月前
0.125.02026/03/277 个月前

关于 @code-pushup/coverage-plugin 的常见问题

@code-pushup/coverage-plugin 是什么?

用于跟踪代码覆盖的代码 PushUp 插件QQ

如何安装 @code-pushup/coverage-plugin?

在项目目录运行 npm install @code-pushup/coverage-plugin,或使用 pnpm add / yarn add / bun add。

@code-pushup/coverage-plugin 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@code-pushup/coverage-plugin 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@code-pushup/coverage-plugin 可以商用吗?

@code-pushup/coverage-plugin 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@code-pushup/coverage-plugin 的下载量有多少?

根据 npm 官方下载统计,@code-pushup/coverage-plugin 在 2026/10/10 – 2026/11/08 这 30 天内被下载 2,057 次,日均约 69 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@code-pushup/coverage-plugin 还在维护吗?

最新版本 0.126.4 发布于 2026/09/11(1 个月前);至今共发布 179 个版本,其中过去 12 个月发布了 62 个;首次发布于 2024/02/05。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。