Skip to content

规则

以下是 Biome 支持的规则列表,按组划分。以下是表情符号的图例:

¥Below the list of rules supported by Biome, divided by group. Here’s a legend of the emojis:

  • 图标 表示该规则是推荐规则的一部分。

    ¥The icon indicates that the rule is part of the recommended rules.

  • 图标 表示该规则提供了可以安全应用的代码操作(修复)。

    ¥The icon indicates that the rule provides a code action (fix) that is safe to apply.

  • 图标 表示该规则提供了不安全应用的代码操作(修复)。

    ¥The icon indicates that the rule provides a code action (fix) that is unsafe to apply.

  • 图标 表示该规则适用于 JavaScript 和超级语言文件。

    ¥The icon indicates that the rule is applied to JavaScript and super languages files.

  • 图标 表示该规则适用于 TypeScript 和 TSX 文件。

    ¥The icon indicates that the rule is applied to TypeScript and TSX files.

  • 图标 表示该规则适用于 JSON 文件。

    ¥The icon indicates that the rule is applied to JSON files.

  • 图标 表示该规则已应用于 CSS 文件。

    ¥The icon indicates that the rule is applied to CSS files.

  • 图标 表示该规则适用于 GraphQL 文件。

    ¥The icon indicates that the rule is applied to GraphQL files.

¥Accessibility

规则侧重于防止可访问性问题。

¥Rules focused on preventing accessibility problems.

规则名称描述属性
noAccessKey强制不在任何 HTML 元素上使用该属性。
noAriaHiddenOnFocusable强制可聚焦元素上未设置 aria-hidden=“true”。
noAriaUnsupportedElements强制不支持 ARIA 角色、状态和属性的元素不具有这些属性。
noAutofocus强制元素上未使用 autoFocus prop。
noBlankTarget禁止使用属性
noDistractingElements强制不使用分散注意力的元素。
noHeaderScopescope prop 应该只用于元素。
noInteractiveElementToNoninteractiveRole强制不将非交互式 ARIA 角色分配给交互式 HTML 元素。
noLabelWithoutControl强制标签元素或组件具有文本标签和相关输入。
noNoninteractiveElementToInteractiveRole强制不将交互式 ARIA 角色分配给非交互式 HTML 元素。
noNoninteractiveTabindex强制未分配给非交互式 HTML 元素。
noPositiveTabindex防止在属性上使用正整数
noRedundantAlt强制 alt 属性不包含单词 “image”、“picture” 或 “photo”。
noRedundantRoles强制显式属性与元素上的隐式/默认角色属性不同。
noSvgWithoutTitle强制元素使用元素。
useAltText强制所有需要替代文本的元素都具有有意义的信息以传递回终端用户。
useAnchorContent强制锚点具有内容,并且内容可供屏幕阅读器访问。
useAriaActivedescendantWithTabindex强制使用 分配给非交互式 HTML 元素。
useAriaPropsForRole强制具有 ARIA 角色的元素必须具有该角色所需的所有 ARIA 属性。
useButtonType强制元素使用属性
useFocusableInteractive具有交互角色和交互处理程序的元素必须是可聚焦的。
useGenericFontNames禁止在字体系列中缺少通用系列关键字。
useHeadingContent强制标题元素(h1、h2 等)具有内容,并且内容可供屏幕阅读器访问。可访问意味着它不会使用 aria-hidden 属性隐藏。
useHtmlLang强制元素具有属性。
useIframeTitle强制元素使用属性。
useKeyWithClickEvents强制整个代码库的所有内容的命名约定。, , .
useKeyWithMouseEvents强制 / 伴随 / 。
useMediaCaption强制元素必须具有标题。
useSemanticElements它检测 JSX 元素中属性的使用情况并建议改用语义元素。
useValidAnchor强制所有锚点有效,并且它们是可导航元素。
useValidAriaProps确保 ARIA 属性全部有效。
useValidAriaRole具有 ARIA 角色的元素必须使用有效的非抽象 ARIA 角色。
useValidAriaValues强制正确使用 和 。
useValidLang确保传递给属性的属性是正确的 ISO 语言和/或国家/地区。

¥Complexity

侧重于检查可以简化的复杂代码的规则。

¥Rules that focus on inspecting complex code that could be simplified.

