资讯动态

Betterer内置测试完全解析:TypeScript、ESLint、Stylelint、Coverage与RegExp一文全懂

发布时间:2026/8/25 8:23:44 来源:尧图企业网站定制
Betterer内置测试完全解析TypeScript、ESLint、Stylelint、Coverage与RegExp一文全懂【免费下载链接】bettererbetterer makes it easier to make incremental improvements to your codebase项目地址: https://gitcode.com/gh_mirrors/be/bettererBetterer是一款免费的开源增量式代码改进工具它不会逼着你一次性修完所有旧代码问题而是像棘轮一样锁定当前状态只许变好、不许变差。这篇文章将Betterer 内置测试一网打尽TypeScript、ESLint、Stylelint、Coverage 与 RegExp五款开箱即用的测试帮你在不写一行自定义测试代码的前提下让代码质量稳步提升。 先搞懂核心better、same、worse 三种结果在拆解五款内置测试之前先花 30 秒理解 Betterer 的工作方式这是所有内置测试的公共底座首次运行时Betterer 把每个测试的结果记录到缓存文件.betterer.results之后每次运行都会与缓存对比结果只有三种结果含义Betterer 的行为better问题变少了通过且自动把已解决的问题从缓存中移除⚪same问题没变化通过worse出现了新问题运行失败在 CI 中直接阻断流水线 这正是棘轮思想允许你慢慢还技术债但绝不允许债务反弹。 五款内置测试一览表Betterer 官方内置了 5 款测试分别对应最常见的代码质量场景内置测试npm 包检查内容典型场景源码位置TypeScript 测试betterer/typescript更严格编译选项引发的类型错误渐进开启strict模式packages/typescript/src/typescript.tsESLint 测试betterer/eslint新 ESLint 规则的违规新 lint 规则安全上线packages/eslint/src/eslint.tsStylelint 测试betterer/stylelint新 Stylelint 规则的违规CSS 风格规则逐步收紧packages/stylelint/src/stylelint.tsCoverage 测试betterer/coverage单元测试覆盖率覆盖率逐步爬升packages/coverage/src/coverage.tsRegExp 测试betterer/regexp指定正则的匹配数消灭 HACK/TODO/any()packages/regexp/src/regexp.ts除 Coverage 的总数模式外其余都是BettererFileTest按文件检查因此都支持.include()、.exclude()、.only()、.skip()四个过滤方法。① TypeScript 测试渐进开启严格编译适用场景想在老项目里打开strict等严格模式但一次打开会报几千个类型错误。import { typescript } from betterer/typescript; export default { stricter compilation: () typescript(./tsconfig.json, { strict: true, noEmit: true }) .include(./src/**/*.ts) };两个核心参数tsconfig 路径告诉测试基于哪份配置编译额外编译选项你想新启用的严格选项会覆盖在原配置之上。两个值得一提的工程细节见packages/typescript/src/typescript.ts使用增量编译只检查.include()圈定的文件速度很快自动过滤 TS6307 错误——这类错误是检查子集文件时必然产生的噪音官方已替你挡掉。效果老文件的既有类型错误被锁进缓存你新引入的类型错误才会让构建失败修复一个少一个。② ESLint 测试新规则安全上线适用场景团队想启用no-debugger等新 ESLint 规则但存量代码里有几百处违规。import { eslint } from betterer/eslint; export default { no more debuggers: () eslint({ no-debugger: error }).include(./src/**/*.ts) };它的设计非常聪明见packages/eslint/src/eslint.ts依然读取你项目里现有的 ESLint 配置useEslintrc: true保证解析规则完整但会先把已有规则全部置为off只启用你传入的新规则。也就是说Betterer 只对你新立的家规记账其他既有 lint 问题不在本次考核范围——这正是渐进式引入规则的正确姿势。③ Stylelint 测试CSS 规则逐步收紧适用场景给样式文件引入unit-no-unknown等 Stylelint 新规则。import { stylelint } from betterer/stylelint; export default { no unknown units: () stylelint({ rules: { unit-no-unknown: true } }) .include(**/*.css) };参数是一个 Stylelint 配置对象通过configOverrides叠加在现有配置之上同样只考核新规则。用法与 ESLint 测试完全同构团队只需记住一套心智模型见packages/stylelint/src/stylelint.ts。④ Coverage 测试让覆盖率只涨不跌适用场景希望测试覆盖率稳步提升而不是靠一次性突击。import { coverage, coverageTotal } from betterer/coverage; export default { increase per-file test coverage: () coverage(), increase total test coverage: () coverageTotal() };两个函数两种粒度coverage()逐文件提升覆盖率属于文件测试支持include/excludecoverageTotal()全局总数提升覆盖率对应数字越大越好的bigger约束。⚠️ 两个前提数据源是Istanbul 的 json-summary默认路径./coverage/coverage-summary.json可传参修改必须先跑一遍单元测试生成覆盖率报告再运行 Betterer。⑤ RegExp 测试用一把正则消灭脏代码适用场景没有现成工具能检查的代码异味——比如HACK注释、TODO、滥用any、遗留的console.log。import { regexp } from betterer/regexp; export default { no hack comments: () regexp(/(\/\/\s*HACK)/i).include(**/*.ts) };它的工作方式在匹配的文件里数正则命中次数每命中一次记一个问题修掉一处计数减一。两个贴心细节见packages/regexp/src/regexp.ts自动为正则补上g标志无需你操心全局匹配可自定义第二个参数作为问题描述方便在报告里看清这是什么问题。 RegExp 测试是五款中最灵活的瑞士军刀任何能写成正则的目标都能被纳入棘轮管理。️ 通用技巧include、goal 与 deadline五款内置测试共享一套 Betterer 文件测试能力三个最常用方法作用例子.include(glob)只检查指定文件.include(./src/**/*.ts).exclude(glob)排除指定文件.exclude(**/*.generated.ts).skip()/.only()临时跳过 / 只跑某个测试调试时锁定单个测试另外在测试配置里还可以附加两个时间维度的选项goal目标值达到目标即标记已完成例如覆盖率到 90% 就算毕业deadline截止日期过期未达标即标记已过期给技术债上发条。❓ 快速决策我该选哪款内置测试你的诉求选择老项目想开strict模式betterer/typescript引入新 ESLint 规则但不想被存量违规卡死betterer/eslint给 CSS/SCSS 加新风格规则betterer/stylelint让测试覆盖率只涨不跌betterer/coverage消灭 HACK/TODO/any()等异味betterer/regexp配置文件的完整写法可参考website/docs/test-definition-file.md五款测试的官方文档分别在website/docs/typescript-test.md、website/docs/eslint-test.md、website/docs/stylelint-test.md、website/docs/coverage-test.md与website/docs/regexp-test.md。✅ 小结Betterer 内置测试把增量改进这一理念落成了五件趁手工具TypeScript 管类型、ESLint 管逻辑规范、Stylelint 管样式规范、Coverage 管测试充分性、RegExp 管任意代码异味。它们共享同一套棘轮机制——better 自动销账、same 平稳通过、worse 立即报警——让你既能按自己的节奏还技术债又能保证代码库永远走在变好的路上。【免费下载链接】bettererbetterer makes it easier to make incremental improvements to your codebase项目地址: https://gitcode.com/gh_mirrors/be/betterer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价