用途:lintcn 用于创建、编辑和调试 .lintcn/ 目录下的自定义 tsgolint 规则。每条规则是一个 Go 函数,监听 TypeScript AST 节点,并利用 TypeScript 类型检查器进行类型感知分析。每条规则必须放在独立子文件夹中,子文件夹名即 Go 包名和规则标识,根目录下的扁平 .go 文件不受支持。
主要能力:规则通过 rule.Rule 结构定义 Name 与 Run,Run 返回从 ast.Kind 到回调的 RuleListeners 映射。支持进入/退出监听器、allow/not-allow 模式监听器、类型检查 API(获取类型、类型标志、联合/交叉类型、可赋值性、符号)、AST 导航与节点转换、错误报告(含自动修复、建议、多标签范围)以及规则选项。可用 // lintcn: 注释声明 name、severity、description、source 等元数据;severity 为 warn 的规则不使 CI 失败,且默认只对 git 变更/未跟踪文件显示,可用 --all-warnings 查看全库。
使用方式:在 .lintcn/ 内运行 go build ./... 验证编译,运行 go test -v ./... 执行测试。常用命令包括 npx lintcn add <规则文件夹或文件 URL>、npx lintcn list、npx lintcn remove <规则名>、npx lintcn lint。
适用场景:为 TypeScript 项目编写类型感知的自定义 lint 规则,例如检测未处理的 Promise、不可达回退、未处理的 Error 返回值等。
限制:规则必须位于子文件夹,包名需与文件夹名一致,导出变量需符合 var XxxRule = rule.Rule{...} 模式;go.mod、go.work 与 .tsgolint/ 为生成内容。资料未提供收费、价格、平台支持范围等更多信息。