缩写
可读性规则 氧化剂:用于衡量读者必须同时持有多少的语法规则,以及发现有关价值的知识被重复,重新检查,或持有在其所有者之外等类型的规则. 无自定义 .
独立的CLI
需要节点.js 24+.
pnpx @aetherall/aexlint check
pnpx @aetherall/aexlint check src --typed --format json
check 默认为当前目录,并将每个语法规则作为错误运行. --typed 添加每一个有类型意识的规则;项目需要安装其依赖性和TypeScript项目(见下文). 默认限制 :
| 规则 | 限制 |
|---|---|
max-expression-depth | 3个 |
max-expression-complexity | 页:1 |
max-decision-depth | 2个 |
max-held-context | 3个 |
max-call-assembly | 宽度 60, 3 个外部名称 |
max-interpretation-spread | 页:1 |
max-projection-spread | 2个 |
no-fact-outside-owner | 页:1 |
no-default-outside-owner | 1个 |
no-derivation-outside-owner | 2个 |
限制是起点,而不是经验证的阈值。 对于其他限制或规则子集,请使用插件.
CLI运行自己的被钉住的Oxlint和被捆绑的有型意识后端. 它不使用项目Oxlint, --type-aware 或者说 oxlint-tsgolint,因此一个工程可以继续用另一个 Oxlint 版本进行林入;可选 oxlint-tsgolint 不需要软件包管理器列表.
CLI 忽略了 Oxlint 配置并允许不内置检查 。 Oxlint 的文件排除,忽略文件并禁用注释应用. 添加可重复的除外情形 --ignore-pattern <glob> 或进入 .aexlintignore (每行一格布, # 评论). --format编号 :-f 接受 Oxlint 输出格式。 发现失败了 使用 -- 在以破折号开头的路径之前.
逐步采用承诺的基准
一次记录当前发现并提交文件 :
aexlint check --typed --write-baseline .aexlint-baseline
CI 然后运行 aexlint check --typed --baseline .aexlint-baseline 并且只报告其中缺失的发现。 要接受发现,或删除您所修的发现条目,请再次记录您所修行的路径:
aexlint check --typed --write-baseline .aexlint-baseline src/billing
带着路, --write-baseline 仅替换其下的文件条目并保留其余部分,因此更改会准确显示被接受的内容,目标后的一个分支不能为其他文件放下条目,两个分支只有在它们碰同文件时才会相冲突. 没有路径,它将替换整个文件 。 条目会一直呆到他们的路径再次被记录,所以一个固定的发现可以回到那个文件未报告的. 升级 aexlint 或更改忽略已发现的模式变化: 在同一变化中再次记录整个文件 .
只检查已更改文件的速度更快, 但错过了它不触及的文件的更改原因, 例如更改类型的呼叫器或加入超限扩展的文件 .
只针对基准订正报告新的调查结果
没有承诺的文件,记录基础修订的结果,然后对照他们检查分支:
aexlint="$PWD/node_modules/.bin/aexlint"
git worktree add ../base "$(git merge-base origin/master HEAD)"
(cd ../base && pnpm install --frozen-lockfile && "$aexlint" check --write-baseline /tmp/aexlint-baseline)
"$aexlint" check --baseline /tmp/aexlint-baseline
对两个运行使用相同的版本,旗帜和路径,从每次检查的根开始. 这还报告在基地确定的调查结果,但每次检查需要第二次安装和运行。 一个发现是它的文件,规则和消息:它活下来了被移动的行,但当它的信息改变,其文件被重新命名,或者由于其他地方的改变而来时会回来. 文件中的相同发现被计算在内,包括被禁用评论所沉默的. 分析错误从未跳过 。 当一个规则不能运行, 如打出的规则没有它的后端, --write-baseline 失败, 写不出来 。 基线仅适用于国家行动倡议.
插件设置
需要节点.js 24+和Oxlint 1.83.0.
pnpm add -D [email protected] @aetherall/aexlint
.oxlintrc.json数字 :
{
"jsPlugins": ["@aetherall/aexlint"],
"rules": {
"aexlint/max-expression-depth": ["warn", { "max": 3 }],
"aexlint/no-repeated-value-policy": "warn"
}
}
插件允许默认规则 。 Type-aware规则需要下面的TypeScript设置;语法规则不需要更多.
规则
语法
| 规则 | 报告 |
|---|---|
| 最大表达深度 | 紧闭的电话 |
| 最大表达式复杂度 | 在一个表达式内工作 |
| 最大决定深度 | 嵌入逻辑组和三角形 |
| 最大调用组装 | 使用许多外部名称的大调 |
| 最大持有的文本 | 关闭决定、循环和召回 |
| 没有,如果 | else if 链条 |
| 无多线条件 | 跨越多行的条件 |
| 无位置分隔符 | 由通行证位置而不是在棋子之间放置分离器 |
| 偏好域预览 | 从几个检查中构建的无名分类 |
类型意识
| 规则 | 报告 |
|---|---|
| 偏好 - 真实 - 存在检查 | 与真相调查等同的虚无比较 |
| 最大解释范围 | 字会翻译过多的文件 |
| 最大投影范围 | 文件重复对象预测 |
| 无可原谅的可验证结果 | 验证结果呼叫器无需验证即可构建 |
| 无呼叫者强制-变量 | 接收类不执行的呼叫方检查 |
| 无重复值组 | 拼出多个地方的文字值组 |
| 无重复价值政策 | 多个文件中相同的文字测试和结果 |
| 无程序值分配 | 包含自身控制流的字面值分支 |
| 无外部变量行为 | 在已知所有人之外建造的可变表述 |
| 无重复选择 | 手持者重复测试 他们的兄弟选择器已经做了 |
| 无重复的转换 | 几处相同的转换 |
| 不再重复的留守检查 | 存在检查一个叫做函数已经做了 |
| 无事实 - 外部所有者 | 某类型在所有人之外确定的值的事实 |
| 无嵌入式翻译 | 读入周围状态而不是投影的可变字段 |
| 无分裂结果 | 成果分为可选成果领域或不同价值 |
| 无超宽型预置 | 拒绝其申报目标许可值的上游类型 |
| 不回头看 | 查找指定大多数字面值并给其余一个常数 |
| 没有扩大的工会 | string 参数和结果与隐藏工会的文字相比较 |
| 无隔开加载 | 只因较早的大小或密钥检查而持有的条目断言 |
| 无违约的外部所有者 | 读者在所有者之外重复或相矛盾的可选属性默认值 |
| 无分离键 | 地图值,其方法被赋予其存储在 |
| 无丢失写入 | 字段和元素在读取前被替换 |
| 无延迟进入 | 输入本地收藏只保留一个循环 |
| 无内线扫描 | 径向排放值,按国家计算 |
| 无衍生物-外部所有者 | 由拥有者以外的几个读者以同样方式从财产中计算值 |
max-held-context 允许 else if 链和 no-else-if ; 提前返回既满足两个条件.
类型意识设置和限制
- 键入规则分析属于 TypeScript 7 兼容的文件
tsconfig.json已安装依赖性的项目。 每个工程外的文件, 如脚本或配置文件无tsconfig.json包括,只获得语法规则。 参考项目可能需要首先建立申报产出. prefer-truthy-presence-check需求strictNullChecks。 。 。 .- 运行
tsc也: 类型错误不报告, 未解决的类型会让规则跳过检查 . - 使用纯度
oxlint没有--type-aware。插件在x64和arm64上运行自己的捆绑后端,用于Linux,macOS和Windows;不需要Go. 它从每次运行开始,当只启用语法规则时,会增加约10ms. - 一些规则读取了整个程序,包括lint命令外的文件. 工程代码是外部每个非声明文件
node_modules; 链接的工作空间软件包计数. - 设置错误失败运行 。 编辑器集成( E)
oxlint --lsp)不支持.
发展
见 发展指南。 。 。 .