规则名称描述属性
noBannedTypes禁止原始类型别名和误导性类型。
noEmptyTypeParameters禁止类型别名和接口中的空类型参数。
noExcessiveCognitiveComplexity禁止超过给定认知复杂性分数的函数。
noExcessiveNestedTestSuites此规则强制测试文件中嵌套的最大深度。
noExtraBooleanCast禁止不必要的布尔转换
noForEach优先使用语句而不是 。
noMultipleSpacesInRegularExpressionLiterals禁止在正则表达式文字中不明确地使用连续空格字符
noStaticOnlyClass此规则报告类没有非静态成员的情况,例如专门用作静态命名空间的类。
noThisInStatic禁止上下文中的和。
noUselessCatch禁止不必要的子句。
noUselessConstructor禁止不必要的构造函数。
noUselessEmptyExport禁止在模块文件中不更改任何内容的空导出。
noUselessFragments禁止不必要的片段
noUselessLabel禁止不必要的标签。
noUselessLoneBlockStatements禁止不必要的嵌套块语句。
noUselessRename禁止将导入、导出和解构分配重命名为同一名称。
noUselessStringConcat禁止不必要的字符串或模板文字连接。
noUselessSwitchCase禁止在语句中使用无用内容。
noUselessTernary当存在更简单的替代方案时,禁止使用三元运算符。
noUselessThisAlias禁止无用的别名。
noUselessTypeConstraint禁止使用或作为类型约束。
noUselessUndefinedInitialization禁止将变量初始化为 。
noVoid禁止使用运算符,这不是一个熟悉的运算符。
noWith禁止非严格上下文中的语句。
useArrowFunction在函数表达式上使用箭头函数。
useDateNow用于获取自 Unix 纪元以来的毫秒数。
useFlatMap提倡使用 when 一起使用。
useLiteralKeys强制使用文字访问属性而不是计算属性访问。
useOptionalChain强制使用简洁的可选链而不是链式逻辑表达式。
useRegexLiterals如果可能,强制使用正则表达式文字而不是 RegExp 构造函数。
useSimpleNumberKeys禁止非十进制或使用下划线作为分隔符的数字文字对象成员名称
useSimplifiedLogicExpression从逻辑表达式中丢弃冗余术语。

¥Correctness

检测肯定不正确或无用的代码的规则。

¥Rules that detect code that is guaranteed to be incorrect or useless.

规则名称描述属性
noChildrenProp防止将子组件作为 props 传递。
noConstAssign防止重新分配变量。
noConstantCondition禁止在条件中使用常量表达式
noConstantMathMinMaxClamp禁止使用和来限制结果本身为常数的值。
noConstructorReturn禁止从 返回值。
noEmptyCharacterClassInRegex禁止正则表达式文字中的空字符类。
noEmptyPattern禁止空的解构模式。
noFlatMapIdentity禁止在上使用不必要的回调。
noGlobalObjectCalls禁止将全局对象属性作为函数调用
noInnerDeclarations禁止可在其块外访问的和声明。
noInvalidBuiltinInstantiation确保内置函数正确实例化。
noInvalidConstructorSuper防止错误使用内部类。它还检查扩展其他构造函数的类中是否缺少调用。
noInvalidDirectionInLinearGradient禁止线性梯度函数使用非标准方向值。
noInvalidGridAreas禁止在 CSS 网格布局中无效命名的网格区域。
noInvalidNewBuiltin禁止具有全局非构造函数的运算符。
noInvalidPositionAtImportRule禁止在无效位置使用 @ 规则。
noInvalidUseBeforeDeclaration禁止在声明之前使用变量和函数参数
noNewSymbol禁止带有对象的运算符。
noNodejsModules禁止使用 Node.js 内置模块。
noNonoctalDecimalEscape禁止字符串文字中的和转义序列。
noPrecisionLoss禁止丢失精度的文字数字
noRenderReturnValue防止使用 的返回值。
noSelfAssign禁止在双方完全相同的情况下进行分配。
noSetterReturn禁止从 setter 返回值
noStringCaseMismatch禁止比较使用不合规值修改字符串大小写的表达式。
noSwitchDeclarations禁止在子句中使用词汇声明。
noUndeclaredDependencies禁止使用未在中指定的依赖。
noUndeclaredVariables防止使用文档中未声明的变量。
noUnknownFunction禁止未知的 CSS 值函数。
noUnknownMediaFeatureName禁止未知的媒体功能名称。
noUnknownProperty禁止未知的属性。
noUnknownUnit禁止未知的 CSS 单位。
noUnmatchableAnbSelector禁止不匹配的 An+B 选择器。
noUnnecessaryContinue避免使用不必要的 。
noUnreachable禁止无法访问的代码
noUnreachableSuper如果类具有超类,则确保在访问类构造函数之前,在类构造函数中的每个代码路径上都只调用一次构造函数
noUnsafeFinally禁止在 finally 块中控制流语句。
noUnsafeOptionalChaining禁止在未允许使用未定义值的上下文中使用可选链接。
noUnusedFunctionParameters禁止未使用的函数参数。
noUnusedImports禁止未使用的导入。
noUnusedLabels禁止未使用的标签。
noUnusedPrivateClassMembers禁止未使用的私有类成员
noUnusedVariables禁止未使用的变量。
noVoidElementsWithChildren此规则防止空元素(又称自关闭元素)有子元素。
noVoidTypeReturn禁止从返回类型为 ‘void’ 的函数返回值
useArrayLiterals禁止数组构造函数。
useExhaustiveDependencies强制在 React hook 中正确指定所有依赖。
useHookAtTopLevel强制所有 React 钩子都从顶层组件函数调用。
useImportExtensions强制显式比较值的 、、 或 属性。
useIsNan检查时需要调用。
useJsxKeyInIterable禁止在迭代器/集合文字中缺少关键属性。
useValidForDirection强制 “for” 循环更新子句将计数器移向正确的方向。
useYield要求生成器函数包含。

