From 84e0407a278e3228c3ddfebfefebaf7542f5df4d Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Wed, 19 Feb 2025 10:06:03 +0000 Subject: [PATCH] refactor(linter): severity and recommendation of lint rules (#5133) Co-authored-by: arendjr <533294+arendjr@users.noreply.github.com> Co-authored-by: Conaclos <2358560+Conaclos@users.noreply.github.com> --- .changeset/spotty-buckets-hang.md | 33 ++ crates/biome_analyze/src/rule.rs | 2 +- ...check_stdin_write_unsafe_successfully.snap | 5 +- .../lint_stdin_write_unsafe_successfully.snap | 4 +- .../lint_vue_js_files.snap | 27 +- .../lint_vue_ts_files.snap | 27 +- .../lint_only_multiple_rules.snap | 8 +- .../lint_only_rule_and_group.snap | 8 +- .../lint_skip_group_with_enabled_rule.snap | 31 +- .../main_commands_lint/lint_skip_rule.snap | 21 +- .../with_linter_configuration.snap | 1 - .../src/analyzer/linter/rules.rs | 12 +- .../tests/plugin/useLowercaseColors.grit.snap | 3 +- crates/biome_css_analyze/tests/spec_tests.rs | 4 +- .../a11y/useGenericFontNames/invalid.css.snap | 15 +- .../invalid.css.snap | 53 +-- .../noInvalidGridAreas/invalid.css.snap | 21 +- .../invalid.css.snap | 5 +- .../invalidBetweenImport.css.snap | 9 +- .../invalidMediaImport.css.snap | 3 +- .../invalidMediaImportUpperCase.css.snap | 3 +- .../noUnknownFunction/invalid.css.snap | 7 +- .../invalid.css.snap | 13 +- .../noUnknownProperty/invalid.css.snap | 5 +- .../noUnknownUnit/invalid.css.snap | 53 +-- .../noUnmatchableAnbSelector/invalid.css.snap | 29 +- .../complex_selector.invalid.css.snap | 3 +- .../function_pseudo_selector.invalid.css.snap | 5 +- .../nested.invalid.css.snap | 3 +- .../simple_pseudo_selector.invalid.css.snap | 3 +- .../invalid.css.snap | 17 +- .../noDuplicateProperties/invalid.css.snap | 31 +- .../noIrregularWhitespace/invalid.css.snap | 37 +- .../noMissingVarFunction/invalid.css.snap | 23 +- .../nursery/noUnknownAtRule/invalid.css.snap | 17 +- .../noUnknownPseudoClass/invalid.css.snap | 33 +- .../noUnknownPseudoElement/invalid.css.snap | 15 +- .../noUnknownTypeSelector/invalid.css.snap | 17 +- .../noValueAtRule/invalid.module.css.snap | 19 +- .../noDuplicateAtImportRules/invalid.css.snap | 3 +- .../invalidMedia.css.snap | 3 +- .../invalidMultipleMedia.css.snap | 3 +- .../invalidQuotes.css.snap | 3 +- .../invalidUrls.css.snap | 3 +- .../noDuplicateFontNames/invalid.css.snap | 13 +- .../invalid.css.snap | 15 +- .../suspicious/noEmptyBlock/invalid.css.snap | 37 +- .../noImportantInKeyframe/invalid.css.snap | 3 +- .../invalid.css.snap | 43 +- .../noDuplicateFontNames.css.snap | 12 +- .../noEmptyBlock/noEmptyBlock.css.snap | 36 +- .../biome_graphql_analyze/tests/spec_tests.rs | 4 +- .../noDuplicatedFields/invalid.graphql.snap | 9 +- .../useDeprecatedReason/invalid.graphql.snap | 7 +- .../useNamedOperation/invalid.graphql.snap | 7 +- .../useNamingConvention/invalid.graphql.snap | 2 +- .../noDuplicatedFields.graphql.snap | 6 +- .../useDeprecatedReason.graphql.snap | 6 +- .../src/lint/complexity/no_for_each.rs | 3 +- .../src/lint/complexity/no_this_in_static.rs | 2 +- .../src/lint/complexity/no_useless_catch.rs | 2 +- .../lint/complexity/no_useless_constructor.rs | 2 +- .../complexity/no_useless_empty_export.rs | 2 +- .../lint/complexity/no_useless_fragments.rs | 4 +- .../src/lint/complexity/no_useless_label.rs | 2 +- .../no_useless_lone_block_statements.rs | 2 +- .../lint/complexity/no_useless_switch_case.rs | 2 +- .../src/lint/complexity/no_useless_ternary.rs | 2 +- .../lint/complexity/no_useless_this_alias.rs | 2 +- .../complexity/no_useless_type_constraint.rs | 2 +- .../src/lint/complexity/use_arrow_function.rs | 2 +- .../src/lint/complexity/use_optional_chain.rs | 2 +- .../lint/correctness/no_flat_map_identity.rs | 2 +- .../correctness/no_render_return_value.rs | 3 +- .../src/lint/correctness/no_self_assign.rs | 5 +- .../src/lint/correctness/no_unused_labels.rs | 2 +- .../src/lint/performance/no_delete.rs | 3 +- .../src/lint/suspicious/no_sparse_array.rs | 22 +- .../no_suspicious_semicolon_in_jsx.rs | 4 +- .../src/lint/suspicious/use_valid_typeof.rs | 2 +- .../tests/plugin/preferObjectSpread.grit.snap | 6 +- crates/biome_js_analyze/tests/spec_tests.rs | 4 +- .../specs/a11y/noAccessKey/invalid.jsx.snap | 23 +- .../noAriaHiddenOnFocusable/invalid.jsx.snap | 15 +- .../invalid.jsx.snap | 19 +- .../specs/a11y/noAutofocus/invalid.jsx.snap | 27 +- .../specs/a11y/noBlankTarget/invalid.jsx.snap | 23 +- .../noDistractingElements/invalid.jsx.snap | 7 +- .../specs/a11y/noHeaderScope/invalid.jsx.snap | 13 +- .../invalid.jsx.snap | 123 +++-- .../noLabelWithoutControl/invalid.jsx.snap | 21 +- .../invalidCustomInputComponents.jsx.snap | 3 +- .../invalidCustomLabelAttributes.jsx.snap | 3 +- .../invalidCustomLabelComponents.jsx.snap | 3 +- .../invalidCustomOptions.jsx.snap | 5 +- .../invalid.jsx.snap | 158 +++---- .../noNoninteractiveTabindex/invalid.jsx.snap | 9 +- .../a11y/noPositiveTabindex/invalid.jsx.snap | 21 +- .../reactCreateElementInvalid.js.snap | 6 +- .../a11y/noRedundantAlt/invalid.jsx.snap | 43 +- .../a11y/noRedundantRoles/invalid.jsx.snap | 54 +-- .../a11y/noSvgWithoutTitle/invalid.jsx.snap | 13 +- .../tests/specs/a11y/useAltText/area.jsx.snap | 23 +- .../tests/specs/a11y/useAltText/img.jsx.snap | 32 +- .../specs/a11y/useAltText/input.jsx.snap | 23 +- .../specs/a11y/useAltText/object.jsx.snap | 19 +- .../a11y/useAnchorContent/invalid.jsx.snap | 25 +- .../a11y/useAriaPropsForRole/invalid.jsx.snap | 26 +- .../specs/a11y/useButtonType/inJsx.jsx.snap | 17 +- .../specs/a11y/useButtonType/inObject.js.snap | 10 +- .../useButtonType/withBindingInvalid.js.snap | 8 +- .../withDefaultNamespaceInvalid.js.snap | 6 +- .../withRenamedImportInvalid.js.snap | 8 +- .../a11y/useHeadingContent/invalid.jsx.snap | 28 +- .../specs/a11y/useHtmlLang/invalid.jsx.snap | 23 +- .../a11y/useIframeTitle/invalid.jsx.snap | 21 +- .../useKeyWithClickEvents/invalid.jsx.snap | 5 +- .../useKeyWithMouseEvents/invalid.jsx.snap | 23 +- .../a11y/useMediaCaption/invalid.jsx.snap | 19 +- .../a11y/useSemanticElements/invalid.jsx.snap | 76 +-- .../a11y/useValidAnchor/invalid.jsx.snap | 39 +- .../a11y/useValidAriaProps/invalid.jsx.snap | 13 +- .../a11y/useValidAriaRole/invalid.jsx.snap | 23 +- .../a11y/useValidAriaValues/invalid.jsx.snap | 28 +- .../specs/a11y/useValidLang/invalid.jsx.snap | 9 +- .../complexity/noBannedTypes/invalid.ts.snap | 55 ++- .../noEmptyTypeParameters/invalid.ts.snap | 7 +- .../booleanOperators.js.snap | 2 +- .../booleanOperators2.js.snap | 2 +- .../complexEventHandler.ts.snap | 5 +- .../excessiveNesting.js.snap | 2 +- .../functionalChain.js.snap | 2 +- .../lambdas.js.snap | 8 +- .../nestedControlFlowStructures.js.snap | 2 +- .../simpleBranches.js.snap | 2 +- .../simpleBranches2.js.snap | 2 +- .../sumOfPrimes.js.snap | 2 +- .../invalid.js.snap | 6 +- .../noExtraBooleanCast/invalid.js.snap | 20 +- .../invalid.jsonc.snap | 55 +-- .../noStaticOnlyClass/invalid.ts.snap | 15 +- .../complexity/noUselessCatch/invalid.js.snap | 6 +- .../noUselessConstructor/invalid.js.snap | 4 +- .../noUselessConstructor/invalid.jsonc.snap | 17 +- .../noUselessConstructor/invalid.ts.snap | 5 +- .../noUselessConstructor/valid.jsonc.snap | 5 +- .../invalid_with_default_export.js.snap | 2 +- .../invalid_with_empty_export.js.snap | 2 +- .../invalid_with_export.js.snap | 2 +- .../invalid_with_export_from.js.snap | 2 +- .../invalid_with_import.js.snap | 2 +- .../invalid_with_sideeffect_import.js.snap | 2 +- .../noUselessFragments/assigments.jsx.snap | 5 +- .../componentFragment.jsx.snap | 7 +- .../fromImportInvalid.jsx.snap | 7 +- .../fromImportNamespaceInvalid.jsx.snap | 6 +- .../fromImportRenameInvalid.jsx.snap | 7 +- .../noUselessFragments/issue_1514.jsx.snap | 5 +- .../noUselessFragments/issue_1926.jsx.snap | 7 +- .../noUselessFragments/issue_2460.jsx.snap | 3 +- .../noUselessFragments/issue_3149.jsx.snap | 7 +- .../noUselessFragments/issue_3545.jsx.snap | 4 +- .../noUselessFragments/issue_4553.jsx.snap | 2 +- .../noUselessFragments/issue_459.jsx.snap | 5 +- .../noUselessFragments/issue_4751.jsx.snap | 6 +- .../noUselessFragments/noChildren.jsx.snap | 9 +- .../noUselessFragments/withChildren.jsx.snap | 9 +- .../withCommentsInvalid.jsx.snap | 9 +- .../withJsxElementInvalid.jsx.snap | 5 +- .../withJsxTextInvalid.jsx.snap | 5 +- .../noUselessLabel/invalid.jsonc.snap | 43 +- .../invalid.cjs.snap | 11 +- .../invalidModule.js.snap | 12 +- .../noUselessRename/invalid.js.snap | 22 +- .../noUselessStringConcat/invalid.js.snap | 30 +- .../noUselessSwitchCase/invalid.js.snap | 8 +- .../noUselessTernary/invalid.js.snap | 30 +- .../invalid_without_trivia.js.snap | 22 +- .../noUselessThisAlias/invalid.js.snap | 12 +- .../noUselessTypeConstraint/invalid.ts.snap | 21 +- .../noUselessTypeConstraint/invalid.tsx.snap | 9 +- .../invalid.js.snap | 18 +- .../specs/complexity/noVoid/invalid.js.snap | 8 +- .../specs/complexity/noWith/invalid.cjs.snap | 5 +- .../complexity/useDateNow/invalid.js.snap | 54 +-- .../complexity/useFlatMap/invalid.jsonc.snap | 13 +- .../complexity/useLiteralKeys/invalid.js.snap | 60 +-- .../complexity/useLiteralKeys/invalid.ts.snap | 25 +- .../useRegexLiterals/invalid.jsonc.snap | 319 +++++++------ .../useSimpleNumberKeys/invalid.js.snap | 24 +- .../invalid.jsonc.snap | 11 +- .../noChildrenPropInvalid.jsx.snap | 11 +- .../correctness/noConstAssign/invalid.js.snap | 28 +- .../noConstantCondition/invalid.jsonc.snap | 287 ++++++------ .../noConstantMathMinMaxClamp/invalid.js.snap | 20 +- .../noConstructorReturn/invalid.js.snap | 8 +- .../invalid.js.snap | 30 +- .../invalid.js.snap | 40 +- .../valid.js.snap | 4 +- .../noEmptyPattern/invalid.jsonc.snap | 21 +- .../noFlatMapIdentity/invalid.js.snap | 12 +- .../noGlobalObjectCalls/invalid.js.snap | 180 ++++---- .../noInitializerWithDefinite/invalid.ts.snap | 3 +- .../invalid-module.cjs.snap | 7 +- .../noInnerDeclarations/invalid.jsonc.snap | 57 ++- .../invalid.js.snap | 58 +-- .../noInvalidConstructorSuper/invalid.js.snap | 24 +- .../noInvalidNewBuiltin/invalid.js.snap | 8 +- .../invalid.js.snap | 14 +- .../invalid.ts.snap | 5 +- .../invalidBindingPattern.js.snap | 14 +- .../noNewSymbol/invalid.jsonc.snap | 13 +- .../noNodejsModules/invalid-cjs.cjs.snap | 5 +- .../noNodejsModules/invalid-esm.js.snap | 432 ++++++++--------- .../noNonoctalDecimalEscape/invalid.js.snap | 112 ++--- .../noPrecisionLoss/invalid.js.snap | 70 +-- .../invalidGlobal.tsx.snap | 15 +- .../invalidImport.tsx.snap | 29 +- .../correctness/noSelfAssign/invalid.js.snap | 144 ++++-- .../noSetterReturn/invalid.js.snap | 46 +- .../noStringCaseMismatch/invalid.js.snap | 36 +- .../noSuperWithoutExtends/invalid.js.snap | 2 +- .../noSwitchDeclarations/invalid.jsonc.snap | 17 +- .../noSwitchDeclarations/invalid.ts.snap | 13 +- .../invalid.ts.snap | 17 +- .../noUndeclaredDependencies/invalid.js.snap | 13 +- .../invalid.test.js.snap | 13 +- .../arguments-object.js.snap | 4 +- .../ignore-types.ts.snap | 2 +- .../infer_incorrect.ts.snap | 3 +- .../invalid.svelte.ts.snap | 5 +- .../invalidNamesapceReference.ts.snap | 5 +- .../invalidTsInJs.js.snap | 4 +- .../noUndeclaredVariables.js.snap | 8 +- .../noUndeclaredVariables.ts.snap | 3 +- .../noUnnecessaryContinue/invalid.js.snap | 14 +- .../noUnnecessaryContinue/valid.js.snap | 2 +- .../noUnreachable/HighComplexity.js.snap | 4 +- .../noUnreachable/JsBreakStatement.js.snap | 4 +- .../noUnreachable/JsContinueStatement.js.snap | 4 +- .../noUnreachable/JsDoWhileStatement.js.snap | 4 +- .../noUnreachable/JsForInStatement.js.snap | 4 +- .../noUnreachable/JsForOfStatement.js.snap | 4 +- .../noUnreachable/JsForStatement.js.snap | 4 +- .../noUnreachable/JsIfStatement.js.snap | 2 +- .../noUnreachable/JsLabeledStatement.js.snap | 4 +- .../noUnreachable/JsReturnStatement.js.snap | 4 +- .../noUnreachable/JsSwitchStatement.js.snap | 4 +- .../noUnreachable/JsThrowStatement.js.snap | 2 +- .../JsTryFinallyStatement.js.snap | 10 +- .../noUnreachable/JsTryStatement.js.snap | 6 +- .../noUnreachable/JsVariableStatement.js.snap | 8 +- .../noUnreachable/JsWhileStatement.js.snap | 2 +- .../noUnreachable/MergeRanges.js.snap | 8 +- .../noUnreachable/SuppressionComments.js.snap | 2 +- .../noUnreachable/TerminatorsPlurals.js.snap | 8 +- .../noUnreachableSuper/duplicateSuper.js.snap | 14 +- .../noUnreachableSuper/missingSuper.js.snap | 10 +- .../thisBeforeSuper.js.snap | 10 +- .../noUnsafeFinally/invalid.js.snap | 32 +- .../noUnsafeOptionalChaining/invalid.cjs.snap | 5 +- .../noUnsafeOptionalChaining/invalid.js.snap | 128 ++--- .../invalid.js.snap | 22 +- .../invalid.ts.snap | 3 +- .../invalid-import-namespace.ts.snap | 4 +- .../invalid-unused-react.jsx.snap | 14 +- .../noUnusedImports/invalid.js.snap | 20 +- .../noUnusedImports/invalid.jsx.snap | 26 +- .../noUnusedImports/invalid.ts.snap | 16 +- .../invalid.js.snap | 20 +- .../invalid.ts.snap | 15 +- .../inavlidSelfWrite.js.snap | 8 +- .../noUnusedVariables/invalid.d.ts.snap | 3 +- .../noUnusedVariables/invalidClass.ts.snap | 7 +- .../noUnusedVariables/invalidEnum.ts.snap | 5 +- .../noUnusedVariables/invalidFixNone.js.snap | 2 +- .../noUnusedVariables/invalidFunction.ts.snap | 25 +- .../invalidInterface.ts.snap | 5 +- .../invalidMethodParameters.ts.snap | 9 +- .../invalidRecursiveFunctions.js.snap | 6 +- .../noUnusedVariables/invalidType.ts.snap | 5 +- .../invalidTypeParam.ts.snap | 13 +- .../invalidTypeValueSameNames.ts.snap | 5 +- .../invalidUsedBindingPattern.js.snap | 2 +- .../invalidVariables.ts.snap | 29 +- .../noUnusedVariables/invalidtypeof.ts.snap | 5 +- .../noUnusedVariables/issue4114.js.snap | 2 +- .../unusedInferBogusConditional.ts.snap | 3 +- .../createElement.js.snap | 4 +- .../noVoidElementsWithChildren/inJsx.jsx.snap | 15 +- .../noVoidTypeReturn/invalid.ts.snap | 13 +- .../useArrayLiterals/invalid.js.snap | 26 +- .../checkHooksImportedFromReact.js.snap | 2 +- .../customHook.js.snap | 4 +- .../duplicateDependencies.js.snap | 4 +- .../extraDependenciesInvalid.js.snap | 12 +- .../ignoredDependencies.js.snap | 2 +- .../issue1931.js.snap | 4 +- .../issue4567.js.snap | 3 +- .../issue4568.js.snap | 2 +- .../missingDependenciesInvalid.js.snap | 54 +-- .../preactHooks.js.snap | 2 +- .../reportMissingDependenciesArray.js.snap | 2 +- .../stableResultInvalid.js.snap | 2 +- .../unstableDependency.jsx.snap | 7 +- .../useHookAtTopLevel/customHook.js.snap | 4 +- .../useHookAtTopLevel/invalid.js.snap | 58 +-- .../useHookAtTopLevel/invalid.jsx.snap | 5 +- .../useHookAtTopLevel/invalid.ts.snap | 5 +- .../useImportExtensions/invalid.js.snap | 50 +- .../invalidWithImportMappings.ts.snap | 5 +- .../correctness/useIsNan/invalid.js.snap | 126 ++--- .../useJsxKeyInIterable/invalid.jsx.snap | 79 ++-- .../useValidForDirection/invalid.jsonc.snap | 27 +- .../correctness/useYield/invalid.js.snap | 18 +- .../specs/nursery/noCommonJs/invalid.js.snap | 8 +- .../invalid.js.snap | 437 +++++++++--------- .../invalid.jsx.snap | 13 +- .../nursery/noDocumentCookie/invalid.js.snap | 16 +- .../pages/invalid.jsx.snap | 4 +- .../nursery/noDuplicateElseIf/invalid.js.snap | 18 +- .../invalid.js.snap | 6 +- .../specs/nursery/noEnum/invalid.ts.snap | 3 +- .../nursery/noExportedImports/invalid.js.snap | 6 +- .../noFloatingPromises/invalid.js.snap | 5 +- .../noFloatingPromises/invalid.ts.snap | 99 ++-- .../noGlobalDirnameFilename/invalid.js.snap | 16 +- .../noHeadElement/pages/invalid.jsx.snap | 3 +- .../pages/_document.jsx.snap | 4 +- .../pages/_document/index.jsx.snap | 4 +- .../nursery/noImgElement/invalid.jsx.snap | 6 +- .../noIrregularWhitespace/invalid.js.snap | 120 ++--- .../nursery/noNestedTernary/invalid.js.snap | 4 +- .../invalid.jsx.snap | 174 +++---- .../nursery/noOctalEscape/invalid.js.snap | 122 ++--- .../noPackagePrivateImports/invalid.js.snap | 8 +- .../nursery/noProcessEnv/invalid.js.snap | 6 +- .../nursery/noProcessGlobal/invalid.js.snap | 10 +- .../invalid_with_import.js.snap | 2 +- .../noRestrictedImports/invalid.js.snap | 300 ++++++------ .../noRestrictedImports/invalid.ts.snap | 78 ++-- .../noRestrictedTypes/invalidCustom.ts.snap | 17 +- .../specs/nursery/noSecrets/invalid.js.snap | 34 +- .../invalid.jsx.snap | 126 ++--- .../specs/nursery/noSubstr/invalid.js.snap | 38 +- .../noTemplateCurlyInString/invalid.js.snap | 14 +- .../noUselessEscapeInRegex/invalid.js.snap | 96 ++-- .../noUselessStringRaw/invalid.js.snap | 6 +- .../nursery/noUselessStringRaw/valid.js.snap | 2 +- .../noUselessUndefined/invalid.json.snap | 37 +- .../invalid.ts.snap | 23 +- .../invalid.jsx.snap | 38 +- .../nursery/useAtIndex/invalid.jsonc.snap | 128 ++--- .../nursery/useCollapsedIf/invalid.js.snap | 54 +-- .../invalid_component_and_constant.jsx.snap | 3 +- ...valid_component_and_default_class.jsx.snap | 3 +- ...id_component_and_default_function.jsx.snap | 3 +- ...id_component_and_default_variable.jsx.snap | 3 +- .../invalid_component_and_enum.tsx.snap | 3 +- ...export_non_in_ignore_export_names.jsx.snap | 4 +- .../invalid_component_and_function.jsx.snap | 3 +- ...ction_with_ignore_constant_export.jsx.snap | 4 +- ...lid_component_and_variable_clause.jsx.snap | 5 +- .../invalid_hooked_component.jsx.snap | 3 +- .../invalid_hooked_non_component.jsx.snap | 3 +- .../invalid_unexported_component.jsx.snap | 3 +- .../useConsistentCurlyBraces/invalid.jsx.snap | 14 +- .../invalidExplicit.ts.snap | 23 +- .../invalidNoPublic.ts.snap | 49 +- .../invalidNone.ts.snap | 35 +- .../nursery/useExplicitType/invalid.ts.snap | 58 +-- .../nursery/useExportsLast/invalid.js.snap | 2 +- .../invalid_multiline_export.js.snap | 2 +- .../invalid_multiple_separate_exports.js.snap | 2 +- .../invalid_named_export.js.snap | 2 +- .../useExportsLast/invalid_re-export.js.snap | 2 +- .../useGoogleFontDisplay/invalid.jsx.snap | 26 +- .../useGoogleFontPreconnect/invalid.jsx.snap | 10 +- .../nursery/useGuardForIn/invalid.js.snap | 12 +- .../nursery/useParseIntRadix/invalid.js.snap | 22 +- .../codeOptionsUnsorted.jsx.snap | 56 +-- .../useSortedClasses/issue_3394.jsx.snap | 3 +- .../useSortedClasses/issue_4855.jsx.snap | 4 +- .../nursery/useSortedClasses/sorted.jsx.snap | 3 +- .../templateLiteralSpace.jsx.snap | 14 +- .../useSortedClasses/unsorted.jsx.snap | 61 +-- .../invalid-with-comments.cjs.snap | 3 +- .../invalid-with-directive.cjs.snap | 3 +- .../invalid-with-shebang-comments.cjs.snap | 3 +- .../invalid-with-shebang.cjs.snap | 3 +- .../nursery/useStrictMode/invalid.js.snap | 3 +- .../nursery/useTrimStartEnd/invalid.js.snap | 18 +- .../useValidAutocomplete/invalid.jsx.snap | 13 +- .../noAccumulatingSpread/invalid.jsonc.snap | 35 +- .../performance/noBarrelFile/invalid.ts.snap | 3 +- ...valid_default_named_alias_reexport.ts.snap | 3 +- .../invalid_named_alias_reexport.ts.snap | 3 +- .../invalid_named_reexprt.ts.snap | 3 +- .../invalid_wild_alias_reexport.ts.snap | 3 +- .../invalid_wild_reexport.ts.snap | 3 +- .../performance/noReExportAll/invalid.js.snap | 4 +- .../useTopLevelRegex/invalid.js.snap | 20 +- .../createElementBindingInvalid.js.snap | 4 +- .../insideJsx.jsx.snap | 5 +- .../reactCreateElement.js.snap | 2 +- .../createElement.js.snap | 6 +- .../inJsx.jsx.snap | 13 +- .../security/noGlobalEval/invalid.js.snap | 32 +- .../style/noDefaultExport/invalid.json.snap | 23 +- .../style/noDoneCallback/invalid.js.snap | 52 +-- .../style/noImplicitBoolean/invalid.jsx.snap | 9 +- .../specs/style/noNamespace/invalid.ts.snap | 11 +- .../style/noNamespaceImport/invalid.js.snap | 2 +- .../style/noNegationElse/invalid.js.snap | 14 +- .../noParameterProperties/invalid.ts.snap | 17 +- .../additionalGlobal.js.snap | 2 +- .../noRestrictedGlobals/invalid.jsonc.snap | 7 +- .../style/noShoutyConstants/invalid.js.snap | 8 +- .../style/noYodaExpression/invalid.js.snap | 62 +-- .../noYodaExpression/invalidRange.js.snap | 20 +- .../style/useBlockStatements/invalid.js.snap | 42 +- .../style/useCollapsedElseIf/invalid.js.snap | 20 +- .../useConsistentArrayType/invalid.ts.snap | 33 +- .../invalidShorthand.ts.snap | 31 +- .../invalid.js.snap | 30 +- .../useDefaultSwitchClause/invalid.js.snap | 4 +- .../useExplicitLengthCheck/invalid.js.snap | 82 ++-- .../useFilenamingConvention/+in+valid.js.snap | 2 +- .../useFilenamingConvention/INVALID.js.snap | 2 +- .../InvalidPascalCase.js.snap | 2 +- .../Invalid_Renamed_Export.js.snap | 2 +- .../_UNDERSCOREINVALID.js.snap | 2 +- .../filename.INVALID-extension.js.snap | 2 +- .../filename.INVALID.js.snap | 2 +- .../invalid-kebab-case.js.snap | 2 +- .../invalid-non-ascii-caf\303\251.js.snap" | 2 +- .../invalidCamelCase.js.snap | 2 +- .../invalidMatch.js.snap | 2 +- .../invalidMatchExtension.INVALID.js.snap | 2 +- .../invalidSTrictCase.js.snap | 2 +- .../invalid_snake_case.js.snap | 2 +- .../specs/style/useForOf/invalid.js.snap | 38 +- .../style/useFragmentSyntax/invalid.jsx.snap | 9 +- .../invalidCatchParameter.js.snap | 8 +- .../useNamingConvention/invalidClass.js.snap | 10 +- .../invalidClassGetter.js.snap | 20 +- .../invalidClassMethod.js.snap | 20 +- .../invalidClassProperty.js.snap | 30 +- .../invalidClassSetter.js.snap | 20 +- .../invalidClassStaticGetter.js.snap | 12 +- .../invalidClassStaticMethod.js.snap | 18 +- .../invalidClassStaticSetter.js.snap | 20 +- .../invalidComponent.jsx.snap | 3 +- .../invalidCustomStyle.ts.snap | 5 +- .../invalidCustomStyleExceptions.ts.snap | 3 +- ...nvalidCustomStyleUnderscorePrivate.ts.snap | 3 +- .../useNamingConvention/invalidEnum.ts.snap | 7 +- .../invalidEnumMember.ts.snap | 9 +- .../invalidExportAlias.js.snap | 8 +- .../invalidExportNamespace.js.snap | 6 +- .../invalidFunction.js.snap | 9 +- .../invalidFunctionParameter.js.snap | 5 +- .../invalidGlobal.d.ts.snap | 3 +- .../invalidImportAlias.js.snap | 17 +- .../invalidImportNamespace.js.snap | 7 +- .../invalidIndexParameter.ts.snap | 13 +- .../invalidInterface.ts.snap | 21 +- .../invalidLocalVariable.js.snap | 11 +- .../invalidNamespace.ts.snap | 17 +- .../invalidNonAscii.js.snap | 2 +- .../invalidObjectGetter.js.snap | 6 +- .../invalidObjectMethod.js.snap | 8 +- .../invalidObjectProperty.js.snap | 10 +- .../invalidObjectSetter.js.snap | 10 +- .../invalidParameterProperty.ts.snap | 7 +- .../invalidStrictPascalCase.ts.snap | 5 +- .../invalidSyllabary.js.snap | 6 +- .../invalidTopLevelVariable.ts.snap | 17 +- .../invalidTypeAlias.ts.snap | 17 +- .../invalidTypeGetter.ts.snap | 7 +- .../invalidTypeMethod.ts.snap | 9 +- .../invalidTypeParameter.ts.snap | 15 +- .../invalidTypeProperty.ts.snap | 13 +- .../invalidTypeReadonlyProperty.ts.snap | 11 +- .../invalidTypeSetter.ts.snap | 11 +- .../style/useNodeAssertStrict/invalid.js.snap | 6 +- .../useShorthandArrayType/invalid.ts.snap | 33 +- .../style/useShorthandAssign/invalid.js.snap | 46 +- .../useSingleCaseStatement/invalid.js.snap | 14 +- .../style/useThrowNewError/invalid.js.snap | 48 +- .../style/useThrowOnlyError/invalid.js.snap | 40 +- .../invalid.js.snap | 84 ++-- .../noArrayIndexKey/invalid.jsx.snap | 61 ++- .../noAssignInExpressions/invalid.js.snap | 58 +-- .../noAsyncPromiseExecutor/invalid.jsonc.snap | 9 +- .../suspicious/noCatchAssign/invalid.js.snap | 6 +- .../suspicious/noClassAssign/invalid.js.snap | 16 +- .../suspicious/noCommentText/invalid.tsx.snap | 21 +- .../noCompareNegZero/invalid.jsonc.snap | 33 +- .../noCompareNegZero/invalidComments.js.snap | 6 +- .../noConfusingLabels/invalid.jsonc.snap | 23 +- .../noConfusingVoidType/invalid.ts.snap | 55 +-- .../suspicious/noConsole/allowlist.js.snap | 4 +- .../suspicious/noConsole/invalid.js.snap | 16 +- .../suspicious/noConsole/issue_5053.js.snap | 4 +- .../suspicious/noConstEnum/invalid.ts.snap | 5 +- .../invalid.js.snap | 74 +-- .../suspicious/noDebugger/invalid.js.snap | 6 +- .../suspicious/noDoubleEquals/invalid.js.snap | 10 +- .../noDoubleEquals/invalid.jsonc.snap | 5 +- .../noDoubleEquals/invalid.jsx.snap | 3 +- .../noDoubleEquals/invalidNoNull.js.snap | 26 +- .../noDoubleEquals/invalidNoNull.jsonc.snap | 6 +- .../noDoubleEquals/invalidNoNull.jsx.snap | 4 +- .../noDuplicateCase/invalid.js.snap | 38 +- .../noDuplicateClassMembers/invalid.js.snap | 36 +- .../noDuplicateJsxProps/invalid.jsx.snap | 13 +- .../noDuplicateObjectKeys/invalid.jsonc.snap | 31 +- .../noDuplicateParameters/invalid.ts.snap | 35 +- .../noDuplicateTestHooks/invalid.js.snap | 30 +- .../noEmptyBlockStatements/invalid.js.snap | 36 +- .../noEmptyBlockStatements/invalid.ts.snap | 39 +- .../noEmptyInterface/invalid.ts.snap | 5 +- .../noEvolvingTypes/invalid.ts.snap | 19 +- .../noExplicitAny/invalidClass.ts.snap | 33 +- .../noExplicitAny/invalidFunction.ts.snap | 33 +- .../invalidTypeAndInterface.ts.snap | 55 ++- .../noExplicitAny/invalidVariable.ts.snap | 23 +- .../noExportsInTest/invalid.cjs.snap | 7 +- .../noExportsInTest/invalid.js.snap | 4 +- .../noExtraNonNullAssertion/invalid.ts.snap | 35 +- .../noFallthroughSwitchClause/invalid.js.snap | 44 +- .../suspicious/noFocusedTests/invalid.js.snap | 40 +- .../noFunctionAssign/invalid.jsonc.snap | 17 +- .../suspicious/noGlobalAssign/invalid.js.snap | 18 +- .../noGlobalIsFinite/invalid.js.snap | 18 +- .../suspicious/noGlobalIsNan/invalid.js.snap | 18 +- .../noImplicitAnyLet/invalid.ts.snap | 15 +- .../suspicious/noImportAssign/invalid.js.snap | 26 +- .../suspicious/noLabelVar/invalid.js.snap | 4 +- .../invalid.js.snap | 148 +++--- .../noMisleadingInstantiator/invalid.ts.snap | 23 +- .../noMisplacedAssertion/invalid.js.snap | 6 +- .../invalidImportedBun.js.snap | 2 +- .../invalidImportedChai.js.snap | 2 +- .../invalidImportedDeno.js.snap | 2 +- .../invalidImportedNode.js.snap | 2 +- .../invalid.js.snap | 34 +- .../noPrototypeBuiltins/invalid.js.snap | 88 ++-- .../noReactSpecificProps/invalid.jsx.snap | 7 +- .../invalid-declaration-merging.ts.snap | 9 +- .../invalid-non-strict-mode.cjs.snap | 5 +- .../suspicious/noRedeclare/invalid.jsonc.snap | 51 +- .../suspicious/noRedeclare/invalid.ts.snap | 11 +- .../noRedundantUseStrict/invalid.cjs.snap | 9 +- .../noRedundantUseStrict/invalid.js.snap | 8 +- .../noRedundantUseStrict/invalid.ts.snap | 3 +- .../invalidClass.cjs.snap | 5 +- .../invalidFunction.cjs.snap | 3 +- .../invalidFunction.js.snap | 4 +- .../noSelfCompare/invalid.jsonc.snap | 35 +- .../invalid.jsonc.snap | 17 +- .../suspicious/noSkippedTests/invalid.js.snap | 12 +- .../noSparseArray/invalid.jsonc.snap | 23 +- .../suspicious/noThenProperty/invalid.js.snap | 132 +++--- .../invalid.ts.snap | 11 +- .../noUnsafeNegation/invalid.jsonc.snap | 7 +- .../specs/suspicious/useAwait/invalid.js.snap | 26 +- .../invalid.js.snap | 8 +- .../useErrorMessage/invalid.js.snap | 56 +-- .../useGetterReturn/invalid.js.snap | 30 +- .../suspicious/useIsArray/invalid.js.snap | 6 +- .../useNamespaceKeyword/invalid.ts.snap | 11 +- .../invalid.js.snap | 8 +- .../suspicious/useValidTypeof/invalid.js.snap | 32 +- .../suspicious/useValidTypeof/valid.js.snap | 2 +- .../useKeyWithClickEvents/invalid.jsx.snap | 2 +- .../noUndeclaredVariables.ts.snap | 4 +- .../noUnusedVariables/simple.js.snap | 2 +- .../noArrayIndexKey/noArrayIndexKey.jsx.snap | 52 +-- .../noAssignInExpressions.ts.snap | 2 +- .../noDoubleEquals/noDoubleEquals.js.snap | 10 +- .../noDoubleEquals/noDoubleEquals.jsx.snap | 2 +- .../noExplicitAny/noExplicitAny.ts.snap | 4 +- crates/biome_json_analyze/tests/spec_tests.rs | 4 +- .../noDuplicateObjectKeys/invalid.json.snap | 5 +- justfile | 11 +- .../@biomejs/backend-jsonrpc/src/workspace.ts | 4 +- .../@biomejs/biome/configuration_schema.json | 4 +- 589 files changed, 6115 insertions(+), 6008 deletions(-) create mode 100644 .changeset/spotty-buckets-hang.md diff --git a/.changeset/spotty-buckets-hang.md b/.changeset/spotty-buckets-hang.md new file mode 100644 index 000000000000..49aa1fd5b43b --- /dev/null +++ b/.changeset/spotty-buckets-hang.md @@ -0,0 +1,33 @@ +--- +"@biomejs/biome": major +--- + +Reworked some recommended rules recommended to be less pedantic and blocking. This is a **breaking change** if your project relied on those rules to block the CI in case of violations; if that's the case, you should raise their severity level to **error**. + +Some rules aren't recommended anymore, and some others return a different severity. + +The following rules return a **warning** diagnostic: +- `noDelete` +- `noForEach` +- `noSuspiciousSemicolonInJsx` +- `noThisInStatic` +- `noUnusedLabels` + +The following rules return an **information** diagnostic: +- `noUselessCatch` +- `noUselessConstructor` +- `noUselessEmptyExport` +- `noUselessFragments` +- `noUselessLabel` +- `noUselessLoneBlockStatements` +- `noUselessSwitchCase` +- `noUselessTernary` +- `noUselessThisAlias` +- `noUselessTypeConstraint` +- `noFlatMapIdentity` + +The following rules aren't recommended anymore: +- `noDelete` +- `noForEach` + +The rule `noRenderReturnValue` is only recommended when the `react` domain is enabled. diff --git a/crates/biome_analyze/src/rule.rs b/crates/biome_analyze/src/rule.rs index acc1a8f0f282..c7b9f267b85e 100644 --- a/crates/biome_analyze/src/rule.rs +++ b/crates/biome_analyze/src/rule.rs @@ -414,7 +414,7 @@ impl RuleSource { pub fn to_rule_url(&self) -> String { match self { - Self::Clippy(rule_name) => format!("https://rust-lang.github.io/rust-clippy/master/#/{rule_name}"), + Self::Clippy(rule_name) => format!("https://rust-lang.github.io/rust-clippy/master/#{rule_name}"), Self::Eslint(rule_name) => format!("https://eslint.org/docs/latest/rules/{rule_name}"), Self::EslintGraphql(rule_name) => format!("https://the-guild.dev/graphql/eslint/rules/{rule_name}"), Self::EslintGraphqlSchemaLinter(rule_name) => format!("https://github.com/cjoudrey/graphql-schema-linter?tab=readme-ov-file#{rule_name}"), diff --git a/crates/biome_cli/tests/snapshots/main_cases_handle_vue_files/check_stdin_write_unsafe_successfully.snap b/crates/biome_cli/tests/snapshots/main_cases_handle_vue_files/check_stdin_write_unsafe_successfully.snap index d15b62375da3..91822fc61114 100644 --- a/crates/biome_cli/tests/snapshots/main_cases_handle_vue_files/check_stdin_write_unsafe_successfully.snap +++ b/crates/biome_cli/tests/snapshots/main_cases_handle_vue_files/check_stdin_write_unsafe_successfully.snap @@ -1,6 +1,7 @@ --- source: crates/biome_cli/tests/snap_test.rs -expression: content +expression: redactor(content) +snapshot_kind: text --- # Input messages @@ -21,7 +22,7 @@ delete a.c; import * as vueUse from "vue-use"; import { Button } from "./components/Button.vue"; -a.c = undefined; +delete a.c; ``` diff --git a/crates/biome_cli/tests/snapshots/main_cases_handle_vue_files/lint_stdin_write_unsafe_successfully.snap b/crates/biome_cli/tests/snapshots/main_cases_handle_vue_files/lint_stdin_write_unsafe_successfully.snap index c96e463df16a..e0c8b332bc38 100644 --- a/crates/biome_cli/tests/snapshots/main_cases_handle_vue_files/lint_stdin_write_unsafe_successfully.snap +++ b/crates/biome_cli/tests/snapshots/main_cases_handle_vue_files/lint_stdin_write_unsafe_successfully.snap @@ -1,6 +1,6 @@ --- source: crates/biome_cli/tests/snap_test.rs -expression: content +expression: redactor(content) snapshot_kind: text --- # Input messages @@ -20,7 +20,7 @@ var foo: string = ""; ```block diff --git a/crates/biome_cli/tests/snapshots/main_cases_handle_vue_files/lint_vue_js_files.snap b/crates/biome_cli/tests/snapshots/main_cases_handle_vue_files/lint_vue_js_files.snap index bef9edfe5b10..4f0135b53d0d 100644 --- a/crates/biome_cli/tests/snapshots/main_cases_handle_vue_files/lint_vue_js_files.snap +++ b/crates/biome_cli/tests/snapshots/main_cases_handle_vue_files/lint_vue_js_files.snap @@ -1,6 +1,6 @@ --- source: crates/biome_cli/tests/snap_test.rs -expression: content +expression: redactor(content) snapshot_kind: text --- ## `file.vue` @@ -55,30 +55,7 @@ file.vue:2:3 lint/suspicious/noDoubleEquals FIXABLE ━━━━━━━━ ``` -```block -file.vue:3:1 lint/performance/noDelete FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - - × Avoid the delete operator which can impact performance. - - 1 │ @@ -146,7 +147,7 @@ invalid.jsx:7:2 lint/a11y/noAriaUnsupportedElements FIXABLE ━━━━━━ ``` invalid.jsx:8:2 lint/a11y/noAriaUnsupportedElements FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Avoid the role attribute and aria-* attributes when using meta, html, script, and style elements. + × Avoid the role attribute and aria-* attributes when using meta, html, script, and style elements. 6 │ 7 │ @@ -167,7 +168,7 @@ invalid.jsx:8:2 lint/a11y/noAriaUnsupportedElements FIXABLE ━━━━━━ ``` invalid.jsx:9:2 lint/a11y/noAriaUnsupportedElements FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Avoid the role attribute and aria-* attributes when using meta, html, script, and style elements. + × Avoid the role attribute and aria-* attributes when using meta, html, script, and style elements. 7 │ 8 │ @@ -184,5 +185,3 @@ invalid.jsx:9:2 lint/a11y/noAriaUnsupportedElements FIXABLE ━━━━━━ │ ------------ ``` - - diff --git a/crates/biome_js_analyze/tests/specs/a11y/noAutofocus/invalid.jsx.snap b/crates/biome_js_analyze/tests/specs/a11y/noAutofocus/invalid.jsx.snap index ee01682a964a..dada8634ac6f 100644 --- a/crates/biome_js_analyze/tests/specs/a11y/noAutofocus/invalid.jsx.snap +++ b/crates/biome_js_analyze/tests/specs/a11y/noAutofocus/invalid.jsx.snap @@ -1,6 +1,7 @@ --- source: crates/biome_js_analyze/tests/spec_tests.rs expression: invalid.jsx +snapshot_kind: text --- # Input ```jsx @@ -25,7 +26,7 @@ expression: invalid.jsx ``` invalid.jsx:2:13 lint/a11y/noAutofocus FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - ! Avoid the autoFocus attribute. + × Avoid the autoFocus attribute. 1 │ <> > 2 │