规则
以下是 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 | 强制不使用分散注意力的元素。 | |
noHeaderScope | scope 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.
¥Correctness
检测肯定不正确或无用的代码的规则。
¥Rules that detect code that is guaranteed to be incorrect or useless.
Nursery
Section titled Nursery仍在开发中的新规则。
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.
¥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.
推荐的规则
Section titled 推荐的规则¥Recommended rules
推荐的规则是:
¥The recommended rules are:
- noAccessKey
- noAriaHiddenOnFocusable
- noAriaUnsupportedElements
- noAutofocus
- noBlankTarget
- noDistractingElements
- noHeaderScope
- noInteractiveElementToNoninteractiveRole
- noLabelWithoutControl
- noNoninteractiveElementToInteractiveRole
- noNoninteractiveTabindex
- noPositiveTabindex
- noRedundantAlt
- noRedundantRoles
- noSvgWithoutTitle
- useAltText
- useAnchorContent
- useAriaActivedescendantWithTabindex
- useAriaPropsForRole
- useButtonType
- useFocusableInteractive
- useGenericFontNames
- useHeadingContent
- useHtmlLang
- useIframeTitle
- useKeyWithClickEvents
- useKeyWithMouseEvents
- useMediaCaption
- useSemanticElements
- useValidAnchor
- useValidAriaProps
- useValidAriaRole
- useValidAriaValues
- useValidLang
- noBannedTypes
- noEmptyTypeParameters
- noExcessiveNestedTestSuites
- noExtraBooleanCast
- noForEach
- noMultipleSpacesInRegularExpressionLiterals
- noStaticOnlyClass
- noThisInStatic
- noUselessCatch
- noUselessConstructor
- noUselessEmptyExport
- noUselessFragments
- noUselessLabel
- noUselessLoneBlockStatements
- noUselessRename
- noUselessSwitchCase
- noUselessTernary
- noUselessThisAlias
- noUselessTypeConstraint
- noWith
- useArrowFunction
- useFlatMap
- useLiteralKeys
- useOptionalChain
- useRegexLiterals
- useSimpleNumberKeys
- noChildrenProp
- noConstAssign
- noConstantCondition
- noConstructorReturn
- noEmptyCharacterClassInRegex
- noEmptyPattern
- noFlatMapIdentity
- noGlobalObjectCalls
- noInnerDeclarations
- noInvalidBuiltinInstantiation
- noInvalidConstructorSuper
- noInvalidDirectionInLinearGradient
- noInvalidGridAreas
- noInvalidPositionAtImportRule
- noInvalidUseBeforeDeclaration
- noNonoctalDecimalEscape
- noPrecisionLoss
- noRenderReturnValue
- noSelfAssign
- noSetterReturn
- noStringCaseMismatch
- noSwitchDeclarations
- noUnknownFunction
- noUnknownMediaFeatureName
- noUnknownProperty
- noUnknownUnit
- noUnmatchableAnbSelector
- noUnnecessaryContinue
- noUnreachable
- noUnreachableSuper
- noUnsafeFinally
- noUnsafeOptionalChaining
- noUnusedLabels
- noVoidElementsWithChildren
- noVoidTypeReturn
- useExhaustiveDependencies
- useIsNan
- useJsxKeyInIterable
- useValidForDirection
- useYield
- noAccumulatingSpread
- noDelete
- noDangerouslySetInnerHtml
- noDangerouslySetInnerHtmlWithChildren
- noGlobalEval
- noArguments
- noCommaOperator
- noInferrableTypes
- noNonNullAssertion
- noParameterAssign
- noUnusedTemplateLiteral
- noUselessElse
- noVar
- useAsConstAssertion
- useConst
- useDefaultParameterLast
- useEnumInitializers
- useExponentiationOperator
- useExportType
- useImportType
- useLiteralEnumMembers
- useNodejsImportProtocol
- useNumberNamespace
- useNumericLiterals
- useSelfClosingElements
- useShorthandFunctionType
- useSingleVarDeclarator
- useTemplate
- useWhile
- noApproximativeNumericConstant
- noArrayIndexKey
- noAssignInExpressions
- noAsyncPromiseExecutor
- noCatchAssign
- noClassAssign
- noCommentText
- noCompareNegZero
- noConfusingLabels
- noConfusingVoidType
- noConstEnum
- noControlCharactersInRegex
- noDebugger
- noDoubleEquals
- noDuplicateAtImportRules
- noDuplicateCase
- noDuplicateClassMembers
- noDuplicateFontNames
- noDuplicateJsxProps
- noDuplicateObjectKeys
- noDuplicateObjectKeys
- noDuplicateParameters
- noDuplicateSelectorsKeyframeBlock
- noDuplicateTestHooks
- noEmptyBlock
- noEmptyInterface
- noExplicitAny
- noExportsInTest
- noExtraNonNullAssertion
- noFallthroughSwitchClause
- noFocusedTests
- noFunctionAssign
- noGlobalAssign
- noGlobalIsFinite
- noGlobalIsNan
- noImplicitAnyLet
- noImportAssign
- noImportantInKeyframe
- noLabelVar
- noMisleadingCharacterClass
- noMisleadingInstantiator
- noMisrefactoredShorthandAssign
- noPrototypeBuiltins
- noRedeclare
- noRedundantUseStrict
- noSelfCompare
- noShadowRestrictedNames
- noShorthandPropertyOverrides
- noSparseArray
- noSuspiciousSemicolonInJsx
- noThenProperty
- noUnsafeDeclarationMerging
- noUnsafeNegation
- useDefaultSwitchClauseLast
- useGetterReturn
- useIsArray
- useNamespaceKeyword
- useValidTypeof