仍在开发中的新规则。

Nursery 规则需要在稳定版本上通过配置明确选择加入,因为它们可能仍然存在错误或性能问题。
它们在夜间构建中默认启用,但由于它们不稳定,因此它们的诊断严重性可能设置为错误或
警告,具体取决于我们是否打算在规则最终稳定后推荐该规则。
Nursery 规则一旦稳定下来就会提升到其他组,否则可能会被删除。

属于此组的规则 are not subject to semantic version

¥New rules that are still under development.

Nursery rules require explicit opt-in via configuration on stable versions because they may still have bugs or performance problems.
They are enabled by default on nightly builds, but as they are unstable their diagnostic severity may be set to either error or
warning, depending on whether we intend for the rule to be recommended or not when it eventually gets stabilized.
Nursery rules get promoted to other groups once they become stable or may be removed.

Rules that belong to this group are not subject to semantic version.

规则名称描述属性
noCommonJs禁止使用 CommonJs 模块系统,转而使用 ESM 样式导入。
noDuplicateCustomProperties禁止在声明块中重复自定义属性。
noDuplicateElseIf禁止 if-else-if 链中的重复条件
noDuplicatedFieldsGraphQL 操作中没有重复的字段。
noDynamicNamespaceImportAccess禁止动态访问命名空间导入。
noEnum禁止 TypeScript 枚举。
noExportedImports禁止导出导入的变量。
noIrregularWhitespace禁止使用不规则的空格字符。
noIrregularWhitespace禁止使用不规则的空格字符。
noRestrictedImports当通过 import 或 require 加载时,禁止指定模块。
noRestrictedTypes禁止用户定义的类型。
noSecrets禁止使用敏感数据,例如 API 密钥和令牌。
noStaticElementInteractions强制具有点击处理程序的静态可见元素(例如 )使用有效的角色属性。
noSubstr强制使用 over 和 。
noUnknownPseudoClass禁止未知的伪类选择器。
noUnknownPseudoElement禁止未知的伪元素选择器。
noUselessEscapeInRegex禁止在正则表达式文字中使用不必要的转义序列。
noValueAtRule禁止在 css 模块中使用规则。
useAdjacentOverloadSignatures禁止使用不相邻的过载签名。
useAriaPropsSupportedByRole强制 ARIA 属性对于元素支持的角色有效。
useConsistentCurlyBraces此规则强制在 JSX 属性和 JSX 子项内一致使用大括号。
useConsistentMemberAccessibility要求在类属性和方法上使用一致的可访问性修饰符。
useDeprecatedReason要求在使用@deprecated 指令时指定原因参数
useImportRestrictions不允许包私有导入。
useSortedClasses强制对 CSS 实用程序类进行排序。
useStrictMode强制在脚本文件中使用指令。
useTrimStartEnd强制在 和 上使用 和 。
useValidAutocomplete对元素上的属性使用有效值。

