-
-
Notifications
You must be signed in to change notification settings - Fork 716
feat(html): analyzer #5814
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(html): analyzer #5814
Conversation
Parser conformance results onjs/262
jsx/babel
symbols/microsoft
ts/babel
ts/microsoft
|
CodSpeed Performance ReportMerging #5814 will not alter performanceComparing Summary
Footnotes
|
ef64b18
to
0c97772
Compare
|
0c97772
to
5be3780
Compare
f3bf7db
to
2635913
Compare
WalkthroughAdds a new workspace crate Possibly related PRs
Suggested reviewers
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (21)
Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 4
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (5)
Cargo.lock
is excluded by!**/*.lock
and included by**
crates/biome_cli/tests/snapshots/main_cases_html/should_lint_a_html_file.snap
is excluded by!**/*.snap
and included by**
crates/biome_html_analyze/tests/specs/a11y/noHeaderScope/invalid.html.snap
is excluded by!**/*.snap
and included by**
crates/biome_html_analyze/tests/specs/a11y/noHeaderScope/valid.html.snap
is excluded by!**/*.snap
and included by**
crates/biome_html_analyze/tests/suppression/a11y/noHeaderScope/noHeaderScope.html.snap
is excluded by!**/*.snap
and included by**
📒 Files selected for processing (25)
Cargo.toml
(1 hunks)crates/biome_cli/Cargo.toml
(1 hunks)crates/biome_cli/tests/cases/html.rs
(1 hunks)crates/biome_configuration/Cargo.toml
(1 hunks)crates/biome_html_analyze/Cargo.toml
(1 hunks)crates/biome_html_analyze/src/lib.rs
(1 hunks)crates/biome_html_analyze/src/lint.rs
(1 hunks)crates/biome_html_analyze/src/lint/a11y.rs
(1 hunks)crates/biome_html_analyze/src/lint/a11y/no_header_scope.rs
(1 hunks)crates/biome_html_analyze/src/options.rs
(1 hunks)crates/biome_html_analyze/src/registry.rs
(1 hunks)crates/biome_html_analyze/src/suppression_action.rs
(1 hunks)crates/biome_html_analyze/tests/spec_tests.rs
(1 hunks)crates/biome_html_analyze/tests/specs/a11y/noHeaderScope/invalid.html
(1 hunks)crates/biome_html_analyze/tests/specs/a11y/noHeaderScope/valid.html
(1 hunks)crates/biome_html_analyze/tests/suppression/a11y/noHeaderScope/noHeaderScope.html
(1 hunks)crates/biome_service/Cargo.toml
(1 hunks)crates/biome_service/src/documentation/mod.rs
(3 hunks)crates/biome_service/src/file_handlers/html.rs
(3 hunks)crates/biome_service/src/file_handlers/mod.rs
(7 hunks)xtask/codegen/Cargo.toml
(2 hunks)xtask/codegen/src/generate_analyzer.rs
(3 hunks)xtask/codegen/src/generate_configuration.rs
(4 hunks)xtask/rules_check/Cargo.toml
(1 hunks)xtask/rules_check/src/lib.rs
(3 hunks)
🧰 Additional context used
📓 Path-based instructions (9)
crates/biome_*_{syntax,parser,formatter,analyze,factory,semantic}/**
📄 CodeRabbit inference engine (CLAUDE.md)
Maintain the per-language crate structure: biome_{lang}_{syntax,parser,formatter,analyze,factory,semantic}
Files:
crates/biome_html_analyze/src/options.rs
crates/biome_html_analyze/src/lint.rs
crates/biome_html_analyze/src/registry.rs
crates/biome_html_analyze/src/lint/a11y.rs
crates/biome_html_analyze/Cargo.toml
crates/biome_html_analyze/src/lint/a11y/no_header_scope.rs
crates/biome_html_analyze/tests/suppression/a11y/noHeaderScope/noHeaderScope.html
crates/biome_html_analyze/tests/specs/a11y/noHeaderScope/valid.html
crates/biome_html_analyze/tests/specs/a11y/noHeaderScope/invalid.html
crates/biome_html_analyze/src/suppression_action.rs
crates/biome_html_analyze/tests/spec_tests.rs
crates/biome_html_analyze/src/lib.rs
crates/biome_*/**
📄 CodeRabbit inference engine (CLAUDE.md)
Place core crates under /crates/biome_*/
Files:
crates/biome_html_analyze/src/options.rs
crates/biome_html_analyze/src/lint.rs
crates/biome_cli/Cargo.toml
crates/biome_html_analyze/src/registry.rs
crates/biome_html_analyze/src/lint/a11y.rs
crates/biome_service/src/documentation/mod.rs
crates/biome_html_analyze/Cargo.toml
crates/biome_html_analyze/src/lint/a11y/no_header_scope.rs
crates/biome_html_analyze/tests/suppression/a11y/noHeaderScope/noHeaderScope.html
crates/biome_html_analyze/tests/specs/a11y/noHeaderScope/valid.html
crates/biome_service/src/file_handlers/html.rs
crates/biome_service/src/file_handlers/mod.rs
crates/biome_cli/tests/cases/html.rs
crates/biome_html_analyze/tests/specs/a11y/noHeaderScope/invalid.html
crates/biome_html_analyze/src/suppression_action.rs
crates/biome_configuration/Cargo.toml
crates/biome_service/Cargo.toml
crates/biome_html_analyze/tests/spec_tests.rs
crates/biome_html_analyze/src/lib.rs
**/*.{rs,toml}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Before committing, format Rust and TOML files (e.g., via
just f
/just format
)
Files:
crates/biome_html_analyze/src/options.rs
crates/biome_html_analyze/src/lint.rs
crates/biome_cli/Cargo.toml
crates/biome_html_analyze/src/registry.rs
crates/biome_html_analyze/src/lint/a11y.rs
crates/biome_service/src/documentation/mod.rs
xtask/codegen/Cargo.toml
crates/biome_html_analyze/Cargo.toml
xtask/rules_check/src/lib.rs
crates/biome_html_analyze/src/lint/a11y/no_header_scope.rs
xtask/codegen/src/generate_analyzer.rs
crates/biome_service/src/file_handlers/html.rs
xtask/rules_check/Cargo.toml
crates/biome_service/src/file_handlers/mod.rs
crates/biome_cli/tests/cases/html.rs
Cargo.toml
crates/biome_html_analyze/src/suppression_action.rs
crates/biome_configuration/Cargo.toml
crates/biome_service/Cargo.toml
crates/biome_html_analyze/tests/spec_tests.rs
xtask/codegen/src/generate_configuration.rs
crates/biome_html_analyze/src/lib.rs
**/*.rs
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Document rules, assists, and options via inline rustdoc in Rust source
Files:
crates/biome_html_analyze/src/options.rs
crates/biome_html_analyze/src/lint.rs
crates/biome_html_analyze/src/registry.rs
crates/biome_html_analyze/src/lint/a11y.rs
crates/biome_service/src/documentation/mod.rs
xtask/rules_check/src/lib.rs
crates/biome_html_analyze/src/lint/a11y/no_header_scope.rs
xtask/codegen/src/generate_analyzer.rs
crates/biome_service/src/file_handlers/html.rs
crates/biome_service/src/file_handlers/mod.rs
crates/biome_cli/tests/cases/html.rs
crates/biome_html_analyze/src/suppression_action.rs
crates/biome_html_analyze/tests/spec_tests.rs
xtask/codegen/src/generate_configuration.rs
crates/biome_html_analyze/src/lib.rs
**/*.toml
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Format TOML files with taplo (taplo-cli)
Files:
crates/biome_cli/Cargo.toml
xtask/codegen/Cargo.toml
crates/biome_html_analyze/Cargo.toml
xtask/rules_check/Cargo.toml
Cargo.toml
crates/biome_configuration/Cargo.toml
crates/biome_service/Cargo.toml
{Cargo.toml,crates/**/Cargo.toml}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Keep all crates on the same version when publishing/releases
Files:
crates/biome_cli/Cargo.toml
crates/biome_html_analyze/Cargo.toml
Cargo.toml
crates/biome_configuration/Cargo.toml
crates/biome_service/Cargo.toml
crates/**/Cargo.toml
📄 CodeRabbit inference engine (CONTRIBUTING.md)
crates/**/Cargo.toml
: For internal crates, useworkspace = true
for dependencies
For dev-dependencies in internal crates, prefer path dependencies to avoid requiring published versions
Files:
crates/biome_cli/Cargo.toml
crates/biome_html_analyze/Cargo.toml
crates/biome_configuration/Cargo.toml
crates/biome_service/Cargo.toml
**/tests/**
📄 CodeRabbit inference engine (CLAUDE.md)
Place test files under a tests/ directory in each crate
Files:
crates/biome_html_analyze/tests/suppression/a11y/noHeaderScope/noHeaderScope.html
crates/biome_html_analyze/tests/specs/a11y/noHeaderScope/valid.html
crates/biome_cli/tests/cases/html.rs
crates/biome_html_analyze/tests/specs/a11y/noHeaderScope/invalid.html
crates/biome_html_analyze/tests/spec_tests.rs
Cargo.toml
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Define workspace dependencies in the root Cargo.toml using the workspace dependencies table
Files:
Cargo.toml
🧠 Learnings (21)
📚 Learning: 2025-10-02T12:58:46.820Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_formatter/CONTRIBUTING.md:0-0
Timestamp: 2025-10-02T12:58:46.820Z
Learning: Applies to crates/biome_formatter/biome_html_formatter/Cargo.toml : Add the specified dev-dependencies (biome_formatter_test, biome_html_factory, biome_html_parser, biome_parser, biome_service, countme with feature enable, iai 0.1.1, quickcheck, quickcheck_macros, tests_macros)
Applied to files:
crates/biome_cli/Cargo.toml
xtask/codegen/Cargo.toml
crates/biome_html_analyze/Cargo.toml
Cargo.toml
crates/biome_configuration/Cargo.toml
crates/biome_service/Cargo.toml
📚 Learning: 2025-10-02T12:58:00.892Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_js_formatter/CONTRIBUTING.md:0-0
Timestamp: 2025-10-02T12:58:00.892Z
Learning: Applies to crates/biome_js_formatter/**/Cargo.toml : Add the internal formatter dependency in Cargo.toml: biome_js_formatter = { version = "0.0.1", path = "../biome_js_formatter" }
Applied to files:
crates/biome_cli/Cargo.toml
crates/biome_html_analyze/Cargo.toml
Cargo.toml
crates/biome_configuration/Cargo.toml
crates/biome_service/Cargo.toml
📚 Learning: 2025-10-02T12:55:57.541Z
Learnt from: CR
PR: biomejs/biome#0
File: CONTRIBUTING.md:0-0
Timestamp: 2025-10-02T12:55:57.541Z
Learning: Applies to crates/**/Cargo.toml : For internal crates, use `workspace = true` for dependencies
Applied to files:
crates/biome_cli/Cargo.toml
crates/biome_html_analyze/Cargo.toml
Cargo.toml
crates/biome_configuration/Cargo.toml
crates/biome_service/Cargo.toml
📚 Learning: 2025-10-02T12:56:59.406Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_diagnostics/CONTRIBUTING.md:0-0
Timestamp: 2025-10-02T12:56:59.406Z
Learning: Applies to crates/biome_diagnostics/crates/biome_diagnostics_categories/src/categories.rs : Register any new diagnostic category statically by adding it to crates/biome_diagnostics_categories/src/categories.rs
Applied to files:
crates/biome_html_analyze/src/registry.rs
📚 Learning: 2025-10-02T12:57:33.209Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2025-10-02T12:57:33.209Z
Learning: Applies to crates/biome_analyze/crates/biome_js_analyze/lib/src/lint/nursery/*.rs : Place all new JavaScript lint rules in the nursery group under biome_js_analyze/lib/src/lint/nursery/<rule_name>.rs
Applied to files:
crates/biome_html_analyze/src/lint/a11y.rs
📚 Learning: 2025-10-02T12:58:46.820Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_formatter/CONTRIBUTING.md:0-0
Timestamp: 2025-10-02T12:58:46.820Z
Learning: Applies to crates/biome_formatter/biome_html_formatter/src/lib.rs : Implement `FormatLanguage` for `HtmlFormatLanguage` with associated types: `SyntaxLanguage = HtmlLanguage`, `Context = HtmlFormatContext`, `FormatRule = FormatHtmlSyntaxNode`
Applied to files:
crates/biome_service/src/documentation/mod.rs
xtask/rules_check/src/lib.rs
crates/biome_service/src/file_handlers/mod.rs
xtask/codegen/src/generate_configuration.rs
📚 Learning: 2025-10-02T13:00:04.816Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_parser/CONTRIBUTING.md:0-0
Timestamp: 2025-10-02T13:00:04.816Z
Learning: Applies to crates/biome_parser/**/language_kind.rs : Add the new language prefix (e.g., html_) to LANGUAGE_PREFIXES in language_kind.rs
Applied to files:
crates/biome_service/src/documentation/mod.rs
crates/biome_service/src/file_handlers/mod.rs
📚 Learning: 2025-10-02T13:00:04.816Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_parser/CONTRIBUTING.md:0-0
Timestamp: 2025-10-02T13:00:04.816Z
Learning: Applies to crates/biome_parser/**/language_kind.rs : Add a new LanguageKind variant (e.g., Html) in language_kind.rs and implement/cover all methods for it
Applied to files:
crates/biome_service/src/documentation/mod.rs
crates/biome_service/src/file_handlers/mod.rs
xtask/codegen/src/generate_configuration.rs
📚 Learning: 2025-10-02T12:58:46.820Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_formatter/CONTRIBUTING.md:0-0
Timestamp: 2025-10-02T12:58:46.820Z
Learning: Applies to crates/biome_formatter/biome_html_formatter/tests/language.rs : Create `HtmlTestFormatLanguage` and implement the `TestFormatLanguage` trait
Applied to files:
crates/biome_service/src/documentation/mod.rs
crates/biome_cli/tests/cases/html.rs
xtask/codegen/src/generate_configuration.rs
📚 Learning: 2025-10-02T12:58:46.820Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_formatter/CONTRIBUTING.md:0-0
Timestamp: 2025-10-02T12:58:46.820Z
Learning: Applies to crates/biome_formatter/biome_html_formatter/src/cst.rs : Create FormatHtmlSyntaxNode and implement `FormatRule<HtmlSyntaxNode>` plus `AsFormat<HtmlFormatContext>` and `IntoFormat<HtmlFormatContext>` for HtmlSyntaxNode using the provided mapping code
Applied to files:
crates/biome_service/src/documentation/mod.rs
📚 Learning: 2025-10-02T12:58:46.820Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_formatter/CONTRIBUTING.md:0-0
Timestamp: 2025-10-02T12:58:46.820Z
Learning: Applies to crates/biome_formatter/biome_html_formatter/src/comments.rs : Define HtmlCommentStyle and implement CommentStyle; create a public type alias `pub type HtmlComments = Comments<HtmlLanguage>;` in comments.rs
Applied to files:
crates/biome_service/src/documentation/mod.rs
📚 Learning: 2025-10-02T12:55:57.541Z
Learnt from: CR
PR: biomejs/biome#0
File: CONTRIBUTING.md:0-0
Timestamp: 2025-10-02T12:55:57.541Z
Learning: Applies to Cargo.toml : Define workspace dependencies in the root Cargo.toml using the workspace dependencies table
Applied to files:
xtask/codegen/Cargo.toml
crates/biome_html_analyze/Cargo.toml
xtask/rules_check/Cargo.toml
Cargo.toml
crates/biome_configuration/Cargo.toml
crates/biome_service/Cargo.toml
📚 Learning: 2025-08-17T08:55:30.118Z
Learnt from: CR
PR: biomejs/biome#0
File: CLAUDE.md:0-0
Timestamp: 2025-08-17T08:55:30.118Z
Learning: Applies to crates/biome_*_{syntax,parser,formatter,analyze,factory,semantic}/** : Maintain the per-language crate structure: biome_{lang}_{syntax,parser,formatter,analyze,factory,semantic}
Applied to files:
crates/biome_html_analyze/Cargo.toml
Cargo.toml
crates/biome_configuration/Cargo.toml
xtask/codegen/src/generate_configuration.rs
📚 Learning: 2025-10-02T12:58:46.820Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_formatter/CONTRIBUTING.md:0-0
Timestamp: 2025-10-02T12:58:46.820Z
Learning: Applies to crates/biome_formatter/biome_html_formatter/tests/spec_tests.rs : Configure test generation using `tests_macros::gen_tests! {"tests/specs/html/**/*.html", crate::spec_test::run, ""}` inside a formatter::html_module module
Applied to files:
crates/biome_cli/tests/cases/html.rs
crates/biome_html_analyze/tests/spec_tests.rs
📚 Learning: 2025-08-17T08:55:30.118Z
Learnt from: CR
PR: biomejs/biome#0
File: CLAUDE.md:0-0
Timestamp: 2025-08-17T08:55:30.118Z
Learning: Applies to crates/biome_html_formatter/benches/html_formatter.rs : Maintain the HTML formatter benchmark at benches/html_formatter.rs within the biome_html_formatter crate
Applied to files:
crates/biome_cli/tests/cases/html.rs
📚 Learning: 2025-10-02T12:58:46.820Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_formatter/CONTRIBUTING.md:0-0
Timestamp: 2025-10-02T12:58:46.820Z
Learning: Applies to crates/biome_formatter/biome_html_formatter/tests/spec_test.rs : Provide a `run` function that builds a SpecSnapshot with HtmlFormatLanguage and HtmlTestFormatLanguage and calls `snapshot.test()`
Applied to files:
crates/biome_cli/tests/cases/html.rs
crates/biome_html_analyze/tests/spec_tests.rs
📚 Learning: 2025-10-02T13:00:04.816Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_parser/CONTRIBUTING.md:0-0
Timestamp: 2025-10-02T13:00:04.816Z
Learning: Applies to crates/biome_parser/crates/biome_*_@(syntax|factory)/** : Create two crates per language: biome_<lang>_syntax and biome_<lang>_factory under crates/
Applied to files:
Cargo.toml
📚 Learning: 2025-10-02T13:00:18.232Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_service/CONTRIBUTING.md:0-0
Timestamp: 2025-10-02T13:00:18.232Z
Learning: Applies to crates/biome_service/src/workspace.rs : `Workspace` trait implementation entry point is located at src/workspace.rs
Applied to files:
crates/biome_service/Cargo.toml
📚 Learning: 2025-10-02T12:58:46.820Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_formatter/CONTRIBUTING.md:0-0
Timestamp: 2025-10-02T12:58:46.820Z
Learning: Applies to crates/biome_formatter/biome_html_formatter/tests/specs/html/**/*.html : Organize formatter specs as .html files under tests/specs/html, potentially grouped into subfolders
Applied to files:
crates/biome_html_analyze/tests/spec_tests.rs
📚 Learning: 2025-08-17T08:55:30.118Z
Learnt from: CR
PR: biomejs/biome#0
File: CLAUDE.md:0-0
Timestamp: 2025-08-17T08:55:30.118Z
Learning: Applies to **/tests/specs/**/*.snap : Use snapshot spec tests stored as .snap files under tests/specs/ (via cargo insta)
Applied to files:
crates/biome_html_analyze/tests/spec_tests.rs
📚 Learning: 2025-10-02T12:57:33.209Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_analyze/CONTRIBUTING.md:0-0
Timestamp: 2025-10-02T12:57:33.209Z
Learning: Applies to crates/biome_analyze/crates/biome_js_analyze/tests/quick_test.rs : Use tests/quick_test.rs for ad-hoc testing: un-ignore the test and set the rule filter (e.g., RuleFilter::Rule("nursery", "<ruleName>"))
Applied to files:
crates/biome_html_analyze/tests/spec_tests.rs
🧬 Code graph analysis (13)
crates/biome_html_analyze/src/lint.rs (1)
packages/@biomejs/backend-jsonrpc/src/workspace.ts (1)
A11y
(1033-1186)
crates/biome_html_analyze/src/lint/a11y.rs (1)
packages/@biomejs/backend-jsonrpc/src/workspace.ts (1)
A11y
(1033-1186)
crates/biome_service/src/documentation/mod.rs (2)
crates/biome_html_analyze/src/registry.rs (1)
visit_registry
(5-7)crates/biome_service/src/file_handlers/mod.rs (11)
record_rule
(956-964)record_rule
(974-983)record_rule
(993-1002)record_rule
(1012-1021)record_rule
(1031-1040)record_rule
(1274-1283)record_rule
(1296-1306)record_rule
(1320-1330)record_rule
(1344-1354)record_rule
(1368-1378)record_rule
(1477-1482)
xtask/rules_check/src/lib.rs (5)
packages/@biomejs/backend-jsonrpc/src/workspace.ts (2)
Language
(9440-9442)DocumentFileSource
(9403-9411)crates/biome_html_analyze/src/registry.rs (1)
visit_registry
(5-7)crates/biome_service/src/file_handlers/html.rs (1)
parse
(366-380)crates/biome_html_parser/src/lib.rs (1)
parse_html
(37-40)crates/biome_html_analyze/src/lib.rs (1)
analyze
(33-44)
crates/biome_html_analyze/src/lint/a11y/no_header_scope.rs (2)
packages/@biomejs/backend-jsonrpc/src/workspace.ts (2)
FixKind
(7916-7916)Severity
(9237-9237)crates/biome_analyze/src/rule.rs (3)
sources
(610-613)same
(246-251)recommended
(595-598)
xtask/codegen/src/generate_analyzer.rs (3)
xtask/src/lib.rs (2)
project_root
(22-30)reformat
(43-45)crates/biome_service/src/documentation/mod.rs (1)
new
(51-63)crates/biome_html_analyze/src/registry.rs (2)
visit_registry
(5-7)registry
(6-6)
crates/biome_service/src/file_handlers/html.rs (4)
packages/@biomejs/backend-jsonrpc/src/workspace.ts (9)
DocumentFileSource
(9403-9411)CodeAction
(9626-9630)FixAction
(9750-9759)FixFileMode
(9728-9731)FixFileResult
(9732-9749)PullActionsResult
(9623-9625)CssFileSource
(9427-9429)Applicability
(9677-9677)BiomePath
(9-9)crates/biome_service/src/file_handlers/mod.rs (12)
is_diagnostic_error
(811-830)new
(542-556)new
(771-785)new
(1059-1077)new
(1391-1405)new
(1560-1570)filter
(1231-1231)filter
(1231-1231)filter
(1248-1248)filter
(1248-1248)filter
(1424-1424)filter
(1442-1442)crates/biome_service/src/file_handlers/css.rs (14)
settings
(386-386)settings
(390-390)settings
(394-394)settings
(459-459)settings
(481-481)settings
(499-499)settings
(513-513)settings
(547-547)settings
(616-616)params
(659-659)params
(762-762)code_actions
(589-651)parse
(401-442)fix_all
(654-782)crates/biome_service/src/settings.rs (2)
analyzer_options
(1100-1120)matches
(1026-1037)
crates/biome_service/src/file_handlers/mod.rs (4)
xtask/codegen/src/generate_configuration.rs (20)
record_category
(29-33)record_category
(54-58)record_category
(73-77)record_category
(92-96)record_category
(111-115)record_category
(136-140)record_category
(154-158)record_category
(173-177)record_category
(192-196)record_category
(211-215)record_rule
(35-50)record_rule
(60-69)record_rule
(79-88)record_rule
(98-107)record_rule
(117-126)record_rule
(142-150)record_rule
(160-169)record_rule
(179-188)record_rule
(198-207)record_rule
(217-226)crates/biome_analyze/src/registry.rs (7)
record_category
(41-43)record_category
(149-153)record_rule
(51-53)record_rule
(84-89)record_rule
(162-224)record_group
(46-48)record_group
(155-159)crates/biome_service/src/file_handlers/html.rs (3)
from
(58-62)from
(81-94)lint
(669-706)crates/biome_html_analyze/src/registry.rs (1)
visit_registry
(5-7)
crates/biome_cli/tests/cases/html.rs (2)
crates/biome_cli/tests/main.rs (1)
run_cli
(332-347)crates/biome_cli/tests/snap_test.rs (1)
assert_cli_snapshot
(407-409)
crates/biome_html_analyze/src/suppression_action.rs (1)
crates/biome_rowan/src/syntax/token.rs (1)
prev_token
(179-181)
crates/biome_html_analyze/tests/spec_tests.rs (3)
crates/biome_html_parser/src/lib.rs (1)
parse_html
(37-40)crates/biome_test_utils/src/lib.rs (9)
assert_diagnostics_expectation_comment
(545-609)assert_errors_are_absent
(404-436)code_fix_to_string
(347-358)diagnostic_to_string
(273-278)has_bogus_nodes_or_empty_slots
(384-399)parse_test_path
(365-379)register_leak_checker
(332-336)scripts_from_json
(34-42)write_analyzer_snapshot
(438-470)crates/biome_html_analyze/src/lib.rs (1)
analyze
(33-44)
xtask/codegen/src/generate_configuration.rs (2)
crates/biome_service/src/file_handlers/mod.rs (30)
record_category
(950-954)record_category
(968-972)record_category
(987-991)record_category
(1006-1010)record_category
(1025-1029)record_category
(1264-1268)record_category
(1286-1290)record_category
(1310-1314)record_category
(1334-1338)record_category
(1358-1362)record_category
(1471-1475)record_category
(1486-1490)record_category
(1502-1506)record_category
(1518-1522)record_category
(1534-1538)record_rule
(956-964)record_rule
(974-983)record_rule
(993-1002)record_rule
(1012-1021)record_rule
(1031-1040)record_rule
(1274-1283)record_rule
(1296-1306)record_rule
(1320-1330)record_rule
(1344-1354)record_rule
(1368-1378)record_rule
(1477-1482)record_rule
(1492-1498)record_rule
(1508-1514)record_rule
(1524-1530)record_rule
(1540-1546)crates/biome_html_analyze/src/registry.rs (1)
visit_registry
(5-7)
crates/biome_html_analyze/src/lib.rs (3)
crates/biome_html_analyze/src/registry.rs (2)
registry
(6-6)visit_registry
(5-7)crates/biome_analyze/src/lib.rs (1)
to_analyzer_suppressions
(714-773)crates/biome_html_parser/src/lib.rs (1)
parse_html
(37-40)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: Lint project (depot-windows-2022)
- GitHub Check: Bench (biome_js_formatter)
🔇 Additional comments (5)
crates/biome_html_analyze/src/registry.rs (1)
3-7
: Registry hook looks solid. Registers the HTML lint category cleanly and matches the other languages.crates/biome_service/src/documentation/mod.rs (1)
9-134
: Nice docs integration. Adding HtmlLanguage here keeps the docs command in step with the new rules.xtask/codegen/src/generate_analyzer.rs (1)
13-313
: Codegen pipeline looks tidy. HTML slots into the existing analyser generation without upsetting the balance.crates/biome_html_analyze/src/lint/a11y.rs (1)
1-7
: A11y group wired up neatly. Group and rule export follow the usual pattern—no surprises.crates/biome_html_analyze/src/lib.rs (1)
1-185
: Analyzer entrypoints look shipshape. The suppression plumbing and metadata setup mirror the proven patterns from the other languages, so I’m happy.
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
crates/biome_html_analyze/src/suppression_action.rs
(1 hunks)crates/biome_service/src/file_handlers/html.rs
(3 hunks)crates/biome_service/src/file_handlers/mod.rs
(7 hunks)
🧰 Additional context used
📓 Path-based instructions (4)
crates/biome_*_{syntax,parser,formatter,analyze,factory,semantic}/**
📄 CodeRabbit inference engine (CLAUDE.md)
Maintain the per-language crate structure: biome_{lang}_{syntax,parser,formatter,analyze,factory,semantic}
Files:
crates/biome_html_analyze/src/suppression_action.rs
crates/biome_*/**
📄 CodeRabbit inference engine (CLAUDE.md)
Place core crates under /crates/biome_*/
Files:
crates/biome_html_analyze/src/suppression_action.rs
crates/biome_service/src/file_handlers/html.rs
crates/biome_service/src/file_handlers/mod.rs
**/*.{rs,toml}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Before committing, format Rust and TOML files (e.g., via
just f
/just format
)
Files:
crates/biome_html_analyze/src/suppression_action.rs
crates/biome_service/src/file_handlers/html.rs
crates/biome_service/src/file_handlers/mod.rs
**/*.rs
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Document rules, assists, and options via inline rustdoc in Rust source
Files:
crates/biome_html_analyze/src/suppression_action.rs
crates/biome_service/src/file_handlers/html.rs
crates/biome_service/src/file_handlers/mod.rs
🧠 Learnings (3)
📚 Learning: 2025-10-02T12:58:46.820Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_formatter/CONTRIBUTING.md:0-0
Timestamp: 2025-10-02T12:58:46.820Z
Learning: Applies to crates/biome_formatter/biome_html_formatter/src/lib.rs : Implement `FormatLanguage` for `HtmlFormatLanguage` with associated types: `SyntaxLanguage = HtmlLanguage`, `Context = HtmlFormatContext`, `FormatRule = FormatHtmlSyntaxNode`
Applied to files:
crates/biome_service/src/file_handlers/mod.rs
📚 Learning: 2025-10-02T13:00:04.816Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_parser/CONTRIBUTING.md:0-0
Timestamp: 2025-10-02T13:00:04.816Z
Learning: Applies to crates/biome_parser/**/language_kind.rs : Add a new LanguageKind variant (e.g., Html) in language_kind.rs and implement/cover all methods for it
Applied to files:
crates/biome_service/src/file_handlers/mod.rs
📚 Learning: 2025-10-02T13:00:04.816Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_parser/CONTRIBUTING.md:0-0
Timestamp: 2025-10-02T13:00:04.816Z
Learning: Applies to crates/biome_parser/**/language_kind.rs : Add the new language prefix (e.g., html_) to LANGUAGE_PREFIXES in language_kind.rs
Applied to files:
crates/biome_service/src/file_handlers/mod.rs
🧬 Code graph analysis (3)
crates/biome_html_analyze/src/suppression_action.rs (1)
crates/biome_rowan/src/syntax/token.rs (1)
prev_token
(179-181)
crates/biome_service/src/file_handlers/html.rs (7)
packages/@biomejs/backend-jsonrpc/src/workspace.ts (9)
DocumentFileSource
(9403-9411)CodeAction
(9626-9630)FixAction
(9750-9759)FixFileMode
(9728-9731)FixFileResult
(9732-9749)PullActionsResult
(9623-9625)CssFileSource
(9427-9429)Applicability
(9677-9677)BiomePath
(9-9)crates/biome_service/src/file_handlers/mod.rs (12)
is_diagnostic_error
(811-830)new
(542-556)new
(771-785)new
(1059-1077)new
(1391-1405)new
(1560-1570)filter
(1231-1231)filter
(1231-1231)filter
(1248-1248)filter
(1248-1248)filter
(1424-1424)filter
(1442-1442)crates/biome_service/src/file_handlers/graphql.rs (12)
settings
(305-305)settings
(309-309)settings
(313-313)settings
(350-350)settings
(366-366)settings
(384-384)settings
(398-398)settings
(496-496)params
(543-543)params
(640-640)code_actions
(470-535)parse
(320-333)crates/biome_service/src/file_handlers/css.rs (12)
settings
(386-386)settings
(390-390)settings
(394-394)settings
(459-459)settings
(481-481)settings
(499-499)settings
(513-513)settings
(547-547)params
(659-659)params
(762-762)code_actions
(589-651)parse
(401-442)crates/biome_service/src/settings.rs (1)
analyzer_options
(1100-1120)crates/biome_service/src/file_handlers/json.rs (6)
workspace
(580-580)params
(511-511)params
(630-630)params
(735-735)code_actions
(561-622)parse
(385-400)crates/biome_html_parser/src/lib.rs (1)
tree
(99-101)
crates/biome_service/src/file_handlers/mod.rs (2)
crates/biome_service/src/file_handlers/html.rs (1)
lint
(669-706)crates/biome_html_analyze/src/registry.rs (1)
visit_registry
(5-7)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (14)
- GitHub Check: Bench (biome_configuration)
- GitHub Check: Bench (biome_js_analyze)
- GitHub Check: Bench (biome_json_formatter)
- GitHub Check: Bench (biome_js_parser)
- GitHub Check: Bench (biome_js_formatter)
- GitHub Check: Bench (biome_css_formatter)
- GitHub Check: autofix
- GitHub Check: Bench (biome_json_analyze)
- GitHub Check: Bench (biome_css_analyze)
- GitHub Check: Bench (biome_graphql_parser)
- GitHub Check: Bench (biome_css_parser)
- GitHub Check: Bench (biome_json_parser)
- GitHub Check: Bench (biome_graphql_formatter)
- GitHub Check: Bench (biome_module_graph)
🔇 Additional comments (6)
crates/biome_html_analyze/src/suppression_action.rs (1)
1-110
: LGTM! Suppression action properly preserves existing trivia.The implementation correctly addresses the previous concern about clobbering trailing trivia. Lines 61–75 now collect existing trivia, append the suppression comment, and reapply everything together. The logic for locating the line-start token and handling the three cases (trailing comments, leading whitespace, neither) is sound.
crates/biome_service/src/file_handlers/html.rs (3)
727-732
: File source check now correct.Previously used
to_graphql_file_source()
which would bail out for all HTML documents. Now properly checksto_html_file_source()
so the visitor actually runs.
668-706
: LGTM! Lint implementation follows established patterns.The function correctly builds analyzer options, constructs the filter, runs
analyze
, and processes signals throughProcessLint
. Implementation is consistent with GraphQL, JSON, and CSS handlers.
770-894
: LGTM! Comprehensive fix_all with proper error handling.The iterative fix application loop correctly handles all
FixFileMode
variants, tracks errors/skipped fixes, commits mutations, and formats the final output. Solid implementation that mirrors the patterns from other language handlers.crates/biome_service/src/file_handlers/mod.rs (2)
1373-1377
: Metadata lookup now correct.Previously looked up rules in
graphql_metadata
which caused HTML rule lookups to fail. Now properly usesbiome_html_analyze::METADATA
so selectors, overrides, and severity adjustments apply correctly.
1024-1041
: LGTM! Registry visitor implementations are consistent.The three
RegistryVisitor<HtmlLanguage>
implementations forSyntaxVisitor
,LintVisitor
, andAssistsVisitor
follow the exact pattern used for JS, JSON, CSS, and GraphQL. Properly integrated into the builder at lines 1626, 1647, and 1658.Also applies to: 1357-1379, 1533-1547
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
♻️ Duplicate comments (2)
xtask/codegen/src/generate_configuration.rs (1)
242-243
: Previous concern resolved.The HTML registry is now properly visited in
generate_rule_options
, ensuring that HTML rule options are generated and kept in sync. This addresses the issue flagged in the previous review.crates/biome_service/src/file_handlers/html.rs (1)
836-838
: Wire up HTML suppression actionsApply‑suppressions mode still bubbles out with the old GraphQL TODO, so
biome fix --apply-suppressions
does nothing for HTML. Please thread this branch throughHtmlSuppressionAction
(mirroring the GraphQL handler) so the new analyser can actually insert suppression comments.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (5)
crates/biome_html_analyze/src/lint/a11y/no_header_scope.rs
(1 hunks)crates/biome_html_syntax/src/element_ext.rs
(1 hunks)crates/biome_service/src/file_handlers/grit.rs
(0 hunks)crates/biome_service/src/file_handlers/html.rs
(3 hunks)xtask/codegen/src/generate_configuration.rs
(5 hunks)
💤 Files with no reviewable changes (1)
- crates/biome_service/src/file_handlers/grit.rs
🚧 Files skipped from review as they are similar to previous changes (1)
- crates/biome_html_analyze/src/lint/a11y/no_header_scope.rs
🧰 Additional context used
📓 Path-based instructions (4)
crates/biome_*_{syntax,parser,formatter,analyze,factory,semantic}/**
📄 CodeRabbit inference engine (CLAUDE.md)
Maintain the per-language crate structure: biome_{lang}_{syntax,parser,formatter,analyze,factory,semantic}
Files:
crates/biome_html_syntax/src/element_ext.rs
crates/biome_*/**
📄 CodeRabbit inference engine (CLAUDE.md)
Place core crates under /crates/biome_*/
Files:
crates/biome_html_syntax/src/element_ext.rs
crates/biome_service/src/file_handlers/html.rs
**/*.{rs,toml}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Before committing, format Rust and TOML files (e.g., via
just f
/just format
)
Files:
crates/biome_html_syntax/src/element_ext.rs
xtask/codegen/src/generate_configuration.rs
crates/biome_service/src/file_handlers/html.rs
**/*.rs
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Document rules, assists, and options via inline rustdoc in Rust source
Files:
crates/biome_html_syntax/src/element_ext.rs
xtask/codegen/src/generate_configuration.rs
crates/biome_service/src/file_handlers/html.rs
🧠 Learnings (4)
📚 Learning: 2025-10-02T12:58:46.820Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_formatter/CONTRIBUTING.md:0-0
Timestamp: 2025-10-02T12:58:46.820Z
Learning: Applies to crates/biome_formatter/biome_html_formatter/src/lib.rs : Implement `FormatLanguage` for `HtmlFormatLanguage` with associated types: `SyntaxLanguage = HtmlLanguage`, `Context = HtmlFormatContext`, `FormatRule = FormatHtmlSyntaxNode`
Applied to files:
xtask/codegen/src/generate_configuration.rs
📚 Learning: 2025-10-02T12:58:46.820Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_formatter/CONTRIBUTING.md:0-0
Timestamp: 2025-10-02T12:58:46.820Z
Learning: Applies to crates/biome_formatter/biome_html_formatter/tests/language.rs : Create `HtmlTestFormatLanguage` and implement the `TestFormatLanguage` trait
Applied to files:
xtask/codegen/src/generate_configuration.rs
📚 Learning: 2025-10-02T13:00:04.816Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_parser/CONTRIBUTING.md:0-0
Timestamp: 2025-10-02T13:00:04.816Z
Learning: Applies to crates/biome_parser/**/language_kind.rs : Add a new LanguageKind variant (e.g., Html) in language_kind.rs and implement/cover all methods for it
Applied to files:
xtask/codegen/src/generate_configuration.rs
📚 Learning: 2025-08-17T08:55:30.118Z
Learnt from: CR
PR: biomejs/biome#0
File: CLAUDE.md:0-0
Timestamp: 2025-08-17T08:55:30.118Z
Learning: Applies to crates/biome_*_{syntax,parser,formatter,analyze,factory,semantic}/** : Maintain the per-language crate structure: biome_{lang}_{syntax,parser,formatter,analyze,factory,semantic}
Applied to files:
xtask/codegen/src/generate_configuration.rs
🧬 Code graph analysis (3)
crates/biome_html_syntax/src/element_ext.rs (1)
crates/biome_html_syntax/src/generated/nodes.rs (4)
name
(87-89)name
(255-257)name
(532-534)name
(638-640)
xtask/codegen/src/generate_configuration.rs (2)
crates/biome_service/src/file_handlers/mod.rs (30)
record_category
(950-954)record_category
(968-972)record_category
(987-991)record_category
(1006-1010)record_category
(1025-1029)record_category
(1264-1268)record_category
(1286-1290)record_category
(1310-1314)record_category
(1334-1338)record_category
(1358-1362)record_category
(1471-1475)record_category
(1486-1490)record_category
(1502-1506)record_category
(1518-1522)record_category
(1534-1538)record_rule
(956-964)record_rule
(974-983)record_rule
(993-1002)record_rule
(1012-1021)record_rule
(1031-1040)record_rule
(1274-1283)record_rule
(1296-1306)record_rule
(1320-1330)record_rule
(1344-1354)record_rule
(1368-1378)record_rule
(1477-1482)record_rule
(1492-1498)record_rule
(1508-1514)record_rule
(1524-1530)record_rule
(1540-1546)crates/biome_analyze/src/rule.rs (1)
record_groups
(958-958)
crates/biome_service/src/file_handlers/html.rs (4)
packages/@biomejs/backend-jsonrpc/src/workspace.ts (9)
DocumentFileSource
(9403-9411)CodeAction
(9626-9630)FixAction
(9750-9759)FixFileMode
(9728-9731)FixFileResult
(9732-9749)PullActionsResult
(9623-9625)CssFileSource
(9427-9429)Applicability
(9677-9677)BiomePath
(9-9)crates/biome_service/src/file_handlers/mod.rs (12)
is_diagnostic_error
(811-830)new
(542-556)new
(771-785)new
(1059-1077)new
(1391-1405)new
(1560-1570)filter
(1231-1231)filter
(1231-1231)filter
(1248-1248)filter
(1248-1248)filter
(1424-1424)filter
(1442-1442)crates/biome_service/src/file_handlers/css.rs (14)
settings
(386-386)settings
(390-390)settings
(394-394)settings
(459-459)settings
(481-481)settings
(499-499)settings
(513-513)settings
(547-547)settings
(616-616)params
(659-659)params
(762-762)code_actions
(589-651)parse
(401-442)fix_all
(654-782)crates/biome_service/src/settings.rs (1)
analyzer_options
(1100-1120)
🪛 GitHub Actions: autofix.ci
crates/biome_html_syntax/src/element_ext.rs
[error] 61-66: cannot return value referencing local variable name_token
(E0515). This occurs in element_ext.rs lines 61-66 during cargo codegen-configuration.
🪛 GitHub Actions: Benchmarks Configuration
crates/biome_html_syntax/src/element_ext.rs
[error] 61-61: cannot return value referencing local variable name_token
[error] 66-66: cannot return value referencing local variable name_token
🪛 GitHub Actions: Benchmarks CSS
crates/biome_html_syntax/src/element_ext.rs
[error] 61-61: E0515: cannot return value referencing local variable name_token
. The value is borrowed from name_token
which is owned by the current function.
[error] 66-66: E0515: cannot return value referencing local variable name_token
. The value is borrowed from name_token
which is owned by the current function.
🪛 GitHub Actions: Benchmarks GraphQL
crates/biome_html_syntax/src/element_ext.rs
[error] 61-61: cannot return value referencing local variable name_token
(E0515)
[error] 66-66: cannot return value referencing local variable name_token
(E0515)
🪛 GitHub Actions: Benchmarks JS
crates/biome_html_syntax/src/element_ext.rs
[error] 61-66: cannot return value referencing local variable name_token
[error] 61-61: cannot return value referencing local variable name_token
[error] 66-66: cannot return value referencing local variable name_token
🪛 GitHub Actions: Benchmarks JSON
crates/biome_html_syntax/src/element_ext.rs
[error] 61-66: cannot return value referencing local variable name_token
(E0515) in element_ext.rs: returns a value referencing data owned by the current function. This likely indicates a lifetime issue where name_token is borrowed and a trimmed value is returned beyond the token's scope.
🪛 GitHub Actions: Benchmarks Module Graph
crates/biome_html_syntax/src/element_ext.rs
[error] 61-61: Rust compile error (E0515): cannot return value referencing local variable name_token
in biome_html_syntax/src/element_ext.rs.
[error] 66-66: Rust compile error (E0515): cannot return value referencing local variable name_token
in biome_html_syntax/src/element_ext.rs.
🪛 GitHub Actions: Pull request
crates/biome_html_syntax/src/element_ext.rs
[error] 61-66: Rust compile error E0515: cannot return value referencing local variable 'name_token' (lines 61-66).
🔇 Additional comments (4)
xtask/codegen/src/generate_configuration.rs (4)
6-6
: LGTM!The import is correctly added to support HTML language in the configuration generation.
110-127
: LGTM!The
RegistryVisitor<HtmlLanguage>
implementation forLintRulesVisitor
follows the established pattern used by other non-JS languages (CSS, GraphQL). Note that it correctly omits domain tracking, which is consistent with the approach for languages other than JavaScript.
210-227
: LGTM!The
RegistryVisitor<HtmlLanguage>
implementation forAssistActionsVisitor
is consistent with the patterns used for other languages.
301-302
: LGTM!The HTML registry visits in
generate_rules_configuration
complete the integration, ensuring HTML rules are included in the generated configuration.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (3)
crates/biome_service/src/file_handlers/json.rs (1)
675-704
: Critical logic error: suppression handling is unreachable.The outer guard at lines 675-677 filters out all suppression actions before they reach the mode-specific handling. This means:
- Lines 681-683 (SafeFixes guard) are dead code—suppressions are already filtered.
- Lines 702-704 (ApplySuppressions handler) will never execute—suppressions cannot reach this branch.
As a result,
FixFileMode::ApplySuppressions
cannot function as intended.Apply this diff to fix the logic:
for action in signal.actions() { - // suppression actions should not be part of the fixes (safe or suggested) - if action.is_suppression() { - continue; - } - match params.fix_file_mode { FixFileMode::SafeFixes => { if action.is_suppression() { continue; } if action.applicability == Applicability::MaybeIncorrect { skipped_suggested_fixes += 1; } if action.applicability == Applicability::Always { errors = errors.saturating_sub(1); return ControlFlow::Break(action); } } FixFileMode::SafeAndUnsafeFixes => { + if action.is_suppression() { + continue; + } if matches!( action.applicability, Applicability::Always | Applicability::MaybeIncorrect ) { errors = errors.saturating_sub(1); return ControlFlow::Break(action); } } FixFileMode::ApplySuppressions => { if action.is_suppression() { return ControlFlow::Break(action); } } } }crates/biome_service/src/file_handlers/graphql.rs (1)
578-610
: Critical logic error: suppression handling is unreachable.Identical issue to
json.rs
: the outer guard at lines 580-582 filters out all suppression actions before mode-specific handling, making lines 586-588 and 607-609 unreachable.FixFileMode::ApplySuppressions
cannot function.Apply the same fix as in
json.rs
:for action in signal.actions() { - // suppression actions should not be part of the fixes (safe or suggested) - if action.is_suppression() { - continue; - } - match params.fix_file_mode { FixFileMode::SafeFixes => { if action.is_suppression() { continue; } if action.applicability == Applicability::MaybeIncorrect { skipped_suggested_fixes += 1; } if action.applicability == Applicability::Always { errors = errors.saturating_sub(1); return ControlFlow::Break(action); } } FixFileMode::SafeAndUnsafeFixes => { + if action.is_suppression() { + continue; + } if matches!( action.applicability, Applicability::Always | Applicability::MaybeIncorrect ) { errors = errors.saturating_sub(1); return ControlFlow::Break(action); } } FixFileMode::ApplySuppressions => { if action.is_suppression() { return ControlFlow::Break(action); } } } }crates/biome_service/src/file_handlers/css.rs (1)
699-732
: Critical logic error: suppression handling is unreachable.Identical issue to
json.rs
andgraphql.rs
: the outer guard at lines 700-703 prevents lines 707-709 and 728-730 from ever executing.FixFileMode::ApplySuppressions
cannot function.Apply the same fix as in the other file handlers:
for action in signal.actions() { - // suppression actions should not be part of the fixes (safe or suggested) - if action.is_suppression() { - continue; - } - match params.fix_file_mode { FixFileMode::SafeFixes => { if action.is_suppression() { continue; } if action.applicability == Applicability::MaybeIncorrect { skipped_suggested_fixes += 1; } if action.applicability == Applicability::Always { errors = errors.saturating_sub(1); return ControlFlow::Break(action); } } FixFileMode::SafeAndUnsafeFixes => { + if action.is_suppression() { + continue; + } if matches!( action.applicability, Applicability::Always | Applicability::MaybeIncorrect ) { errors = errors.saturating_sub(1); return ControlFlow::Break(action); } } FixFileMode::ApplySuppressions => { if action.is_suppression() { return ControlFlow::Break(action); } } } }
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (5)
crates/biome_html_syntax/src/element_ext.rs
(2 hunks)crates/biome_service/src/file_handlers/css.rs
(2 hunks)crates/biome_service/src/file_handlers/graphql.rs
(2 hunks)crates/biome_service/src/file_handlers/html.rs
(3 hunks)crates/biome_service/src/file_handlers/json.rs
(2 hunks)
🧰 Additional context used
📓 Path-based instructions (4)
crates/biome_*/**
📄 CodeRabbit inference engine (CLAUDE.md)
Place core crates under /crates/biome_*/
Files:
crates/biome_service/src/file_handlers/graphql.rs
crates/biome_service/src/file_handlers/css.rs
crates/biome_service/src/file_handlers/json.rs
crates/biome_service/src/file_handlers/html.rs
crates/biome_html_syntax/src/element_ext.rs
**/*.{rs,toml}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Before committing, format Rust and TOML files (e.g., via
just f
/just format
)
Files:
crates/biome_service/src/file_handlers/graphql.rs
crates/biome_service/src/file_handlers/css.rs
crates/biome_service/src/file_handlers/json.rs
crates/biome_service/src/file_handlers/html.rs
crates/biome_html_syntax/src/element_ext.rs
**/*.rs
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Document rules, assists, and options via inline rustdoc in Rust source
Files:
crates/biome_service/src/file_handlers/graphql.rs
crates/biome_service/src/file_handlers/css.rs
crates/biome_service/src/file_handlers/json.rs
crates/biome_service/src/file_handlers/html.rs
crates/biome_html_syntax/src/element_ext.rs
crates/biome_*_{syntax,parser,formatter,analyze,factory,semantic}/**
📄 CodeRabbit inference engine (CLAUDE.md)
Maintain the per-language crate structure: biome_{lang}_{syntax,parser,formatter,analyze,factory,semantic}
Files:
crates/biome_html_syntax/src/element_ext.rs
🧬 Code graph analysis (2)
crates/biome_service/src/file_handlers/html.rs (3)
packages/@biomejs/backend-jsonrpc/src/workspace.ts (8)
DocumentFileSource
(9403-9411)CodeAction
(9626-9630)FixAction
(9750-9759)FixFileMode
(9728-9731)FixFileResult
(9732-9749)PullActionsResult
(9623-9625)CssFileSource
(9427-9429)BiomePath
(9-9)crates/biome_service/src/file_handlers/mod.rs (12)
is_diagnostic_error
(811-830)new
(542-556)new
(771-785)new
(1059-1077)new
(1391-1405)new
(1560-1570)filter
(1231-1231)filter
(1231-1231)filter
(1248-1248)filter
(1248-1248)filter
(1424-1424)filter
(1442-1442)crates/biome_service/src/settings.rs (1)
analyzer_options
(1100-1120)
crates/biome_html_syntax/src/element_ext.rs (1)
crates/biome_html_syntax/src/generated/nodes.rs (5)
name
(87-89)name
(255-257)name
(532-534)name
(638-640)opening_element
(448-450)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (21)
- GitHub Check: Test (depot-windows-2022-16)
- GitHub Check: Documentation
- GitHub Check: Test (depot-ubuntu-24.04-arm-16)
- GitHub Check: End-to-end tests
- GitHub Check: Lint project (depot-ubuntu-24.04-arm-16)
- GitHub Check: Check Dependencies
- GitHub Check: Lint project (depot-windows-2022)
- GitHub Check: Bench (biome_configuration)
- GitHub Check: Bench (biome_css_analyze)
- GitHub Check: Bench (biome_module_graph)
- GitHub Check: Bench (biome_css_formatter)
- GitHub Check: Bench (biome_css_parser)
- GitHub Check: Bench (biome_js_formatter)
- GitHub Check: Bench (biome_js_parser)
- GitHub Check: Bench (biome_js_analyze)
- GitHub Check: autofix
- GitHub Check: Bench (biome_json_formatter)
- GitHub Check: Bench (biome_json_analyze)
- GitHub Check: Bench (biome_json_parser)
- GitHub Check: Bench (biome_graphql_formatter)
- GitHub Check: Bench (biome_graphql_parser)
🔇 Additional comments (4)
crates/biome_html_syntax/src/element_ext.rs (1)
55-70
: Lifetime issue resolved—implementation looks correct.The change from
Option<&str>
toOption<TokenText>
resolves the E0515 compilation errors flagged in previous reviews.TokenText
is an owned/reference-counted type frombiome_rowan
that avoids borrowing from local variables.The implementation correctly extracts the tag name for both
HtmlElement
andHtmlSelfClosingElement
variants, returningNone
for unsupported variants.crates/biome_service/src/file_handlers/html.rs (3)
669-706
: LGTM!The lint function is well-structured. Properly builds analyzer options from settings, uses
AnalyzerVisitorBuilder
to derive enabled/disabled rules, creates anAnalysisFilter
, and processes signals throughProcessLint
. Clean integration with the new HTML analyzer.
708-767
: LGTM—past issue resolved!The code actions flow is now fully wired. The HTML file source guard at line 727 correctly uses
to_html_file_source()
(previous review flagged incorrect GraphQL check). Signal-to-action transformation properly maps categories, rule names (asCow::Borrowed
pairs), and suggestions.
770-898
: Well-structured fix_all loop.The iterative fix logic is solid: computes final rules with overrides, builds a comprehensive
AnalysisFilter
, handles the threeFixFileMode
variants correctly (safe, safe+unsafe, suppressions), applies mutations, validates root type after each mutation, and optionally formats. Error tracking and action accumulation look correct. Aside from the redundant check flagged separately, this is a thorough implementation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
crates/biome_service/src/file_handlers/graphql.rs (1)
580-606
: Unreachable code: suppressions are filtered before the mode check.The early
continue
at line 581 skips all suppression actions before reaching line 604. WhenApplySuppressions
mode checksif action.is_suppression()
, the condition can never be true.Move the suppression filtering inside the mode branches:
for action in signal.actions() { - // suppression actions should not be part of the fixes (safe or suggested) - if action.is_suppression() { - continue; - } - match params.fix_file_mode { FixFileMode::SafeFixes => { + if action.is_suppression() { + continue; + } if action.applicability == Applicability::MaybeIncorrect { skipped_suggested_fixes += 1; } if action.applicability == Applicability::Always { errors = errors.saturating_sub(1); return ControlFlow::Break(action); } } FixFileMode::SafeAndUnsafeFixes => { + if action.is_suppression() { + continue; + } if matches!( action.applicability, Applicability::Always | Applicability::MaybeIncorrect ) { errors = errors.saturating_sub(1); return ControlFlow::Break(action); } } FixFileMode::ApplySuppressions => { if action.is_suppression() { return ControlFlow::Break(action); } } } }
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (5)
crates/biome_service/src/file_handlers/css.rs
(1 hunks)crates/biome_service/src/file_handlers/graphql.rs
(1 hunks)crates/biome_service/src/file_handlers/html.rs
(3 hunks)crates/biome_service/src/file_handlers/javascript.rs
(0 hunks)crates/biome_service/src/file_handlers/json.rs
(1 hunks)
💤 Files with no reviewable changes (1)
- crates/biome_service/src/file_handlers/javascript.rs
🚧 Files skipped from review as they are similar to previous changes (1)
- crates/biome_service/src/file_handlers/css.rs
🧰 Additional context used
📓 Path-based instructions (3)
crates/biome_*/**
📄 CodeRabbit inference engine (CLAUDE.md)
Place core crates under /crates/biome_*/
Files:
crates/biome_service/src/file_handlers/graphql.rs
crates/biome_service/src/file_handlers/json.rs
crates/biome_service/src/file_handlers/html.rs
**/*.{rs,toml}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Before committing, format Rust and TOML files (e.g., via
just f
/just format
)
Files:
crates/biome_service/src/file_handlers/graphql.rs
crates/biome_service/src/file_handlers/json.rs
crates/biome_service/src/file_handlers/html.rs
**/*.rs
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Document rules, assists, and options via inline rustdoc in Rust source
Files:
crates/biome_service/src/file_handlers/graphql.rs
crates/biome_service/src/file_handlers/json.rs
crates/biome_service/src/file_handlers/html.rs
🧬 Code graph analysis (1)
crates/biome_service/src/file_handlers/html.rs (3)
packages/@biomejs/backend-jsonrpc/src/workspace.ts (8)
DocumentFileSource
(9403-9411)CodeAction
(9626-9630)FixAction
(9750-9759)FixFileMode
(9728-9731)FixFileResult
(9732-9749)PullActionsResult
(9623-9625)CssFileSource
(9427-9429)Applicability
(9677-9677)crates/biome_service/src/file_handlers/mod.rs (12)
is_diagnostic_error
(811-830)new
(542-556)new
(771-785)new
(1059-1077)new
(1391-1405)new
(1560-1570)filter
(1231-1231)filter
(1231-1231)filter
(1248-1248)filter
(1248-1248)filter
(1424-1424)filter
(1442-1442)crates/biome_service/src/file_handlers/css.rs (14)
settings
(386-386)settings
(390-390)settings
(394-394)settings
(459-459)settings
(481-481)settings
(499-499)settings
(513-513)settings
(547-547)settings
(616-616)params
(659-659)params
(764-764)code_actions
(589-651)parse
(401-442)fix_all
(654-784)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (22)
- GitHub Check: Documentation
- GitHub Check: End-to-end tests
- GitHub Check: Lint project (depot-ubuntu-24.04-arm-16)
- GitHub Check: Test (depot-windows-2022-16)
- GitHub Check: Check Dependencies
- GitHub Check: Test (depot-ubuntu-24.04-arm-16)
- GitHub Check: Lint project (depot-windows-2022)
- GitHub Check: Bench (biome_css_analyze)
- GitHub Check: Bench (biome_module_graph)
- GitHub Check: Bench (biome_css_formatter)
- GitHub Check: Bench (biome_css_parser)
- GitHub Check: Bench (biome_js_formatter)
- GitHub Check: Bench (biome_configuration)
- GitHub Check: Bench (biome_json_parser)
- GitHub Check: Bench (biome_json_analyze)
- GitHub Check: autofix
- GitHub Check: Bench (biome_js_analyze)
- GitHub Check: Bench (biome_js_parser)
- GitHub Check: Bench (biome_json_formatter)
- GitHub Check: Bench (biome_package)
- GitHub Check: Bench (biome_graphql_formatter)
- GitHub Check: Bench (biome_graphql_parser)
🔇 Additional comments (4)
crates/biome_service/src/file_handlers/html.rs (4)
1-49
: Imports look solid.All the new imports (analyzer types, code actions, fix actions, diagnostics) are properly used in the updated functions below. Clean plumbing work.
669-706
: Lint implementation is spot on.Properly wired up the HTML analyzer with enabled/disabled rules, filter construction, and signal processing. Follows the established pattern from other language handlers.
708-767
: Code actions properly hooked up.Good work addressing the previous review feedback—now correctly checks for HTML file source. The analyzer integration and action collection follow the right pattern.
846-895
: Mutation application and error handling look good.Proper validation when replacing the root (lines 851–862), and sensible exit logic with optional formatting. Once the suppression bug is fixed, this should work well.
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
crates/biome_service/src/file_handlers/html.rs (1)
727-732
: Minor: File source check result unused.The check at line 727 guards against non-HTML files, but the result is bound to
_
. If you're only validating the file type (not using the source downstream), consider adding a comment explaining this is a defensive check sinceanalyze
doesn't requirefile_source
as an argument.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
crates/biome_service/src/file_handlers/html.rs
(3 hunks)crates/biome_service/src/file_handlers/json.rs
(1 hunks)
🧰 Additional context used
📓 Path-based instructions (3)
crates/biome_*/**
📄 CodeRabbit inference engine (CLAUDE.md)
Place core crates under /crates/biome_*/
Files:
crates/biome_service/src/file_handlers/json.rs
crates/biome_service/src/file_handlers/html.rs
**/*.{rs,toml}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Before committing, format Rust and TOML files (e.g., via
just f
/just format
)
Files:
crates/biome_service/src/file_handlers/json.rs
crates/biome_service/src/file_handlers/html.rs
**/*.rs
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Document rules, assists, and options via inline rustdoc in Rust source
Files:
crates/biome_service/src/file_handlers/json.rs
crates/biome_service/src/file_handlers/html.rs
🧬 Code graph analysis (1)
crates/biome_service/src/file_handlers/html.rs (4)
packages/@biomejs/backend-jsonrpc/src/workspace.ts (9)
DocumentFileSource
(9403-9411)CodeAction
(9626-9630)FixAction
(9750-9759)FixFileMode
(9728-9731)FixFileResult
(9732-9749)PullActionsResult
(9623-9625)CssFileSource
(9427-9429)Applicability
(9677-9677)BiomePath
(9-9)crates/biome_service/src/file_handlers/mod.rs (12)
is_diagnostic_error
(811-830)new
(542-556)new
(771-785)new
(1059-1077)new
(1391-1405)new
(1560-1570)filter
(1231-1231)filter
(1231-1231)filter
(1248-1248)filter
(1248-1248)filter
(1424-1424)filter
(1442-1442)crates/biome_service/src/file_handlers/json.rs (15)
settings
(370-370)settings
(374-374)settings
(378-378)settings
(392-392)settings
(417-417)settings
(433-433)settings
(451-451)settings
(465-465)workspace
(580-580)params
(511-511)params
(630-630)params
(737-737)code_actions
(561-622)parse
(385-400)fix_all
(625-757)crates/biome_service/src/settings.rs (2)
analyzer_options
(1100-1120)matches
(1026-1037)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (15)
- GitHub Check: Bench (biome_module_graph)
- GitHub Check: Bench (biome_css_formatter)
- GitHub Check: Bench (biome_css_analyze)
- GitHub Check: Bench (biome_css_parser)
- GitHub Check: Bench (biome_configuration)
- GitHub Check: Bench (biome_graphql_parser)
- GitHub Check: Bench (biome_graphql_formatter)
- GitHub Check: Bench (biome_json_analyze)
- GitHub Check: Bench (biome_json_formatter)
- GitHub Check: Bench (biome_json_parser)
- GitHub Check: Bench (biome_package)
- GitHub Check: autofix
- GitHub Check: Bench (biome_js_analyze)
- GitHub Check: Bench (biome_js_parser)
- GitHub Check: Bench (biome_js_formatter)
🔇 Additional comments (4)
crates/biome_service/src/file_handlers/json.rs (1)
699-738
: Critical structural error: duplicated nested loop inside ApplySuppressions arm.Lines 699-738 create a second
for action in signal.actions()
loop and a secondmatch params.fix_file_mode
whilst already inside theApplySuppressions
arm (line 698) of the first match. This nested duplication makes no sense and will break the logic entirely.Additionally, lines 700-703 skip suppression actions even though we're in
ApplySuppressions
mode, which contradicts the mode's purpose.The correct fix, as suggested in the past review comment, is to conditionally skip suppression actions only in
SafeFixes
andSafeAndUnsafeFixes
modes. Remove the duplicated structure and apply this diff:for action in signal.actions() { - // suppression actions should not be part of the fixes (safe or suggested) - if action.is_suppression() { - continue; - } - match params.fix_file_mode { FixFileMode::SafeFixes => { + // suppression actions should not be part of safe fixes + if action.is_suppression() { + continue; + } if action.applicability == Applicability::MaybeIncorrect { skipped_suggested_fixes += 1; } if action.applicability == Applicability::Always { errors = errors.saturating_sub(1); return ControlFlow::Break(action); } } FixFileMode::SafeAndUnsafeFixes => { + // suppression actions should not be part of safe and unsafe fixes + if action.is_suppression() { + continue; + } if matches!( action.applicability, Applicability::Always | Applicability::MaybeIncorrect ) { errors = errors.saturating_sub(1); return ControlFlow::Break(action); } } FixFileMode::ApplySuppressions => { - for action in signal.actions() { - // suppression actions should not be part of the fixes (safe or suggested) - if action.is_suppression() { - continue; - } - - match params.fix_file_mode { - FixFileMode::SafeFixes => { - // suppression actions should not be part of safe fixes - if action.is_suppression() { - continue; - } - if action.applicability == Applicability::MaybeIncorrect { - skipped_suggested_fixes += 1; - } - if action.applicability == Applicability::Always { - errors = errors.saturating_sub(1); - return ControlFlow::Break(action); - } - } - FixFileMode::SafeAndUnsafeFixes => { - // suppression actions should not be part of safe and unsafe fixes - if action.is_suppression() { - continue; - } - if matches!( - action.applicability, - Applicability::Always | Applicability::MaybeIncorrect - ) { - errors = errors.saturating_sub(1); - return ControlFlow::Break(action); - } - } - FixFileMode::ApplySuppressions => { - if action.is_suppression() { - return ControlFlow::Break(action); - } - } - } - } + if action.is_suppression() { + return ControlFlow::Break(action); + } } } }Likely an incorrect or invalid review comment.
crates/biome_service/src/file_handlers/html.rs (3)
668-706
: Solid lint integration.The implementation properly wires up the HTML analyzer with visitor building, filter construction, and signal processing. Follows the JSON handler pattern correctly.
708-767
: Code actions implementation looks good.The function now properly extracts analyzer options, builds the visitor with selectors and project layout, and collects actions from analysis signals. The HTML file source check at line 727 prevents non-HTML files from proceeding—nice guard.
769-899
: Fix-all workflow implemented correctly.The iterative mutation loop with proper FixFileMode handling addresses the previous review concerns:
- Suppression checks are now inside SafeFixes/SafeAndUnsafeFixes branches (not filtered out early)
- ApplySuppressions branch can see suppression actions
- Root type validation prevents broken AST
- Optional formatting at the end
Well done!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
♻️ Duplicate comments (1)
crates/biome_service/src/file_handlers/json.rs (1)
674-677
: Early suppression filter makes ApplySuppressions mode unreachable.This early filter prevents all suppression actions from reaching the match statement below, including the
ApplySuppressions
branch that needs to process them.Remove this early filter—move suppression checks into the appropriate branches:
for action in signal.actions() { - // suppression actions should not be part of the fixes (safe or suggested) - if action.is_suppression() { - continue; - } - match params.fix_file_mode {
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
crates/biome_service/src/file_handlers/html.rs
(3 hunks)crates/biome_service/src/file_handlers/json.rs
(1 hunks)
🧰 Additional context used
📓 Path-based instructions (3)
crates/biome_*/**
📄 CodeRabbit inference engine (CLAUDE.md)
Place core crates under /crates/biome_*/
Files:
crates/biome_service/src/file_handlers/html.rs
crates/biome_service/src/file_handlers/json.rs
**/*.{rs,toml}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Before committing, format Rust and TOML files (e.g., via
just f
/just format
)
Files:
crates/biome_service/src/file_handlers/html.rs
crates/biome_service/src/file_handlers/json.rs
**/*.rs
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Document rules, assists, and options via inline rustdoc in Rust source
Files:
crates/biome_service/src/file_handlers/html.rs
crates/biome_service/src/file_handlers/json.rs
🧬 Code graph analysis (2)
crates/biome_service/src/file_handlers/html.rs (3)
packages/@biomejs/backend-jsonrpc/src/workspace.ts (8)
DocumentFileSource
(9403-9411)CodeAction
(9626-9630)FixAction
(9750-9759)FixFileMode
(9728-9731)FixFileResult
(9732-9749)PullActionsResult
(9623-9625)CssFileSource
(9427-9429)Applicability
(9677-9677)crates/biome_service/src/file_handlers/mod.rs (12)
is_diagnostic_error
(811-830)new
(542-556)new
(771-785)new
(1059-1077)new
(1391-1405)new
(1560-1570)filter
(1231-1231)filter
(1231-1231)filter
(1248-1248)filter
(1248-1248)filter
(1424-1424)filter
(1442-1442)crates/biome_service/src/file_handlers/json.rs (15)
settings
(370-370)settings
(374-374)settings
(378-378)settings
(392-392)settings
(417-417)settings
(433-433)settings
(451-451)settings
(465-465)workspace
(580-580)params
(511-511)params
(630-630)params
(774-774)code_actions
(561-622)parse
(385-400)fix_all
(625-794)
crates/biome_service/src/file_handlers/json.rs (2)
crates/biome_analyze/src/rule.rs (2)
applicability
(630-634)applicability
(1513-1515)packages/@biomejs/backend-jsonrpc/src/workspace.ts (2)
FixFileMode
(9728-9731)Applicability
(9677-9677)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (21)
- GitHub Check: Test (depot-ubuntu-24.04-arm-16)
- GitHub Check: Documentation
- GitHub Check: Test (depot-windows-2022-16)
- GitHub Check: Lint project (depot-ubuntu-24.04-arm-16)
- GitHub Check: Lint project (depot-windows-2022)
- GitHub Check: autofix
- GitHub Check: Check Dependencies
- GitHub Check: Bench (biome_graphql_parser)
- GitHub Check: Bench (biome_graphql_formatter)
- GitHub Check: Bench (biome_css_parser)
- GitHub Check: Bench (biome_css_analyze)
- GitHub Check: Bench (biome_package)
- GitHub Check: Bench (biome_css_formatter)
- GitHub Check: Bench (biome_js_analyze)
- GitHub Check: Bench (biome_json_formatter)
- GitHub Check: Bench (biome_json_analyze)
- GitHub Check: Bench (biome_js_formatter)
- GitHub Check: Bench (biome_js_parser)
- GitHub Check: Bench (biome_json_parser)
- GitHub Check: Bench (biome_configuration)
- GitHub Check: Bench (biome_module_graph)
🔇 Additional comments (3)
crates/biome_service/src/file_handlers/html.rs (3)
668-706
: Well done on the lint implementation!The implementation follows the established pattern from the JSON handler and correctly integrates HTML analysis. The flow from building analyzer options through visitor configuration to signal processing is sound.
708-767
: Solid code_actions implementation!The implementation correctly integrates HTML analysis and follows the established pattern. Past review issues (GraphQL checks) have been properly addressed—the HTML file source check and debug span are now correct.
769-898
: Excellent fix_all implementation—past critical issue resolved!The fix_all logic is now correct. Unlike earlier versions, suppressions are no longer pre-filtered before the mode dispatch, which means
ApplySuppressions
can actually see and process suppression actions. Each mode properly handles its intended action types:
SafeFixes
andSafeAndUnsafeFixes
skip suppressionsApplySuppressions
only processes suppressionsThe implementation follows the established pattern and correctly handles mutation application, error tracking, and optional formatting.
Summary
This PR adds the
biome_html_analyze
to the project, and it adds the relevant plumbing inside the workspace.I added just one rule for now:
noHeaderScope
, an easy one to implement.Test Plan
Added new tests
Docs
biomejs/website#3170