# @binary-balance/seshat 中文文档

规范地址：https://npmcn.com/package/%40binary-balance/seshat/

版本：0\.15\.0
npm 元数据更新时间：2026-11-08T07:46:01.156Z
中文译文更新时间：2026-11-08T07:46:26.596Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40binary-balance/seshat
原文对照：https://npmcn.com/package/%40binary-balance/seshat/?lang=original
项目主页：https://github.com/Binary-Balance/seshat#readme
源码仓库：https://github.com/Binary-Balance/seshat

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

- 包体积（解压后）：14.8 kB，4 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=24\.20\.0 \<25
- 运行依赖：0 个
- 首次发布：2026-09-15T01:49:21.967Z
- 最新版本发布：2026-11-08T07:46:00.795Z
- 近 30 天下载量：2178（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：20（近 12 个月 20 个）

## 中文简介

用于TypeScript和TSX复杂性分析和突变测试的原生CLI.

## 安装

```sh
npm install @binary-balance/seshat
```

也可以使用：`pnpm add @binary-balance/seshat`、`yarn add @binary-balance/seshat`、`bun add @binary-balance/seshat`

## README

# 赛沙特

> 塞沙特是古埃及写作,智慧,和知识的女神. 作为文人和记录保持者,她被确认为测量,会计,建筑,科学,天文学,数学,几何,历史和测量的女神.

TypeScript和TSX的本土代码保证工具,用Rust写成. 赛沙特 合并函数级别 [《中美洲行动计划》](https://testing.googleblog.com/2011/02/this-code-is-crap.html) 分析 [操作员突变测试](https://en.wikipedia.org/wiki/Mutation_testing) 寻找复杂和(或) 密码测试不足.

## 赛沙特做什么

-   计算函数复杂度和CRAP从分支覆盖中得分.
-   变化比较、逻辑、算术、布尔、可选和无效 一次一个表达式,并检查测试是否检测到它们.
-   替换函数机构以查找删除测试失败的覆盖函数.
-   删除表达式语句并删除符合条件的函数的返回 .
-   以被俘项目的单独副本进行测试.
-   出产可读终端输出并版本为JSON,带有可选的CI阈值.
-   支持明确源选择,多测试设置和平行突变工人.
-   选择经过验证的Vitest,Jest/Expo和节点设置的完整测试文件,并带有全跑倒计时和选择退出.

## 安装

```sh
npm install --save-dev @binary-balance/seshat
```

Seshat需要节点 `>=24.20.0 <25`npm 为 Linux 安装一个预建的二进制 x64/ARM64 (glibc), macOS x64/ARM64 或 Windows x64, 因此Rust是不需要的. 使用 musl 而不是 glibc 的 Alpine Linux 不支持 。 见 [平台支持矩阵](https://github.com/Binary-Balance/seshat/blob/main/docs/platform-support.md) 详细情况.

评估的项目必须已经安装了自己的附属设施, 包括TypeScript,它的测试跑道和覆盖工具.

## 支持的测试跑道

| 运行者 | 支持的版本 |
| --: | --- |
| 节点的内置测试跑道 | 节点 `>=24.20.0 <25` |
| 维特 | `>=5.0.0 <6` |
| 欢乐 | 节点或jsdom环境 `29.7.0` |
| 以博览会为乐 | 欢乐 `29.7.0` 带着欢快的表演 `57.0.5` 或者说 `57.0.6` |

Seshat检查每跑一次的跑步版本 如果不是,就停下来 已支持。 见 [运行相容性引导](https://github.com/Binary-Balance/seshat/blob/main/docs/runner-compatibility.md)。 。 。 .

## 配置

添加一个 `seshat.json` 到项目根。 这个是用来测试节点的 运行 :

```json
{
  "source": {
    "include": ["src/**/*.ts"]
  },
  "capture": [
    "package.json", "package-lock.json", "tsconfig.json", "collect-node.mjs",
    "src", "tests", "node_modules"
  ],
  "setups": [{
    "name": "node",
    "runner": "node",
    "cwd": ".",
    "typecheck": ["node", "node_modules/typescript/bin/tsc", "--project", "tsconfig.json"],
    "test": [
      "node", "--test", "--test-concurrency=1",
      "--test-reporter={seshatReporter}", "tests/rules.test.mjs"
    ],
    "coverage": {
      "command": ["node", "collect-node.mjs", "tests/rules.test.mjs"],
      "report": "coverage/coverage-final.json"
    }
  }]
}
```

-   `source` 选择要评估的文件,使用 glob 模式.
-   `capture` 列出复制到每个孤立运行的文件和目录。 这个 必须包含选定的源和命令所需的一切.
-   `setups` 给出类型检查、测试和覆盖命令。 覆盖范围 命令必须写出伊斯坦布尔JSON报告; `collect-node.mjs` 是一个小 从 [节点示例](https://github.com/Binary-Balance/seshat/tree/main/examples/node)。 。 。 .

这个 [实例](https://github.com/Binary-Balance/seshat/blob/main/examples/README.md) 包括完整的节点,npm工作空间,Vitest, plain Jest和Jest/Expo项目。 这个 [配置指南](https://github.com/Binary-Balance/seshat/blob/main/docs/configuration.md) 覆盖 每个领域,包括 `workers` 用于平行突变运行.

比较、逻辑、算术、布尔语、语句和可选变种 默认启用。 设定 `"mutationOperators": ["comparison"]` 将操作范围保留为0.4.0. 使用 `["comparison", "logical", "arithmetic"]` 保留0.5.0的范围 0.6.0 数字 `boolean` 家庭翻转运行时间 `true`编号 :`false` 字节并删除 前缀 `!`,包括其布尔转换。 这个 `optional` 家庭删除一个 `?.` 线段或更改 `??` 改为 `||`关闭 `optional` 从 `mutationOperators` 改为 保留0.8.x范围。 见 [准确的形式和限度](https://github.com/Binary-Balance/seshat/blob/main/docs/research/optional-mutations.md)。 。 。 . 更广泛的默认可以增加测试处决和变化分数.

## 使用

```sh
npx @binary-balance/seshat check    # CRAP and mutation testing
npx @binary-balance/seshat crap     # coverage and CRAP only
npx @binary-balance/seshat mutate   # mutation testing only
```

使用完整的软件包名称 `npx`。一个赤裸的 `npx seshat` 可以获取 与这个名字无关的软件包.

每个命令读取 `./seshat.json`; 使用 `--config PATH` 为另一个文件。 添加 `--json` 如本报告所述,将撰写报告 [报告格式](https://github.com/Binary-Balance/seshat/blob/main/docs/report-format.md)。 。 。 . `--help` 列出所有选项.

只运行信任的测试命令 。 Seshat的拷贝保护项目检查, 但测试仍然可以访问外部文件,服务,数据库和证书.

## 了解结果

CRAP使用复杂性和分支覆盖,从0到1的分数. 职能 没有记录分支使用语句覆盖:

```text
complexity^2 * (1 - coverage)^3 + complexity
```

对于复杂性 10,零覆盖 `110`,50%的覆盖率 `22.5` 财务报告和审定财务报表 全覆盖 `10`。 。 。 .

语句覆盖计算运行代码; 分支覆盖计算记录 决定的结果。 例如,测试中只有成员价格 `if (member) total *= 0.9; return total;` 可以在运行每个语句时运行 不测试非会员的结果。 其声明覆盖率为100%, 但是它的分支覆盖率是50%。 两种测量方法都出现在报告中.

变异分数是使测试失败的变异者的百分比. 一个变种人 故意修改代码,比如 `>` 改为 `>=` 或者说 `true` 改为 `false`。 。 。 . 如果测试抓到两个 三个变种人,得分是 `66.67%`。超时或执行错误会离开运行 不完整并扣分。 两分都证明正确.

`check` 财务报告和审定财务报表 `mutate` 还替换符合条件的职能机构,以检测伪测试 函数,那些尽管覆盖范围为正,但身体替换测试失败的人. 这些旗帜和计数与操作员的变异分数分开. `mutate` 收集新覆盖以跳过未执行的函数; 它不应用 CRAP 阈值。 极端突变甚至使用实验切换来取代.

## 用于 CI

添加可选阈值到 `seshat.json`数字 :

```json
"thresholds": {
  "maxCrap": 30,
  "minMutationScore": 80,
  "maxInferredAny": 10,
  "maxTypeEscapes": 0
}
```

| 退出状态 | 含义 |
| --: | --- |
| `0` | 完成运行,达到阈值. |
| `1` | 完全运行时未达到阈值 . |
| `2` | 输入无效, 基线失败或运行不完整 . |
| `130` 编号 : `143` | 由 `SIGINT` 编号 : `SIGTERM` 在乌尼克斯. |

`maxInferredAny` 将任意类型的运行时表达式站点分别限制 设置. `maxTypeEscapes` 明确限制 `any` 和类型脚本压制 整个选定来源的注释。 两者都适用于所有三个命令.

见 [质量阈值](https://github.com/Binary-Balance/seshat/blob/main/docs/configuration.md#quality-thresholds) 全文 规则.

## 发展

见 [结构](https://github.com/Binary-Balance/seshat/blob/main/docs/architecture.md),则 [构建和回归指南](https://github.com/Binary-Balance/seshat/blob/main/benchmarks/proofs/README.md) 编辑 [包装指南](https://github.com/Binary-Balance/seshat/blob/main/packaging/README.md)。 。 。 .

## 许可证

[麻省理工学院](https://github.com/Binary-Balance/seshat/blob/main/LICENSE)。 。 。 .

## 常见问题

### @binary-balance/seshat 是什么？

用于TypeScript和TSX复杂性分析和突变测试的原生CLI\.

### 如何安装 @binary-balance/seshat？

在项目目录运行 npm install @binary-balance/seshat，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 seshat，可以用 npx seshat 直接运行。

### @binary-balance/seshat 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/binary-balance\_\_seshat 是否存在。

### @binary-balance/seshat 支持 ESM 还是 CommonJS？

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

### @binary-balance/seshat 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=24\.20\.0 \<25。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @binary-balance/seshat 可以商用吗？

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

### @binary-balance/seshat 的下载量有多少？

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

### @binary-balance/seshat 还在维护吗？

最新版本 0\.15\.0 发布于 2026/11/08（今天）；至今共发布 20 个版本，其中过去 12 个月发布了 20 个；首次发布于 2026/09/15。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