¥Performance

规则捕捉可以编写代码以使其运行得更快或通常更高效的方法。

¥Rules catching ways your code could be written to run faster, or generally be more efficient.

规则名称描述属性
noAccumulatingSpread禁止在累加器上使用 spread () 语法。
noBarrelFile禁止使用 barrel 文件。
noDelete禁止使用运算符。
noReExportAll避免重新导出所有内容。
useTopLevelRegex要求在顶层声明正则表达式文字。

¥Security

检测潜在安全漏洞的规则。

¥Rules that detect potential security flaws.

规则名称描述属性
noDangerouslySetInnerHtml防止使用危险的 JSX props
noDangerouslySetInnerHtmlWithChildren报告 DOM 元素或组件何时同时使用和 prop。
noGlobalEval禁止使用全局的。

¥Style

规则强制以一致且惯用的方式编写代码。

¥Rules enforcing a consistent and idiomatic way of writing your code.

规则名称描述属性
noArguments禁止使用。
noCommaOperator禁止逗号运算符。
noDefaultExport禁止默认导出。
noDoneCallback禁止在异步测试和钩子中使用回调。
noImplicitBoolean禁止在 JSX 布尔属性上使用隐式值
noInferrableTypes禁止使用文字表达式初始化的变量、参数和类属性的类型注释。
noNamespace禁止使用 TypeScript 的 s。
noNamespaceImport禁止使用命名空间导入。
noNegationElse如果语句有子句,则禁止在语句的条件中使用否定。
noNonNullAssertion禁止使用后缀运算符进行非空断言。
noParameterAssign禁止重新分配参数。
noParameterProperties禁止在类构造函数中使用参数属性。
noRestrictedGlobals此规则允许你指定不想在应用中使用的全局变量名称。
noShoutyConstants禁止使用其值为名称大写版本的常量。
noUnusedTemplateLiteral如果不需要插值和特殊字符处理,则禁止使用模板文字
noUselessElse当块提前中断时禁止块。
noVar禁止使用
noYodaExpression禁止使用 yoda 表达式。
useAsConstAssertion强制使用 over 文字类型和类型注释。
useBlockStatements要求遵循大括号约定。
useCollapsedElseIf强制使用而不是嵌套子句。
useConsistentArrayType要求一致使用或
useConsistentBuiltinInstantiation强制所有内置函数( 和 除外)使用 。
useConst要求对仅分配一次的变量进行声明。
useDefaultParameterLast强制 switch 语句中的默认子句位于最后
useDefaultSwitchClause要求 switch 语句中有 default 子句。
useEnumInitializers要求每个枚举成员值都明确初始化。
useExplicitLengthCheck更好的做法是将所有设置保存在一个配置文件中并在整个项目中引用它。
useExponentiationOperator禁止使用有利于运算符的运算符。
useExportType提倡使用 for 类型。
useFilenamingConvention强制相对导入的文件扩展名。
useForOf此规则建议在循环中使用循环,索引用于从迭代数组中提取项目。
useFragmentSyntax此规则强制使用超过。
useImportType提倡使用 for 类型。
useLiteralEnumMembers要求所有枚举成员都是文字值。
useNamingConvention强制 JavaScript 和 TypeScript 文件名的命名约定。
useNodeAssertStrict提倡使用 over 。
useNodejsImportProtocol强制使用 Node.js 内置模块的协议。
useNumberNamespace使用属性而不是全局属性。
useNumericLiterals禁止和支持二进制、八进制和十六进制文字
useSelfClosingElements防止没有子组件的组件有额外的结束标签
useShorthandArrayType在表达数组类型时,此规则提倡使用简写而不是 。
useShorthandAssign尽可能要求赋值运算符简写。
useShorthandFunctionType强制使用函数类型而不是带有调用签名的对象类型。
useSingleCaseStatement强制 switch 子句只有一个语句,发出一个将语句封装在块中的快速修复。
useSingleVarDeclarator禁止在同一个变量语句中声明多个变量
useTemplate首选模板文字而不是字符串连接。
useThrowNewError抛出错误时需要。
useThrowOnlyError禁止抛出非值。
useWhile当不需要初始化程序和更新表达式时,强制使用循环而不是循环。

¥Suspicious

检测可能不正确或无用的代码的规则。

