Analyzer
Enhancements
-
Import sorting is safe to apply now, and it will be applied when running
check --applyinstead ofcheck --apply-unsafe. -
Import sorting now handles Bun imports
bun:<name>, absolute path imports/<path>, and Node's subpath imports#<name>. See our documentation for more details. Contributed by @Conaclos
CLI
Bug fixes
- Fix #319. The command
biome lintnow shows the correct options. Contributed by @ematipico - Fix #312. Running
biome --versionnow exits with status code0instead of1. Contributed by @nhedger - Fix a bug where the
extendsfunctionality doesn't carry overorganizeImports.ignore. Contributed by @ematipico - The CLI now returns the original content when using
stdinand the original content doesn't change. Contributed by @ematipico
New features
-
Add support for
BIOME_BINARYenvironment variable to override the location of the binary. Contributed by @ematipico -
Add option
--indent-width, and deprecated the option--indent-size. Contributed by @ematipico -
Add option
--javascript-formatter-indent-width, and deprecated the option--javascript-formatter-indent-size. Contributed by @ematipico -
Add option
--json-formatter-indent-width, and deprecated the option--json-formatter-indent-size. Contributed by @ematipico -
Add option
--daemon-logstobiome rage. The option is required to view Biome daemon server logs. Contributed by @unvalley -
Add support for logging. By default, Biome doesn't log anything other than diagnostics. Logging can be enabled with the new option
--log-level:biome format --log-level=info ./src
There are four different levels of logging, from the most verbose to the least verbose:
debug,info,warnanderror. Here's how anINFOlog will look like:2023-10-05T08:27:01.954727Z INFO Analyze file ./website/src/playground/components/Resizable.tsx at crates/biome_service/src/file_handlers/javascript.rs:298 on biome::worker_5 in Pulling diagnostics with categories: RuleCategories(SYNTAX) in Processes formatting with path: "./website/src/playground/components/Resizable.tsx" in Process check with path: "./website/src/playground/components/Resizable.tsx"You can customize how the log will look like with a new option
--log-kind. The supported kinds are:pretty,compactandjson.prettyis the default logging. Here's how acompactlog will look like:2023-10-05T08:29:04.864247Z INFO biome::worker_2 Process check:Processes linting:Pulling diagnostics: crates/biome_service/src/file_handlers/javascript.rs: Analyze file ./website/src/playground/components/Resizable.tsx path="./website/src/playground/components/Resizable.tsx" path="./website/src/playground/components/Resizable.tsx" categories=RuleCategories(LINT) 2023-10-05T08:29:04.864290Z INFO biome::worker_7 Process check:Processes formatting: crates/biome_service/src/file_handlers/javascript.rs: Format file ./website/src/playground/components/Tabs.tsx path="./website/src/playground/components/Tabs.tsx" path="./website/src/playground/components/Tabs.tsx" 2023-10-05T08:29:04.879332Z INFO biome::worker_2 Process check:Processes formatting:Pulling diagnostics: crates/biome_service/src/file_handlers/javascript.rs: Analyze file ./website/src/playground/components/Resizable.tsx path="./website/src/playground/components/Resizable.tsx" path="./website/src/playground/components/Resizable.tsx" categories=RuleCategories(SYNTAX) 2023-10-05T08:29:04.879383Z INFO biome::worker_2 Process check:Processes formatting: crates/biome_service/src/file_handlers/javascript.rs: Format file ./website/src/playground/components/Resizable.tsx path="./website/src/playground/components/Resizable.tsx" path="./website/src/playground/components/Resizable.tsx"
Enhancements
- Deprecated the environment variable
ROME_BINARY. UseBIOME_BINARYinstead. Contributed by @ematipico - Biome doesn't check anymore the presence of the
.gitfolder when VCS support is enabled. Contributed by @ematipico biome ragedoesn't print the logs of the daemon, usebiome rage --daemon-logsto print them. Contributed by @unvalley
Configuration
New features
-
Add option
formatter.indentWidth, and deprecated the optionformatter.indentSize. Contributed by @ematipico -
Add option
javascript.formatter.indentWidth, and deprecated the optionjavascript.formatter.indentSize. Contributed by @ematipico -
Add option
json.formatter.indentWidth, and deprecated the optionjson.formatter.indentSize. Contributed by @ematipico -
Add option
includeto multiple sections of the configurationfiles.include;formatter.include;linter.include;organizeImports.include;
Whenincludeandignoreare both specified,ignoretakes precedence overinclude
-
Add option
overrides, where users can modify the behaviour of the tools for certain files or paths.For example, it's possible to modify the formatter
lineWidth, and evenquoteStylefor certain files that are included in glob pathgenerated/**:{ "formatter": { "lineWidth": 100 }, "overrides": [ { "include": ["generated/**"], "formatter": { "lineWidth": 160 }, "javascript": { "formatter": { "quoteStyle": "single" } } } ] }Or, you can disable certain rules for certain path, and disable the linter for other paths:
{ "linter": { "enabled": true, "rules": { "recommended": true } }, "overrides": [ { "include": ["lib/**"], "linter": { "rules": { "suspicious": { "noDebugger": "off" } } } }, { "include": ["shims/**"], "linter": { "enabled": false } } ] }
Bug fixes
- Fix #343,
extendswas incorrectly applied to thebiome.jsonfile. Contributed by @ematipico
Editors
Bug fixes
-
Fix #404. Biome intellij plugin now works on Windows. Contributed by @victor-teles
-
Fix #402. Biome
formaton intellij plugin now recognize biome.json. Contributed by @victor-teles
Formatter
Enhancements
- Use
OnceCellfor the Memoized memory because that's what theRefCell<Option>implemented. Contributed by @denbezrukov
Linter
Promoted rules
- complexity/noExcessiveCognitiveComplexity
- complexity/noVoid
- correctness/useExhaustiveDependencies
- correctness/useHookAtTopLevel
- performance/noAccumulatingSpread
- style/useCollapsedElseIf
- suspicious/noConfusingVoidType
- suspicious/noFallthroughSwitchClause
- suspicious/noGlobalIsFinite
- suspicious/noGlobalIsNan
- suspicious/useIsArray
The following rules are now recommended:
Bug fixes
- Fix #243 a false positive case where the incorrect scope was defined for the
infertype. in rule noUndeclaredVariables. Contributed by @denbezrukov - Fix #322, now noSelfAssign correctly handles literals inside call expressions.
- Changed how noSelfAssign behaves. The rule is not triggered anymore on function calls. Contributed by @ematipico
New features
-
Add noEmptyCharacterClassInRegex rule. The rule reports empty character classes and empty negated character classes in regular expression literals. Contributed by @Conaclos
-
Add noMisleadingInstantiator rule. The rule reports the misleading use of the
newandconstructormethods. Contributed by @unvalley -
Add noUselessElse rule.
The rule reportselseclauses that can be omitted because theirifbranches break.
Contributed by @Conaclos -
Add noUnusedImports rule.
The rule reports unused imports and suggests to remove them.
Contributed by @ConaclosnoUnusedVariables reports also unused imports, but don't suggest their removal.
Once noUnusedImports stabilized,
noUnusedVariables will not report unused imports. -
Add useShorthandAssign rule.
The rule enforce use of shorthand operators that combine variable assignment and some simple mathematical operations. For example, x = x + 4 can be shortened to x += 4.
Contributed by @victor-teles -
Add useAsConstAssertion rule.
The rule enforce use ofas constassertion to infer literal types.
Contributed by @unvalley -
Add noMisrefactoredShorthandAssign rule.
The rule reports shorthand assigns when variable appears on both sides. For examplex += x + b
Contributed by @victor-teles -
Add noApproximativeNumericConstant rule. Contributed by @nikeee
-
Add noInteractiveElementToNoninteractiveRole rule. The rule enforces the non-interactive ARIA roles are not assigned to interactive HTML elements. Contributed by @nissy-dev
-
Add useAriaActivedescendantWithTabindex rule. The rule enforces that
tabIndexis assigned to non-interactive HTML elements witharia-activedescendant. Contributed by @nissy-dev -
Add noUselessLoneBlockStatements rule.
The rule reports standalone blocks that don't include any lexical scoped declaration.
Contributed by @emab -
Add noInvalidNewBuiltin rule.
The rule reports use ofnewonSymbolandBigInt. Contributed by @lucasweng
Enhancements
-
The following rules have now safe code fixes:
-
noAccumulatingSpread makes more check in order to reduce potential false positives. Contributed by @Vivalldi
-
noConstAssign now provides an unsafe code fix that replaces
constwithlet. Contributed by @vasucp1207 -
noExcessiveComplexity default complexity threshold is now
15. Contributed by @arendjr -
noPositiveTabindexValue now provides an unsafe code fix that set to
0the tab index. Contributed by @vasucp1207 -
noUnusedLabels no longer reports unbreakable labeled statements. Contributed by @Conaclos
-
noUnusedVariables now reports unused TypeScript's type parameters. Contributed by @Conaclos
-
useAnchorContent now provides an unsafe code fix that removes the `aria-hidden`` attribute. Contributed by @vasucp1207
-
useValidAriaProps now provides an unsafe code fix that removes invalid properties. Contributed by @vasucp1207
-
noExcessiveComplexitywas renamed tonoExcessiveCognitiveComplexity
Bug fixes
-
Fix #294. noConfusingVoidType no longer reports false positives for return types. Contributed by @b4s36t4
-
Fix #313. noRedundantUseStrict now keeps leading comments.
-
Fix #383. noMultipleSpacesInRegularExpressionLiterals now provides correct code fixes when consecutive spaces are followed by a quantifier. Contributed by @Conaclos
-
Fix #397. useNumericLiterals now provides correct code fixes for signed numbers. Contributed by @Conaclos
-
Fix 452. The linter panicked when it met a malformed regex (a regex not ending with a slash).
-
Fix #104. We now correctly handle types and values with the same name.
Parser
-
Enhance diagnostic for infer type handling in the parser. The 'infer' keyword can only be utilized within the 'extends' clause of a conditional type. Using it outside of this context will result in an error. Ensure that any type declarations using 'infer' are correctly placed within the conditional type structure to avoid parsing issues. Contributed by @denbezrukov
-
Add support for parsing trailing commas inside JSON files:
{ "json": { "parser": { "allowTrailingCommas": true } } }Contributed by @nissy-dev
What's Changed
Other changes
- docs(CONTRIBUTING): add
SuperchupuDevto maintainers by @SuperchupuDev in #524 - docs: use
biomejs.devjson schema by @SuperchupuDev in #525 - refactor(lint/noUselessLoneBlockStatements): add fix kind metadata by @Conaclos in #531
- feat(lint/noEmptyBlockStatements): add rule by @andrewangelle in #521
- Add deno to guides by @birkskyum in #534
- refactor: use rustc-hash by @Conaclos in #538
- feat(css_parser): CSS Parser pseudo element selector #268 by @denbezrukov in #539
- reafctor(js_analyze): move
remove_statementin utils::batch by @Conaclos in #542 - feat(project): add overrides by @ematipico in #493
- Conaclos(js semantic): use range start as binding identifier by @Conaclos in #545
New Contributors
- @emab made their first contribution in #499
- @SuperchupuDev made their first contribution in #524
- @andrewangelle made their first contribution in #521
- @birkskyum made their first contribution in #534
Full Changelog: cli/v1.2.2-nightly.ee2e2ab...lsp-intellij/v0.0.4