@binary-balance/seshat

中文文档
0.15.0发布于 2026/11/08MITES Module零依赖构建来源已验证近 30 天下载 2178

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

中文使用文档
文档目录9 节
  1. 赛沙特做什么
  2. 安装
  3. 支持的测试跑道
  4. 配置
  5. 使用
  6. 了解结果
  7. 用于 CI
  8. 发展
  9. 许可证

赛沙特

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

TypeScript和TSX的本土代码保证工具,用Rust写成. 赛沙特 合并函数级别 《中美洲行动计划》 分析 操作员突变测试 寻找复杂和(或) 密码测试不足.

赛沙特做什么

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

安装

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

Seshat需要节点 >=24.20.0 <25npm 为 Linux 安装一个预建的二进制 x64/ARM64 (glibc), macOS x64/ARM64 或 Windows x64, 因此Rust是不需要的. 使用 musl 而不是 glibc 的 Alpine Linux 不支持 。 见 平台支持矩阵 详细情况.

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

支持的测试跑道

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

Seshat检查每跑一次的跑步版本 如果不是,就停下来 已支持。 见 运行相容性引导。 。 。 .

配置

添加一个 seshat.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 是一个小 从 节点示例。 。 。 .

这个 实例 包括完整的节点,npm工作空间,Vitest, plain Jest和Jest/Expo项目。 这个 配置指南 覆盖 每个领域,包括 workers 用于平行突变运行.

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

使用

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 如本报告所述,将撰写报告 报告格式。 。 。 . --help 列出所有选项.

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

了解结果

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

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数字 :

"thresholds": {
  "maxCrap": 30,
  "minMutationScore": 80,
  "maxInferredAny": 10,
  "maxTypeEscapes": 0
}
退出状态含义
0完成运行,达到阈值.
1完全运行时未达到阈值 .
2输入无效, 基线失败或运行不完整 .
130 编号 : 143由 SIGINT 编号 : SIGTERM 在乌尼克斯.

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

见 质量阈值 全文 规则.

发展

见 结构,则 构建和回归指南 编辑 包装指南。 。 。 .

许可证

麻省理工学院。 。 。 .

版本与发布记录

@binary-balance/seshat 共发布 20 个版本,首次发布于 2026/09/15;过去 12 个月发布了 20 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.15.0latest2026/11/08今天
0.14.02026/11/071 天前
0.13.02026/11/052 天前
0.12.12026/11/044 天前
0.12.02026/11/035 天前
0.11.02026/10/317 天前

其他发布通道:next → 0.1.0-rc.1。

关于 @binary-balance/seshat 的常见问题

@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 和提交记录判断。