¥Rules that detect code that is likely to be incorrect or useless.

规则名称描述属性
noApproximativeNumericConstant使用标准常量而不是近似文字。
noArrayIndexKey不鼓励在键中使用数组索引。
noAssignInExpressions禁止表达式中的赋值。
noAsyncPromiseExecutor禁止使用异步函数作为 Promise 执行器。
noCatchAssign禁止在 catch 子句中重新分配异常。
noClassAssign禁止重新分配类成员。
noCommentText防止注释作为文本节点插入
noCompareNegZero禁止比较
noConfusingLabels禁止非循环的标记语句。
noConfusingVoidType禁止泛型或返回类型之外的类型。
noConsole禁止使用。
noConsoleLog禁止使用
noConstEnum禁止 TypeScript
noControlCharactersInRegex防止在正则表达式中使用控制字符和一些与控制字符匹配的转义序列。
noDebugger禁止使用
noDoubleEquals要求使用和。
noDuplicateAtImportRules禁止重复规则。
noDuplicateCase禁止重复的案例标签。
noDuplicateClassMembers禁止重复的类成员。
noDuplicateFontNames禁止字体系列中的重复名称。
noDuplicateJsxProps防止多次分配 JSX 属性。
noDuplicateObjectKeys禁止在对象内部使用两个同名的键。
noDuplicateObjectKeys禁止在对象内部使用两个同名的键。
noDuplicateParameters禁止重复的函数参数名称。
noDuplicateSelectorsKeyframeBlock禁止关键帧块中的重复选择器。
noDuplicateTestHooks块不应包含重复的钩子。
noEmptyBlock禁止 CSS 空块。
noEmptyBlockStatements禁止空块语句和静态块。
noEmptyInterface禁止声明空接口。
noEvolvingTypes禁止变量通过重新分配演变为类型。
noExplicitAny禁止使用类型。
noExportsInTest禁止在包含测试的文件中使用或
noExtraNonNullAssertion防止在 TypeScript 文件中错误使用非空断言运算符 ()。
noFallthroughSwitchClause禁止子句的 fallthrough。
noFocusedTests禁止重点测试。
noFunctionAssign禁止重新分配函数声明。
noGlobalAssign禁止分配给原生对象和只读全局变量。
noGlobalIsFinite使用 代替全局 。
noGlobalIsNan使用 代替全局 。
noImplicitAnyLet禁止在变量声明中使用隐式类型。
noImportAssign禁止分配给导入的绑定
noImportantInKeyframe禁止在关键帧声明中无效
noLabelVar禁止与变量共享名称的标签
noMisleadingCharacterClass禁止在字符类语法中使用多个代码点构成的字符。
noMisleadingInstantiator强制正确使用 和 。
noMisplacedAssertion检查断言函数(例如)是否放置在函数调用中。
noMisrefactoredShorthandAssign当变量出现在两侧时,禁止简写赋值。
noPrototypeBuiltins禁止直接使用内置函数。
noReactSpecificProps防止使用 React 特定的 JSX 属性。
noRedeclare禁止在同一范围内重新声明变量、函数、类和类型。
noRedundantUseStrict防止有多余的 。
noSelfCompare禁止在双方完全相同的情况下进行比较。
noShadowRestrictedNames禁止标识符隐藏受限名称。
noShorthandPropertyOverrides禁止覆盖相关长写属性的简写属性。
noSkippedTests禁止禁用测试。
noSparseArray禁止稀疏数组
noSuspiciousSemicolonInJsx它检测 JSX 元素内可能的 “wrong” 分号。
noThenProperty禁止使用属性。
noUnsafeDeclarationMerging禁止接口和类之间不安全的声明合并。
noUnsafeNegation禁止使用不安全的否定。
useAwait确保函数使用。
useDefaultSwitchClauseLast强制原始类型的一致名称
useErrorMessage强制 onClick 至少伴随以下之一:
useGetterReturn强制方法始终返回一个值。
useIsArray使用 代替 。
useNamespaceKeyword要求使用关键字而不是关键字来声明 TypeScript 命名空间。
useNumberToFixedDigitsArgument强制使用带有的数字参数。
useValidTypeof此规则验证一元表达式的结果是否与有效值进行比较,有效值可以是包含有效类型名称的字符串文字或其他表达式

¥Recommended rules

推荐的规则是:

¥The recommended rules are: