# @code-pushup/coverage-plugin 中文文档

规范地址：https://npmcn.com/package/%40code-pushup/coverage-plugin/

版本：0\.126\.4
npm 元数据更新时间：2026-09-11T10:11:20.605Z
中文译文更新时间：2026-11-10T08:44:38.449Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40code-pushup/coverage-plugin
原文对照：https://npmcn.com/package/%40code-pushup/coverage-plugin/?lang=original
项目主页：https://github.com/code-pushup/cli/tree/main/packages/plugin-coverage#readme
源码仓库：https://github.com/code-pushup/cli

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：91.1 kB，53 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：5 个
- peer 依赖：@nx/devkit \>=17\.0\.0，@nx/jest \>=17\.0\.0，@nx/vite \>=17\.0\.0
- 首次发布：2024-02-05T09:13:50.244Z
- 最新版本发布：2026-09-11T10:11:20.234Z
- 近 30 天下载量：2057（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：179（近 12 个月 62 个）

## 中文简介

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

## 安装

```sh
npm install @code-pushup/coverage-plugin
```

也可以使用：`pnpm add @code-pushup/coverage-plugin`、`yarn add @code-pushup/coverage-plugin`、`bun add @code-pushup/coverage-plugin`

## README

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

[![npm](https://img.shields.io/npm/v/%40code-pushup%2Fcoverage-plugin.svg)](https://www.npmjs.com/package/@code-pushup/coverage-plugin) [![downloads](https://img.shields.io/npm/dm/%40code-pushup%2Fcoverage-plugin)](https://npmtrends.com/@code-pushup/coverage-plugin) [![dependencies](https://img.shields.io/librariesio/release/npm/%40code-pushup/coverage-plugin)](https://www.npmjs.com/package/@code-pushup/coverage-plugin?activeTab=dependencies)

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

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

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

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

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

## 开始

1.  如果还没有安装 [@ code- pushup/ cli (英语)](https://npmcn.com/package/%40code-pushup/cli/README.md) 并创建配置文件.
    
2.  编写现有的代码覆盖结果文件或命令,用于您选择的生成结果的覆盖工具。 设定 lcov 为配置的记者( Jest 实例) [这里](https://jestjs.io/docs/configuration#coveragereporters-arraystring--string-options)) (中文(简体) ).
    
3.  将此插件添加到 `plugins` 在代码 PushUp CLI 配置文件中的数组(例如 . `code-pushup.config.js`) (中文(简体) ).
    
    密码覆盖的路由以 LCOV 格式生成, 并选择定义您要先运行的代码覆盖工具 . 所有覆盖类型都是默认计量的. 如果要集中处理某一类提供的保险,请在 `coverageTypes`。 。 。 .
    
    QQ 请注意, 当定义工具命令时, 您仍然需要定义所有相关覆盖结果的路径 .
    
    配置将类似以下:
    
    ```js
    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只包括作为额外信息,而不影响类别分数).
    
    ```js
    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 文档](https://npmcn.com/package/%40code-pushup/cli/README.md)) (中文(简体) ).
    

## 关于代码覆盖

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

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

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

如果你想了解更多的代码覆盖范围和如何衡量每种类型的覆盖范围,请前往 [软件测试帮助](https://www.softwaretestinghelp.com/code-coverage-tutorial/)。 。 。 .

### LCOV 格式

LCOV 格式最初为 [日内瓦](https://gcc.gnu.org/onlinedocs/gcc/gcov/introduction-to-gcov.html) 覆盖工具在C/C++项目中的结果. 它承认下列实体:

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

[给](https://github.com/linux-test-project/lcov/issues/113#issuecomment-762335134) 是以上信息的来源.

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

## 插件架构

### 插件配置规格

该插件接受以下参数:

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

### 审计和小组

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

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

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

```ts
     // ...
     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,
           },
           // ...
         ],
       },
       // ...
     ],
```

### 审计产出

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

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

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

```json
{
  "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 是什么？

用于跟踪代码覆盖的代码 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 和提交记录判断。

