Biome CLI v2.5.14 更新:新增 noReturnInFinally 等三条规则并修复多项问题
2.5.14
补丁变更
- #9022
0d49e24谢谢@dyc3!- 新增托儿所规则noReturnInFinally.该规则不允许在Promise.prototype.finally()回调,包括嵌套块和条件分支内部。嵌套函数中的返回被规则忽略。// Invalid: return in finally callback Promise.resolve(1).finally(() => { return 2 }) // Valid: no return in finally callback Promise.resolve(1).finally(() => { console.log(2) })从一个Promise.prototype.finally()回调不会替代原始承诺的履行值,这可能会造成混淆。退回的承诺和承诺会被拒绝,而它们的拒绝会拒绝最终的承诺。 - #11754
71eaa0d谢谢@griff里斯!- 新增托儿所规则noSvelteAtDebugTags, 这不允许斯韦尔特的{@debug}一天。<!-- Invalid: leftover debugging tag --> {@debug user}该{@debug}标签是调试辅助工具,一旦不再需要它,应当移除,因为它不应留在生产代码中。该规则提供了一个安全的修复方法,可以移除标签。 - #11725
5eb5f09谢谢@m1handr!- 新增托儿所规则useValidTestTitle,该系统强制执行单元测试用例和套件的有效标题。 - #11735
9bd70c7谢谢@ematipico!- 固定#8471:source.fixAll.biome被忽视formatter.formatWithErrors.现在它会在关闭解析错误时,自动应用安全修复,而不格式化有解析错误的文件。 - #11715
f05a3c3谢谢@ematipico!- 固定#7771: Grit 插件使用sequential当生物群处理文件时,不再惊慌失措。 - #11766
c2542c6谢谢@dyc3!- 固定验证readonly以及accessor修正值:现在报告说它们不能同时使用。 - #11461
22e9966谢谢@FoundDream!- 固定#11423:多行模板插值现在保留其闭合括号的缩进,当源缩进不是 的倍数时tabWidth.const value = ` ${ condition ? "yes" : "no" -} + } `; - #11766
c2542c6谢谢@dyc3!- 固定#11763: TypeScript 类成员使用override accessor,例如override accessor value = 1,现在正确解析。顺序相反,accessor override,现报道override必须先行accessor. - #11790
17d0ff0谢谢@ematipico!- 固定#10248:noUselessFragments现在允许在 Astro 文件中带有道具的片段,例如{text}模板表达式内部。 - #11777
7ee3a6c谢谢@ematipico!- 固定#7573: 补充道requireExplicitCase选项useExhaustiveSwitchCases.当设置为true,即使交换机有default这样你可以保留运行时的备援,同时检查并集中的每个值是否有自己的判定。该选项默认为false. - #11751
d37f24b谢谢@ematipico!- 固定#8347:来自的修正useConsistentArrowReturn现在括号返回以对象文字开头的表达式,然后移除箭头函数的正体括号,防止对对象属性访问等表达式产生无效输出。 - #11784
46e8912谢谢@dyc3!- 固定#11782:noUndeclaredCustomProperties在检查由多个共享依赖的 JavaScript 模块导入的样式表时,可能会卡住。 - #11731
1534885谢谢@ematipico!- 固定#7984:来自的修正useSimplifiedLogicExpression现在在多行条件下保留换行符,并带有行注释,防止右侧条件被注释去除。 - #11735
9bd70c7谢谢@ematipico!- 固定#7304:HTML格式化器现在保留了中日韩汉字之间的作者段落分隔,并与中日韩汉标点并列,而不是用空格替换。- 這個段落是那麼長, 在一行寫不行。 + 這個段落是那麼長, + 在一行寫不行。
- #11749
ff992a1谢谢@ematipico!- 固定#11747格式化和检查大括号的对象表达式不再出现二次级减速。 - #11736
1dd1fc4谢谢@dyc3!- 固定#8177: 代码操作在禁用实验性完整HTML支持后,不再修改Vue、Svelte或Astro文件的错误部分。 - #11743
3835945谢谢@santichausis!- 固定#10247:biome check --write/biome lint --write现在可以正确地在HTML属性表达式中编写代码修复(例如Svelte)onclick={...}或者像胡子一样的表情{count}),而不是默默报告诊断可修复且不应用任何东西。例如,运行biome lint --write --unsafe对于useBlockStatements(一个不安全的修复)用于保持文件不变的Svelte组件: - #11740
8ea8b4a谢谢@dyc3!- 固定#11453:useConsistentTestIt现在,调用时会同步更新导入,通过别名保留原始导出。该规则忽略本地声明的函数,并保留首选名称与其他绑定或全局引用冲突的修复。 - #11355
27177ca谢谢@dyc3!- 修复了 HTML 格式化器错误地将原生 HTML 元素格式应用于 PascalCase 组件名称,如 和<Body>在Vue、Svelte和Astro文件中。- - content - +content
- #11355
27177ca谢谢@dyc3!- 修复了 HTML 格式化器错误地将 SVG 块格式应用于与 SVG 元素名称匹配的未知元素。- - content - +content
- #11741
fc69047谢谢@dyc3!- 固定#8893:useImportExtensions不再建议添加.ts到.jsx共址时的导入.d.ts文件提供类型声明。 - #11642
c87341c谢谢@dyc3!- 新增托儿所规则useConsistentFunctionStyle,需要一致的函数定义样式。默认情况下,该规则报告以下声明,因为它要求为变量赋值一个函数表达式:function greet() { return "Hello"; } - #11770
ddfd622谢谢@dyc3!- 固定#8980:针对整个assist类别现已被尊重,包括biome-ignore-all assist运行时check. - #11792
7a4b895谢谢@dyc3!- Tailwind解析器中的固定虚线效用基址名称,包括border-bs,font-features, 和scrollbar-thumb.类如min-inline-[12rem]现在保留完整的基名,并分别解析任意值。 - #11739
1fc17e3谢谢@Netail!- 规则useIncludes现在也报道了lastIndexOf()比较与some()采用严格等号回拨的呼叫。arr.lastIndexOf(x) !== -1 arr.some(item => item === x)
- #11735
9bd70c7谢谢@ematipico!- 固定#6888.GritQL 插件现在可以使用contains关于导入子句元变量,如$clause在import $clause from "module"模式。 - #11790
17d0ff0谢谢@ematipico!- 固定#11786:useAnchorContent现在即使主播有aria-label,aria-labelledby,或者title属性,匹配 JSX 行为。 - #11651
a9c4aa0谢谢@saberoueslati!- 新增托儿所规则noVueUndeclaredDirectives该指令报告未通过绑定声明的自定义Vue指令,组件的directives选项,或者规则globals选项。关闭#11478. 单文件组件中别名命名导入现在会以其本地名称进行跟踪,因此noUndeclaredVariables认可vHighlight在import { highlight as vHighlight } from "./directives". - #11715
f05a3c3谢谢@ematipico!- 固定#7795.该noJsxLiterals规则现在在匹配文字时忽略周围的空白allowedStrings. - #11780
99c7049谢谢@ematipico!- 固定的假阳性useExhaustiveSwitchCases当数字情况使用相同值的不同拼写时。例如,case 0x1现在涵盖数值字面类型1. - #11720
c7c4e2b谢谢@ematipico!- 固定#7880:noUselessStringConcat当数字文字结束链条时,不再报告字面连接被分割到多行。 - #11355
27177ca谢谢@dyc3!- 提升包含大量HTML原生或SVG原生标签的HTML格式化器性能。 - #11720
c7c4e2b谢谢@ematipico!- 固定#7949:useReadonlyClassProperties现在报告的是静态类属性,但这些属性永远不会被重新分配。 - #11751
d37f24b谢谢@ematipico!- 固定#7644:useImportExtensions现在解析由引用的TypeScript项目配置声明的路径别名。 - #11791
f88793c谢谢@dyc3!- 修正了 中的假阳性useTailwindShorthandClasses对于条件测试中的字符串,例如cn(m === "w-2 h-2" ? "bg-red-800" : "bg-red-400"). - #11720
c7c4e2b谢谢@ematipico!- 固定#7783:noNoninteractiveElementInteractions不再报告本地元素的事件处理程序。 - #11733
7030068谢谢@dyc3!- 固定#11730:useExhaustiveSwitchCases在迭代一个类属性时报告缺失案例,且for...of. - #11717
2107dae谢谢@ternaus!- 固定#11716: thenoUnknownAttribute规则现在接受全屏事件处理程序,credentiallessiframe属性,以及SVGmaskType当 React 依赖范围允许 React 19.3 或更高版本时,属性。该credentialless以及maskType性质分别限制在和元素之间。 - #11737
b7e3559谢谢@dyc3!- 固定#11692:noFloatingPromises现在通过通用方法签名(包括Playwright装置)检测未处理的承诺返回。 - #11780
99c7049谢谢@ematipico!- 固定#7747:useExhaustiveSwitchCases现在报告由 const 元组派生的字面并缺失案例(typeof values)[number]以及对象keyof typeof object.其他类型感知规则,包括noFloatingPromises以及noUselessTypeConversion,也认可支持的索引访问结果。 - #11724
a9a5e9a谢谢@dyc3!- 固定了二进制和逻辑一元操作数周围的冗余括号,并带有引出行注释。!( // leading - (a || b) + a || b );
- #11715
f05a3c3谢谢@ematipico!- 固定#7722:noUnusedImports不再报告仅用于宣告类属性的计算名称中的类型导入。 - #11731
1534885谢谢@ematipico!- 固定#6390:生物群落现在提供了压制动作noDynamicNamespaceImportAccess收录于编辑部。 - #11751
d37f24b谢谢@ematipico!- 固定#7533:noDescendingSpecificity不再比较不同级联层块之间的选择器特异性。 - #11735
9bd70c7谢谢@ematipico!- 固定#6206:useUniqueElementIds在 SVG 上下文中不再报告元素的静态 ID。 - #11715
f05a3c3谢谢@ematipico!- 固定#5447因此,当 Biome 从嵌套目录运行时,GitHub 报告器会将注释与正确的文件关联起来。 - #11720
c7c4e2b谢谢@ematipico!- 固定#7816:useHookAtTopLevel当调用其他函数的结果时,不再报告类似钩子的方法,例如Reactotron.configure(...).useReactNative(...). - #11355
27177ca谢谢@dyc3!- 移除了该过时元素的特殊HTML格式化处理。 - #11731
1534885谢谢@ematipico!- 修复了 Grit 插件代码修复无法作为编辑器代码操作提供的问题。 - #11726
dea163f谢谢@dyc3!- 固定#11722当前置注释将类型参数分到多行时,JavaScript格式化器会在闭尾角括号前插入换行。type Foo = Record< // comment string, - number>; + number +>;
- #9758
02ea438谢谢@Netail!- 新增托儿所规则noJsonUnsafeValues该规则禁止在不同工具或语言之间使用不安全的JSON值。无效:[ 2e308, // Number evaluating to Infinity -2e308, // Number evaluating to -Infinity "\ud83d", // String with lone surrogate 1e-400, // Unsafe zero (too small, will evaluate to 0) 9007199254740992, // Unsafe integer (outside safe integer range) 2.2250738585072009e-308, // Subnormal number ]
- #11790
17d0ff0谢谢@ematipico!- 固定#8574:JavaScript格式化器有时会在多行表达式格式化后添加额外括号和移动注释,例如:!.评论现在会放在它们描述的数值旁边,不再加一对额外的括号。!( - ( - cond1 || // force this to be multi line - cond3 - ) // comment + cond1 || // force this to be multi line + cond3 // comment );
- #11715
f05a3c3谢谢@ematipico!- 固定#7711:biome lint --suppress当多个诊断针对多行注释前的声明时,不再因规则冲突而失败。 - #11700
0e9fe53谢谢@dyc3!- 新增托儿所规则noObsoleteTags,该系统报告HTML和JSX中的过时HTML元素,例如:Text. - #11735
9bd70c7谢谢@ematipico!- 固定#7363: Biome GritQL 插件现在匹配 TypeScript 界面片段,如interface $name { $body }. - #11729
f047985谢谢@m1handr!- 增加了支持suite()作为describe()跨测试分析规则和格式化器。规则现在识别suite,fsuite,xsuite, 和test.suite块。格式化器识别它们为测试声明。 - #11778
4b7aa1f谢谢@ematipico!- 固定#7727: GritQL 片段,如import $what from $where现在匹配命名空间导入,包括仅类型导入。显式import type $what from $where模式也与仅类型命名和命名空间的导入匹配。 - #11715
f05a3c3谢谢@ematipico!- 固定#7603:useSingleJsDocAsterisk不再将JSDoc评论内容中的星号(如斜体文本)作为额外的行标记报告。 - #11706
e19512a谢谢@dyc3!- 固定#11704:通过否定模式重新包含在嵌套中的文件.gitignore当vcs.useIgnoreFile即使忽略文件包含*. - #11718
76a302a谢谢@dyc3!- 固定#8573:二进制算符前的自线注释保持在当javascript.formatter.operatorLinebreak是"before".foo - || // comment - bar; + // comment + || bar;
- #9797
64fd314谢谢@Netail!- 新增托儿所规则useConsistentObjectKeys,要求JSON对象键遵循一致的Unicode表示。
变化
- feat(lint/js): add
noReturnInFinally作者@dyc3在#9022 - 修复:在嵌套的 gitignore 文件中进行荣誉否定,由@dyc3在#11706
- feat(lint/js): 通过添加 useConsistentFunctionStyle@dyc3在#11642
- feat(lint):添加noObsolete标签@dyc3在#11700
- 修复:关闭了以下几个漏洞@ematipico在#11715
- fix(noUnknownAttribute):通过以下方式支持 React 19.3 DOM 属性@ternaus在#11717
- fix(format/js):在二进制操作符上方保留注释,使用operatorLinebreak先行切换@dyc3在#11718
- fix(format/js):省略由@dyc3在#11724
- 修正(格式/JS):在注释类型参数后,在闭合角括号前添加换行@dyc3在#11726
- feat(biome_js_analyze): 实现 useValidTestTitle 规则 (#9176)@m1handr在#11725
- 测试(CLI):通过 移除依赖路径的 GitHub 报告器快照@dyc3在#11728
- fix(css_parser):允许SCSS规则中省略末尾分号,由以下方式实现@denbezrukov在#11714
- 修复(分析器):各种错误 @造血的 在 #11720
- 修复(useSimplifiedLogicExpression):通过以下方式保留所有琐事 @造血的 在 #11731
- feat(markdown): 端口 markdownlint MD040 防护代码语言规则 @saberoueslati在#11267
- 修正(格式):保留模板闭合括号缩进@FoundDream在#11461
- feat:用于大小写不敏感二分查找的实用程序@dyc3在#11719
- feat(unit_tests): Support suite() 作为测试规则中 Describe() 的别名 (#11727)@m1handr在#11729
- fix(分析器):通过推断for-of绑定的类型@dyc3在#11733
- 修复:各种漏洞修复@ematipico在#11735
- 修复:在传统 HTML 支持中,修正嵌入文件中的代码动作偏移量@dyc3在#11736
- 家务:lint 规则,eslint-react-xyz 伞式子集关系,作者@Netail在#11738
- fix(types):通过以下方式解析通用方法签名的自身作用域@dyc3在#11737
- fix(js/parse):避免占用庞大的迭代器,通过@ematipico在#11749
- PERF(格式/HTML):用令牌集检查替换字符串比较@dyc3在#11355
- feat(lint/html/svelte):通过添加 noSvelteAtDebugTags@griff里斯在#11754
- fix(html):将修正写回属性表达式嵌入,由@santichausis在#11743
- PERF(formatter):跳过不必要的评论和上下文扫描@denbezrukov在#11753
- fix(css):通过保持 Sass 函数调用边界@denbezrukov在#11764
- fix(css_parser):通过以下方式解析媒体查询中的SCSS模块变量@denbezrukov在#11765
- feat(type-gen):扩展 降低代码生成以覆盖更多类型@dyc3在#11734
- fix(parse/js):通过@dyc3在#11766
- chore(deps): 通过将依赖 @changesets/CLI 更新为 v3.0.2@renovate[机器人] 在#11769
- Chore(DePS): 将依赖 @changesets/ChangeLog-GitHub 更新到 v1.0.1@renovate[机器人] 在#11768
- chore(deps):通过更新依赖@types/node至v24.13.4@renovate[机器人] 在#11771
- chore(deps): 将依赖 tombi 更新为 v1.5.4 by@renovate[机器人] 在#11772
- 家务(DEPS):通过 GitHub-actions 更新@renovate[机器人] 在#11773
- 家务(DEPS):将Rust Crate JIFF更新至0.2.37@renovate[机器人] 在#11774
- 家务(DEPS):将Rust Crate Ureq更新到3.4.2@renovate[机器人] 在#11775
- 修复(DEPS):更新@biomejs包@renovate[机器人] 在#11776
- 修复:lint 规则和 typescript 引用解析由@ematipico在#11751
- 专长:扩展使用包含者@Netail在#11739
- 修正(粗糙度):匹配导入模式@ematipico在#11778
- FET(代码生成):通过以下原始和标量字面类型@dyc3在#11756
- feat(type_inference):处理内置的全局类型,类成员,WeakMap实例成员降低@dyc3在#11757
- feat(codegen):降低集合、地图、日期、RegExp 类成员@dyc3在#11758
- FET(代码生成):通过以下方式降低迭代器和结果声明@dyc3在#11759
- feat(html): detect undeclared custom Vue directives by@saberoueslati在#11651
- feat(json_analyze):通过以下方式实现 useConsistentObjectKeys@Netail在#9797
- fix(useConsistentTestIt):通过以下方式更新重命名调用的导入@dyc3在#11740
- fix(useImportExtensions):支持带有声明的 JSX 导入@dyc3在#11741
- feat(json_analyze): 通过 实现 noJsonUnsafeValues@Netail在#9758
- 家务(Deps):升级 盗贼@dyc3在#11781
- fix(推理):由@ematipico在#11780
- 修正(CSS):避免通过@dyc3在#11784
- restruct(core):从 Salsa 获取服务,由@ematipico在#11779
- 修复:格式化器和lint 规则@ematipico在#11790
- 修正(顺风):通过忽略条件测试字符串@dyc3在#11791
- 修复(顺风):将公用事业基地名称虚线更新为@dyc3在#11792
- 专长(分析):添加 @shadcn/lint 规则来源@dyc3在#11793
- 修正(抑制):尊重顶级辅助类别@dyc3在#11770
- fix(useExhaustiveSwitchCases): add option
requireExplicitCase作者@ematipico在#11777 - CI:由@github-actions[bot]发布#11711
新贡献者
完整更新日志:https://github.com/biomejs/biome/compare/@biomejs/biome@2.5.13...@biomejs/biome@2.5.14
参与讨论