{"$schema":"https://json.schemastore.org/sarif-2.1.0.json","version":"2.1.0","runs":[{"tool":{"driver":{"name":"codehealth","informationUri":"https://codehealth.canine.dev","rules":[{"id":"D1","name":"Cyclomatic Complexity","shortDescription":{"text":"Cyclomatic Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D1"},{"id":"D2","name":"Cognitive Complexity","shortDescription":{"text":"Cognitive Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D2"},{"id":"D3","name":"God Classes","shortDescription":{"text":"God Classes"},"helpUri":"https://codehealth.canine.dev/dimensions/D3"},{"id":"D4","name":"Code Duplication","shortDescription":{"text":"Code Duplication"},"helpUri":"https://codehealth.canine.dev/dimensions/D4"},{"id":"D5","name":"Coupling","shortDescription":{"text":"Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D5"},{"id":"D9","name":"Test Distribution","shortDescription":{"text":"Test Distribution"},"helpUri":"https://codehealth.canine.dev/dimensions/D9"},{"id":"D11","name":"Test Reliability","shortDescription":{"text":"Test Reliability"},"helpUri":"https://codehealth.canine.dev/dimensions/D11"},{"id":"D12","name":"Dependency Hygiene","shortDescription":{"text":"Dependency Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/D12"},{"id":"D13","name":"Secret Scanning","shortDescription":{"text":"Secret Scanning"},"helpUri":"https://codehealth.canine.dev/dimensions/D13","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"D15","name":"Churn \u00D7 Complexity Hotspots","shortDescription":{"text":"Churn \u00D7 Complexity Hotspots"},"helpUri":"https://codehealth.canine.dev/dimensions/D15"},{"id":"D16","name":"Bus Factor","shortDescription":{"text":"Bus Factor"},"helpUri":"https://codehealth.canine.dev/dimensions/D16"},{"id":"D17","name":"Explicit Debt","shortDescription":{"text":"Explicit Debt"},"helpUri":"https://codehealth.canine.dev/dimensions/D17"},{"id":"D19","name":"Documentation Quality","shortDescription":{"text":"Documentation Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D19"},{"id":"D20","name":"ADR Quality","shortDescription":{"text":"ADR Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D20"},{"id":"D21","name":"Naming Consistency","shortDescription":{"text":"Naming Consistency"},"helpUri":"https://codehealth.canine.dev/dimensions/D21"},{"id":"D22","name":"Internal API Consistency","shortDescription":{"text":"Internal API Consistency"},"helpUri":"https://codehealth.canine.dev/dimensions/D22"},{"id":"D23","name":"Boundary Type-Coupling","shortDescription":{"text":"Boundary Type-Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D23"},{"id":"D26","name":"Project Cohesion","shortDescription":{"text":"Project Cohesion"},"helpUri":"https://codehealth.canine.dev/dimensions/D26"},{"id":"D28","name":"Secrets (history)","shortDescription":{"text":"Secrets (history)"},"helpUri":"https://codehealth.canine.dev/dimensions/D28","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"D29","name":"Static Analysis (SAST)","shortDescription":{"text":"Static Analysis (SAST)"},"helpUri":"https://codehealth.canine.dev/dimensions/D29","relationships":[{"target":{"id":"CWE-79","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-94","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-77","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-79","CWE-89","CWE-78","CWE-94","CWE-77"]}},{"id":"D30","name":"Dependency Vulnerabilities","shortDescription":{"text":"Dependency Vulnerabilities"},"helpUri":"https://codehealth.canine.dev/dimensions/D30","relationships":[{"target":{"id":"CWE-1395","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-937","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1395","CWE-937"]}},{"id":"D31","name":"IaC \u0026 Container Security","shortDescription":{"text":"IaC \u0026 Container Security"},"helpUri":"https://codehealth.canine.dev/dimensions/D31","relationships":[{"target":{"id":"CWE-1032","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-732","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-16","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1032","CWE-732","CWE-16"]}},{"id":"D34","name":"Knowledge Freshness","shortDescription":{"text":"Knowledge Freshness"},"helpUri":"https://codehealth.canine.dev/dimensions/D34"},{"id":"D35","name":"Change Coupling","shortDescription":{"text":"Change Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D35"},{"id":"D36","name":"Supply-chain Provenance \u0026 Signing","shortDescription":{"text":"Supply-chain Provenance \u0026 Signing"},"helpUri":"https://codehealth.canine.dev/dimensions/D36","relationships":[{"target":{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1357","CWE-494"]}},{"id":"D43","name":"Malicious Dependencies","shortDescription":{"text":"Malicious Dependencies"},"helpUri":"https://codehealth.canine.dev/dimensions/D43","relationships":[{"target":{"id":"CWE-506","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-506"]}},{"id":"D44","name":"Platform End-of-Life","shortDescription":{"text":"Platform End-of-Life"},"helpUri":"https://codehealth.canine.dev/dimensions/D44"},{"id":"AX10","name":"Code composition","shortDescription":{"text":"Code composition"},"helpUri":"https://codehealth.canine.dev/dimensions/AX10"},{"id":"AX3","name":"Project dependency cycles","shortDescription":{"text":"Project dependency cycles"},"helpUri":"https://codehealth.canine.dev/dimensions/AX3"},{"id":"AX4","name":"Dependency direction","shortDescription":{"text":"Dependency direction"},"helpUri":"https://codehealth.canine.dev/dimensions/AX4"},{"id":"AX8","name":"Test isolation","shortDescription":{"text":"Test isolation"},"helpUri":"https://codehealth.canine.dev/dimensions/AX8"},{"id":"AX9","name":"CQS / query purity","shortDescription":{"text":"CQS / query purity"},"helpUri":"https://codehealth.canine.dev/dimensions/AX9"},{"id":"AXB2","name":"Runtime readiness","shortDescription":{"text":"Runtime readiness"},"helpUri":"https://codehealth.canine.dev/dimensions/AXB2"},{"id":"M1","name":"Documentation (README)","shortDescription":{"text":"Documentation (README)"},"helpUri":"https://codehealth.canine.dev/dimensions/M1"},{"id":"M2","name":"Architecture documentation","shortDescription":{"text":"Architecture documentation"},"helpUri":"https://codehealth.canine.dev/dimensions/M2"},{"id":"M3","name":"Folder \u0026 project structure","shortDescription":{"text":"Folder \u0026 project structure"},"helpUri":"https://codehealth.canine.dev/dimensions/M3"},{"id":"M4","name":"Documentation accuracy","shortDescription":{"text":"Documentation accuracy"},"helpUri":"https://codehealth.canine.dev/dimensions/M4"},{"id":"P1","name":"CI/CD gates","shortDescription":{"text":"CI/CD gates"},"helpUri":"https://codehealth.canine.dev/dimensions/P1"},{"id":"P12","name":"CI test-gate honesty","shortDescription":{"text":"CI test-gate honesty"},"helpUri":"https://codehealth.canine.dev/dimensions/P12"},{"id":"P2","name":"Observability","shortDescription":{"text":"Observability"},"helpUri":"https://codehealth.canine.dev/dimensions/P2"},{"id":"P3","name":"Security \u0026 performance tooling","shortDescription":{"text":"Security \u0026 performance tooling"},"helpUri":"https://codehealth.canine.dev/dimensions/P3"},{"id":"P4","name":"Deployment \u0026 Rollback","shortDescription":{"text":"Deployment \u0026 Rollback"},"helpUri":"https://codehealth.canine.dev/dimensions/P4"},{"id":"P6","name":"Release Hygiene","shortDescription":{"text":"Release Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/P6"},{"id":"PF3","name":"Async \u0026 latency hygiene","shortDescription":{"text":"Async \u0026 latency hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/PF3"},{"id":"R1","name":"Type Safety","shortDescription":{"text":"Type Safety"},"helpUri":"https://codehealth.canine.dev/dimensions/R1"},{"id":"R10","name":"Code Duplication","shortDescription":{"text":"Code Duplication"},"helpUri":"https://codehealth.canine.dev/dimensions/R10"},{"id":"R11","name":"Import Boundaries","shortDescription":{"text":"Import Boundaries"},"helpUri":"https://codehealth.canine.dev/dimensions/R11"},{"id":"R2","name":"Cyclomatic Complexity","shortDescription":{"text":"Cyclomatic Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/R2"},{"id":"R3","name":"Large Files","shortDescription":{"text":"Large Files"},"helpUri":"https://codehealth.canine.dev/dimensions/R3"},{"id":"R4","name":"Test Coverage","shortDescription":{"text":"Test Coverage"},"helpUri":"https://codehealth.canine.dev/dimensions/R4"},{"id":"R5","name":"Dependency Freshness","shortDescription":{"text":"Dependency Freshness"},"helpUri":"https://codehealth.canine.dev/dimensions/R5"},{"id":"R6","name":"Tooling","shortDescription":{"text":"Tooling"},"helpUri":"https://codehealth.canine.dev/dimensions/R6"},{"id":"R7","name":"Dead Code","shortDescription":{"text":"Dead Code"},"helpUri":"https://codehealth.canine.dev/dimensions/R7"},{"id":"R8","name":"Dependency Hygiene","shortDescription":{"text":"Dependency Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/R8"},{"id":"R9","name":"Circular Imports","shortDescription":{"text":"Circular Imports"},"helpUri":"https://codehealth.canine.dev/dimensions/R9"},{"id":"SC1","name":"Supply-chain hygiene","shortDescription":{"text":"Supply-chain hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/SC1"},{"id":"X9","name":"Subsumed condition operand","shortDescription":{"text":"Subsumed condition operand"},"helpUri":"https://codehealth.canine.dev/dimensions/X9"}]}},"results":[{"ruleId":"D1","level":"warning","message":{"text":"Evaluator::exec_intrinsic (cyclomatic 198): Evaluator::exec_intrinsic has cyclomatic complexity 198 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"c758cead91b92ff95920c4df53815483eba6121c466ec94e365dbd4d6c5221c2"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_completion::context::analysis::classify_name_ref (cyclomatic 152): ide_completion::context::analysis::classify_name_ref has cyclomatic complexity 152 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context/analysis.rs"},"region":{"startLine":952}}}],"partialFingerprints":{"codehealthFindingId/v1":"eaef3adf237d21df6a99c7eb328b1be772c12572ed1e4cf21447e7e70ce0a529"}},{"ruleId":"D1","level":"warning","message":{"text":"MirLowerCtx::lower_expr_to_place_without_adjust (cyclomatic 131): MirLowerCtx::lower_expr_to_place_without_adjust has cyclomatic complexity 131 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower.rs"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc6a43431f320b1befc5ee212c4e3f7ec56f3995a5ac6216fa464b31ed292fa7"}},{"ruleId":"D1","level":"warning","message":{"text":"Ty::hir_fmt (cyclomatic 117): Ty::hir_fmt has cyclomatic complexity 117 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":1282}}}],"partialFingerprints":{"codehealthFindingId/v1":"55a8a665a88f3f2a006c73ead0b62ceddb68e19c70ea98bd8a5f0197a8131362"}},{"ruleId":"D1","level":"warning","message":{"text":"Evaluator::eval_rvalue (cyclomatic 100): Evaluator::eval_rvalue has cyclomatic complexity 100 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":1177}}}],"partialFingerprints":{"codehealthFindingId/v1":"5798858baace3cdfc4355f841d518ca02fdb40466cc20411191633e68ddc6fc4"}},{"ruleId":"D1","level":"warning","message":{"text":"rust_analyzer::config::patch_old_style::patch_json_for_outdated_configs (cyclomatic 95): rust_analyzer::config::patch_old_style::patch_json_for_outdated_configs has cyclomatic complexity 95 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/config/patch_old_style.rs"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"22894dda9c2a058bb6b003caabd72d43a2341033722a3c310a7612d839d02367"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_diagnostics::semantic_diagnostics (cyclomatic 92): ide_diagnostics::semantic_diagnostics has cyclomatic complexity 92 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/lib.rs"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3d6b40a207e841a9b1d4ff5af7c4d66f1bc4c837eb1a4f24ec2d11ac021c3f0"}},{"ruleId":"D1","level":"warning","message":{"text":"ExprCollector::maybe_collect_expr (cyclomatic 89): ExprCollector::maybe_collect_expr has cyclomatic complexity 89 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":1417}}}],"partialFingerprints":{"codehealthFindingId/v1":"68fbf91819c525f8995423766608026bb63ef636472693c650a34ad5f1feadbd"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceContext::infer_expr_inner (cyclomatic 84): InferenceContext::infer_expr_inner has cyclomatic complexity 84 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/expr.rs"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"944229612c07b02f0f1607aaad01c65f52f5086a58c97bd5d5868187901a0d5d"}},{"ruleId":"D1","level":"warning","message":{"text":"rust_analyzer::lsp::to_proto::semantic_token_type_and_modifiers (cyclomatic 82): rust_analyzer::lsp::to_proto::semantic_token_type_and_modifiers has cyclomatic complexity 82 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/lsp/to_proto.rs"},"region":{"startLine":817}}}],"partialFingerprints":{"codehealthFindingId/v1":"beac79acac94c8a67eef1895cd37cf16e2e254682294294f842c3a6627ce72fc"}},{"ruleId":"D1","level":"warning","message":{"text":"Printer::print_expr_in (cyclomatic 79): Printer::print_expr_in has cyclomatic complexity 79 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/pretty.rs"},"region":{"startLine":531}}}],"partialFingerprints":{"codehealthFindingId/v1":"042095507246aef914cda9d7ea0b72ff10b3b8920edf01460ccd6ae885d2e248"}},{"ruleId":"D1","level":"warning","message":{"text":"GlobalState::handle_event (cyclomatic 74): GlobalState::handle_event has cyclomatic complexity 74 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/main_loop.rs"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"24a17b710a71a0a931002a4b7992f1b5677ae3b7add9c1c1ad1c43ca717c3a40"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_completion::completions::expr::complete_expr_path (cyclomatic 73): ide_completion::completions::expr::complete_expr_path has cyclomatic complexity 73 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/expr.rs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"d26859731792d3f42c535b880da4421948e8c3ce549532490ebb1ea449e20c1f"}},{"ruleId":"D1","level":"warning","message":{"text":"hir_def::attrs::match_attr_flags (cyclomatic 71): hir_def::attrs::match_attr_flags has cyclomatic complexity 71 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/attrs.rs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"53764b6b0ba4ecb4081f06d34bd2202e4d9f522ff44fcfeeb07e1672df7a76b0"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::hover::render::definition (cyclomatic 64): ide::hover::render::definition has cyclomatic complexity 64 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover/render.rs"},"region":{"startLine":446}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6e9930db01209febd33fabedbfd65cc120086da49fd02fb31a5b7a0e3d6ae67"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::syntax_highlighting::highlight::highlight_def (cyclomatic 61): ide::syntax_highlighting::highlight::highlight_def has cyclomatic complexity 61 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting/highlight.rs"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"88a9f4f7535b81dc94008a760edbf11a3fb0a8a9a5e1699e081625d8cc4977d2"}},{"ruleId":"D1","level":"warning","message":{"text":"TokenStream::from_str (cyclomatic 60): TokenStream::from_str has cyclomatic complexity 60 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-srv/src/token_stream.rs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee09cc3cf9c0799ccaaf42459781bd385394173179742d9de04a61b1135a9ecd"}},{"ruleId":"D1","level":"warning","message":{"text":"AnyDiagnostic::inference_diagnostic (cyclomatic 59): AnyDiagnostic::inference_diagnostic has cyclomatic complexity 59 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/diagnostics.rs"},"region":{"startLine":1549}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa055b1a86afcee4d9d887706b14078ba2c15c64f982d3d21af647b82a21cdfe"}},{"ruleId":"D1","level":"warning","message":{"text":"hir_ty::layout::layout_of_ty_query (cyclomatic 59): hir_ty::layout::layout_of_ty_query has cyclomatic complexity 59 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/layout.rs"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2fe02d41a20824d8d7bb0c9c3cb0989437be4e50982e7900e14acf6796c90da"}},{"ruleId":"D1","level":"warning","message":{"text":"hir_expand::builtin::derive_macro::coerce_pointee_expand (cyclomatic 57): hir_expand::builtin::derive_macro::coerce_pointee_expand has cyclomatic complexity 57 (threshold 15). Of this number, 33 points are the body\u0027s own statements and 24 belong to 4 function items inside it that branch. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/builtin/derive_macro.rs"},"region":{"startLine":1128}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4670c67070747ceb95355caf9d52dbc4e7fd7b90d2aa6e6ab891cfa8c57f90e"}},{"ruleId":"D1","level":"warning","message":{"text":"hir_ty::display::render_const_scalar_inner (cyclomatic 57): hir_ty::display::render_const_scalar_inner has cyclomatic complexity 57 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":820}}}],"partialFingerprints":{"codehealthFindingId/v1":"155e2a78415be61477a3ddf1fd6309dd8bd42ee646324daf20bd8ac7a4bc95df"}},{"ruleId":"D1","level":"warning","message":{"text":"SymbolCollector::collect_from_module (cyclomatic 53): SymbolCollector::collect_from_module has cyclomatic complexity 53 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/symbols.rs"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddc06539ba537d9e4b057398c43b1a05cc2ef3c0ee37f886fd4fa6bcad1f4cc2"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::inlay_hints::adjustment::hints (cyclomatic 53): ide::inlay_hints::adjustment::hints has cyclomatic complexity 53 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints/adjustment.rs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"126b17b81f08d427711705ff8f20612afa50b86d9666635d656d257ab289d709"}},{"ruleId":"D1","level":"warning","message":{"text":"Converter::extend_token (cyclomatic 50): Converter::extend_token has cyclomatic complexity 50 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/lexed_str.rs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb818ee45c639905ec46dbfc91f2c3bbca07042f5eafdbc69622154c045d349a"}},{"ruleId":"D1","level":"warning","message":{"text":"ExprCollector::lower_inline_asm (cyclomatic 49): ExprCollector::lower_inline_asm has cyclomatic complexity 49 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower/asm.rs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"5855dff5160f6e17951ec36babb82482922b7153ea2cfeef7f7259e9689e4d61"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_completion::context::analysis::expected_type_and_name (cyclomatic 49): ide_completion::context::analysis::expected_type_and_name has cyclomatic complexity 49 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context/analysis.rs"},"region":{"startLine":591}}}],"partialFingerprints":{"codehealthFindingId/v1":"82e2e100db400cbe27ce1cd41921bbec2781234876dca93c267f45c952064bef"}},{"ruleId":"D1","level":"warning","message":{"text":"AnalysisStats::run_inference (cyclomatic 49): AnalysisStats::run_inference has cyclomatic complexity 49 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":774}}}],"partialFingerprints":{"codehealthFindingId/v1":"278eaea9394c6cee581819f28adf5b0912f10fd5bdb1e635164f5032063ae80f"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceContext::resolve_variant (cyclomatic 48): InferenceContext::resolve_variant has cyclomatic complexity 48 (threshold 15). Of this number, 47 points are the body\u0027s own statements and 1 belongs to one function item inside it that branches. This file\u0027s own header attributes it to another copyright holder, so it is code this repository carries rather than code it wrote: restructuring the body in place forks it from upstream and turns every future re-sync into a manual merge. The performable moves are to leave the body as close to its upstream form as possible and keep it behind a narrow interface of your own, and to re-sync it when upstream changes \u2014 or, if it has already diverged far enough that you maintain it here, adopt it deliberately and then split the body into named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":2225}}}],"partialFingerprints":{"codehealthFindingId/v1":"451d93d4025400b391e757da9a623efb782c00bc6f9f0e40e16d564ff6635ad8"}},{"ruleId":"D1","level":"warning","message":{"text":"Definition::search_scope (cyclomatic 48): Definition::search_scope has cyclomatic complexity 48 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec92a7c41f605874bba4d45b3c7e8627493179186fda83059d3566786f479813"}},{"ruleId":"D1","level":"warning","message":{"text":"AnalysisStats::run (cyclomatic 48): AnalysisStats::run has cyclomatic complexity 48 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"b10559b7856bea50dc54ca3ed9c20f18d5295b248809473d48f229594047d1ae"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::syntax_highlighting::traverse (cyclomatic 47): ide::syntax_highlighting::traverse has cyclomatic complexity 47 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting.rs"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5ba02d0856de437fb630b62855830633de5b21345110e5521b76c3c05eada2e"}},{"ruleId":"D1","level":"warning","message":{"text":"MirLowerCtx::pattern_match_inner (cyclomatic 46): MirLowerCtx::pattern_match_inner has cyclomatic complexity 46 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower/pattern_matching.rs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2c3f5033170507f502cb3f0dd4d0ba9e60eda0a593feae61fcc0a12ad916ebc"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_assists::handlers::inline_call::inline (cyclomatic 46): ide_assists::handlers::inline_call::inline has cyclomatic complexity 46 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/inline_call.rs"},"region":{"startLine":338}}}],"partialFingerprints":{"codehealthFindingId/v1":"c695a077ce23b9ce5f344d2de4402844725920b23d51f686b21f300d72656715"}},{"ruleId":"D1","level":"warning","message":{"text":"SourceAnalyzer::resolve_path (cyclomatic 45): SourceAnalyzer::resolve_path has cyclomatic complexity 45 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":1157}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6908410508b2beba2356ebbdc4eb8fcc040b133f7b950a9cde065d3fd4b2cef"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_completion::completions::postfix::complete_postfix (cyclomatic 45): ide_completion::completions::postfix::complete_postfix has cyclomatic complexity 45 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/postfix.rs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"d85cc24adf4806005138d17b50566dac79a2d82fdfa1ebe58660113c847051fa"}},{"ruleId":"D1","level":"warning","message":{"text":"mbe::expander::matcher::match_loop_inner (cyclomatic 45): mbe::expander::matcher::match_loop_inner has cyclomatic complexity 45 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/expander/matcher.rs"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"377c995882f34a50fbb78bb3c6478a05c971dc7e02941b7463ee14c4e2c46106"}},{"ruleId":"D1","level":"warning","message":{"text":"ErasedFileAstId::kind_typed (cyclomatic 45): ErasedFileAstId::kind_typed has cyclomatic complexity 45 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/span/src/ast_id.rs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"ace1054cf1ae3b8bf368e81c84c9f2a3d90a02438c2c1944026cb54a085358e0"}},{"ruleId":"D1","level":"warning","message":{"text":"hir_def::hir::format_args::parse (cyclomatic 42): hir_def::hir::format_args::parse has cyclomatic complexity 42 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/hir/format_args.rs"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f92104f06b51eb8e3687033c17b5dcc87ff5cee9ea7e104470549188a2df734"}},{"ruleId":"D1","level":"warning","message":{"text":"Resolver::resolve_path_in_value_ns_with_prefix_info (cyclomatic 41): Resolver::resolve_path_in_value_ns_with_prefix_info has cyclomatic complexity 41 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/resolver.rs"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"74899fdadeca199811f8bc9bc0176855ef12843479f56d8ec54b8dfbe0aa7da2"}},{"ruleId":"D1","level":"warning","message":{"text":"hir_expand::fixup::fixup_syntax (cyclomatic 41): hir_expand::fixup::fixup_syntax has cyclomatic complexity 41 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/fixup.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"93997f4881b22ff4ed2b98ea6ee481137e131942f38a67fae1dad046d3ac5b25"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_completion::completions::type::complete_type_path (cyclomatic 41): ide_completion::completions::type::complete_type_path has cyclomatic complexity 41 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/type.rs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3d3853d61598c08ca8522de8c4d0bcb316c85488ea34e0f26b754e2a69a7074"}},{"ruleId":"D1","level":"warning","message":{"text":"ExprCollector::collect_pat (cyclomatic 40): ExprCollector::collect_pat has cyclomatic complexity 40 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":2912}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ef3a374cd74cae89f2d42fca1325d42aad3e12eda407c528b613a88a2c2fa8e"}},{"ruleId":"D1","level":"warning","message":{"text":"Printer::print_pat (cyclomatic 40): Printer::print_pat has cyclomatic complexity 40 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/pretty.rs"},"region":{"startLine":896}}}],"partialFingerprints":{"codehealthFindingId/v1":"77f59b331f07d7991e51eb396671a4e7ed156544911e12b1e3bf837690fe1c87"}},{"ruleId":"D1","level":"warning","message":{"text":"ExprUseVisitor::walk_expr (cyclomatic 40): ExprUseVisitor::walk_expr has cyclomatic complexity 40 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis/expr_use_visitor.rs"},"region":{"startLine":502}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a1f5d17728a648be98dce211b570ea9b8765b4249893b742ca64272a8a2dc9e"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceContext::infer_mut_expr_without_adjust (cyclomatic 40): InferenceContext::infer_mut_expr_without_adjust has cyclomatic complexity 40 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/mutability.rs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"039bde2dfa316e3159360335097d719eef2d5a55815be33317ece7ae7b6cb82b"}},{"ruleId":"D1","level":"warning","message":{"text":"hir_ty::next_solver::consts::valtree::allocation_to_const (cyclomatic 40): hir_ty::next_solver::consts::valtree::allocation_to_const has cyclomatic complexity 40 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/consts/valtree.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c1031d84a6c75c3221182c6ddb0f63e73ef8bf727a719a523226299d06d08a2"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::syntax_highlighting::highlight::punctuation (cyclomatic 40): ide::syntax_highlighting::highlight::punctuation has cyclomatic complexity 40 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting/highlight.rs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6e15e773206d02a924c0b8b41f2652146afb91f71963db06a6c4e20c34a26e7"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_db::syntax_helpers::format_string::lex_format_specifiers (cyclomatic 40): ide_db::syntax_helpers::format_string::lex_format_specifiers has cyclomatic complexity 40 (threshold 15). Of this number, 35 points are the body\u0027s own statements and 5 belong to 2 function items inside it that branch. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/syntax_helpers/format_string.rs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"908807aadbbac841ea0758d8ff68b7c9f8f4fc9d613162cb5b77c2d768a3a29c"}},{"ruleId":"D1","level":"warning","message":{"text":"syntax_bridge::prettify_macro_expansion::prettify_macro_expansion (cyclomatic 40): syntax_bridge::prettify_macro_expansion::prettify_macro_expansion has cyclomatic complexity 40 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax-bridge/src/prettify_macro_expansion.rs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"2af97c4645104c442e37099e0a03e8acb9456f9d8e8ddbb99091735694b48e82"}},{"ruleId":"D1","level":"warning","message":{"text":"FindUsages::search (cyclomatic 39): FindUsages::search has cyclomatic complexity 39 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":929}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3653b42cd14e28067fba4f2b5d8d42beec43fd976fe544112944e39e26ce839"}},{"ruleId":"D1","level":"warning","message":{"text":"ModCollector::collect (cyclomatic 38): ModCollector::collect has cyclomatic complexity 38 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":1898}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e0d1eb7f4ba66add31fd0fd50606a9bb7c16a3498bab4a1871c93c732f8059e"}},{"ruleId":"D1","level":"warning","message":{"text":"hir_def::expr_store::lower::path::lower_path (cyclomatic 38): hir_def::expr_store::lower::path::lower_path has cyclomatic complexity 38 (threshold 15). Of this number, 37 points are the body\u0027s own statements and 1 belongs to one function item inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower/path.rs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"38766abccd08b46bc40fc3ee809e1b64927c7fc394919791636a04a24f2beed8"}},{"ruleId":"D1","level":"warning","message":{"text":"parser::grammar::items::opt_item (cyclomatic 38): parser::grammar::items::opt_item has cyclomatic complexity 38 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/grammar/items.rs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e42e3a03262517811c0e410fcf5de9eb6c01fa07bd0d530f873f1812ae20f50"}},{"ruleId":"D1","level":"warning","message":{"text":"parser::grammar::expressions::atom::atom_expr (cyclomatic 37): parser::grammar::expressions::atom::atom_expr has cyclomatic complexity 37 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/grammar/expressions/atom.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"d90b028fbf84ba2807cdf84cabb83006346eb76dab4a46d46d15ad9bc448395e"}},{"ruleId":"D1","level":"warning","message":{"text":"hir_ty::display::render_const_scalar_from_valtree_inner (cyclomatic 36): hir_ty::display::render_const_scalar_from_valtree_inner has cyclomatic complexity 36 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":1095}}}],"partialFingerprints":{"codehealthFindingId/v1":"73bcafb04292b9a0b709393845470f937a5b523feadd52a31cede1d9a13f2c3a"}},{"ruleId":"D1","level":"warning","message":{"text":"hir_ty::display::write_bounds_like_dyn_trait (cyclomatic 36): hir_ty::display::write_bounds_like_dyn_trait has cyclomatic complexity 36 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":2100}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9a4212824d574e0a837ee8d059f063e3f01fc89e97c8356d7257be0e748b09b"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_assists::handlers::extract_variable::extract_variable (cyclomatic 36): ide_assists::handlers::extract_variable::extract_variable has cyclomatic complexity 36 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_variable.rs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"144606444d4d362fedbb0a75d35a40b99ea4a6fc9d796be767fd8e74c3bbcf4d"}},{"ruleId":"D1","level":"warning","message":{"text":"hir_expand::cfg_process::macro_input_callback (cyclomatic 35): hir_expand::cfg_process::macro_input_callback has cyclomatic complexity 35 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/cfg_process.rs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"e24bf25ac89caf76998d1113a8992aa6f93d4432478f86fef631fee80afb4e89"}},{"ruleId":"D1","level":"warning","message":{"text":"DiagnosticsCollector::collect_impl (cyclomatic 34): DiagnosticsCollector::collect_impl has cyclomatic complexity 34 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/diagnostics.rs"},"region":{"startLine":924}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7e3e13df21cc19ac78a08054ab8abdf82e7cc49d354aa581d6034f5de0e9394"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::inlay_hints::lifetime::hints_ (cyclomatic 34): ide::inlay_hints::lifetime::hints_ has cyclomatic complexity 34 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints/lifetime.rs"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5c0308611251c2541142ea1f35c582573e9eef338511b462f81329b25620b94"}},{"ruleId":"D1","level":"warning","message":{"text":"UnsafeVisitor::walk_expr (cyclomatic 33): UnsafeVisitor::walk_expr has cyclomatic complexity 33 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/unsafe_check.rs"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e7ef2425c205f132623c52a8555f28742df7edea0d130e4d89dea8e7fde112c"}},{"ruleId":"D1","level":"warning","message":{"text":"client.createClient (cyclomatic 33): client.createClient has cyclomatic complexity 33 (threshold 15). Most of this is not in the body itself: 6 of the 33 points are its own statements and the rest belongs to 4 function literals inside it that branch (lines 60, 197, 84, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/client.ts"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"437e479cee9221dd64f4fd4b4186920d44b4625ac2e02d9efc0dd0029aab4c03"}},{"ruleId":"D1","level":"warning","message":{"text":"ExpressionStore::visit_expr_children (cyclomatic 32): ExpressionStore::visit_expr_children has cyclomatic complexity 32 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store.rs"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"045fe3192ea0f2160fca716a25cd61df07f4b54da8f7ddac9fa26fe4e5f504c0"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceContext::infer_pat_inner (cyclomatic 32): InferenceContext::infer_pat_inner has cyclomatic complexity 32 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/pat.rs"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"f80f2370beb056522f99534e70039c146b13ed47a521a53fea9cd550ed9214e5"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_assists::handlers::convert_closure_to_fn::convert_closure_to_fn (cyclomatic 32): ide_assists::handlers::convert_closure_to_fn::convert_closure_to_fn has cyclomatic complexity 32 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_closure_to_fn.rs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"27615f0344e9d6f7bfda38fb84157a1aeb20994353eec1c7a12b8790378fc437"}},{"ruleId":"D1","level":"warning","message":{"text":"DefCollector::resolve_macros (cyclomatic 31): DefCollector::resolve_macros has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":1306}}}],"partialFingerprints":{"codehealthFindingId/v1":"461d458287d528ba319fd8e47787f420195fb7708ed07d74a4ff14bbdece6c50"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::folding_ranges::folding_ranges (cyclomatic 31): ide::folding_ranges::folding_ranges has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/folding_ranges.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"68a08e1f07936c447d6cb53ac8a8577399cd5bd716e3a1963cabcda8e975fd64"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::inlay_hints::closing_brace::hints (cyclomatic 31): ide::inlay_hints::closing_brace::hints has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints/closing_brace.rs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ad8de9e7a51e7c184ba61e27592521bfbe8c5f9a6d5cd100ea58522c5e75de4"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_completion::completions::pattern::complete_pattern (cyclomatic 31): ide_completion::completions::pattern::complete_pattern has cyclomatic complexity 31 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/pattern.rs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcb6eebda4ba1b8da3c84866a11a243e91d4cacd843c98b257ee8a6abd9da9f4"}},{"ruleId":"D1","level":"warning","message":{"text":"project_model::workspace::cargo_to_crate_graph (cyclomatic 31): project_model::workspace::cargo_to_crate_graph has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/workspace.rs"},"region":{"startLine":1262}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e0b82ce87555b2e1a786bfab8ecd93c30675db61199597f44f1788bd17e949e"}},{"ruleId":"D1","level":"warning","message":{"text":"AnalysisStats::run_body_lowering (cyclomatic 31): AnalysisStats::run_body_lowering has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":1162}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd8b9a7c44f5aa2eff0e3d6db71024a584afe88b7f91fc44222443f377e01e2d"}},{"ruleId":"D1","level":"warning","message":{"text":"syntax_bridge::to_parser_input::to_parser_input (cyclomatic 31): syntax_bridge::to_parser_input::to_parser_input has cyclomatic complexity 31 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax-bridge/src/to_parser_input.rs"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"e85e373f7dc88d29ffaebf4da9e8f838cd676de293b112a2ceec313bb37b86ac"}},{"ruleId":"D1","level":"warning","message":{"text":"syntax_bridge::convert_tokens (cyclomatic 31): syntax_bridge::convert_tokens has cyclomatic complexity 31 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax-bridge/src/lib.rs"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"66f8ca913f72b6229b7f2eaa6fffc8e47345a84c2148ec7741086d26f27ed6ff"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::moniker::def_to_kind (cyclomatic 30): ide::moniker::def_to_kind has cyclomatic complexity 30 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/moniker.rs"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"37e3feda166b61cecf6992627ae71fce561800d5adc76565c171da5fb2529bb3"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::hover::hover_offset (cyclomatic 30): ide::hover::hover_offset has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover.rs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca945f63a50969be35bce3da8abd63f6dec452b734fdb7ce95f34c07af82208f"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::syntax_highlighting::highlight::highlight_name_ref (cyclomatic 30): ide::syntax_highlighting::highlight::highlight_name_ref has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting/highlight.rs"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7113519fe66087ff1cbe6399aaf1c536d39b7ca3e90fd1225f2030b5c47a1ce"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_assists::handlers::add_missing_match_arms::add_missing_match_arms (cyclomatic 30): ide_assists::handlers::add_missing_match_arms::add_missing_match_arms has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/add_missing_match_arms.rs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"25c9c49922a0b72b8aafe399ffe43727848b2c6bf68beef6ce8cd03db49dc9fd"}},{"ruleId":"D1","level":"warning","message":{"text":"mbe::expander::transcriber::expand_subtree (cyclomatic 30): mbe::expander::transcriber::expand_subtree has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/expander/transcriber.rs"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5a6ead818baaa1a665d9e0e32266c8c9f5550a717ba0ac6fadffa14177596b6"}},{"ruleId":"D1","level":"warning","message":{"text":"GlobalState::handle_task (cyclomatic 30): GlobalState::handle_task has cyclomatic complexity 30 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/main_loop.rs"},"region":{"startLine":850}}}],"partialFingerprints":{"codehealthFindingId/v1":"888fd34026ee07a7fe78c7ff178dcfdba93e5e427cb415e703d22dfb510ad4c3"}},{"ruleId":"D1","level":"warning","message":{"text":"ExprCollector::maybe_collect_expr_as_pat (cyclomatic 29): ExprCollector::maybe_collect_expr_as_pat has cyclomatic complexity 29 (threshold 15). Of this number, 20 points are the body\u0027s own statements and 9 belong to 3 function items inside it that branch. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":2080}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b61e880c9cef7b9551fc8efa526b8d7d867dda4a59585c923bf1d35868141e1"}},{"ruleId":"D1","level":"warning","message":{"text":"Path::hir_fmt (cyclomatic 29): Path::hir_fmt has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":2682}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd970386e581614a163e681e725f0b1cce1ed7e306f2716dee5f802d90a3c474"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceContext::try_find_coercion_lub (cyclomatic 29): InferenceContext::try_find_coercion_lub has cyclomatic complexity 29 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/coerce.rs"},"region":{"startLine":926}}}],"partialFingerprints":{"codehealthFindingId/v1":"54d397982cd899ed2be23e13076c081eba58fa0b03054b701ed0459ded16db78"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_db::syntax_helpers::format_string_exprs::parse_format_exprs (cyclomatic 29): ide_db::syntax_helpers::format_string_exprs::parse_format_exprs has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/syntax_helpers/format_string_exprs.rs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbd67cbc24defe514de65000942d3e54f3728fc47b77af6dcce1f6d0c74cd97b"}},{"ruleId":"D1","level":"warning","message":{"text":"GlobalState::switch_workspaces (cyclomatic 29): GlobalState::switch_workspaces has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/reload.rs"},"region":{"startLine":467}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cdb8a135b779ee85a7aa056e84cb030cae86a0cd941a05af93c975a21fc913b"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_assists::handlers::unwrap_return_type::unwrap_return_type (cyclomatic 28): ide_assists::handlers::unwrap_return_type::unwrap_return_type has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/unwrap_return_type.rs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"76285577af4c04a384c09a75c93b12e440014cee03ca30acee43cae08d703f1a"}},{"ruleId":"D1","level":"warning","message":{"text":"Definition::label (cyclomatic 28): Definition::label has cyclomatic complexity 28 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/defs.rs"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"b370685d26ca04a6dd3e87c5eb57695366d80e5c36b205eaa56ac6096080cb06"}},{"ruleId":"D1","level":"warning","message":{"text":"AnalysisStats::run_term_search (cyclomatic 28): AnalysisStats::run_term_search has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b2e62be50d37fd25e9dc26dc597977c307bfdf792b6e0fc3cb9033f983ed0f0"}},{"ruleId":"D1","level":"warning","message":{"text":"rust_analyzer::handlers::notification::run_flycheck (cyclomatic 28): rust_analyzer::handlers::notification::run_flycheck has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/notification.rs"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e6c654329a3f849f196af2e8e779e5ac36c0974c45b11263ad55eaf144609b4"}},{"ruleId":"D1","level":"warning","message":{"text":"tt::storage::encode (cyclomatic 28): tt::storage::encode has cyclomatic complexity 28 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/tt/src/storage.rs"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b52feabaffd1234177f0f173eef19991df0d84165ad583ef50182447401290f"}},{"ruleId":"D1","level":"warning","message":{"text":"Expr::gen_source_code (cyclomatic 27): Expr::gen_source_code has cyclomatic complexity 27 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/term_search/expr.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"0599566aca9555ec7b33589e2cdaf3615a9c7bd7fbebee61788000a55ac97dbf"}},{"ruleId":"D1","level":"warning","message":{"text":"ExprCollector::collect_format_args_impl (cyclomatic 27): ExprCollector::collect_format_args_impl has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower/format_args.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c636de21a0a22e00147e9dcf48b297322bfacd06fe97102ac31927e3be66eff"}},{"ruleId":"D1","level":"warning","message":{"text":"Printer::print_path (cyclomatic 27): Printer::print_path has cyclomatic complexity 27 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/pretty.rs"},"region":{"startLine":1111}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d001704c3b56ee68046c8152bff712990918d01e566d4da2c8abec5c0a775f8"}},{"ruleId":"D1","level":"warning","message":{"text":"ItemScope::push_res_with_import (cyclomatic 27): ItemScope::push_res_with_import has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_scope.rs"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf07c3fd781ada3532c13f1ea594b65a38a819d87a18ea41b5a2d3513853b448"}},{"ruleId":"D1","level":"warning","message":{"text":"hir_def::attrs::parse_repr_tt (cyclomatic 27): hir_def::attrs::parse_repr_tt has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/attrs.rs"},"region":{"startLine":1272}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d421719e081b468d249c66739dc9294c5a3d56da7658b2bc5b55836a6f0a09b"}},{"ruleId":"D1","level":"warning","message":{"text":"TyLoweringContext::lower_dyn_trait (cyclomatic 27): TyLoweringContext::lower_dyn_trait has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":1011}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ab422f4838c19ae2bc4a2fccc7650e2dfb0ee71d26b573c22e448b4cafe5a0d"}},{"ruleId":"D1","level":"warning","message":{"text":"Evaluator::exec_extern_c (cyclomatic 27): Evaluator::exec_extern_c has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":397}}}],"partialFingerprints":{"codehealthFindingId/v1":"768d8c63272cb873ad556c8ace6395c21c5f9c424ba2a8859d49f7791227c887"}},{"ruleId":"D1","level":"warning","message":{"text":"Module::process_def_in_sel (cyclomatic 27): Module::process_def_in_sel has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_module.rs"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"73ab7a507694e467438baa8dab5b72f6eee3cd193fb5356bb187649a59aad594"}},{"ruleId":"D1","level":"warning","message":{"text":"CompletionRelevance::score (cyclomatic 27): CompletionRelevance::score has cyclomatic complexity 27 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: CompletionItemKind::tag (cyclomatic 37) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded function is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/item.rs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd87a39882d3676fa885a816df39ba2e8d6c624d168624aa3a41dea8f5a7c977"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_completion::context::analysis::expand (cyclomatic 27): ide_completion::context::analysis::expand has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context/analysis.rs"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"7eab01e712750a0b78ebbce17eca4e41d42b8f2ba1bfe5d0aefff98ecf80321e"}},{"ruleId":"D1","level":"warning","message":{"text":"Definition::range_for_rename (cyclomatic 27): Definition::range_for_rename has cyclomatic complexity 27 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/rename.rs"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1aa1f95d83b4da0b93768836ace9e4cbe960c61089e3882babae6fb5bbc00e3"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_db::prime_caches::parallel_prime_caches (cyclomatic 27): ide_db::prime_caches::parallel_prime_caches has cyclomatic complexity 27 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/prime_caches.rs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cd328b0a10ef0d08f252fb6aeaf1632e8225c5b67035814cb17fc01c5c4e81a"}},{"ruleId":"D1","level":"warning","message":{"text":"SemanticsImpl::descend_into_macros_impl (cyclomatic 26): SemanticsImpl::descend_into_macros_impl has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":1237}}}],"partialFingerprints":{"codehealthFindingId/v1":"90b0dc7797b2e163338b73a2127af29f8ffe18e3ad96aeceeb824cf4a6b29a09"}},{"ruleId":"D1","level":"warning","message":{"text":"Printer::print_type_ref (cyclomatic 26): Printer::print_type_ref has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/pretty.rs"},"region":{"startLine":1259}}}],"partialFingerprints":{"codehealthFindingId/v1":"93a0801aacad15b0c64646a18ade7cdb018d07abdaa1e4541753a1d5301dec11"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceContext::analyze_closure (cyclomatic 26): InferenceContext::analyze_closure has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis.rs"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef7cefb38605e386eae65f71aa7db9e7749d83c181b553baa9a3de3b9e3358da"}},{"ruleId":"D1","level":"warning","message":{"text":"Evaluator::exec_simd_intrinsic (cyclomatic 26): Evaluator::exec_simd_intrinsic has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim/simd.rs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1d6348a245afee2b6bd389b6304eb2d3e4a9275e6e6097cb139875325801529"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::file_structure::structure_node (cyclomatic 26): ide::file_structure::structure_node has cyclomatic complexity 26 (threshold 15). Of this number, 23 points are the body\u0027s own statements and 3 belong to one function item inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/file_structure.rs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e2d161d9a1558bfcb2c969c35dd9143fd5d3d34af13b68a38a8d92fa1287635"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::inlay_hints::hints (cyclomatic 26): ide::inlay_hints::hints has cyclomatic complexity 26 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints.rs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"019f2099205437dbbf7aa8145874e860f2399e1787fa155c9d817c1450567f95"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::hover::render::render_memory_layout (cyclomatic 26): ide::hover::render::render_memory_layout has cyclomatic complexity 26 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover/render.rs"},"region":{"startLine":1165}}}],"partialFingerprints":{"codehealthFindingId/v1":"76fdb97a18bdf371086bf13bccebe862da533215760dff5ea0d2d2ebde57dbbf"}},{"ruleId":"D1","level":"warning","message":{"text":"Reader::read_tokenstream (cyclomatic 26): Reader::read_tokenstream has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-api/src/legacy_protocol/msg/flat.rs"},"region":{"startLine":858}}}],"partialFingerprints":{"codehealthFindingId/v1":"3457b17b08d297582b3dff8c8726d484d330a75b57005a4de123c795eb0469ab"}},{"ruleId":"D1","level":"warning","message":{"text":"Scip::run (cyclomatic 26): Scip::run has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/scip.rs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae6bf0e063ea703a98d9189c0576a004ea47b56bd10bacb8169d82c9cc0ccc89"}},{"ruleId":"D1","level":"warning","message":{"text":"hir::source_analyzer::resolve_hir_path_ (cyclomatic 25): hir::source_analyzer::resolve_hir_path_ has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":1872}}}],"partialFingerprints":{"codehealthFindingId/v1":"064092cc508090bcfeb315bef1698e2fd7b110db25e01459871fd0494b413ae4"}},{"ruleId":"D1","level":"warning","message":{"text":"DefCollector::seed_with_top_level (cyclomatic 25): DefCollector::seed_with_top_level has cyclomatic complexity 25 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"e37ed0b75eaa4a9d581becad3579868e5a6fa280888ee62ba35be8e35b58e373"}},{"ruleId":"D1","level":"warning","message":{"text":"MirLowerCtx::lower_expr_as_place_without_adjust (cyclomatic 25): MirLowerCtx::lower_expr_as_place_without_adjust has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower/as_place.rs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"4136104cab35f50238822f65e7ec06f81853f1a5e302b7690894b29fc40a285c"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::signature_help::signature_help_for_call (cyclomatic 25): ide::signature_help::signature_help_for_call has cyclomatic complexity 25 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/signature_help.rs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3485e50b0c73c5b053c5300a33c0918f6f7256b90b3ac73e9081cd64684e2f6"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::goto_type_definition::goto_type_definition (cyclomatic 25): ide::goto_type_definition::goto_type_definition has cyclomatic complexity 25 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/goto_type_definition.rs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4f4c3362e56c3ef250c47c655a1a6b929aae0e81434771ec8ca8238c6c0eba1"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_completion::completions::pattern::complete_pattern_path (cyclomatic 25): ide_completion::completions::pattern::complete_pattern_path has cyclomatic complexity 25 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/pattern.rs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa562027f69da0a9f210576c82a2b92de07707de86a56ea558b22e421c8c4aa2"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_completion::completions::item_list::add_keywords (cyclomatic 25): ide_completion::completions::item_list::add_keywords has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/item_list.rs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0260026807659c10b393ec549b1564ea7c42e7ffc895c27e6a3226efc0319cc"}},{"ruleId":"D1","level":"warning","message":{"text":"NameRefClass::classify (cyclomatic 25): NameRefClass::classify has cyclomatic complexity 25 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing. This is NOT this file\u0027s highest cyclomatic complexity: Definition::docs_with_rangemap (cyclomatic 26) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded function is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/defs.rs"},"region":{"startLine":745}}}],"partialFingerprints":{"codehealthFindingId/v1":"160a715f792ffee94919109ac2965bc10c73f3871ca6670e5375e18c24295e59"}},{"ruleId":"D1","level":"warning","message":{"text":"Ctx::transform_path_ (cyclomatic 25): Ctx::transform_path_ has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/path_transform.rs"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"59029a724678c34b364fec784743c5117995caa7ac61c5642a5db70e4eca32f8"}},{"ruleId":"D1","level":"warning","message":{"text":"Converter::extend_literal (cyclomatic 25): Converter::extend_literal has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: parser::lexed_str::err_to_msg (cyclomatic 28) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded function is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/lexed_str.rs"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a9fa9560e0005293df9927f82fc318b086315abfbd2c2abeb0a9ad856ba90c6"}},{"ruleId":"D1","level":"warning","message":{"text":"GlobalState::process_changes (cyclomatic 25): GlobalState::process_changes has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/global_state.rs"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"5803356ccab288d86bf308c5adb41e8603d262feb742349cc362e0a6b3933f43"}},{"ruleId":"D1","level":"warning","message":{"text":"rust_analyzer::lsp::to_proto::completion_item (cyclomatic 25): rust_analyzer::lsp::to_proto::completion_item has cyclomatic complexity 25 (threshold 15). Of this number, 23 points are the body\u0027s own statements and 2 belong to one function item inside it that branches. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: rust_analyzer::lsp::to_proto::completion_item_kind (cyclomatic 37) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded function is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/lsp/to_proto.rs"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"68a65ff5321c0415b049cea36d89126282f84b9024c95b30af2078d4e691af01"}},{"ruleId":"D1","level":"warning","message":{"text":"ImportMap::collect_import_map (cyclomatic 24): ImportMap::collect_import_map has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/import_map.rs"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"266fc41443030815b2a075c5088e100a8da2d0a042c4480abba636b2f4edfb79"}},{"ruleId":"D1","level":"warning","message":{"text":"DefCollector::record_resolved_import (cyclomatic 24): DefCollector::record_resolved_import has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":882}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b6af87b76616b7c27509ac233e9283df1054e2c79ae96b55ce09e6846ffdc50"}},{"ruleId":"D1","level":"warning","message":{"text":"CastCheck::do_check (cyclomatic 24): CastCheck::do_check has cyclomatic complexity 24 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/cast.rs"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"173df976104a9a6867f95e51216e8ede80cedd9531177c1c31ad8a2c54e7d4e2"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceContext::check_record_expr_fields (cyclomatic 24): InferenceContext::check_record_expr_fields has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/expr.rs"},"region":{"startLine":968}}}],"partialFingerprints":{"codehealthFindingId/v1":"d94ab774ebbfe6849cdafcd034d029de6a05092b6a95b421d1f3a8232c762649"}},{"ruleId":"D1","level":"warning","message":{"text":"Evaluator::interpret_mir (cyclomatic 24): Evaluator::interpret_mir has cyclomatic complexity 24 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":944}}}],"partialFingerprints":{"codehealthFindingId/v1":"f86c1913dc46f848710cf215a8377c6c0d2232bd839a04fdc9f3915506539fd6"}},{"ruleId":"D1","level":"warning","message":{"text":"hir_ty::consteval::literal_ty (cyclomatic 24): hir_ty::consteval::literal_ty has cyclomatic complexity 24 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/consteval.rs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"0945b3d77790fe5cda38dee810892a8f120dae2ea2407da04f5d0b5caebdfb85"}},{"ruleId":"D1","level":"warning","message":{"text":"hir_ty::lower::resolve_type_param_assoc_type_shorthand (cyclomatic 24): hir_ty::lower::resolve_type_param_assoc_type_shorthand has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":2099}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb7f5b8a55a687ca0159c57b14d9b7d907fd052efdab776ba9c77c20272556e5"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::rename::transform_method_call_into_assoc_fn (cyclomatic 24): ide::rename::transform_method_call_into_assoc_fn has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/rename.rs"},"region":{"startLine":627}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cdb57f3ecc914cf10641ad72101241ec3ca62efd3b7140595023662e323c291"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::annotations::annotations (cyclomatic 24): ide::annotations::annotations has cyclomatic complexity 24 (threshold 15). Of this number, 20 points are the body\u0027s own statements and 4 belong to one function item inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/annotations.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca4a2d798d904c208be227357bda5792645f0d7ff2b0f2cc24af9f991b80c8e9"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::doc_links::filename_and_frag_for_def (cyclomatic 24): ide::doc_links::filename_and_frag_for_def has cyclomatic complexity 24 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/doc_links.rs"},"region":{"startLine":647}}}],"partialFingerprints":{"codehealthFindingId/v1":"49078374e33c639242639b5c2f21b5e8326becb861cfcc0ef7b8ef439508d29b"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_completion::render::render_resolution_path (cyclomatic 24): ide_completion::render::render_resolution_path has cyclomatic complexity 24 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/render.rs"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1615e9804419e34644dbb43b47bde2944e4057f05080035bd9b18967f720336"}},{"ruleId":"D1","level":"warning","message":{"text":"FindUsages::short_associated_function_fast_search::collect_possible_aliases (cyclomatic 24): FindUsages::short_associated_function_fast_search::collect_possible_aliases has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":654}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a67a0a71c4090d65de3b42b4cdb12055c746c899ff9b4273234c370e1ba9029"}},{"ruleId":"D1","level":"warning","message":{"text":"rust_analyzer::diagnostics::flycheck_to_proto::map_rust_diagnostic_to_lsp (cyclomatic 24): rust_analyzer::diagnostics::flycheck_to_proto::map_rust_diagnostic_to_lsp has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/diagnostics/flycheck_to_proto.rs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"de747aee22da51bdbc566f6680dbaa2edaef73d12b6f2ff5bd769e75832ef2f5"}},{"ruleId":"D1","level":"warning","message":{"text":"Expr::needs_parens_in_expr (cyclomatic 24): Expr::needs_parens_in_expr has cyclomatic complexity 24 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/prec.rs"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c6b398a1548911820f3412ac0bb2192cfdd206648900dbcd0d50821bd9aeda7"}},{"ruleId":"D1","level":"warning","message":{"text":"hir::display::write_function (cyclomatic 23): hir::display::write_function has cyclomatic complexity 23 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/display.rs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"79620767ef08477a84a1afbcaa15e2be26f78f8f93eebb181e3274bdea38e07e"}},{"ruleId":"D1","level":"warning","message":{"text":"hir::attrs::resolve_doc_path_on_ (cyclomatic 23): hir::attrs::resolve_doc_path_on_ has cyclomatic complexity 23 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/attrs.rs"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5fd91339cc752d441737c6101aab5bc2870b6da18813fce506d97c106b36171"}},{"ruleId":"D1","level":"warning","message":{"text":"DefCollector::push_res_and_update_glob_vis (cyclomatic 23): DefCollector::push_res_and_update_glob_vis has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":1202}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f7237f650fd727023e3d279c55e83a6e7c7d0c80e75e1d59498501606b7bff3"}},{"ruleId":"D1","level":"warning","message":{"text":"Pat::hir_fmt (cyclomatic 23): Pat::hir_fmt has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/match_check.rs"},"region":{"startLine":307}}}],"partialFingerprints":{"codehealthFindingId/v1":"e07245ca364a7a120f4aa09e730385055eaf663b68e26c77ba48cb78cfb0393c"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceContext::check_call_arguments (cyclomatic 23): InferenceContext::check_call_arguments has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/expr.rs"},"region":{"startLine":1921}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4da38ce106c159bb20eacb8638a035b3cf13070ff87e3eeb054a237c7f07a4f"}},{"ruleId":"D1","level":"warning","message":{"text":"hir_ty::lower::path::substs_from_args_and_bindings (cyclomatic 23): hir_ty::lower::path::substs_from_args_and_bindings has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":1155}}}],"partialFingerprints":{"codehealthFindingId/v1":"11079bcc8dbfdcc155c27dd77e4fa7afbff48f72a77dc3e7ee24a37c554456b1"}},{"ruleId":"D1","level":"warning","message":{"text":"hir_ty::drop::has_drop_glue_impl (cyclomatic 23): hir_ty::drop::has_drop_glue_impl has cyclomatic complexity 23 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/drop.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"6450f989141c96ccd8389e74f08496e181fd1dbe453353aa5e2c61ebf8fe764f"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::highlight_related::highlight_references (cyclomatic 23): ide::highlight_related::highlight_references has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/highlight_related.rs"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"95894389806a792b146c0da9b6489c2fbd5b74dfaec4f3fc9886503c3a597b29"}},{"ruleId":"D1","level":"warning","message":{"text":"FunctionBody::analyze_container (cyclomatic 23): FunctionBody::analyze_container has cyclomatic complexity 23 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_function.rs"},"region":{"startLine":844}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b2def598a63845ea338b6bc96b3b3195ce7472cbec0e0edf9380ef14c407d86"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_completion::completions::attribute::complete_attribute_path (cyclomatic 23): ide_completion::completions::attribute::complete_attribute_path has cyclomatic complexity 23 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/attribute.rs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"9410cd5f662ee4758e4d69c14d71da76a6e209e266d12be6932556ec784d774e"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_db::imports::insert_use::guess_granularity_from_scope (cyclomatic 23): ide_db::imports::insert_use::guess_granularity_from_scope has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/insert_use.rs"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"974cb2ab2a373ff9b757211efdf682a914193461d483044466ee1204bd3f8721"}},{"ruleId":"D1","level":"warning","message":{"text":"SourceToDefCtx::container_to_def (cyclomatic 22): SourceToDefCtx::container_to_def has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics/source_to_def.rs"},"region":{"startLine":616}}}],"partialFingerprints":{"codehealthFindingId/v1":"458ce9b179a03a4eaef2556e1d6c9ef65be799f6557cd2ae2c4e953ad15d4ca6"}},{"ruleId":"D1","level":"warning","message":{"text":"Resolver::resolve_path_in_type_ns_with_prefix_info (cyclomatic 22): Resolver::resolve_path_in_type_ns_with_prefix_info has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/resolver.rs"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6f529f2405d3cf0a251d4149cbafec8ad772bac9bb23df20637245f9bda1814"}},{"ruleId":"D1","level":"warning","message":{"text":"hir_def::expr_store::lower::lower_body (cyclomatic 22): hir_def::expr_store::lower::lower_body has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d26256076f20300c3bf6d9356a0a863e10e0e183973a1d37942ec1983cbab5a"}},{"ruleId":"D1","level":"warning","message":{"text":"TyLoweringContext::lower_ty_ext (cyclomatic 22): TyLoweringContext::lower_ty_ext has cyclomatic complexity 22 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":576}}}],"partialFingerprints":{"codehealthFindingId/v1":"881c3201f941daa46c70617d599689621708007738648265bd8e12a3f3652338"}},{"ruleId":"D1","level":"warning","message":{"text":"Evaluator::create_memory_map::rec (cyclomatic 22): Evaluator::create_memory_map::rec has cyclomatic complexity 22 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":2371}}}],"partialFingerprints":{"codehealthFindingId/v1":"9993426a9d92e3ea8dbf624419e94868552d9d75dc5fec97a10837eeec84f214"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::goto_definition::goto_definition (cyclomatic 22): ide::goto_definition::goto_definition has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/goto_definition.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7711ab712cad6d92fe8089c480e1d3dd06479de02884e00b862957028b17315"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::inlay_hints::bind_pat::hints (cyclomatic 22): ide::inlay_hints::bind_pat::hints has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints/bind_pat.rs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"065e7ad8f4c85e76f6c04e83ac07331e5ec7b5c348514d19b2b2030234ff99dc"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::join_lines::remove_newline (cyclomatic 22): ide::join_lines::remove_newline has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/join_lines.rs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"65b80e4eb880554d3ff9580183f197b68e26c99df50d3ecbe3310dcb923f627a"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_assists::handlers::add_turbo_fish::add_turbo_fish (cyclomatic 22): ide_assists::handlers::add_turbo_fish::add_turbo_fish has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/add_turbo_fish.rs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6b2ba67cb4c244caec5fff92eab89f2fb7b72dd5743ccd27fb2abcc926f33fa"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_completion::context::analysis::analyze (cyclomatic 22): ide_completion::context::analysis::analyze has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context/analysis.rs"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7006225424f72c9e1255972b58297529e8bd5746a0f7dee5c34bb0519f6af64"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_completion::completions::use_::complete_use_path (cyclomatic 22): ide_completion::completions::use_::complete_use_path has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/use_.rs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"09ce88ea9d2dd32efdf268a62a5e8a774e29c3e131d4b657aab1b2d0a9d4311e"}},{"ruleId":"D1","level":"warning","message":{"text":"mbe::expander::matcher::match_loop (cyclomatic 22): mbe::expander::matcher::match_loop has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/expander/matcher.rs"},"region":{"startLine":624}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce28f2058f3614e98c525c88317685801cbcf95f3c2e7aa843705ba34a85f046"}},{"ruleId":"D1","level":"warning","message":{"text":"parser::grammar::expressions::atom::parse_asm_expr (cyclomatic 22): parser::grammar::expressions::atom::parse_asm_expr has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/grammar/expressions/atom.rs"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e48e14c958ce19dbfd14695841a490da9b427465dcd15d74de445815b5a9636"}},{"ruleId":"D1","level":"warning","message":{"text":"Reader::read_subtree (cyclomatic 22): Reader::read_subtree has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-api/src/legacy_protocol/msg/flat.rs"},"region":{"startLine":750}}}],"partialFingerprints":{"codehealthFindingId/v1":"febc0e5429de7f74b129ff814ba613870bbd721fb9f6ccf91d71438614713047"}},{"ruleId":"D1","level":"warning","message":{"text":"GlobalState::current_status (cyclomatic 22): GlobalState::current_status has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/reload.rs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"59a641e3cd6303c5bb9e079b495c6ff9096e2dec4583ecd6fe2d9ccc49b30a61"}},{"ruleId":"D1","level":"warning","message":{"text":"hir::attrs::resolve_assoc_or_field (cyclomatic 21): hir::attrs::resolve_assoc_or_field has cyclomatic complexity 21 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/attrs.rs"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"077ee4615d9a9202e30510cfe14ef74b3f58f1eb5982dd8cb0a1d2f5ddc1bd17"}},{"ruleId":"D1","level":"warning","message":{"text":"Printer::print_mod_item (cyclomatic 21): Printer::print_mod_item has cyclomatic complexity 21 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_tree/pretty.rs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fc9fdb4667664ca0930694ff1155e96ecd981509fddd88bf05583d775d83810"}},{"ruleId":"D1","level":"warning","message":{"text":"hir_expand::builtin::fn_macro::concat_expand (cyclomatic 21): hir_expand::builtin::fn_macro::concat_expand has cyclomatic complexity 21 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing. This is NOT this file\u0027s highest cyclomatic complexity: BuiltinFnLikeExpander::find_by_name (cyclomatic 22) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded function is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/builtin/fn_macro.rs"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"883dbe246e9766523514df6059e49ff2f1adead74403a52851c4bfd3c0bc6360"}},{"ruleId":"D1","level":"warning","message":{"text":"Context::add_constraints_from_ty (cyclomatic 21): Context::add_constraints_from_ty has cyclomatic complexity 21 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/variance.rs"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"24b7b01785b62360a9efe97f715091055f949dd1885a58c1574d9b139ac48fc6"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::hover::render::literal (cyclomatic 21): ide::hover::render::literal has cyclomatic complexity 21 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover/render.rs"},"region":{"startLine":849}}}],"partialFingerprints":{"codehealthFindingId/v1":"37cf52e1df2d35840e0468255dab69ee19ae08fd99bac2b4f51e30ffd0de214a"}},{"ruleId":"D1","level":"warning","message":{"text":"mbe::expander::matcher::match_meta_var (cyclomatic 21): mbe::expander::matcher::match_meta_var has cyclomatic complexity 21 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/expander/matcher.rs"},"region":{"startLine":775}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a75bed492386ef6c23ea29fbef1f53359b6bcc6a6ba5637d5281662bf08379c"}},{"ruleId":"D1","level":"warning","message":{"text":"Config::apply_change_with_sink (cyclomatic 21): Config::apply_change_with_sink has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: rust_analyzer::config::field_props (cyclomatic 48) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded function is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/config.rs"},"region":{"startLine":1203}}}],"partialFingerprints":{"codehealthFindingId/v1":"30d7454abe53ba9b6c6802f06c665c56561ccb750e4b0eb21e7d1b0fb88eded7"}},{"ruleId":"D1","level":"warning","message":{"text":"FlycheckActor::run (cyclomatic 21): FlycheckActor::run has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/flycheck.rs"},"region":{"startLine":579}}}],"partialFingerprints":{"codehealthFindingId/v1":"72516da64bc3839ff0b4c14ba56faac17158bf1e01f99e301ef9628fa2a24b56"}},{"ruleId":"D1","level":"warning","message":{"text":"rust_analyzer::handlers::request::handle_runnables (cyclomatic 21): rust_analyzer::handlers::request::handle_runnables has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/request.rs"},"region":{"startLine":1016}}}],"partialFingerprints":{"codehealthFindingId/v1":"52025c822a658c9e093b808c3421739b9000d6f295edd802e88ac0fa5bde2e47"}},{"ruleId":"D1","level":"warning","message":{"text":"rust_analyzer::handlers::request::run_rustfmt (cyclomatic 21): rust_analyzer::handlers::request::run_rustfmt has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/request.rs"},"region":{"startLine":2405}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c2758e208b380472b42e189e8f0b9732377a0c74b66fcf2f5bd9381fb81d010"}},{"ruleId":"D1","level":"warning","message":{"text":"NotifyActor::run (cyclomatic 21): NotifyActor::run has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/vfs-notify/src/lib.rs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"9872497309e17d56a9adbc03ec24abe17fb4f16ca7c23a282f5a621b6c4ba3a9"}},{"ruleId":"D1","level":"warning","message":{"text":"AnyDiagnostic::body_validation_diagnostic (cyclomatic 20): AnyDiagnostic::body_validation_diagnostic has cyclomatic complexity 20 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/diagnostics.rs"},"region":{"startLine":1417}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5ea8ca3e7577f91f6ee605a67b59f6403c0e5fd979644e83ea350c1efec37c8"}},{"ruleId":"D1","level":"warning","message":{"text":"ExprCollector::lower_type_ref (cyclomatic 20): ExprCollector::lower_type_ref has cyclomatic complexity 20 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":746}}}],"partialFingerprints":{"codehealthFindingId/v1":"eed65ee7003b73bf5920a71d5f376486420113456990803e02161692f9d25f0e"}},{"ruleId":"D1","level":"warning","message":{"text":"ItemScope::dump (cyclomatic 20): ItemScope::dump has cyclomatic complexity 20 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_scope.rs"},"region":{"startLine":751}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fe18bca11af25b1a0656a6303798caa6a7f089890d31c093546e42278a5c06e"}},{"ruleId":"D1","level":"warning","message":{"text":"hir_def::lang_item::crate_lang_items (cyclomatic 20): hir_def::lang_item::crate_lang_items has cyclomatic complexity 20 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/lang_item.rs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"df073f3ee838bf342db1ea41c07ecf3aeaa032b4ce5ea45ad0078db213d1a300"}},{"ruleId":"D1","level":"warning","message":{"text":"ExprUseVisitor::cat_pattern (cyclomatic 20): ExprUseVisitor::cat_pattern has cyclomatic complexity 20 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis/expr_use_visitor.rs"},"region":{"startLine":1496}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ce1541cd6a89b5995e769d4035dcc5d200ef4e546deacc7413ffc98084f1b36"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceContext::infer_ref_pat (cyclomatic 20): InferenceContext::infer_ref_pat has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/pat.rs"},"region":{"startLine":1356}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8b951099c108b9182bdf756b1ea1b070a7ba5ed15af4633314752feddae1ffe"}},{"ruleId":"D1","level":"warning","message":{"text":"SolverContext::compute_goal_fast_path (cyclomatic 20): SolverContext::compute_goal_fast_path has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/solver.rs"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"aed30095168b6f8862b8751bca64a2922866fdb7ca3fe1478175c4af53fc82f7"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::typing::on_eq_typed (cyclomatic 20): ide::typing::on_eq_typed has cyclomatic complexity 20 (threshold 15). Most of this is not in the body itself: 6 of the 20 points are its own statements and the rest belongs to 3 function items inside it that branch (assign_expr, let_stmt, assign_to_eq). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/typing.rs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"50c19efed47e71fb2a1ac76b6a782ad7671b45492662488367d5df1601b73c27"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_assists::handlers::remove_dbg::compute_dbg_replacement (cyclomatic 20): ide_assists::handlers::remove_dbg::compute_dbg_replacement has cyclomatic complexity 20 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/remove_dbg.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"45d02ff475411bc1cd6768fa3faa14cacc0e50a5750d3cf116e1d69bd5e81346"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_assists::handlers::inline_type_alias::create_replacement (cyclomatic 20): ide_assists::handlers::inline_type_alias::create_replacement has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/inline_type_alias.rs"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fa3ba1d1d8814224e945a8a00eca0ddd095d1ef8af3a9e059eb7c3f9b835cf5"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_assists::handlers::extract_function::extract_function (cyclomatic 20): ide_assists::handlers::extract_function::extract_function has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_function.rs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"77aa1dee3cae3b03e315e19447964550e4e37f683f8c7d2ff7fe5b931ae03f56"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_assists::handlers::extract_type_alias::collect_used_generics (cyclomatic 20): ide_assists::handlers::extract_type_alias::collect_used_generics has cyclomatic complexity 20 (threshold 15). Of this number, 19 points are the body\u0027s own statements and 1 belongs to one function item inside it that branches. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_type_alias.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2375eb809fdae820c09ecfad34ad91b27b7887785e93516c5da1c9da234ed32"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_assists::utils::gen_trait_fn_body::gen_partial_eq (cyclomatic 20): ide_assists::utils::gen_trait_fn_body::gen_partial_eq has cyclomatic complexity 20 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/utils/gen_trait_fn_body.rs"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"efca1a46f81ee4ec04c665a2ed5bf868e184755dc4d6095509ab7901ebfbfce1"}},{"ruleId":"D1","level":"warning","message":{"text":"project_model::workspace::handle_rustc_crates (cyclomatic 20): project_model::workspace::handle_rustc_crates has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/workspace.rs"},"region":{"startLine":1534}}}],"partialFingerprints":{"codehealthFindingId/v1":"345e8b355dcf759d40904e9a4c0987447aef510c8e59c32673f213e42a9f9e96"}},{"ruleId":"D1","level":"warning","message":{"text":"syntax::validation::validate_literal (cyclomatic 20): syntax::validation::validate_literal has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: syntax::validation::rustc_unescape_error_to_string (cyclomatic 22) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded function is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/validation.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8d38241fc64d77cc2039450cea3bedf2486b339000dd81c0a0fe1d9995e8181"}},{"ruleId":"D1","level":"warning","message":{"text":"debug.getDebugConfiguration (cyclomatic 20): debug.getDebugConfiguration has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/debug.ts"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"aec7b2a52d12498112c681013fca976839ae1de71e20b264168e4752f0a249fd"}},{"ruleId":"D1","level":"warning","message":{"text":"BuiltinDeriveImplTrait::get_method (cyclomatic 19): BuiltinDeriveImplTrait::get_method has cyclomatic complexity 19 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/builtin_derive.rs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dd6a15a3553b6cacd939ed5326622fdcdaed968ed6c9bc0dca99f366ad7ec7a"}},{"ruleId":"D1","level":"warning","message":{"text":"hir_expand::mod_path::convert_path (cyclomatic 19): hir_expand::mod_path::convert_path has cyclomatic complexity 19 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/mod_path.rs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9022649ba71de0fe4ef960a06fd207b5f008997d141d3d56e942a54f2513e72"}},{"ruleId":"D1","level":"warning","message":{"text":"ExprUseVisitor::walk_pat (cyclomatic 19): ExprUseVisitor::walk_pat has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis/expr_use_visitor.rs"},"region":{"startLine":879}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f75c091800573f3e8fc40e9b0428cbdf49989961eed3acdf07ec68213739b0e"}},{"ruleId":"D1","level":"warning","message":{"text":"ProbeContext::consider_probe (cyclomatic 19): ProbeContext::consider_probe has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/method_resolution/probe.rs"},"region":{"startLine":1567}}}],"partialFingerprints":{"codehealthFindingId/v1":"236f0a264f6c8597da02fa54872fcb63f0aa6bf2d0af63e34a50e924bba09846"}},{"ruleId":"D1","level":"warning","message":{"text":"Evaluator::exec_atomic_intrinsic (cyclomatic 19): Evaluator::exec_atomic_intrinsic has cyclomatic complexity 19 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":1524}}}],"partialFingerprints":{"codehealthFindingId/v1":"12ccdc8fb130baf2fba8915f8805d4d3416cc8000a543e6a5081c4a14d71cae8"}},{"ruleId":"D1","level":"warning","message":{"text":"Evaluator::patch_addresses (cyclomatic 19): Evaluator::patch_addresses has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":2544}}}],"partialFingerprints":{"codehealthFindingId/v1":"54960bc220b8c8c1c07880ce35fe6b0d4e8f0b5eca09c69cfd6406680ff31a03"}},{"ruleId":"D1","level":"warning","message":{"text":"MirEvalError::pretty_print (cyclomatic 19): MirEvalError::pretty_print has cyclomatic complexity 19 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"a13d6788cbbcf6f609a648d7f9ffba0db0dbaec1a3030b39fa7e94ed255d426e"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::inlay_hints::param_name::get_segment_representation (cyclomatic 19): ide::inlay_hints::param_name::get_segment_representation has cyclomatic complexity 19 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints/param_name.rs"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"0149968b66616e0d22e0575d059e11515b486105dc23fb19054352c674cd09b5"}},{"ruleId":"D1","level":"warning","message":{"text":"Module::get_usages_and_record_fields (cyclomatic 19): Module::get_usages_and_record_fields has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_module.rs"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5eecb126bb4cd1b9821a444a97762282d0e91c74a070d77f34cad455b5f47e4"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_assists::handlers::convert_let_else_to_match::remove_mut_and_collect_idents (cyclomatic 19): ide_assists::handlers::convert_let_else_to_match::remove_mut_and_collect_idents has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_let_else_to_match.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ec0c090f34732c9ec21525123bc49a15b52844c1880b8ff3c7f3729eb681a0f"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_db::imports::insert_use::insert_use_with_alias_option_with_editor (cyclomatic 19): ide_db::imports::insert_use::insert_use_with_alias_option_with_editor has cyclomatic complexity 19 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/insert_use.rs"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"8749a87d710824bee47175297ed373bac76b4d680c390119eccff963b1523301"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_db::traits::diff_assoc_items (cyclomatic 19): ide_db::traits::diff_assoc_items has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/traits.rs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bf18a7d7052a8c1ba77f214070e2463d777bade40ec01862e45333c404e2ca3"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_db::imports::import_assets::filter_by_definition_kind (cyclomatic 19): ide_db::imports::import_assets::filter_by_definition_kind has cyclomatic complexity 19 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/import_assets.rs"},"region":{"startLine":553}}}],"partialFingerprints":{"codehealthFindingId/v1":"21d29cda41dddcbfbb09b1a8fdcecf455866d27f665193ea9610dc5d7df53f8d"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_db::imports::import_assets::validate_resolvable (cyclomatic 19): ide_db::imports::import_assets::validate_resolvable has cyclomatic complexity 19 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/import_assets.rs"},"region":{"startLine":660}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc0ab3f6b7225cd2be9c2f620263ffa1d1a55c3045d92219fc1c506cc416c63a"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_db::syntax_helpers::node_ext::for_each_tail_expr (cyclomatic 19): ide_db::syntax_helpers::node_ext::for_each_tail_expr has cyclomatic complexity 19 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/syntax_helpers/node_ext.rs"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e623948a6c17bc123aca9ae5617eca4265ec346a04a29b74fdc76cefa8bd45a"}},{"ruleId":"D1","level":"warning","message":{"text":"ProjectFolders::new (cyclomatic 19): ProjectFolders::new has cyclomatic complexity 19 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/load-cargo/src/lib.rs"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"a03040d773e5364aa5332552257a3818ecef112476c549769ca546d803c0d00b"}},{"ruleId":"D1","level":"warning","message":{"text":"mbe::parser::eat_fragment_kind (cyclomatic 19): mbe::parser::eat_fragment_kind has cyclomatic complexity 19 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/parser.rs"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"6996f77852a7c71bf769fe5646c7c789d6c00615c3d1f971284eaacfaa275d9d"}},{"ruleId":"D1","level":"warning","message":{"text":"Writer::subtree (cyclomatic 19): Writer::subtree has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-api/src/legacy_protocol/msg/flat.rs"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d417be97a8bca32d48c877a8cea237f9ceda0a5e8c4ae810e636d9f33e5d631"}},{"ruleId":"D1","level":"warning","message":{"text":"Writer::group (cyclomatic 19): Writer::group has cyclomatic complexity 19 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-api/src/legacy_protocol/msg/flat.rs"},"region":{"startLine":641}}}],"partialFingerprints":{"codehealthFindingId/v1":"196fb4af678ab8d6a807758b84efd8bc07cad296a4448b5638daa555ba6eb35e"}},{"ruleId":"D1","level":"warning","message":{"text":"Expr::binding_power (cyclomatic 19): Expr::binding_power has cyclomatic complexity 19 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing. This is NOT this file\u0027s highest cyclomatic complexity: Expr::is_ordered_before_parent_in_place_of::order (cyclomatic 23) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded function is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/prec.rs"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ce7c1595ec87a0fc1d28e8c7eae0af44f9d4bf74ece9fcf299fdb2adc537c02"}},{"ruleId":"D1","level":"warning","message":{"text":"syntax::ast::prec::precedence (cyclomatic 19): syntax::ast::prec::precedence has cyclomatic complexity 19 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing. This is NOT this file\u0027s highest cyclomatic complexity: Expr::is_ordered_before_parent_in_place_of::order (cyclomatic 23) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded function is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/prec.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"39d6b0732aa79611399fc61c639ab7330c9635230fcefab783d3bc46bead084f"}},{"ruleId":"D1","level":"warning","message":{"text":"MacroCallId::expand_speculative (cyclomatic 18): MacroCallId::expand_speculative has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/lib.rs"},"region":{"startLine":788}}}],"partialFingerprints":{"codehealthFindingId/v1":"4924ec56dad6ea8b6a8b4c206d1d73775829ab5bdc04c70cdff99de50a2fee26"}},{"ruleId":"D1","level":"warning","message":{"text":"Evaluator::place_addr_and_ty_and_metadata (cyclomatic 18): Evaluator::place_addr_and_ty_and_metadata has cyclomatic complexity 18 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":786}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9d62fabc7fe73b5731ad0cc07cb522910da7b80d9326e32fea2626ac53620e9"}},{"ruleId":"D1","level":"warning","message":{"text":"MirBody::walk_places (cyclomatic 18): MirBody::walk_places has cyclomatic complexity 18 (threshold 15). Of this number, 17 points are the body\u0027s own statements and 1 belongs to one function item inside it that branches. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir.rs"},"region":{"startLine":1074}}}],"partialFingerprints":{"codehealthFindingId/v1":"55c285c4417f596a515dd07d6bd5946902567143d220f4002c3e9534dba290c9"}},{"ruleId":"D1","level":"warning","message":{"text":"BestObligation::visit_goal (cyclomatic 18): BestObligation::visit_goal has cyclomatic complexity 18 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/errors.rs"},"region":{"startLine":535}}}],"partialFingerprints":{"codehealthFindingId/v1":"b87543d7aea69e4cffe3107f6868b47244535ab8a53b5ab0acccdf26504793ab"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::signature_help::signature_help (cyclomatic 18): ide::signature_help::signature_help has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/signature_help.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"61adf8a1c98b9ab66effed1daef579eafd0f7ab345acedb6bae870dcdf8e1052"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::rename::transform_assoc_fn_into_method_call (cyclomatic 18): ide::rename::transform_assoc_fn_into_method_call has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/rename.rs"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bc66d56c732da01976088845164ac5659d843dbd82d6b0aa2590c091a50c1b3"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::view_memory_layout::view_memory_layout (cyclomatic 18): ide::view_memory_layout::view_memory_layout has cyclomatic complexity 18 (threshold 15). Of this number, 11 points are the body\u0027s own statements and 7 belong to one function item inside it that branches. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/view_memory_layout.rs"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2adb0f41aa145da0ca58ee66780673e812fad425562df21ff5a69f7079c7d8f"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::syntax_highlighting::highlight::highlight_name_ref_by_syntax (cyclomatic 18): ide::syntax_highlighting::highlight::highlight_name_ref_by_syntax has cyclomatic complexity 18 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing. This is NOT this file\u0027s highest cyclomatic complexity: ide::syntax_highlighting::highlight::highlight_name_by_syntax (cyclomatic 22) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded function is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting/highlight.rs"},"region":{"startLine":792}}}],"partialFingerprints":{"codehealthFindingId/v1":"25e27900236e432f20dc11ff1fb4c129c45571f94ebd31b91c8554bdace7971e"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::hover::render::definition_owner_name (cyclomatic 18): ide::hover::render::definition_owner_name has cyclomatic complexity 18 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover/render.rs"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"f37ea59fc986a31ba38623af60eb0de82ae7dfa83eeba3fc94fb752a957842de"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_assists::handlers::apply_demorgan::apply_demorgan (cyclomatic 18): ide_assists::handlers::apply_demorgan::apply_demorgan has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/apply_demorgan.rs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"47d4b6a6a8a011d7fff75c5341470e502a326b4fac60f447cfa468ae044f05f1"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_assists::handlers::generate_new::generate_new (cyclomatic 18): ide_assists::handlers::generate_new::generate_new has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_new.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdc974d41bf6c383f74172626ac949d4be9396975069ae465090dd1f928fe6d3"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_assists::handlers::unwrap_branch::unwrap_branch (cyclomatic 18): ide_assists::handlers::unwrap_branch::unwrap_branch has cyclomatic complexity 18 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/unwrap_branch.rs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"4362152d448f9b4c2a81e8be5b755967ae106cd3774a91a101c87089bd0365c4"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_assists::handlers::wrap_return_type::wrap_return_type (cyclomatic 18): ide_assists::handlers::wrap_return_type::wrap_return_type has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/wrap_return_type.rs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdcd22bda6fb338eec840f2221b1aaa98fb3339b18e1394adc1b736582fad4f2"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_assists::handlers::extract_module::extract_module (cyclomatic 18): ide_assists::handlers::extract_module::extract_module has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_module.rs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"4989f3e2834a897d60fc13019d9d887c76f905eb66b20ccc6c5a869a71a05337"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_completion::render::function::render (cyclomatic 18): ide_completion::render::function::render has cyclomatic complexity 18 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/render/function.rs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f68ce5f0048cf0408b263463bda2d572dfdb67458d6b40dd4b3f90aafed5ef7"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_completion::completions::complete_name_ref (cyclomatic 18): ide_completion::completions::complete_name_ref has cyclomatic complexity 18 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions.rs"},"region":{"startLine":727}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5c5379a43c69286f6fd981aeb0f6bfbf84b3b004a89861866593b393463ea72"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_diagnostics::handlers::unlinked_file::fixes (cyclomatic 18): ide_diagnostics::handlers::unlinked_file::fixes has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/unlinked_file.rs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"111a46ab6d58125896d017b2d7635d16a066311639b46183bd61643c5102be15"}},{"ruleId":"D1","level":"warning","message":{"text":"parser::grammar::expressions::atom::builtin_expr (cyclomatic 18): parser::grammar::expressions::atom::builtin_expr has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/grammar/expressions/atom.rs"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"24bf7da988012e6196a4c7bb76461cb791a4dca9cc1fb2caf3290e6888a0c384"}},{"ruleId":"D1","level":"warning","message":{"text":"Config::inlay_hints (cyclomatic 18): Config::inlay_hints has cyclomatic complexity 18 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing. This is NOT this file\u0027s highest cyclomatic complexity: rust_analyzer::config::field_props (cyclomatic 48) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded function is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/config.rs"},"region":{"startLine":2079}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcb3b4ec780f25966bf4a4450635c881a484f3f9ace91ba7241748afa2049a13"}},{"ruleId":"D1","level":"warning","message":{"text":"TtTreeSink::token (cyclomatic 18): TtTreeSink::token has cyclomatic complexity 18 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax-bridge/src/lib.rs"},"region":{"startLine":933}}}],"partialFingerprints":{"codehealthFindingId/v1":"c69acf10d082c5abee382c28b12601c20d11d7c9b7a016608cbea593b1fd6fcc"}},{"ruleId":"D1","level":"warning","message":{"text":"ungrammar::lexer::advance (cyclomatic 18): ungrammar::lexer::advance has cyclomatic complexity 18 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"lib/ungrammar/src/lexer.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc046d041f986371ee9bcf95f06311f6a0b345efec2e5d0238f73ba172b0fa27"}},{"ruleId":"D1","level":"warning","message":{"text":"hir_def::find_path::find_path_for_module (cyclomatic 17): hir_def::find_path::find_path_for_module has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/find_path.rs"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"20d8b5137fb012d519a729674167ac98e64a164a7ce795b0998c54d2c38aaf1f"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceContext::compute_min_captures (cyclomatic 17): InferenceContext::compute_min_captures has cyclomatic complexity 17 (threshold 15). Of this number, 15 points are the body\u0027s own statements and 2 belong to one function item inside it that branches. To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis.rs"},"region":{"startLine":724}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4bda2ccf9d637031ac9a50fc277b9c55d409408c77d5838ef624eba8c842204"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceContext::deduce_closure_signature_from_predicates (cyclomatic 17): InferenceContext::deduce_closure_signature_from_predicates has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure.rs"},"region":{"startLine":418}}}],"partialFingerprints":{"codehealthFindingId/v1":"16b5c0d4f943e7d384dda0e4134430fde10cdbba739e53558f6f3d466e567a00"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceContext::resolve_all (cyclomatic 17): InferenceContext::resolve_all has cyclomatic complexity 17 (threshold 15). This file\u0027s own header attributes it to another copyright holder, so it is code this repository carries rather than code it wrote: restructuring the body in place forks it from upstream and turns every future re-sync into a manual merge. The performable moves are to leave the body as close to its upstream form as possible and keep it behind a narrow interface of your own, and to re-sync it when upstream changes \u2014 or, if it has already diverged far enough that you maintain it here, adopt it deliberately and then split the body into named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":1618}}}],"partialFingerprints":{"codehealthFindingId/v1":"713ced629d4aacdbbb75e0b496255f3f5af1c0aeccc822d841519ce3c30e7b28"}},{"ruleId":"D1","level":"warning","message":{"text":"PathLoweringContext::substs_from_args_and_bindings (cyclomatic 17): PathLoweringContext::substs_from_args_and_bindings has cyclomatic complexity 17 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":680}}}],"partialFingerprints":{"codehealthFindingId/v1":"08a9d5d3222adc464b92936953c082c3e8a306832f4e3dc79385eb6181c4f827"}},{"ruleId":"D1","level":"warning","message":{"text":"hir_ty::lower::path::check_generic_args_len (cyclomatic 17): hir_ty::lower::path::check_generic_args_len has cyclomatic complexity 17 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":1062}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4a9d66fb740defd28b2ed3513a3db21f62ca04637970e8f4b2976aabd0e58fb"}},{"ruleId":"D1","level":"warning","message":{"text":"hir_ty::mir::lower::mir_body_for_closure_query (cyclomatic 17): hir_ty::mir::lower::mir_body_for_closure_query has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower.rs"},"region":{"startLine":2105}}}],"partialFingerprints":{"codehealthFindingId/v1":"53eed89a742f888c1f34288c40a6a61563879823a4dce9ae1960d3775bfaf935"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::signature_help::signature_help_for_generics (cyclomatic 17): ide::signature_help::signature_help_for_generics has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/signature_help.rs"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cb181e35b216140435a2b1a8a29281127289ae99057659978797c31eccb9681"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::inlay_hints::implicit_drop::hints (cyclomatic 17): ide::inlay_hints::implicit_drop::hints has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints/implicit_drop.rs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"4664afeadf834c9ba5e4c58386382db40114bc00c975d7ccde0dce99fe69fd6a"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::inlay_hints::binding_mode::hints (cyclomatic 17): ide::inlay_hints::binding_mode::hints has cyclomatic complexity 17 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints/binding_mode.rs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd57bdd0df0ec7124078a747f75fd2cb720945b8af3caafe959773314724530f"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::inlay_hints::generic_param::hints (cyclomatic 17): ide::inlay_hints::generic_param::hints has cyclomatic complexity 17 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints/generic_param.rs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba7c351927857f22929193f81463448b037f32a0c14af300f6115213f19041f2"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_assists::handlers::extract_function::make_body (cyclomatic 17): ide_assists::handlers::extract_function::make_body has cyclomatic complexity 17 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing. This is NOT this file\u0027s highest cyclomatic complexity: FunctionBody::external_control_flow (cyclomatic 18) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded function is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_function.rs"},"region":{"startLine":1800}}}],"partialFingerprints":{"codehealthFindingId/v1":"01f858c9e6cc15d3dfe2a9f14b3f9a6f6da430daf4dfd8792b92b72ba45d1997"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_assists::handlers::toggle_macro_delimiter::toggle_macro_delimiter (cyclomatic 17): ide_assists::handlers::toggle_macro_delimiter::toggle_macro_delimiter has cyclomatic complexity 17 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/toggle_macro_delimiter.rs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"20346a67a210d2e5792f582f22a3bd501b0a8343b75f5c54d0ea5e87022fcb06"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_assists::handlers::convert_bool_to_enum::replace_usages (cyclomatic 17): ide_assists::handlers::convert_bool_to_enum::replace_usages has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_bool_to_enum.rs"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"1297e972bf7eb092813c4626beb00f0dddb79c749ac86f5ec6d8d69c3f95674b"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_assists::handlers::auto_import::relevance_score (cyclomatic 17): ide_assists::handlers::auto_import::relevance_score has cyclomatic complexity 17 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/auto_import.rs"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"e77e81325aeac6c849bee53defc88fe960f96f6e17511bef767055ab9e442343"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_db::imports::merge_imports::recursive_normalize (cyclomatic 17): ide_db::imports::merge_imports::recursive_normalize has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/merge_imports.rs"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"930cf78514ab45beb3917397b48c1b638e37d5cc5f2ad24f87f40dd53867f030"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_db::imports::merge_imports::version_sort::version_sort (cyclomatic 17): ide_db::imports::merge_imports::version_sort::version_sort has cyclomatic complexity 17 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/merge_imports.rs"},"region":{"startLine":978}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e1ae1bbdb1a3e76710eac35f34257d7f92a5e90923eb6ddf94f5697f99d1334"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_db::syntax_helpers::tree_diff::diff (cyclomatic 17): ide_db::syntax_helpers::tree_diff::diff has cyclomatic complexity 17 (threshold 15). Most of this is not in the body itself: 2 of the 17 points are its own statements and the rest belongs to 2 function items inside it that branch (go, syntax_element_eq). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/syntax_helpers/tree_diff.rs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"896d488134a9e9cf6a35ede34fa78f92afadffbb1327c747fe913b42ec16a3b3"}},{"ruleId":"D1","level":"warning","message":{"text":"CargoWorkspace::new (cyclomatic 17): CargoWorkspace::new has cyclomatic complexity 17 (threshold 15). Of this number, 13 points are the body\u0027s own statements and 4 belong to one function item inside it that branches. To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/cargo_workspace.rs"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ef4f75088573ac92140382b531d13cdd0d6fdf6e6bbf7c0d1ec1a025d89bb84"}},{"ruleId":"D1","level":"warning","message":{"text":"Sysroot::load_workspace (cyclomatic 17): Sysroot::load_workspace has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/sysroot.rs"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2633bfa809fa1a0a6a654b850ccbfb7509d8e9205737f4af030e13a6c7121d8"}},{"ruleId":"D1","level":"warning","message":{"text":"rust_analyzer::lsp::to_proto::code_lens (cyclomatic 17): rust_analyzer::lsp::to_proto::code_lens has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: rust_analyzer::lsp::to_proto::completion_item_kind (cyclomatic 37) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded function is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/lsp/to_proto.rs"},"region":{"startLine":1758}}}],"partialFingerprints":{"codehealthFindingId/v1":"aabcda46a811cb5688e78af9a17a6eda2a4da5410ace95e288c79e3d6ce35b90"}},{"ruleId":"D1","level":"warning","message":{"text":"rust_analyzer::lsp::completion_item_hash (cyclomatic 17): rust_analyzer::lsp::completion_item_hash has cyclomatic complexity 17 (threshold 15). Most of this is not in the body itself: 8 of the 17 points are its own statements and the rest belongs to one function item inside it that branches (hash_completion_relevance). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/lsp.rs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"a935be17a58c85ea058af07ae8eeb9875bf64b407ac0828e6378bd3bb53dac46"}},{"ruleId":"D1","level":"warning","message":{"text":"UseTree::expand_impl (cyclomatic 16): UseTree::expand_impl has cyclomatic complexity 16 (threshold 15). Of this number, 10 points are the body\u0027s own statements and 6 belong to one function item inside it that branches. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_tree.rs"},"region":{"startLine":736}}}],"partialFingerprints":{"codehealthFindingId/v1":"7634d7ab810bcc7b14529dbcb3f7ca6325a7ade17791a400f555889258cd91d9"}},{"ruleId":"D1","level":"warning","message":{"text":"DefMap::resolve_path_fp_with_macro_single (cyclomatic 16): DefMap::resolve_path_fp_with_macro_single has cyclomatic complexity 16 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/path_resolution.rs"},"region":{"startLine":242}}}],"partialFingerprints":{"codehealthFindingId/v1":"5968a8c7a64fdca9404ac3e9aa907107d6b6609b858db4620e66b110fbbf0564"}},{"ruleId":"D1","level":"warning","message":{"text":"FunctionSignature::with_source_map (cyclomatic 16): FunctionSignature::with_source_map has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/signatures.rs"},"region":{"startLine":631}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc36fb03494d62d1ffbe11631f5f9228e5631cd654097de8a5246b59a944d4ce"}},{"ruleId":"D1","level":"warning","message":{"text":"hir_def::find_path::find_local_import_locations (cyclomatic 16): hir_def::find_path::find_local_import_locations has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/find_path.rs"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"4337b84f19f4b9110cf3ea98e118552195d3226d4554c405b25909228f80d5e5"}},{"ruleId":"D1","level":"warning","message":{"text":"PathLoweringContext::resolve_path_in_value_ns (cyclomatic 16): PathLoweringContext::resolve_path_in_value_ns has cyclomatic complexity 16 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":384}}}],"partialFingerprints":{"codehealthFindingId/v1":"768fc4cb06b9fc8a2feb42eb060d4297792cd0f3b607f5eed3e20da31175f4e7"}},{"ruleId":"D1","level":"warning","message":{"text":"Filler::fill_body (cyclomatic 16): Filler::fill_body has cyclomatic complexity 16 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/monomorphization.rs"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"591a4a70071ef7f3f3f388a58dc01a65df1d7cd300d9d29f95297233243e66df"}},{"ruleId":"D1","level":"warning","message":{"text":"Generalizer::tys (cyclomatic 16): Generalizer::tys has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/relate/generalize.rs"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"385fcc9944e3f2ef5e7c02b52d28ba24a31f2046e9f31d71670b26a1864cc9da"}},{"ruleId":"D1","level":"warning","message":{"text":"hir_ty::infer::infer_query_with_inspect (cyclomatic 16): hir_ty::infer::infer_query_with_inspect has cyclomatic complexity 16 (threshold 15). This file\u0027s own header attributes it to another copyright holder, so it is code this repository carries rather than code it wrote: restructuring the body in place forks it from upstream and turns every future re-sync into a manual merge. The performable moves are to leave the body as close to its upstream form as possible and keep it behind a narrow interface of your own, and to re-sync it when upstream changes \u2014 or, if it has already diverged far enough that you maintain it here, adopt it deliberately and then split the body into named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"e794ae1e05c508748243af30fd73e070800e32900a3c32836d5a08c5bdac2cee"}},{"ruleId":"D1","level":"warning","message":{"text":"hir_ty::consteval::intern_const_ref (cyclomatic 16): hir_ty::consteval::intern_const_ref has cyclomatic complexity 16 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/consteval.rs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"a71409314748edd663c29c1260e9b610853f5b3ed5e4d692b93e713e7e183369"}},{"ruleId":"D1","level":"warning","message":{"text":"hir_ty::lower::generic_predicates (cyclomatic 16): hir_ty::lower::generic_predicates has cyclomatic complexity 16 (threshold 15). Of this number, 15 points are the body\u0027s own statements and 1 belongs to one function item inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":2518}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b3012389fb43e3cd49a65c258ea42209346f442aa3057a72343f40bbef6ea8d"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::rename::find_definitions (cyclomatic 16): ide::rename::find_definitions has cyclomatic complexity 16 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/rename.rs"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3aaa83b909799eae1a337973bf6a19ca752920fb905b53338e675b92f0cfe33"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::highlight_related::highlight_break_points (cyclomatic 16): ide::highlight_related::highlight_break_points has cyclomatic complexity 16 (threshold 15). Most of this is not in the body itself: 7 of the 16 points are its own statements and the rest belongs to one function item inside it that branches (hl). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest. This is NOT this file\u0027s highest cyclomatic complexity: ide::highlight_related::highlight_related (cyclomatic 18) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded function is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/highlight_related.rs"},"region":{"startLine":491}}}],"partialFingerprints":{"codehealthFindingId/v1":"235fc75049e4e215b79d59b023f6ecfbec1a3848cc33f89a0e13d465eaeb7039"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::hover::goto_type_action_for_def (cyclomatic 16): ide::hover::goto_type_action_for_def has cyclomatic complexity 16 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover.rs"},"region":{"startLine":638}}}],"partialFingerprints":{"codehealthFindingId/v1":"30289343136b34b871719c203bb82a0c555a71863320085f73b5f8329ded5b30"}},{"ruleId":"D1","level":"warning","message":{"text":"ide::hover::render::try_expr (cyclomatic 16): ide::hover::render::try_expr has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover/render.rs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bb32ac0943545b0d2e5cd0b0678d545e84a417590f07c4e67f606a5c02fee79"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_assists::handlers::convert_closure_to_fn::compute_closure_type_params (cyclomatic 16): ide_assists::handlers::convert_closure_to_fn::compute_closure_type_params has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_closure_to_fn.rs"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"f914ecc5f7f913e0b4f488d92702b46cd3cf03e41bed61324c31ea8a94596f3c"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_assists::handlers::generate_delegate_methods::generate_delegate_methods (cyclomatic 16): ide_assists::handlers::generate_delegate_methods::generate_delegate_methods has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_delegate_methods.rs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"e57069308054f800bc5dce371247e9463923349168418b0368c6d8dd37d00845"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_assists::handlers::wrap_unwrap_cfg_attr::attempt_get_derive (cyclomatic 16): ide_assists::handlers::wrap_unwrap_cfg_attr::attempt_get_derive has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/wrap_unwrap_cfg_attr.rs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9f67fe515e9692774ba68bb9ff7a7d68e6cbf1ea5745e0727c30b4d4f272641"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_assists::handlers::extract_expressions_from_format_string::extract_expressions_from_format_string (cyclomatic 16): ide_assists::handlers::extract_expressions_from_format_string::extract_expressions_from_format_string has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_expressions_from_format_string.rs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"716fc5becf6e0e77d24f6128980ed858e4149e33743717d79b810aba35ac0472"}},{"ruleId":"D1","level":"warning","message":{"text":"CompletionContext::new (cyclomatic 16): CompletionContext::new has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context.rs"},"region":{"startLine":747}}}],"partialFingerprints":{"codehealthFindingId/v1":"b774f177a78a33477c5232cc66a88ce8ee4581fe1a328f803d491a6bbc4ddeb9"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_completion::completions::attribute::cfg::complete_cfg (cyclomatic 16): ide_completion::completions::attribute::cfg::complete_cfg has cyclomatic complexity 16 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/attribute/cfg.rs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"8443b2fd56d59374bf1dfa994d6cf6237ff601388fdfc62bbeb3650e8b7b932f"}},{"ruleId":"D1","level":"warning","message":{"text":"ide_db::imports::merge_imports::use_tree_cmp (cyclomatic 16): ide_db::imports::merge_imports::use_tree_cmp has cyclomatic complexity 16 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/merge_imports.rs"},"region":{"startLine":521}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab8524f9d47c20e74ff01c9a3a227b9be8d92cf3bdecaf1c6344f72d7d268915"}},{"ruleId":"D1","level":"warning","message":{"text":"parser::grammar::expressions::expr_bp (cyclomatic 16): parser::grammar::expressions::expr_bp has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: parser::grammar::expressions::current_op (cyclomatic 33) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded function is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/grammar/expressions.rs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"95df6fbdbeb0cd3697b9a1a98ee819afb1161f840a9e6efb6837e679222e2c61"}},{"ruleId":"D1","level":"warning","message":{"text":"WorkspaceBuildScripts::run_command (cyclomatic 16): WorkspaceBuildScripts::run_command has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/build_dependencies.rs"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"730fbf9854f6de32db549084a48bf1975ae4a1d9ff570e4303423fe2b7c08ab9"}},{"ruleId":"D1","level":"warning","message":{"text":"WorkspaceBuildScripts::build_command (cyclomatic 16): WorkspaceBuildScripts::build_command has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/build_dependencies.rs"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9e98472c741c732d3a071eef3a25dac463af5a252b2a1f00e40b20e129c4461"}},{"ruleId":"D1","level":"warning","message":{"text":"ProjectWorkspace::load_cargo (cyclomatic 16): ProjectWorkspace::load_cargo has cyclomatic complexity 16 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/workspace.rs"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"5eb499c935d9dbc873f5af30b301aae5dbc4cf3ca920bebc06ea0dc70399354c"}},{"ruleId":"D1","level":"warning","message":{"text":"project_model::workspace::project_json_to_crate_graph (cyclomatic 16): project_model::workspace::project_json_to_crate_graph has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/workspace.rs"},"region":{"startLine":1105}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d05189d4490348bec87ff4fafd2d93cfeda11fd63682661ba6952c1c73fa64d"}},{"ruleId":"D1","level":"warning","message":{"text":"FlycheckActor::check_command (cyclomatic 16): FlycheckActor::check_command has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/flycheck.rs"},"region":{"startLine":884}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1e96fe8f4a64383940bac2609186606f02fe41edce77b173ac1e12176902eec"}},{"ruleId":"D1","level":"warning","message":{"text":"rust_analyzer::session::run_session (cyclomatic 16): rust_analyzer::session::run_session has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/session.rs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"3960c3a77b286e23762dfdbadecea4adb90e58f5c5a3246f8a21da68ed19485d"}},{"ruleId":"D1","level":"warning","message":{"text":"AstIdMap::from_source (cyclomatic 16): AstIdMap::from_source has cyclomatic complexity 16 (threshold 15). Of this number, 15 points are the body\u0027s own statements and 1 belongs to one function item inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: ErasedFileAstIdKind::syntax_kind (cyclomatic 20) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded function is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/span/src/ast_id.rs"},"region":{"startLine":633}}}],"partialFingerprints":{"codehealthFindingId/v1":"b185a567b03e88e86db909eacfab4d802d6ece63441ef3f7a812edd63dd387d3"}},{"ruleId":"D1","level":"warning","message":{"text":"xtask::codegen::lints::generate_lint_descriptor (cyclomatic 16): xtask::codegen::lints::generate_lint_descriptor has cyclomatic complexity 16 (threshold 15). Of this number, 9 points are the body\u0027s own statements and 7 belong to one function item inside it that branches. To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"xtask/src/codegen/lints.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f8518adb62d9021c8feba98edabce8867995542a1e5debe337364ff54332139"}},{"ruleId":"D1","level":"warning","message":{"text":"xtask::publish::notes::get_next_line_component (cyclomatic 16): xtask::publish::notes::get_next_line_component has cyclomatic complexity 16 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"xtask/src/publish/notes.rs"},"region":{"startLine":479}}}],"partialFingerprints":{"codehealthFindingId/v1":"14aebf1b261d5d1432ef07a8b45ddf28c68456e9141fa95e604ac1d2993a21b8"}},{"ruleId":"D2","level":"warning","message":{"text":"Evaluator::exec_intrinsic (cognitive 215): Evaluator::exec_intrinsic has cognitive complexity 215 (threshold 15). Drivers by points: if/else 86 (177 pts), match/switch 15 (29 pts), loops 3 (6 pts), boolean chains 3 (nesting depth added 108). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9e40566d963fb555fb3c07ed98a9ea80f4e7f77aea0dde1d266eb98d4d3caab"}},{"ruleId":"D2","level":"warning","message":{"text":"MirLowerCtx::lower_expr_to_place_without_adjust (cognitive 208): MirLowerCtx::lower_expr_to_place_without_adjust has cognitive complexity 208 (threshold 15). Drivers by points: if/else 62 (140 pts), match/switch 23 (54 pts), loops 4 (9 pts), boolean chains 5 (nesting depth added 114). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower.rs"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"470b49f17cc76f5dec3a80facbc41c35cd69d366cf2fce2e22ad7db3901b23ad"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_completion::context::analysis::classify_name_ref (cognitive 172): ide_completion::context::analysis::classify_name_ref has cognitive complexity 172 (threshold 15). Drivers by points: if/else 48 (80 pts), match/switch 33 (68 pts), boolean chains 15, loops 2 (9 pts) (nesting depth added 74). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context/analysis.rs"},"region":{"startLine":952}}}],"partialFingerprints":{"codehealthFindingId/v1":"09d40f81c29cee9ddd30dbf87256d9bd7bf349e5e712007483d4f27be5887ad5"}},{"ruleId":"D2","level":"warning","message":{"text":"Ty::hir_fmt (cognitive 149): Ty::hir_fmt has cognitive complexity 149 (threshold 15). Drivers by points: if/else 46 (102 pts), match/switch 21 (42 pts), boolean chains 3, loops 1 (2 pts) (nesting depth added 78). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":1282}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8ff7cd3f87b07da02f444905e726e1d47399ab1c81c6ba7903661c0aa93bb28"}},{"ruleId":"D2","level":"warning","message":{"text":"Evaluator::eval_rvalue (cognitive 146): Evaluator::eval_rvalue has cognitive complexity 146 (threshold 15). Drivers by points: match/switch 25 (68 pts), if/else 24 (66 pts), loops 4 (12 pts) (nesting depth added 93). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":1177}}}],"partialFingerprints":{"codehealthFindingId/v1":"44dd99fb04950934adbd93d348e831a1587bc5e2833088d624c11c791901d230"}},{"ruleId":"D2","level":"warning","message":{"text":"rust_analyzer::config::patch_old_style::patch_json_for_outdated_configs (cognitive 135): rust_analyzer::config::patch_old_style::patch_json_for_outdated_configs has cognitive complexity 135 (threshold 15). Drivers by points: loops 41 (82 pts), match/switch 43 (44 pts), if/else 6 (7 pts), boolean chains 2 (nesting depth added 43). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/config/patch_old_style.rs"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"976aa3e1f39e7f9b7a3da5f56f9c1d2ad3d22bb2a3e09876f030b0d50f3d4110"}},{"ruleId":"D2","level":"warning","message":{"text":"AnalysisStats::run_inference (cognitive 134): AnalysisStats::run_inference has cognitive complexity 134 (threshold 15). Drivers by points: if/else 43 (115 pts), match/switch 4 (8 pts), boolean chains 6, loops 3 (5 pts) (nesting depth added 78). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":774}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff062731c8123884d576badb904b11d67631f145508a9e7141f001e4e5b5f5e4"}},{"ruleId":"D2","level":"warning","message":{"text":"mbe::expander::matcher::match_loop_inner (cognitive 133): mbe::expander::matcher::match_loop_inner has cognitive complexity 133 (threshold 15). Drivers by points: if/else 44 (115 pts), match/switch 4 (11 pts), boolean chains 4, loops 2 (3 pts) (nesting depth added 79). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/expander/matcher.rs"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"149e960e1d94f93d94fb7f0902711ea3478e7c46e96debceaf967011fa527a53"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_completion::completions::expr::complete_expr_path (cognitive 128): ide_completion::completions::expr::complete_expr_path has cognitive complexity 128 (threshold 15). Drivers by points: if/else 36 (84 pts), match/switch 13 (32 pts), boolean chains 6, loops 2 (6 pts) (nesting depth added 71). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/expr.rs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"6758ba08f0a332c32ebaf751bf9a502b6238496d12a7c84b957f43e36af0fe28"}},{"ruleId":"D2","level":"warning","message":{"text":"ExprCollector::maybe_collect_expr (cognitive 117): ExprCollector::maybe_collect_expr has cognitive complexity 117 (threshold 15). Drivers by points: if/else 50 (91 pts), match/switch 9 (19 pts), loops 2 (6 pts), boolean chains 1 (nesting depth added 55). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":1417}}}],"partialFingerprints":{"codehealthFindingId/v1":"001f3bc147e56c11df5770df92b0b039a8ca3a9ddc1207d1914470c25d917923"}},{"ruleId":"D2","level":"warning","message":{"text":"GlobalState::handle_event (cognitive 109): GlobalState::handle_event has cognitive complexity 109 (threshold 15). Drivers by points: if/else 31 (60 pts), boolean chains 19, loops 8 (16 pts), match/switch 6 (14 pts) (nesting depth added 45). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/main_loop.rs"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"f608cedca4d52421463eadd5c3d31f140e509677b059221e54c907b67ea9cab7"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::syntax_highlighting::traverse (cognitive 103): ide::syntax_highlighting::traverse has cognitive complexity 103 (threshold 15). Drivers by points: if/else 17 (50 pts), match/switch 16 (49 pts), boolean chains 3, loops 1 (nesting depth added 66). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting.rs"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1246d5d172aea4a439dd25b42d5ba93b45eb6fd12957881609bf0dd4545b5e0"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_db::syntax_helpers::format_string::lex_format_specifiers (cognitive 101): ide_db::syntax_helpers::format_string::lex_format_specifiers has cognitive complexity 101 (threshold 15). Drivers by points: if/else 18 (62 pts), match/switch 7 (29 pts), boolean chains 7, loops 3 (nesting depth added 66). Of this number, 92 points are the body\u0027s own statements and 9 belong to 2 function items inside it that branch. To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/syntax_helpers/format_string.rs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"4535d6f49e90d33d6165695ecb514242687f0f6eeb93b03490a62d8ffffb7238"}},{"ruleId":"D2","level":"warning","message":{"text":"ExprCollector::lower_inline_asm (cognitive 100): ExprCollector::lower_inline_asm has cognitive complexity 100 (threshold 15). Drivers by points: if/else 27 (65 pts), match/switch 10 (28 pts), loops 3 (5 pts), boolean chains 2 (nesting depth added 58). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower/asm.rs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"16fa398df625170e9bedc4f31d474f8e6a3288325678c8b5803ed42a30c551b1"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceAnalyzer::resolve_path (cognitive 99): SourceAnalyzer::resolve_path has cognitive complexity 99 (threshold 15). Drivers by points: if/else 30 (67 pts), match/switch 8 (23 pts), loops 1 (6 pts), boolean chains 3 (nesting depth added 57). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":1157}}}],"partialFingerprints":{"codehealthFindingId/v1":"bddb8040efe3261b27e6eb389e259395193f821bd5d5ced8a6458ab612423383"}},{"ruleId":"D2","level":"warning","message":{"text":"FindUsages::search (cognitive 98): FindUsages::search has cognitive complexity 98 (threshold 15). Drivers by points: if/else 16 (44 pts), loops 12 (36 pts), match/switch 8 (17 pts), boolean chains 1 (nesting depth added 61). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":929}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d442c841c333a116dc666aa466d9ae9239e6e136db13018b61c52f110d9ec63"}},{"ruleId":"D2","level":"warning","message":{"text":"FindUsages::short_associated_function_fast_search::collect_possible_aliases (cognitive 97): FindUsages::short_associated_function_fast_search::collect_possible_aliases has cognitive complexity 97 (threshold 15). Drivers by points: if/else 15 (73 pts), loops 6 (20 pts), boolean chains 4 (nesting depth added 72). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":654}}}],"partialFingerprints":{"codehealthFindingId/v1":"de5d8e516997898a3a582c95bb369e07e1fdf61f74127b67f6ca1a50f1ab3fe1"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceContext::infer_expr_inner (cognitive 96): InferenceContext::infer_expr_inner has cognitive complexity 96 (threshold 15). Drivers by points: if/else 27 (50 pts), match/switch 15 (33 pts), loops 4 (10 pts), boolean chains 3 (nesting depth added 47). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/expr.rs"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"17a3ab6e99ea65eedb2f7ebaa83bea48c11d370a10bc7dda3323e12e9ed5d1d1"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::hover::render::definition (cognitive 92): ide::hover::render::definition has cognitive complexity 92 (threshold 15). Drivers by points: if/else 34 (64 pts), match/switch 16 (28 pts) (nesting depth added 42). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover/render.rs"},"region":{"startLine":446}}}],"partialFingerprints":{"codehealthFindingId/v1":"f368cb5a3e38fe3f9efdb55b3d810a75959025f9ba7506d3961391a551bd1467"}},{"ruleId":"D2","level":"warning","message":{"text":"Printer::print_expr_in (cognitive 88): Printer::print_expr_in has cognitive complexity 88 (threshold 15). Drivers by points: if/else 23 (50 pts), loops 7 (19 pts), match/switch 10 (19 pts) (nesting depth added 48). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/pretty.rs"},"region":{"startLine":531}}}],"partialFingerprints":{"codehealthFindingId/v1":"403a2add42ba1a65dad66273361b99b04f52fe52860bb835cf546aff9cd88da6"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_ty::display::render_const_scalar_inner (cognitive 87): hir_ty::display::render_const_scalar_inner has cognitive complexity 87 (threshold 15). Drivers by points: if/else 27 (67 pts), match/switch 6 (13 pts), loops 3 (7 pts) (nesting depth added 51). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":820}}}],"partialFingerprints":{"codehealthFindingId/v1":"3605645f095443146c50d9914b784aadde27cca9dae5b4f0c2d1c2de52c00f1a"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_expand::cfg_process::macro_input_callback (cognitive 86): hir_expand::cfg_process::macro_input_callback has cognitive complexity 86 (threshold 15). Drivers by points: if/else 23 (61 pts), match/switch 4 (11 pts), loops 3 (10 pts), boolean chains 4 (nesting depth added 52). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/cfg_process.rs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3c4e98c2ae21f89562e366f2ddbf7ada22f0b15a77ca760b3a26dd116ef44d1"}},{"ruleId":"D2","level":"warning","message":{"text":"AnalysisStats::run (cognitive 81): AnalysisStats::run has cognitive complexity 81 (threshold 15). Drivers by points: if/else 25 (35 pts), match/switch 6 (22 pts), loops 8 (21 pts), boolean chains 3 (nesting depth added 39). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"160b29be9703d6462f08aaacf65cb7c3b428fe468d1f40ed054daaf4daec02f4"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceContext::resolve_variant (cognitive 79): InferenceContext::resolve_variant has cognitive complexity 79 (threshold 15). Drivers by points: if/else 28 (60 pts), match/switch 7 (13 pts), boolean chains 4, loops 1 (2 pts) (nesting depth added 39). Of this number, 77 points are the body\u0027s own statements and 2 belong to one function item inside it that branches. This file\u0027s own header attributes it to another copyright holder, so it is code this repository carries rather than code it wrote: restructuring the body in place forks it from upstream and turns every future re-sync into a manual merge. The performable moves are to leave the body as close to its upstream form as possible and keep it behind a narrow interface of your own, and to re-sync it when upstream changes \u2014 or, if it has already diverged far enough that you maintain it here, adopt it deliberately and then split the body into named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":2225}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2373ef1eb824c7bf46a923c2568d902703bc1910124f044e59d67331c480986"}},{"ruleId":"D2","level":"warning","message":{"text":"SemanticsImpl::descend_into_macros_impl (cognitive 78): SemanticsImpl::descend_into_macros_impl has cognitive complexity 78 (threshold 15). Drivers by points: if/else 10 (41 pts), match/switch 6 (20 pts), loops 5 (16 pts), boolean chains 1 (nesting depth added 56). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":1237}}}],"partialFingerprints":{"codehealthFindingId/v1":"93858c6b8844c57d4937cb39c23929fcef14c85932a200affdb11397bafa9a10"}},{"ruleId":"D2","level":"warning","message":{"text":"MirLowerCtx::pattern_match_inner (cognitive 78): MirLowerCtx::pattern_match_inner has cognitive complexity 78 (threshold 15). Drivers by points: if/else 26 (60 pts), match/switch 5 (10 pts), loops 3 (6 pts), boolean chains 2 (nesting depth added 42). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower/pattern_matching.rs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"49dfd39120353bd6c19c70de5229d7bc9e94e352f8ca7082197c805c28efcb5d"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_ty::display::write_bounds_like_dyn_trait (cognitive 77): hir_ty::display::write_bounds_like_dyn_trait has cognitive complexity 77 (threshold 15). Drivers by points: if/else 26 (69 pts), boolean chains 5, match/switch 1 (2 pts), loops 1 (nesting depth added 44). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":2100}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e4c1281f8864335d5bf1690aa9ad3938e11083eb59f222f018c2e31fb1aac28"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::folding_ranges::folding_ranges (cognitive 76): ide::folding_ranges::folding_ranges has cognitive complexity 76 (threshold 15). Drivers by points: if/else 18 (65 pts), match/switch 3 (8 pts), boolean chains 2, loops 1 (nesting depth added 52). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/folding_ranges.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1e4edb0a1d1813b0fe0a2490340663fe53001c8f5cd4ac42506408430a85f3f"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::inline_call::inline (cognitive 76): ide_assists::handlers::inline_call::inline has cognitive complexity 76 (threshold 15). Drivers by points: if/else 25 (46 pts), match/switch 8 (14 pts), boolean chains 8, loops 5 (8 pts) (nesting depth added 30). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/inline_call.rs"},"region":{"startLine":338}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef6f8cb23abeda02f3cda7d59ad50ada23e3e95d338623f2d765309f11344806"}},{"ruleId":"D2","level":"warning","message":{"text":"DiagnosticsCollector::collect_impl (cognitive 75): DiagnosticsCollector::collect_impl has cognitive complexity 75 (threshold 15). Drivers by points: if/else 16 (45 pts), match/switch 4 (12 pts), loops 3 (11 pts), boolean chains 7 (nesting depth added 45). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/diagnostics.rs"},"region":{"startLine":924}}}],"partialFingerprints":{"codehealthFindingId/v1":"59a1cc5be5c0e7a68046f7e29e7babe1e67ed67e987dd9c70640ce804cd6e385"}},{"ruleId":"D2","level":"warning","message":{"text":"DefCollector::resolve_macros (cognitive 75): DefCollector::resolve_macros has cognitive complexity 75 (threshold 15). Drivers by points: if/else 18 (56 pts), match/switch 6 (11 pts), loops 3 (6 pts), boolean chains 2 (nesting depth added 46). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":1306}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0088047c953d8da706652ad0a9714e920c726bf54164b9c9a9d2c88aaa3cdbd"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_ty::layout::layout_of_ty_query (cognitive 75): hir_ty::layout::layout_of_ty_query has cognitive complexity 75 (threshold 15). Drivers by points: if/else 20 (54 pts), match/switch 9 (21 pts) (nesting depth added 46). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/layout.rs"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2bd8b18e25a176c174ae25620e04054de429d93e8e579c1f12517ec6add5b1b"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_expand::fixup::fixup_syntax (cognitive 74): hir_expand::fixup::fixup_syntax has cognitive complexity 74 (threshold 15). Drivers by points: if/else 18 (50 pts), match/switch 5 (17 pts), boolean chains 6, loops 1 (nesting depth added 44). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/fixup.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ee30b27419989081ea6395d5fca71f46412c98cc7d7e1d59caf469903cd8877"}},{"ruleId":"D2","level":"warning","message":{"text":"Path::hir_fmt (cognitive 73): Path::hir_fmt has cognitive complexity 73 (threshold 15). Drivers by points: if/else 14 (42 pts), match/switch 5 (18 pts), loops 4 (11 pts), boolean chains 2 (nesting depth added 48). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":2682}}}],"partialFingerprints":{"codehealthFindingId/v1":"570a58404742538f314bfab7a255dd5d00efa7f5f460ee491b7f70a63628fcb1"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_def::expr_store::lower::path::lower_path (cognitive 72): hir_def::expr_store::lower::path::lower_path has cognitive complexity 72 (threshold 15). Drivers by points: if/else 25 (47 pts), match/switch 7 (19 pts), boolean chains 5, loops 1 (nesting depth added 34). Of this number, 71 points are the body\u0027s own statements and 1 belongs to one function item inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower/path.rs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"df8ec5c52605de650eaf9534a386be8eb13a57421990ef57eaa72d97a419d321"}},{"ruleId":"D2","level":"warning","message":{"text":"project_model::workspace::cargo_to_crate_graph (cognitive 72): project_model::workspace::cargo_to_crate_graph has cognitive complexity 72 (threshold 15). Drivers by points: if/else 22 (55 pts), loops 7 (12 pts), boolean chains 5 (nesting depth added 38). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/workspace.rs"},"region":{"startLine":1262}}}],"partialFingerprints":{"codehealthFindingId/v1":"084f979542dc73292d088562b58be24867a38ce433c69a5bd855bae2183f457e"}},{"ruleId":"D2","level":"warning","message":{"text":"ExprCollector::collect_format_args_impl (cognitive 71): ExprCollector::collect_format_args_impl has cognitive complexity 71 (threshold 15). Drivers by points: if/else 23 (56 pts), match/switch 3 (8 pts), loops 2 (4 pts), boolean chains 3 (nesting depth added 40). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower/format_args.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b6fa54da310964541635d453ed08504c55d37464825754eefd76a77f424c86a"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::syntax_highlighting::highlight::highlight_def (cognitive 69): ide::syntax_highlighting::highlight::highlight_def has cognitive complexity 69 (threshold 15). Drivers by points: if/else 22 (42 pts), match/switch 9 (22 pts), boolean chains 5 (nesting depth added 33). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting/highlight.rs"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac1a2624cc03e1c8aa0c4ba950462c79a7fb1a5458773f327c70dcc6760a8801"}},{"ruleId":"D2","level":"warning","message":{"text":"rust_analyzer::handlers::notification::run_flycheck (cognitive 69): rust_analyzer::handlers::notification::run_flycheck has cognitive complexity 69 (threshold 15). Drivers by points: if/else 11 (36 pts), match/switch 6 (19 pts), loops 3 (11 pts), boolean chains 3 (nesting depth added 46). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/notification.rs"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"31d71060a155ead955313ce49184c5788a0fab6c85dcccf5dbf0b12f4b36f279"}},{"ruleId":"D2","level":"warning","message":{"text":"AnalysisStats::run_term_search (cognitive 67): AnalysisStats::run_term_search has cognitive complexity 67 (threshold 15). Drivers by points: if/else 10 (31 pts), match/switch 9 (26 pts), loops 4 (8 pts), boolean chains 2 (nesting depth added 42). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"37e97d6dbf9618aff5b432866acc9c1a9a69ad4c301ad11eca89d783a3400d23"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_expand::builtin::derive_macro::coerce_pointee_expand (cognitive 64): hir_expand::builtin::derive_macro::coerce_pointee_expand has cognitive complexity 64 (threshold 15). Drivers by points: if/else 31 (46 pts), match/switch 8 (10 pts), boolean chains 4, loops 3 (4 pts) (nesting depth added 18). Of this number, 46 points are the body\u0027s own statements and 18 belong to 4 function items inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/builtin/derive_macro.rs"},"region":{"startLine":1128}}}],"partialFingerprints":{"codehealthFindingId/v1":"9231013b73e5845781fa63aca6a4b696072bd952ae142a0985299d4764f99f7f"}},{"ruleId":"D2","level":"warning","message":{"text":"mbe::expander::transcriber::expand_subtree (cognitive 64): mbe::expander::transcriber::expand_subtree has cognitive complexity 64 (threshold 15). Drivers by points: if/else 8 (29 pts), match/switch 7 (28 pts), loops 3 (7 pts) (nesting depth added 46). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/expander/transcriber.rs"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"19db8708cfb5c8fd9efe51a1467ff9709b4d38b264359cbe6459f0818f58f641"}},{"ruleId":"D2","level":"warning","message":{"text":"NotifyActor::run (cognitive 63): NotifyActor::run has cognitive complexity 63 (threshold 15). Drivers by points: if/else 9 (36 pts), loops 4 (13 pts), match/switch 3 (10 pts), boolean chains 4 (nesting depth added 43). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/vfs-notify/src/lib.rs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"7de6f7873664927f9347ddbfcee59c99e93a127f9d7301c6fed56cc6c96d7fd7"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::rename::transform_method_call_into_assoc_fn (cognitive 62): ide::rename::transform_method_call_into_assoc_fn has cognitive complexity 62 (threshold 15). Drivers by points: if/else 12 (41 pts), match/switch 4 (14 pts), loops 3 (6 pts), boolean chains 1 (nesting depth added 42). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/rename.rs"},"region":{"startLine":627}}}],"partialFingerprints":{"codehealthFindingId/v1":"644c286fdfd9cd15ad340ec16d307d016d8f3d00cfd75518cc140734b81e4eee"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_completion::context::analysis::expected_type_and_name (cognitive 62): ide_completion::context::analysis::expected_type_and_name has cognitive complexity 62 (threshold 15). Drivers by points: if/else 14 (28 pts), match/switch 11 (23 pts), boolean chains 6, loops 3 (5 pts) (nesting depth added 28). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context/analysis.rs"},"region":{"startLine":591}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f6d62e3c92cdce8db08bf548d2f23a44fc8056c2adb9bea182f0613618fae86"}},{"ruleId":"D2","level":"warning","message":{"text":"GlobalState::switch_workspaces (cognitive 62): GlobalState::switch_workspaces has cognitive complexity 62 (threshold 15). Drivers by points: if/else 20 (41 pts), match/switch 5 (10 pts), loops 2 (6 pts), boolean chains 5 (nesting depth added 30). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/reload.rs"},"region":{"startLine":467}}}],"partialFingerprints":{"codehealthFindingId/v1":"43804056278dd1466a5d90b30ebecdaacaeff7bcb1cd799c33c8c6854f08aca0"}},{"ruleId":"D2","level":"warning","message":{"text":"Resolver::resolve_path_in_value_ns_with_prefix_info (cognitive 61): Resolver::resolve_path_in_value_ns_with_prefix_info has cognitive complexity 61 (threshold 15). Drivers by points: if/else 16 (41 pts), match/switch 5 (11 pts), boolean chains 5, loops 2 (4 pts) (nesting depth added 33). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/resolver.rs"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"44f481adb5ad524c20c4f692adecbf28ce875a290d84a70c1449574a894fd472"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_completion::completions::postfix::complete_postfix (cognitive 61): ide_completion::completions::postfix::complete_postfix has cognitive complexity 61 (threshold 15). Drivers by points: if/else 27 (36 pts), match/switch 10 (15 pts), boolean chains 10 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/postfix.rs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd180ecddda08fde6112b3ed9d5ba3593a9cc39055549909d59801b2dfb20643"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::highlight_related::highlight_references (cognitive 60): ide::highlight_related::highlight_references has cognitive complexity 60 (threshold 15). Drivers by points: if/else 17 (40 pts), match/switch 5 (14 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 34). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/highlight_related.rs"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"722b8848df6266e0561623342fd0258e1295a9be122fa36674993c69177ba9c7"}},{"ruleId":"D2","level":"warning","message":{"text":"project_model::workspace::handle_rustc_crates (cognitive 60): project_model::workspace::handle_rustc_crates has cognitive complexity 60 (threshold 15). Drivers by points: if/else 11 (37 pts), loops 9 (23 pts) (nesting depth added 40). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/workspace.rs"},"region":{"startLine":1534}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c98e523639a8ffac1109d5709313f228a7baa00319b6a82f1f704285422d186"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::convert_closure_to_fn::convert_closure_to_fn (cognitive 59): ide_assists::handlers::convert_closure_to_fn::convert_closure_to_fn has cognitive complexity 59 (threshold 15). Drivers by points: if/else 23 (43 pts), match/switch 5 (8 pts), boolean chains 4, loops 3 (4 pts) (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_closure_to_fn.rs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9217ccdc188ae49721063ab35de16bb5af632953b4277e03ef57ae9d6d5eae8"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_completion::context::analysis::expand (cognitive 58): ide_completion::context::analysis::expand has cognitive complexity 58 (threshold 15). Drivers by points: if/else 14 (45 pts), match/switch 4 (6 pts), loops 2 (5 pts), boolean chains 2 (nesting depth added 36). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context/analysis.rs"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef22d5bae9165a9cde02b2f5b7e0fafbadcd7e8a4008956d7d2a173b2dfacf15"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceContext::check_record_expr_fields (cognitive 57): InferenceContext::check_record_expr_fields has cognitive complexity 57 (threshold 15). Drivers by points: if/else 20 (41 pts), loops 3 (7 pts), match/switch 2 (7 pts), boolean chains 2 (nesting depth added 30). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/expr.rs"},"region":{"startLine":968}}}],"partialFingerprints":{"codehealthFindingId/v1":"71823b3ad3f258335b050fc47004005802bcf8db81811e556649a561ce8596b5"}},{"ruleId":"D2","level":"warning","message":{"text":"Scip::run (cognitive 57): Scip::run has cognitive complexity 57 (threshold 15). Drivers by points: if/else 20 (40 pts), match/switch 3 (9 pts), loops 4 (6 pts), boolean chains 2 (nesting depth added 28). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/scip.rs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"05c8082e2835e123adb81ff7e485fbb94505344c9b59ca84506396caa785a7ce"}},{"ruleId":"D2","level":"warning","message":{"text":"GlobalState::process_changes (cognitive 57): GlobalState::process_changes has cognitive complexity 57 (threshold 15). Drivers by points: if/else 22 (45 pts), match/switch 2 (7 pts), loops 2 (3 pts), boolean chains 2 (nesting depth added 29). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/global_state.rs"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"18a72cafc2c47f2edba581d820ca020f19db868a78ba2c2a5038d13d212b5e79"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::inlay_hints::adjustment::hints (cognitive 56): ide::inlay_hints::adjustment::hints has cognitive complexity 56 (threshold 15). Drivers by points: if/else 26 (36 pts), boolean chains 10, match/switch 3 (7 pts), loops 2 (3 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints/adjustment.rs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb1d3c66b24e75f8c15156445251462aa948132deb53601b3e6f05dc6a4f7868"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::extract_variable::extract_variable (cognitive 56): ide_assists::handlers::extract_variable::extract_variable has cognitive complexity 56 (threshold 15). Drivers by points: if/else 20 (36 pts), match/switch 10 (16 pts), boolean chains 3, loops 1 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_variable.rs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"7945787f0c10a50f1bb9e6ab1819982695828faf3824105daf4db6c5182a5529"}},{"ruleId":"D2","level":"warning","message":{"text":"FlycheckActor::run (cognitive 56): FlycheckActor::run has cognitive complexity 56 (threshold 15). Drivers by points: if/else 9 (28 pts), match/switch 6 (19 pts), loops 3 (9 pts) (nesting depth added 38). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/flycheck.rs"},"region":{"startLine":579}}}],"partialFingerprints":{"codehealthFindingId/v1":"810fc21795354e0694f99ad7915dd9c4a8dbc01d5b8bed4c7be99baae35110b7"}},{"ruleId":"D2","level":"warning","message":{"text":"Printer::print_pat (cognitive 54): Printer::print_pat has cognitive complexity 54 (threshold 15). Drivers by points: if/else 15 (37 pts), loops 6 (12 pts), match/switch 2 (3 pts), boolean chains 2 (nesting depth added 29). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/pretty.rs"},"region":{"startLine":896}}}],"partialFingerprints":{"codehealthFindingId/v1":"cedc7f3ef311247ef22676b8c32a8816b433e61d40c8981a5646aa9b9778bb53"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_def::hir::format_args::parse (cognitive 54): hir_def::hir::format_args::parse has cognitive complexity 54 (threshold 15). Drivers by points: if/else 16 (27 pts), match/switch 10 (25 pts), loops 2 (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/hir/format_args.rs"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0f31b799a9cce6d7d2a6a7474f329183fb80c5a8406897e3056c8b50fdf5988"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::unwrap_return_type::unwrap_return_type (cognitive 54): ide_assists::handlers::unwrap_return_type::unwrap_return_type has cognitive complexity 54 (threshold 15). Drivers by points: if/else 16 (37 pts), match/switch 5 (12 pts), boolean chains 4, loops 1 (nesting depth added 28). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/unwrap_return_type.rs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c60bcfb1d1eb7d011e4beaf7b851eea28f0f686fd8d38245a7db578894ab41a"}},{"ruleId":"D2","level":"warning","message":{"text":"DefCollector::record_resolved_import (cognitive 53): DefCollector::record_resolved_import has cognitive complexity 53 (threshold 15). Drivers by points: if/else 15 (36 pts), match/switch 6 (16 pts), boolean chains 1 (nesting depth added 31). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":882}}}],"partialFingerprints":{"codehealthFindingId/v1":"74990f55bb2d203344908ada6f1330ee9a134b7e074023cc678b9f04d286dc60"}},{"ruleId":"D2","level":"warning","message":{"text":"mbe::expander::matcher::match_loop (cognitive 53): mbe::expander::matcher::match_loop has cognitive complexity 53 (threshold 15). Drivers by points: if/else 16 (37 pts), match/switch 2 (8 pts), loops 2 (5 pts), boolean chains 3 (nesting depth added 30). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/expander/matcher.rs"},"region":{"startLine":624}}}],"partialFingerprints":{"codehealthFindingId/v1":"50a993f4e31315076b2b4b38f041b0c6169777a8617234b3f297886a03bfe83e"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::inline_type_alias::create_replacement (cognitive 52): ide_assists::handlers::inline_type_alias::create_replacement has cognitive complexity 52 (threshold 15). Drivers by points: if/else 16 (44 pts), loops 4, boolean chains 2, match/switch 1 (2 pts) (nesting depth added 29). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/inline_type_alias.rs"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"75c91534f968d21cc2a48964ef22c737816d1cf5e202c930e828ec1cffa99806"}},{"ruleId":"D2","level":"warning","message":{"text":"ItemScope::push_res_with_import (cognitive 51): ItemScope::push_res_with_import has cognitive complexity 51 (threshold 15). Drivers by points: if/else 12 (32 pts), match/switch 7 (14 pts), boolean chains 5 (nesting depth added 27). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_scope.rs"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"d46160f2272b9e32c9d87119212a7965a49f410e8a6ba83bb6249e2dcaec0d84"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_ty::lower::resolve_type_param_assoc_type_shorthand (cognitive 51): hir_ty::lower::resolve_type_param_assoc_type_shorthand has cognitive complexity 51 (threshold 15). Drivers by points: if/else 16 (39 pts), match/switch 2 (7 pts), loops 2 (3 pts), boolean chains 2 (nesting depth added 29). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":2099}}}],"partialFingerprints":{"codehealthFindingId/v1":"97d6e456c13205b6ff9c41a8df45a704da90538a5367270bcefe7aff050f3eda"}},{"ruleId":"D2","level":"warning","message":{"text":"syntax_bridge::convert_tokens (cognitive 51): syntax_bridge::convert_tokens has cognitive complexity 51 (threshold 15). Drivers by points: match/switch 8 (24 pts), if/else 4 (15 pts), loops 4 (11 pts), boolean chains 1 (nesting depth added 34). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax-bridge/src/lib.rs"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"02aa4c816d8155e50352451c007f211878c35b84a99730e6317d3a72df2b7f28"}},{"ruleId":"D2","level":"warning","message":{"text":"TyLoweringContext::lower_dyn_trait (cognitive 50): TyLoweringContext::lower_dyn_trait has cognitive complexity 50 (threshold 15). Drivers by points: if/else 16 (31 pts), match/switch 5 (13 pts), loops 3 (4 pts), boolean chains 2 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":1011}}}],"partialFingerprints":{"codehealthFindingId/v1":"822356614f2e126d2962a45c98d79d21efd7591115b503fe92eb34cb4f74728a"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_ty::lower::path::substs_from_args_and_bindings (cognitive 50): hir_ty::lower::path::substs_from_args_and_bindings has cognitive complexity 50 (threshold 15). Drivers by points: if/else 12 (31 pts), loops 3 (10 pts), match/switch 3 (9 pts) (nesting depth added 32). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":1155}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f3bea7ac49bbf81b909f9e2b45a340f917e734c57db328b7a4f53cfeb5c2fce"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_completion::completions::type::complete_type_path (cognitive 50): ide_completion::completions::type::complete_type_path has cognitive complexity 50 (threshold 15). Drivers by points: if/else 9 (28 pts), match/switch 8 (16 pts), loops 2 (6 pts) (nesting depth added 31). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/type.rs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"bca8fa7c689fd694d34aaa12fca9aca26f4ce0c1d4c5ac7736b0f7663f022ae5"}},{"ruleId":"D2","level":"warning","message":{"text":"AnalysisStats::run_body_lowering (cognitive 50): AnalysisStats::run_body_lowering has cognitive complexity 50 (threshold 15). Drivers by points: if/else 20 (37 pts), match/switch 4 (10 pts), loops 3 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":1162}}}],"partialFingerprints":{"codehealthFindingId/v1":"a46692873250b74309b514d525e93f2c043fbabd6aa497823fc1f1afa92e297b"}},{"ruleId":"D2","level":"warning","message":{"text":"SymbolCollector::collect_from_module (cognitive 48): SymbolCollector::collect_from_module has cognitive complexity 48 (threshold 15). Drivers by points: if/else 12 (17 pts), match/switch 9 (16 pts), loops 8 (10 pts), boolean chains 5 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/symbols.rs"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a13a6cb392b6f840302af54306aca2f746e5caf9b74ec2b899f677d89ede41e"}},{"ruleId":"D2","level":"warning","message":{"text":"ImportMap::collect_import_map (cognitive 48): ImportMap::collect_import_map has cognitive complexity 48 (threshold 15). Drivers by points: if/else 10 (22 pts), match/switch 4 (20 pts), loops 3 (6 pts) (nesting depth added 31). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/import_map.rs"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"a02b70d005ec8bf46b776ff3fadf50a7901b90957d0b4d5f9d8fab04145cc0a0"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceContext::check_call_arguments (cognitive 48): InferenceContext::check_call_arguments has cognitive complexity 48 (threshold 15). Drivers by points: if/else 17 (28 pts), match/switch 5 (15 pts), loops 3 (4 pts), boolean chains 1 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/expr.rs"},"region":{"startLine":1921}}}],"partialFingerprints":{"codehealthFindingId/v1":"47c1d1f882e30dc674831826bd978c0c40a06af89b7fb5c97ce20410ee42c941"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_def::attrs::match_attr_flags (cognitive 46): hir_def::attrs::match_attr_flags has cognitive complexity 46 (threshold 15). Drivers by points: match/switch 11 (31 pts), if/else 6 (13 pts), boolean chains 2 (nesting depth added 27). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/attrs.rs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4a7627bd99513f16261b297194f523dad29b5c9300f71aaa90556b1aa4beb9b"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_ty::next_solver::consts::valtree::allocation_to_const (cognitive 46): hir_ty::next_solver::consts::valtree::allocation_to_const has cognitive complexity 46 (threshold 15). Drivers by points: if/else 15 (38 pts), match/switch 4 (8 pts) (nesting depth added 27). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/consts/valtree.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"352ce395269cc6caf8a84cf6a944afe64a3a38dc02ceeb901218ce58bafd06ae"}},{"ruleId":"D2","level":"warning","message":{"text":"Ctx::transform_path_ (cognitive 46): Ctx::transform_path_ has cognitive complexity 46 (threshold 15). Drivers by points: if/else 18 (36 pts), boolean chains 5, match/switch 2 (5 pts) (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/path_transform.rs"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a2144d48f08b330e2bb11fa59cafb751fa4de2725257d3ec882df4a5e78513d"}},{"ruleId":"D2","level":"warning","message":{"text":"Evaluator::exec_simd_intrinsic (cognitive 45): Evaluator::exec_simd_intrinsic has cognitive complexity 45 (threshold 15). Drivers by points: if/else 10 (24 pts), match/switch 5 (11 pts), loops 4 (9 pts), boolean chains 1 (nesting depth added 25). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim/simd.rs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"e70cbcbc745658d64178049e1c9f098161e0b004503ec33f78add021196faca7"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_ty::lower::generic_predicates (cognitive 45): hir_ty::lower::generic_predicates has cognitive complexity 45 (threshold 15). Drivers by points: if/else 16 (34 pts), loops 3 (6 pts), match/switch 1 (4 pts), boolean chains 1 (nesting depth added 24). Of this number, 43 points are the body\u0027s own statements and 2 belong to one function item inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":2518}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc09eaee405160b74fd6138e1568106298a4055b43ae759eb3a0d6b6e1adbeec"}},{"ruleId":"D2","level":"warning","message":{"text":"TokenStream::from_str (cognitive 45): TokenStream::from_str has cognitive complexity 45 (threshold 15). Drivers by points: if/else 20 (41 pts), match/switch 1 (2 pts), boolean chains 1, loops 1 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-srv/src/token_stream.rs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"db65e3a949347c9d84965d7be12b23e16f6d0af540fd79314078f19ab41a1722"}},{"ruleId":"D2","level":"warning","message":{"text":"Config::apply_change_with_sink (cognitive 45): Config::apply_change_with_sink has cognitive complexity 45 (threshold 15). Drivers by points: if/else 10 (21 pts), match/switch 5 (17 pts), loops 2 (5 pts), boolean chains 2 (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/config.rs"},"region":{"startLine":1203}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c000410ad5aff137bf05150bcbf48b088ef90945259e9c9d4fc551f57a3a683"}},{"ruleId":"D2","level":"warning","message":{"text":"rust_analyzer::lsp::to_proto::completion_item (cognitive 45): rust_analyzer::lsp::to_proto::completion_item has cognitive complexity 45 (threshold 15). Drivers by points: if/else 30 (38 pts), boolean chains 5, loops 1 (2 pts) (nesting depth added 9). Of this number, 43 points are the body\u0027s own statements and 2 belong to one function item inside it that branches. To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/lsp/to_proto.rs"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"24aa2094f5d37594ac5d80c2c27b653cfb097677818c0d558439772e543abb01"}},{"ruleId":"D2","level":"warning","message":{"text":"Evaluator::interpret_mir (cognitive 44): Evaluator::interpret_mir has cognitive complexity 44 (threshold 15). Drivers by points: if/else 9 (20 pts), match/switch 5 (15 pts), loops 4 (9 pts) (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":944}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c7e0bb7a073f4ec514d776493f5fc37c637d48f08ea0ecfc85c87f688fafefb"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::rename::transform_assoc_fn_into_method_call (cognitive 44): ide::rename::transform_assoc_fn_into_method_call has cognitive complexity 44 (threshold 15). Drivers by points: if/else 9 (27 pts), match/switch 3 (11 pts), loops 3 (6 pts) (nesting depth added 29). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/rename.rs"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"996997467207878dca1d3771b3f13e52132e9a9b8e2c4947f4bc0572aca37950"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::add_missing_match_arms::add_missing_match_arms (cognitive 44): ide_assists::handlers::add_missing_match_arms::add_missing_match_arms has cognitive complexity 44 (threshold 15). Drivers by points: if/else 23 (32 pts), boolean chains 6, match/switch 3 (4 pts), loops 1 (2 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/add_missing_match_arms.rs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"3687441dc4eb4e5bf998b0f2bcc0c786520994a614a3efb89392ecd459f9405e"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::utils::gen_trait_fn_body::gen_partial_eq (cognitive 44): ide_assists::utils::gen_trait_fn_body::gen_partial_eq has cognitive complexity 44 (threshold 15). Drivers by points: if/else 7 (19 pts), loops 5 (16 pts), match/switch 5 (9 pts) (nesting depth added 27). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/utils/gen_trait_fn_body.rs"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"17440fd158b46f9c0b7fefe5f20654abb81a4870563113fbf09b4efe14558ba5"}},{"ruleId":"D2","level":"warning","message":{"text":"syntax_bridge::to_parser_input::to_parser_input (cognitive 44): syntax_bridge::to_parser_input::to_parser_input has cognitive complexity 44 (threshold 15). Drivers by points: match/switch 8 (25 pts), if/else 5 (16 pts), boolean chains 2, loops 1 (nesting depth added 28). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax-bridge/src/to_parser_input.rs"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bf41b93261dcbde7607ae8ae6c62b15237a519a3f21ff9caefd656d36fb45d2"}},{"ruleId":"D2","level":"warning","message":{"text":"client.createClient (cognitive 44): client.createClient has cognitive complexity 44 (threshold 15). Drivers by points: if/else 17 (29 pts), boolean chains 6, match/switch 1 (5 pts), loops 2, ternaries 2 (nesting depth added 16). Most of this is not in the body itself: 4 of the 44 points are its own statements and the rest belongs to 4 function literals inside it that branch (lines 60, 197, 169, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/client.ts"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"a253c469f399a0d07bb4be67f801ced8bbc2bce8fb201547014be717e9759e2a"}},{"ruleId":"D2","level":"warning","message":{"text":"ModCollector::collect (cognitive 42): ModCollector::collect has cognitive complexity 42 (threshold 15). Drivers by points: if/else 14 (28 pts), match/switch 5 (8 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":1898}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae41649f9cd573cf1f4e297d30e650b2adf659e526ba6356e5f327637a00ffa2"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_def::attrs::parse_repr_tt (cognitive 42): hir_def::attrs::parse_repr_tt has cognitive complexity 42 (threshold 15). Drivers by points: if/else 9 (23 pts), match/switch 4 (16 pts), boolean chains 2, loops 1 (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/attrs.rs"},"region":{"startLine":1272}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fdf2e3c089aed32e39824990e33e3f8e8a866fabcaa30b8cc953f8b9cc1c4f0"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_completion::completions::use_::complete_use_path (cognitive 42): ide_completion::completions::use_::complete_use_path has cognitive complexity 42 (threshold 15). Drivers by points: if/else 7 (23 pts), match/switch 4 (9 pts), loops 2 (7 pts), boolean chains 3 (nesting depth added 26). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/use_.rs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"c830ad9ac106c190d137813e749359049a641a74425edd554f69fd326ff0199e"}},{"ruleId":"D2","level":"warning","message":{"text":"Module::get_usages_and_record_fields (cognitive 41): Module::get_usages_and_record_fields has cognitive complexity 41 (threshold 15). Drivers by points: if/else 8 (28 pts), match/switch 3 (12 pts), loops 1 (nesting depth added 29). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_module.rs"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c41a8c6bb18fc902a1934d7d5e6b854c14ee737b37c30bd633e3bb25e26db25"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_db::imports::insert_use::guess_granularity_from_scope (cognitive 41): ide_db::imports::insert_use::guess_granularity_from_scope has cognitive complexity 41 (threshold 15). Drivers by points: if/else 15 (32 pts), boolean chains 6, match/switch 2, loops 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/insert_use.rs"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"0432a1af3ed9e17fbeeef586a9775f8aedefa44716348ceec38d8882770e7821"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_db::rename::source_edit_from_def (cognitive 41): ide_db::rename::source_edit_from_def has cognitive complexity 41 (threshold 15). Drivers by points: if/else 11 (27 pts), match/switch 3 (8 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 23). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/rename.rs"},"region":{"startLine":673}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec0c0fb5c5307e2ddf76ef24172278dc681a48e8b16bf74294b37e4cd8b16a36"}},{"ruleId":"D2","level":"warning","message":{"text":"Converter::extend_literal (cognitive 41): Converter::extend_literal has cognitive complexity 41 (threshold 15). Drivers by points: if/else 20 (40 pts), match/switch 1 (nesting depth added 20). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/lexed_str.rs"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"463f9721e8663a8a035876e48110b26bc5b4141a23c4288c1ecea73144211e87"}},{"ruleId":"D2","level":"warning","message":{"text":"syntax_bridge::prettify_macro_expansion::prettify_macro_expansion (cognitive 41): syntax_bridge::prettify_macro_expansion::prettify_macro_expansion has cognitive complexity 41 (threshold 15). Drivers by points: if/else 7 (19 pts), match/switch 5 (12 pts), boolean chains 7, loops 3 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax-bridge/src/prettify_macro_expansion.rs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"5396a923f931ab2823e723b1911a75fd966fe74701663e894fa505dcffa8b9f3"}},{"ruleId":"D2","level":"warning","message":{"text":"ExprCollector::collect_pat (cognitive 40): ExprCollector::collect_pat has cognitive complexity 40 (threshold 15). Drivers by points: if/else 10 (21 pts), loops 4 (10 pts), match/switch 4 (8 pts), boolean chains 1 (nesting depth added 21). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":2912}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d4c694d39d5a1478f077abf2e9477e5c35a17c2bccae6acd7f9ad70daf4226d"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceContext::try_find_coercion_lub (cognitive 40): InferenceContext::try_find_coercion_lub has cognitive complexity 40 (threshold 15). Drivers by points: if/else 16 (20 pts), match/switch 6 (12 pts), boolean chains 4, loops 2 (4 pts) (nesting depth added 12). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/coerce.rs"},"region":{"startLine":926}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd51c1a60012c42264d2b8041d5ba118572da4ffd81917e5e94ca3a0b6b7c0a8"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::inlay_hints::implicit_drop::hints (cognitive 40): ide::inlay_hints::implicit_drop::hints has cognitive complexity 40 (threshold 15). Drivers by points: match/switch 6 (24 pts), if/else 6 (15 pts), loops 1 (nesting depth added 27). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints/implicit_drop.rs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"35932c87d992a1075ef85ac137a9b88fb5468ceb24de02ecdafcb52851612596"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_db::prime_caches::parallel_prime_caches (cognitive 40): ide_db::prime_caches::parallel_prime_caches has cognitive complexity 40 (threshold 15). Drivers by points: if/else 7 (17 pts), loops 8 (14 pts), match/switch 6 (8 pts), boolean chains 1 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/prime_caches.rs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bd14cb2cb461a576134d80464253d68d0fa65ed250ec680052d48dc2ebd612b"}},{"ruleId":"D2","level":"warning","message":{"text":"Sysroot::load_workspace (cognitive 40): Sysroot::load_workspace has cognitive complexity 40 (threshold 15). Drivers by points: if/else 11 (26 pts), loops 4 (11 pts), match/switch 1 (3 pts) (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/sysroot.rs"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"33f53934e4d48cd5fe7bd50f99d84ec747d011c16b7a5cfb141ce7ab14c4d2b3"}},{"ruleId":"D2","level":"warning","message":{"text":"GlobalState::handle_task (cognitive 40): GlobalState::handle_task has cognitive complexity 40 (threshold 15). Drivers by points: match/switch 9 (21 pts), if/else 7 (19 pts) (nesting depth added 24). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/main_loop.rs"},"region":{"startLine":850}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9dbed8c306adbee5793a4aaa17b2180cb9ea6b52a360fef1d81b2140dc80ba6"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceContext::analyze_closure (cognitive 39): InferenceContext::analyze_closure has cognitive complexity 39 (threshold 15). Drivers by points: if/else 16 (30 pts), loops 3 (5 pts), match/switch 2 (3 pts), boolean chains 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis.rs"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"c490462b33c2490482120ddafc380574ebe0704c054080b214bd05c15a7b4e89"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceContext::infer_ref_pat (cognitive 39): InferenceContext::infer_ref_pat has cognitive complexity 39 (threshold 15). Drivers by points: if/else 12 (29 pts), boolean chains 5, match/switch 3 (5 pts) (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/pat.rs"},"region":{"startLine":1356}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c01ac65615d04404e5a1a4768dcd5be32521c2b13fe83cc48809aeec7f9a4fb"}},{"ruleId":"D2","level":"warning","message":{"text":"Evaluator::place_addr_and_ty_and_metadata (cognitive 39): Evaluator::place_addr_and_ty_and_metadata has cognitive complexity 39 (threshold 15). Drivers by points: match/switch 8 (27 pts), if/else 5 (11 pts), loops 1 (nesting depth added 25). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":786}}}],"partialFingerprints":{"codehealthFindingId/v1":"229036d509241333f80d151c3a93693d98d4e456b02c92a45987c5dac17efb6f"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::inlay_hints::closing_brace::hints (cognitive 39): ide::inlay_hints::closing_brace::hints has cognitive complexity 39 (threshold 15). Drivers by points: if/else 16 (27 pts), match/switch 4 (9 pts), boolean chains 3 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints/closing_brace.rs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"df45011395bdff9f75a4c9457c1733eccab58816352db2f0f28c5d776dfc0771"}},{"ruleId":"D2","level":"warning","message":{"text":"Module::process_def_in_sel (cognitive 39): Module::process_def_in_sel has cognitive complexity 39 (threshold 15). Drivers by points: if/else 11 (23 pts), boolean chains 11, loops 2 (3 pts), match/switch 1 (2 pts) (nesting depth added 14). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_module.rs"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"5006bcd6e1bca505b064582a2076239f8df815f168060add243e85f478df48bb"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::add_turbo_fish::add_turbo_fish (cognitive 39): ide_assists::handlers::add_turbo_fish::add_turbo_fish has cognitive complexity 39 (threshold 15). Drivers by points: if/else 17 (30 pts), match/switch 7, loops 1 (2 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/add_turbo_fish.rs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"33f182c218fa70eee2425f4335f64e37b909b652cf8a66d57754ee03434da2d5"}},{"ruleId":"D2","level":"warning","message":{"text":"parser::grammar::expressions::atom::parse_asm_expr (cognitive 39): parser::grammar::expressions::atom::parse_asm_expr has cognitive complexity 39 (threshold 15). Drivers by points: if/else 19 (34 pts), boolean chains 4, loops 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/grammar/expressions/atom.rs"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7df05237784fd853f97086a2ce53f730a09ed64c669955e4e4928c7305ccea3"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceContext::infer_mut_expr_without_adjust (cognitive 38): InferenceContext::infer_mut_expr_without_adjust has cognitive complexity 38 (threshold 15). Drivers by points: if/else 10 (26 pts), match/switch 4 (8 pts), loops 2 (4 pts) (nesting depth added 22). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/mutability.rs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2ee855222fee579692066e5bd310713c90dcf95995a9789a11702761ddcc4af"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::inlay_hints::lifetime::hints_ (cognitive 38): ide::inlay_hints::lifetime::hints_ has cognitive complexity 38 (threshold 15). Drivers by points: if/else 13 (18 pts), match/switch 9 (13 pts), boolean chains 6, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints/lifetime.rs"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb1d00cb3592e80e284e7c7cbf0420ff459f9822dc156ea346899134493ce159"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::syntax_highlighting::highlight::highlight_name_ref (cognitive 38): ide::syntax_highlighting::highlight::highlight_name_ref has cognitive complexity 38 (threshold 15). Drivers by points: if/else 12 (28 pts), match/switch 5 (8 pts), boolean chains 2 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting/highlight.rs"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"78655c2f515a65fb612147481dca0104aa30438edc18eb1152e2863590a28398"}},{"ruleId":"D2","level":"warning","message":{"text":"rust_analyzer::lsp::to_proto::code_lens (cognitive 38): rust_analyzer::lsp::to_proto::code_lens has cognitive complexity 38 (threshold 15). Drivers by points: if/else 9 (29 pts), match/switch 3 (6 pts), boolean chains 3 (nesting depth added 23). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/lsp/to_proto.rs"},"region":{"startLine":1758}}}],"partialFingerprints":{"codehealthFindingId/v1":"6412fab425747df4d90eb672dd91182652bad155cc9e0c7e7cd946799bdc76fd"}},{"ruleId":"D2","level":"warning","message":{"text":"rust_analyzer::handlers::request::handle_runnables (cognitive 38): rust_analyzer::handlers::request::handle_runnables has cognitive complexity 38 (threshold 15). Drivers by points: if/else 11 (28 pts), boolean chains 6, loops 2 (3 pts), match/switch 1 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/request.rs"},"region":{"startLine":1016}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae51db0c61580291634a99bdbf58a2a51167e412fde248543ece63abb017fcb8"}},{"ruleId":"D2","level":"warning","message":{"text":"MirLowerCtx::lower_expr_as_place_without_adjust (cognitive 37): MirLowerCtx::lower_expr_as_place_without_adjust has cognitive complexity 37 (threshold 15). Drivers by points: if/else 13 (30 pts), match/switch 3 (5 pts), boolean chains 2 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower/as_place.rs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"a65c6a8dabab09d2b56d3c19b859efd352b577350d97834c211f39091d2ea23b"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_diagnostics::handlers::unlinked_file::fixes (cognitive 37): ide_diagnostics::handlers::unlinked_file::fixes has cognitive complexity 37 (threshold 15). Drivers by points: if/else 8 (18 pts), match/switch 4 (11 pts), loops 4 (7 pts), boolean chains 1 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/unlinked_file.rs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cb793537a1de6505f373b2716aea5f870919382bbb779426183e21727800f79"}},{"ruleId":"D2","level":"warning","message":{"text":"GlobalState::current_status (cognitive 37): GlobalState::current_status has cognitive complexity 37 (threshold 15). Drivers by points: if/else 16 (30 pts), match/switch 1 (3 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/reload.rs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"b08beb586ad1e2d810a2b116b7c9dbc3844620c3d471f02ec0427e3d87ca4eca"}},{"ruleId":"D2","level":"warning","message":{"text":"rust_analyzer::diagnostics::flycheck_to_proto::map_rust_diagnostic_to_lsp (cognitive 37): rust_analyzer::diagnostics::flycheck_to_proto::map_rust_diagnostic_to_lsp has cognitive complexity 37 (threshold 15). Drivers by points: if/else 13 (23 pts), loops 5 (7 pts), match/switch 3 (5 pts), boolean chains 2 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/diagnostics/flycheck_to_proto.rs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f10ede72c9dbcc47f69eb2a011cbb9a32d0f543b0e35ead169e4c2af6b74f72"}},{"ruleId":"D2","level":"warning","message":{"text":"TtTreeSink::token (cognitive 37): TtTreeSink::token has cognitive complexity 37 (threshold 15). Drivers by points: match/switch 7 (22 pts), if/else 5 (11 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 22). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax-bridge/src/lib.rs"},"region":{"startLine":933}}}],"partialFingerprints":{"codehealthFindingId/v1":"8631810187ff0f5df7c1c2c21e889ba10b322298f430dd1ce545d7d69d2fb15e"}},{"ruleId":"D2","level":"warning","message":{"text":"ExprCollector::maybe_collect_expr_as_pat (cognitive 36): ExprCollector::maybe_collect_expr_as_pat has cognitive complexity 36 (threshold 15). Drivers by points: if/else 12 (24 pts), match/switch 7 (11 pts), boolean chains 1 (nesting depth added 16). Of this number, 23 points are the body\u0027s own statements and 13 belong to 3 function items inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":2080}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d89faefc71a9f9f567bb182cdf48d100eff05548ce823cc9e6c6f06c376e018"}},{"ruleId":"D2","level":"warning","message":{"text":"Pat::hir_fmt (cognitive 36): Pat::hir_fmt has cognitive complexity 36 (threshold 15). Drivers by points: if/else 9 (23 pts), match/switch 5 (11 pts), boolean chains 2 (nesting depth added 20). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/match_check.rs"},"region":{"startLine":307}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cc3fd4d03e2408b97d8e4e325141c20accc3f138b67db42e9dce4d54f4db0d4"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::apply_demorgan::apply_demorgan (cognitive 36): ide_assists::handlers::apply_demorgan::apply_demorgan has cognitive complexity 36 (threshold 15). Drivers by points: if/else 17 (30 pts), match/switch 2 (3 pts), loops 2, boolean chains 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/apply_demorgan.rs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"d958cc958261f08513ca673d602e1746190d331e22b7cc5c5bcf03e85e534283"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_completion::completions::item_list::add_keywords (cognitive 36): ide_completion::completions::item_list::add_keywords has cognitive complexity 36 (threshold 15). Drivers by points: if/else 17 (28 pts), boolean chains 8 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/item_list.rs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"1337c063adf13f1ba98d998ea492592ef162064854b5d22d047cd619e25edb16"}},{"ruleId":"D2","level":"warning","message":{"text":"DefMap::resolve_remaining_segments (cognitive 35): DefMap::resolve_remaining_segments has cognitive complexity 35 (threshold 15). Drivers by points: if/else 9 (20 pts), match/switch 5 (14 pts), loops 1 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/path_resolution.rs"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bf6550adf146e6954269d58be28ad6e12f80de5c821d5f77750547753a18083"}},{"ruleId":"D2","level":"warning","message":{"text":"ExprValidator::check_for_unnecessary_else (cognitive 35): ExprValidator::check_for_unnecessary_else has cognitive complexity 35 (threshold 15). Drivers by points: if/else 9 (27 pts), loops 1 (4 pts), match/switch 1 (3 pts), boolean chains 1 (nesting depth added 23). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/expr.rs"},"region":{"startLine":499}}}],"partialFingerprints":{"codehealthFindingId/v1":"c062389bf94e7ab3b06c7c5d1d82ed10ab6918b9784a55c3d8c3275bd63cd76c"}},{"ruleId":"D2","level":"warning","message":{"text":"Evaluator::create_memory_map::rec (cognitive 35): Evaluator::create_memory_map::rec has cognitive complexity 35 (threshold 15). Drivers by points: loops 5 (15 pts), match/switch 6 (13 pts), if/else 3 (7 pts) (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":2371}}}],"partialFingerprints":{"codehealthFindingId/v1":"81ce4e421d5248438dc7695f6a6d28332c54b702b35d4f2b7f3c3bcfde2baf5f"}},{"ruleId":"D2","level":"warning","message":{"text":"Filler::fill_body (cognitive 35): Filler::fill_body has cognitive complexity 35 (threshold 15). Drivers by points: match/switch 5 (20 pts), loops 5 (13 pts), if/else 1 (2 pts) (nesting depth added 24). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/monomorphization.rs"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"50dc88ab5e7c624fa52ec34b95b031c3747be7d3361c69c9b97209fa4afe4741"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_ty::display::render_const_scalar_from_valtree_inner (cognitive 35): hir_ty::display::render_const_scalar_from_valtree_inner has cognitive complexity 35 (threshold 15). Drivers by points: if/else 12 (26 pts), match/switch 3 (5 pts), loops 2 (4 pts) (nesting depth added 18). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":1095}}}],"partialFingerprints":{"codehealthFindingId/v1":"17f9725b59873a55291b274de02afc86142447b42987c492ce38939043b078b8"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::signature_help::signature_help_for_call (cognitive 35): ide::signature_help::signature_help_for_call has cognitive complexity 35 (threshold 15). Drivers by points: if/else 11 (17 pts), match/switch 8 (17 pts), loops 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/signature_help.rs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4fdf951953771345e4ea3b2decd6ec5c9da7d4d10135f0936b9cc5819f5aa2c"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::annotations::annotations (cognitive 35): ide::annotations::annotations has cognitive complexity 35 (threshold 15). Drivers by points: if/else 14 (23 pts), boolean chains 5, match/switch 4 (5 pts), loops 1 (2 pts) (nesting depth added 11). Of this number, 29 points are the body\u0027s own statements and 6 belong to one function item inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/annotations.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e43078e739c9fe8efa58ac48bd0ebea5ce0f519dcb4eeaaf746c43eb01c47fd"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::view_syntax_tree::syntax_node_to_json (cognitive 35): ide::view_syntax_tree::syntax_node_to_json has cognitive complexity 35 (threshold 15). Drivers by points: if/else 5 (15 pts), match/switch 5 (15 pts), loops 2 (5 pts) (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/view_syntax_tree.rs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"b98a6cf33564d2b6a507914b70e188827b5795281f4aeb5430776655f896f6fc"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::generate_new::generate_new (cognitive 35): ide_assists::handlers::generate_new::generate_new has cognitive complexity 35 (threshold 15). Drivers by points: if/else 14 (24 pts), match/switch 4 (6 pts), loops 1 (4 pts), boolean chains 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_new.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"e02cdff3d4bfda7a69e2d71e6fb6199b6f0099aad3ed819ee5fadec37fcdde9e"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::extract_function::update_external_control_flow (cognitive 35): ide_assists::handlers::extract_function::update_external_control_flow has cognitive complexity 35 (threshold 15). Drivers by points: if/else 6 (24 pts), match/switch 3 (9 pts), boolean chains 1, loops 1 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_function.rs"},"region":{"startLine":2128}}}],"partialFingerprints":{"codehealthFindingId/v1":"c330d8706ff21105952c380e59264ec26957df375d496da99f3a08e5e519bc88"}},{"ruleId":"D2","level":"warning","message":{"text":"WorkspaceBuildScripts::build_command (cognitive 35): WorkspaceBuildScripts::build_command has cognitive complexity 35 (threshold 15). Drivers by points: if/else 12 (28 pts), match/switch 3 (7 pts) (nesting depth added 20). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/build_dependencies.rs"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"1427513ab86885be29691809bf38cd97f9821890ed40e5baa8f93194b09e4e1b"}},{"ruleId":"D2","level":"warning","message":{"text":"Resolver::resolve_path_in_type_ns_with_prefix_info (cognitive 34): Resolver::resolve_path_in_type_ns_with_prefix_info has cognitive complexity 34 (threshold 15). Drivers by points: if/else 10 (23 pts), match/switch 4 (9 pts), boolean chains 1, loops 1 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/resolver.rs"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ad7276c4bc91b5146d3a777cb7f87fea2f78cf5d1dabdaac336de11dd6dcfff"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_def::expr_store::lower::lower_body (cognitive 34): hir_def::expr_store::lower::lower_body has cognitive complexity 34 (threshold 15). Drivers by points: if/else 10 (20 pts), match/switch 4 (9 pts), boolean chains 3, loops 1 (2 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c5d9dd36ade1569b915f528fd453111fe0f8a13c43a8ef35ae7c69695a5ae35"}},{"ruleId":"D2","level":"warning","message":{"text":"MirLowerCtx::lower_block_to_place (cognitive 34): MirLowerCtx::lower_block_to_place has cognitive complexity 34 (threshold 15). Drivers by points: if/else 9 (27 pts), match/switch 2 (6 pts), loops 1 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower.rs"},"region":{"startLine":1791}}}],"partialFingerprints":{"codehealthFindingId/v1":"ceb95f1dd5b47979ebb0229ad137dfd90953690f32d75c74805c5c528a8b2282"}},{"ruleId":"D2","level":"warning","message":{"text":"Definition::search_scope (cognitive 34): Definition::search_scope has cognitive complexity 34 (threshold 15). Drivers by points: match/switch 15 (25 pts), if/else 8, boolean chains 1 (nesting depth added 10). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"095535bcc2d50613a1d1eeb98e1e195d054d4bd2676d2a795e12bd348d9ddd41"}},{"ruleId":"D2","level":"warning","message":{"text":"ProjectFolders::new (cognitive 34): ProjectFolders::new has cognitive complexity 34 (threshold 15). Drivers by points: loops 10 (18 pts), if/else 5 (10 pts), match/switch 1 (4 pts), boolean chains 2 (nesting depth added 16). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/load-cargo/src/lib.rs"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"8844728f7ece531d76de138dc0312dd8c9574915dee94d10ff0bee9a4faf085c"}},{"ruleId":"D2","level":"warning","message":{"text":"parser::grammar::expressions::atom::builtin_expr (cognitive 34): parser::grammar::expressions::atom::builtin_expr has cognitive complexity 34 (threshold 15). Drivers by points: if/else 12 (25 pts), loops 2 (5 pts), boolean chains 4 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/grammar/expressions/atom.rs"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"6968852a1fa1fa78d72b7f5a61dc76a56fa168eba7c6575ca0e6a3171976178d"}},{"ruleId":"D2","level":"warning","message":{"text":"project_model::env::cargo_config_env (cognitive 34): project_model::env::cargo_config_env has cognitive complexity 34 (threshold 15). Drivers by points: if/else 13 (31 pts), match/switch 1 (2 pts), loops 1 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/env.rs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d087e1887ffb62a15bdbf656ee216682118c994bb466c2e396b61a2f80bba7e"}},{"ruleId":"D2","level":"warning","message":{"text":"Evaluator::exec_extern_c (cognitive 33): Evaluator::exec_extern_c has cognitive complexity 33 (threshold 15). Drivers by points: if/else 12 (24 pts), match/switch 4 (7 pts), loops 1 (2 pts) (nesting depth added 16). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":397}}}],"partialFingerprints":{"codehealthFindingId/v1":"b445f171eccc11f28614d472ae03d335f4fd9479cf5e3285026b4ff1f9f4495e"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::hover::hover_offset (cognitive 33): ide::hover::hover_offset has cognitive complexity 33 (threshold 15). Drivers by points: if/else 12 (20 pts), boolean chains 7, match/switch 3 (5 pts), loops 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover.rs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7c14e16c04c1c6799da54a47fcf9e4f2aa9de08148f22f7af446a6d70702ffc"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::join_lines::remove_newline (cognitive 33): ide::join_lines::remove_newline has cognitive complexity 33 (threshold 15). Drivers by points: if/else 13 (21 pts), match/switch 4 (8 pts), boolean chains 4 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/join_lines.rs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"37825d024e8c3a3226b07b4706b202abb5e1d595f298af0d95e6960b1ce8af84"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_completion::context::analysis::analyze (cognitive 33): ide_completion::context::analysis::analyze has cognitive complexity 33 (threshold 15). Drivers by points: if/else 14 (24 pts), boolean chains 8, match/switch 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context/analysis.rs"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c3e585d6f2a19b606c5e2646d8b2dde1b19ac8ca7835142bd6c642cb5ac44ba"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_db::traits::diff_assoc_items (cognitive 33): ide_db::traits::diff_assoc_items has cognitive complexity 33 (threshold 15). Drivers by points: if/else 9 (20 pts), match/switch 3 (7 pts), loops 3 (4 pts), boolean chains 2 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/traits.rs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"02888d16e047e0692042bc38ca268dfa5d518a5dcfc1b874f4adfa166890528c"}},{"ruleId":"D2","level":"warning","message":{"text":"Matcher::attempt_match_token_tree (cognitive 33): Matcher::attempt_match_token_tree has cognitive complexity 33 (threshold 15). Drivers by points: if/else 5 (16 pts), match/switch 4 (12 pts), loops 2 (4 pts), boolean chains 1 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-ssr/src/matching.rs"},"region":{"startLine":443}}}],"partialFingerprints":{"codehealthFindingId/v1":"58b589a05baff08ad11eb8bc4ae81db62bd9bf13259f13f0af939f83b9788597"}},{"ruleId":"D2","level":"warning","message":{"text":"Reader::read_subtree (cognitive 33): Reader::read_subtree has cognitive complexity 33 (threshold 15). Drivers by points: if/else 8 (22 pts), match/switch 2 (8 pts), loops 2 (3 pts) (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-api/src/legacy_protocol/msg/flat.rs"},"region":{"startLine":750}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e887427039faa13fca181806df225ef9d0334ece307268eb6535846bece62f0"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceToDefCtx::container_to_def (cognitive 32): SourceToDefCtx::container_to_def has cognitive complexity 32 (threshold 15). Drivers by points: if/else 15 (26 pts), match/switch 2 (4 pts), boolean chains 2 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics/source_to_def.rs"},"region":{"startLine":616}}}],"partialFingerprints":{"codehealthFindingId/v1":"c286fc13471fd008feb9991117b52e63587fde19795d98d8804e518a33f8ece2"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_expand::attrs::expand_cfg_attr_with_doc_comments (cognitive 32): hir_expand::attrs::expand_cfg_attr_with_doc_comments has cognitive complexity 32 (threshold 15). Drivers by points: if/else 10 (26 pts), loops 2 (3 pts), match/switch 1 (3 pts) (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/attrs.rs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c2fa7fb5be0d344fe6bff5cc28924927184f7537c283e9c9f6b4f6b5e2398cb"}},{"ruleId":"D2","level":"warning","message":{"text":"Evaluator::patch_addresses (cognitive 32): Evaluator::patch_addresses has cognitive complexity 32 (threshold 15). Drivers by points: loops 5 (15 pts), match/switch 6 (11 pts), if/else 2 (6 pts) (nesting depth added 19). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":2544}}}],"partialFingerprints":{"codehealthFindingId/v1":"bce5f5a50fea9a19760d762a1ededd5bd5462f96c8b20ad54ccbca3ccc2192ee"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::syntax_highlighting::highlight::punctuation (cognitive 32): ide::syntax_highlighting::highlight::punctuation has cognitive complexity 32 (threshold 15). Drivers by points: if/else 12 (22 pts), match/switch 4 (7 pts), boolean chains 3 (nesting depth added 13). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting/highlight.rs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a489204d12c4d932e111f6dcbeb7578c3328fa6f9b1443bf5d0beb68aad8f7c"}},{"ruleId":"D2","level":"warning","message":{"text":"Reader::read_tokenstream (cognitive 32): Reader::read_tokenstream has cognitive complexity 32 (threshold 15). Drivers by points: if/else 12 (23 pts), match/switch 3 (8 pts), loops 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-api/src/legacy_protocol/msg/flat.rs"},"region":{"startLine":858}}}],"partialFingerprints":{"codehealthFindingId/v1":"96090d2803a6a9149f025f72ec2550f9156514d48aa5da4f50b9e736baf4221d"}},{"ruleId":"D2","level":"warning","message":{"text":"rust_analyzer::handlers::request::run_rustfmt (cognitive 32): rust_analyzer::handlers::request::run_rustfmt has cognitive complexity 32 (threshold 15). Drivers by points: if/else 12 (20 pts), boolean chains 6, match/switch 4 (6 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/request.rs"},"region":{"startLine":2405}}}],"partialFingerprints":{"codehealthFindingId/v1":"e45d778ee33822250d269b5b872473d2e3d3cc40540fc3598822dbf91bffcc7b"}},{"ruleId":"D2","level":"warning","message":{"text":"hir::display::write_function (cognitive 31): hir::display::write_function has cognitive complexity 31 (threshold 15). Drivers by points: if/else 20 (22 pts), match/switch 3 (7 pts), boolean chains 1, loops 1 (nesting depth added 6). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/display.rs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"9abe76c780d75a8446957e4bafc1f5af3f2f0b493662e6cc8753ab46a2c458c6"}},{"ruleId":"D2","level":"warning","message":{"text":"DefCollector::seed_with_top_level (cognitive 31): DefCollector::seed_with_top_level has cognitive complexity 31 (threshold 15). Drivers by points: if/else 7 (17 pts), match/switch 4 (9 pts), boolean chains 3, loops 2 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cdb13ac23f6d759e9f6935fc490f9a1aacff9b89280095ba6ea44968641b4ab"}},{"ruleId":"D2","level":"warning","message":{"text":"DefCollector::push_res_and_update_glob_vis (cognitive 31): DefCollector::push_res_and_update_glob_vis has cognitive complexity 31 (threshold 15). Drivers by points: if/else 13 (22 pts), boolean chains 9 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":1202}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5717cba444ff5e7589abfac191bb60912522dc606ca199ede802d1068d4afbf"}},{"ruleId":"D2","level":"warning","message":{"text":"UnsafeVisitor::walk_expr (cognitive 31): UnsafeVisitor::walk_expr has cognitive complexity 31 (threshold 15). Drivers by points: if/else 9 (19 pts), match/switch 5 (8 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 14). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/unsafe_check.rs"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"6269f444eee8fb31fc8acc587b8bc1a83de8d53586d04fd4f89d4ef934f4e6f9"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceContext::compute_min_captures (cognitive 31): InferenceContext::compute_min_captures has cognitive complexity 31 (threshold 15). Drivers by points: match/switch 5 (13 pts), if/else 5 (11 pts), loops 4 (7 pts) (nesting depth added 17). Of this number, 29 points are the body\u0027s own statements and 2 belong to one function item inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis.rs"},"region":{"startLine":724}}}],"partialFingerprints":{"codehealthFindingId/v1":"efa93b0f5e096d27ee79580a8e91f1638bf261d78a8e3352a921728c7be9fe76"}},{"ruleId":"D2","level":"warning","message":{"text":"MirEvalError::pretty_print (cognitive 31): MirEvalError::pretty_print has cognitive complexity 31 (threshold 15). Drivers by points: match/switch 9 (28 pts), loops 2 (3 pts) (nesting depth added 20). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"b25edb21381fedb4e700b378fb7f7d3628954715895b86114ff727ecc3eb1d29"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_completion::render::function::add_call_parens (cognitive 31): ide_completion::render::function::add_call_parens has cognitive complexity 31 (threshold 15). Drivers by points: if/else 11 (18 pts), match/switch 4 (12 pts), boolean chains 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/render/function.rs"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"87ecbb19a2df5f55edc1dd2758ec2c68fb1cf5801eafdfcbde354c5ac66612ae"}},{"ruleId":"D2","level":"warning","message":{"text":"parser::grammar::items::opt_item (cognitive 31): parser::grammar::items::opt_item has cognitive complexity 31 (threshold 15). Drivers by points: if/else 12 (14 pts), boolean chains 13, match/switch 3 (4 pts) (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/grammar/items.rs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"f66df3adbd936890bfd07f2c886c51c9fbf6f66a5dcd43aca710b708d4448509"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceContext::deduce_closure_signature_from_predicates (cognitive 30): InferenceContext::deduce_closure_signature_from_predicates has cognitive complexity 30 (threshold 15). Drivers by points: if/else 8 (19 pts), match/switch 3 (9 pts), boolean chains 1, loops 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure.rs"},"region":{"startLine":418}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5a239c6e79dc3381303dddec4b520c4568397dd616617c1d964b86cd35fed1e"}},{"ruleId":"D2","level":"warning","message":{"text":"ProbeContext::consider_probe (cognitive 30): ProbeContext::consider_probe has cognitive complexity 30 (threshold 15). Drivers by points: if/else 10 (20 pts), match/switch 5 (8 pts), boolean chains 2 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/method_resolution/probe.rs"},"region":{"startLine":1567}}}],"partialFingerprints":{"codehealthFindingId/v1":"a68ae7951b6e9eb2b33dce304309f29ddf51785e5de2cfdca356c4a502c185f3"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::convert_closure_to_fn::compute_closure_type_params (cognitive 30): ide_assists::handlers::convert_closure_to_fn::compute_closure_type_params has cognitive complexity 30 (threshold 15). Drivers by points: if/else 9 (18 pts), loops 5 (11 pts), match/switch 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_closure_to_fn.rs"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9b4c9228ae22ba0ca61e6347cbbe6350ae7a11aa1b06370e71cbeb95aa47aa7"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::convert_bool_to_enum::replace_usages (cognitive 30): ide_assists::handlers::convert_bool_to_enum::replace_usages has cognitive complexity 30 (threshold 15). Drivers by points: if/else 14 (26 pts), match/switch 1 (3 pts), loops 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_bool_to_enum.rs"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"adb3f74ed3ada56b241febbe0d4ca12537036803ffb067933eaccf78878a72ad"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_db::syntax_helpers::format_string_exprs::parse_format_exprs (cognitive 30): ide_db::syntax_helpers::format_string_exprs::parse_format_exprs has cognitive complexity 30 (threshold 15). Drivers by points: if/else 13 (25 pts), boolean chains 2, match/switch 1 (2 pts), loops 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/syntax_helpers/format_string_exprs.rs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9ab4f9817b7a15f393d7b1b6145a516502e02e07bae1b43e8f6f174d4526b1e"}},{"ruleId":"D2","level":"warning","message":{"text":"GlobalState::compute_priming_scope (cognitive 30): GlobalState::compute_priming_scope has cognitive complexity 30 (threshold 15). Drivers by points: if/else 5 (19 pts), loops 4 (9 pts), match/switch 1 (2 pts) (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/global_state.rs"},"region":{"startLine":758}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7e574d9df0723bcc9a98646e10e3f64e7665cae1ca1f434904118432cbe0720"}},{"ruleId":"D2","level":"warning","message":{"text":"AstIdMap::from_source (cognitive 30): AstIdMap::from_source has cognitive complexity 30 (threshold 15). Drivers by points: if/else 5 (15 pts), match/switch 3 (7 pts), boolean chains 4, loops 3 (4 pts) (nesting depth added 15). Of this number, 29 points are the body\u0027s own statements and 1 belongs to one function item inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/span/src/ast_id.rs"},"region":{"startLine":633}}}],"partialFingerprints":{"codehealthFindingId/v1":"1286d69419595bcc9ae8c77e6c3152f9bbb039ea51a14e36bb58943a75b35ed1"}},{"ruleId":"D2","level":"warning","message":{"text":"hir::source_analyzer::resolve_hir_path_ (cognitive 29): hir::source_analyzer::resolve_hir_path_ has cognitive complexity 29 (threshold 15). Drivers by points: if/else 12 (20 pts), match/switch 4 (5 pts), boolean chains 4 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":1872}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a7b3c2cf93b4dbd446a8b3993331427a95df4a8a636f136b11f974f04b7203a"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_def::expr_store::pretty::print_generic_params (cognitive 29): hir_def::expr_store::pretty::print_generic_params has cognitive complexity 29 (threshold 15). Drivers by points: if/else 7 (21 pts), loops 2 (4 pts), match/switch 1 (4 pts) (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/pretty.rs"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"78078824a79b8fd2999a6cd591053783eb8b9625d30b90e47a31374d57985df3"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::generate_delegate_methods::generate_delegate_methods (cognitive 29): ide_assists::handlers::generate_delegate_methods::generate_delegate_methods has cognitive complexity 29 (threshold 15). Drivers by points: if/else 9 (17 pts), match/switch 4 (8 pts), boolean chains 2, loops 2 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_delegate_methods.rs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"f51672f3188b1b4af6e76b530edc3c6169513ca433772ff53db8bc2aaf1b765a"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::extract_module::extract_module (cognitive 29): ide_assists::handlers::extract_module::extract_module has cognitive complexity 29 (threshold 15). Drivers by points: if/else 13 (19 pts), loops 5 (8 pts), boolean chains 1, match/switch 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_module.rs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"5af3693cf0b66b4db522e59219349bdc35b723d7d970d3e7d3547732b940d462"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_db::imports::merge_imports::recursive_normalize (cognitive 29): ide_db::imports::merge_imports::recursive_normalize has cognitive complexity 29 (threshold 15). Drivers by points: if/else 15 (24 pts), loops 3 (4 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/merge_imports.rs"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"08944b6698512e3b866249d5237abc3bb7013223efef46f1ba18eb1defa4a014"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_diagnostics::handlers::missing_fields::fixes (cognitive 29): ide_diagnostics::handlers::missing_fields::fixes has cognitive complexity 29 (threshold 15). Drivers by points: if/else 12 (21 pts), loops 2 (4 pts), match/switch 2 (3 pts), boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/missing_fields.rs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"bab16b007f89991534dc1142d2888fadfd44f80264e95443e4a8f66c8d51929b"}},{"ruleId":"D2","level":"warning","message":{"text":"Printer::print_type_ref (cognitive 28): Printer::print_type_ref has cognitive complexity 28 (threshold 15). Drivers by points: if/else 8 (19 pts), match/switch 3 (5 pts), loops 2 (4 pts) (nesting depth added 15). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/pretty.rs"},"region":{"startLine":1259}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4e0bb47d400c58378f53842b35e9e46543d710bbe10e49439f6615c6f7f79d2"}},{"ruleId":"D2","level":"warning","message":{"text":"SolverContext::compute_goal_fast_path (cognitive 28): SolverContext::compute_goal_fast_path has cognitive complexity 28 (threshold 15). Drivers by points: if/else 10 (20 pts), match/switch 3 (6 pts), boolean chains 2 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/solver.rs"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf53893eba993c3218e25bc5abca64cfbc98a89ef67c505bfa202cfbe3631dc9"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::inlay_hints::param_name::hints (cognitive 28): ide::inlay_hints::param_name::hints has cognitive complexity 28 (threshold 15). Drivers by points: if/else 10 (18 pts), match/switch 5 (9 pts), boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints/param_name.rs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"7caec74f5a98a09c88ffb2bede792ae81bffa763677945261a0ec8c27da2f5a1"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::moniker::def_to_non_local_moniker (cognitive 28): ide::moniker::def_to_non_local_moniker has cognitive complexity 28 (threshold 15). Drivers by points: if/else 8 (17 pts), match/switch 5 (10 pts), loops 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/moniker.rs"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"0379d12f7634b25b704cb2651f44ec87e2147a6b543e9a2cd0bb34e139258235"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::wrap_return_type::wrap_return_type (cognitive 28): ide_assists::handlers::wrap_return_type::wrap_return_type has cognitive complexity 28 (threshold 15). Drivers by points: if/else 6 (14 pts), match/switch 4 (8 pts), boolean chains 3, loops 2 (3 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/wrap_return_type.rs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"d928fa2d89a6b86ba6ad002ce2e0d81b6fccff4b17fed331daa9aa9eeb974a0e"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::extract_expressions_from_format_string::extract_expressions_from_format_string (cognitive 28): ide_assists::handlers::extract_expressions_from_format_string::extract_expressions_from_format_string has cognitive complexity 28 (threshold 15). Drivers by points: if/else 10 (16 pts), match/switch 4 (9 pts), loops 2 (3 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_expressions_from_format_string.rs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"96801e31e197eebcab3c2891dc89ccd50c7aaef83e1bfb57c4d6a3aaeb4d73fb"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_db::imports::merge_imports::version_sort::version_sort (cognitive 28): ide_db::imports::merge_imports::version_sort::version_sort has cognitive complexity 28 (threshold 15). Drivers by points: match/switch 5 (14 pts), if/else 3 (11 pts), boolean chains 2, loops 1 (nesting depth added 17). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/merge_imports.rs"},"region":{"startLine":978}}}],"partialFingerprints":{"codehealthFindingId/v1":"1066d8a72a8e0ee1e100d607d81f6d0afe9cc1241da41f54a5fac1c37a007af1"}},{"ruleId":"D2","level":"warning","message":{"text":"debug.getDebugConfiguration (cognitive 28): debug.getDebugConfiguration has cognitive complexity 28 (threshold 15). Drivers by points: if/else 13 (19 pts), loops 2 (4 pts), boolean chains 3, ternaries 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/debug.ts"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"99df9567dbb51affb865fc34ff6ee56615770e28760cac909128f57395700e47"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_def::attrs::docs::get_horizontal_trim (cognitive 27): hir_def::attrs::docs::get_horizontal_trim has cognitive complexity 27 (threshold 15). Drivers by points: if/else 7 (16 pts), loops 4 (7 pts), boolean chains 3, match/switch 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/attrs/docs.rs"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"df6301692d50e01741b7ac01d5000788fd88477eff2c184158d1e0c3315447d4"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_expand::eager::eager_macro_recur (cognitive 27): hir_expand::eager::eager_macro_recur has cognitive complexity 27 (threshold 15). Drivers by points: match/switch 7 (17 pts), if/else 4 (9 pts), loops 1 (nesting depth added 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/eager.rs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3058ca6c7e3446de55a348580fd1197c6231d8b83dc024da812928541d8cea7"}},{"ruleId":"D2","level":"warning","message":{"text":"Generalizer::tys (cognitive 27): Generalizer::tys has cognitive complexity 27 (threshold 15). Drivers by points: if/else 7 (16 pts), match/switch 4 (10 pts), boolean chains 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/relate/generalize.rs"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e8c985e8e8cf96e63a03fde2b0895fba7bcdf5ca77212a7324292f58699b2a5"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::signature_help::signature_help (cognitive 27): ide::signature_help::signature_help has cognitive complexity 27 (threshold 15). Drivers by points: if/else 8 (23 pts), match/switch 1 (2 pts), boolean chains 1, loops 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/signature_help.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"b93c14768fa7d06c8714aa909281471f8974871ba86cc87287f6c6af4dba4cd0"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::inlay_hints::bind_pat::hints (cognitive 27): ide::inlay_hints::bind_pat::hints has cognitive complexity 27 (threshold 15). Drivers by points: if/else 14 (19 pts), boolean chains 5, match/switch 3 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints/bind_pat.rs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8dd2c585319f475df7a7f77f302b7e2a7c9138a6646504df10c6aff48571dd8"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::hover::render::render_memory_layout (cognitive 27): ide::hover::render::render_memory_layout has cognitive complexity 27 (threshold 15). Drivers by points: if/else 11 (14 pts), match/switch 5 (10 pts), boolean chains 3 (nesting depth added 8). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover/render.rs"},"region":{"startLine":1165}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee89afba5c656a0e08019a68c7c17b0d0b2938f96b1b27ff1d0e9a918ad6e352"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::extract_function::extract_function (cognitive 27): ide_assists::handlers::extract_function::extract_function has cognitive complexity 27 (threshold 15). Drivers by points: if/else 14 (21 pts), match/switch 4, boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_function.rs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"3579b0eb145c2cc9d86d3f9c82c0523540328092a76eb1bbf67ae411ea4a6eed"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::generate_documentation_template::introduction_builder (cognitive 27): ide_assists::handlers::generate_documentation_template::introduction_builder has cognitive complexity 27 (threshold 15). Drivers by points: if/else 13 (23 pts), boolean chains 2, match/switch 1 (2 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_documentation_template.rs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"936be579fe8eef41a894eb9b2c95144e6c0e180567ebe0e03141ca09712a9e07"}},{"ruleId":"D2","level":"warning","message":{"text":"CompletionRelevance::score (cognitive 27): CompletionRelevance::score has cognitive complexity 27 (threshold 15). Drivers by points: if/else 17 (21 pts), match/switch 4 (6 pts) (nesting depth added 6). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/item.rs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"44f99900c551954eb670ca5a1de134ab9ac196d54d153b854febd604c7e6f4a4"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_completion::completions::pattern::complete_pattern_path (cognitive 27): ide_completion::completions::pattern::complete_pattern_path has cognitive complexity 27 (threshold 15). Drivers by points: match/switch 6 (15 pts), if/else 3 (9 pts), loops 1 (3 pts) (nesting depth added 17). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/pattern.rs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dfdd972fac3bd2ae4f3b8ad025f7d1b063664d5d9ae069835e3667f238b9d85"}},{"ruleId":"D2","level":"warning","message":{"text":"Writer::subtree (cognitive 27): Writer::subtree has cognitive complexity 27 (threshold 15). Drivers by points: if/else 7 (17 pts), match/switch 3 (9 pts), loops 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-api/src/legacy_protocol/msg/flat.rs"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b31d7d632d1e51f5594198f594577fed1a863ec9d3a2269e4de7c107106b923"}},{"ruleId":"D2","level":"warning","message":{"text":"project_model::workspace::project_json_to_crate_graph (cognitive 27): project_model::workspace::project_json_to_crate_graph has cognitive complexity 27 (threshold 15). Drivers by points: if/else 11 (19 pts), loops 2 (4 pts), boolean chains 2, match/switch 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/workspace.rs"},"region":{"startLine":1105}}}],"partialFingerprints":{"codehealthFindingId/v1":"9682b1d52ba969292f79878e522598b912ce6e68f4724808daa602bafcad6123"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceContext::resolve_value_path_inner (cognitive 26): InferenceContext::resolve_value_path_inner has cognitive complexity 26 (threshold 15). Drivers by points: if/else 8 (13 pts), match/switch 4 (13 pts) (nesting depth added 14). Of this number, 25 points are the body\u0027s own statements and 1 belongs to one function item inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/path.rs"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e7e7e62f4ec560f286d2d68234e7626103939e53c1500368a4458c6893ca33d"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceContext::resolve_all (cognitive 26): InferenceContext::resolve_all has cognitive complexity 26 (threshold 15). Drivers by points: loops 15 (25 pts), if/else 1 (nesting depth added 10). This file\u0027s own header attributes it to another copyright holder, so it is code this repository carries rather than code it wrote: restructuring the body in place forks it from upstream and turns every future re-sync into a manual merge. The performable moves are to leave the body as close to its upstream form as possible and keep it behind a narrow interface of your own, and to re-sync it when upstream changes \u2014 or, if it has already diverged far enough that you maintain it here, adopt it deliberately and then split the body into named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":1618}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a6fa947eb71a5df569631a02082cbc10eceafc1bfe1ea7a3bf10d09304af194"}},{"ruleId":"D2","level":"warning","message":{"text":"MirBody::walk_places (cognitive 26): MirBody::walk_places has cognitive complexity 26 (threshold 15). Drivers by points: match/switch 6 (18 pts), loops 3 (8 pts) (nesting depth added 17). Of this number, 25 points are the body\u0027s own statements and 1 belongs to one function item inside it that branches. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir.rs"},"region":{"startLine":1074}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecd62dc804ad493e30d28701d3d2939421503969760c1aac59da4e5eaed1c2c4"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::goto_definition::goto_definition (cognitive 26): ide::goto_definition::goto_definition has cognitive complexity 26 (threshold 15). Drivers by points: if/else 11 (19 pts), boolean chains 3, match/switch 2 (3 pts), loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/goto_definition.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"8956119f11be7f4d1c4719cbb495bf5158f8c75a6863e6c853961c0e8efcdddf"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::highlight_related::highlight_branch_exit_points (cognitive 26): ide::highlight_related::highlight_branch_exit_points has cognitive complexity 26 (threshold 15). Drivers by points: loops 5 (12 pts), if/else 4 (9 pts), match/switch 2 (5 pts) (nesting depth added 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/highlight_related.rs"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff2ec4b96af330cde4071f9f5f57d4365ead4a69de27b1dd30ac247ee685a59d"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_completion::completions::attribute::complete_attribute_path (cognitive 26): ide_completion::completions::attribute::complete_attribute_path has cognitive complexity 26 (threshold 15). Drivers by points: if/else 11 (14 pts), match/switch 4 (7 pts), loops 2 (3 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/attribute.rs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"188e2a8407b05c4dc3b62b218b526ac9a6ceb5c512a9d729f9fb9fa51caaa82e"}},{"ruleId":"D2","level":"warning","message":{"text":"NameRefClass::classify (cognitive 26): NameRefClass::classify has cognitive complexity 26 (threshold 15). Drivers by points: if/else 7 (12 pts), match/switch 6 (11 pts), boolean chains 3 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/defs.rs"},"region":{"startLine":745}}}],"partialFingerprints":{"codehealthFindingId/v1":"835127d3fe7cfd9d44b2e8416bd9d02e3bb514a04b76386fcd63d2838c1e9c3b"}},{"ruleId":"D2","level":"warning","message":{"text":"ImportScope::find_insert_use_container (cognitive 26): ImportScope::find_insert_use_container has cognitive complexity 26 (threshold 15). Drivers by points: if/else 8 (24 pts), boolean chains 1, loops 1 (nesting depth added 16). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/insert_use.rs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e77817cbbe858a135afbd49cb33b17ab2a193cddb0859e8f299a17fde2b02a7"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_diagnostics::semantic_diagnostics (cognitive 26): ide_diagnostics::semantic_diagnostics has cognitive complexity 26 (threshold 15). Drivers by points: match/switch 8 (18 pts), if/else 3 (4 pts), boolean chains 2, loops 2 (nesting depth added 11). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/lib.rs"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bcfd363c56819f2ccc4e30bedbeadea139d8a732d7ae205dbf2d14a96325e53"}},{"ruleId":"D2","level":"warning","message":{"text":"ErasedFileAstId::kind_typed (cognitive 26): ErasedFileAstId::kind_typed has cognitive complexity 26 (threshold 15). Drivers by points: if/else 24, match/switch 1 (2 pts) (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/span/src/ast_id.rs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1ffcd0cf3ff89336a46409dc4bd730cf7eada68dd96cd8db9a53f18fb27ab38"}},{"ruleId":"D2","level":"warning","message":{"text":"SyntaxEditor::add_generic_param (cognitive 26): SyntaxEditor::add_generic_param has cognitive complexity 26 (threshold 15). Drivers by points: if/else 14 (25 pts), match/switch 1 (nesting depth added 11). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/syntax_editor/edits.rs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6e3799674b75226089973ee385b5fd7376a6efb9a4834825c0430643ee15d74"}},{"ruleId":"D2","level":"warning","message":{"text":"syntax::validation::validate_literal (cognitive 26): syntax::validation::validate_literal has cognitive complexity 26 (threshold 15). Drivers by points: if/else 9 (20 pts), boolean chains 5, match/switch 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/validation.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"270b5e30b8e2383c913f42c1eae7f66beeab07d828117d05076f61fb4ba93252"}},{"ruleId":"D2","level":"warning","message":{"text":"hir::display::write_generic_params_or_args (cognitive 25): hir::display::write_generic_params_or_args has cognitive complexity 25 (threshold 15). Drivers by points: if/else 7 (17 pts), boolean chains 3, match/switch 1 (3 pts), loops 2 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/display.rs"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcbeb865a51e18589f1b50739609c5e160d0561d6f2b6752ddd1074a94f0dbd0"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_def::find_path::find_path_for_module (cognitive 25): hir_def::find_path::find_path_for_module has cognitive complexity 25 (threshold 15). Drivers by points: if/else 13 (19 pts), boolean chains 3, loops 1 (2 pts), match/switch 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/find_path.rs"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e68d64464470e4a507794dfe20e1a9fd5e12d14dcf086088e12c6aa66ef7805"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_def::find_path::find_local_import_locations (cognitive 25): hir_def::find_path::find_local_import_locations has cognitive complexity 25 (threshold 15). Drivers by points: if/else 10 (17 pts), loops 2 (3 pts), match/switch 1 (3 pts), boolean chains 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/find_path.rs"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"92a2d93257a039cbd6016346ac36392455968bfe0ef859c836687c593e9206d1"}},{"ruleId":"D2","level":"warning","message":{"text":"Coerce::coerce_from_fn_item (cognitive 25): Coerce::coerce_from_fn_item has cognitive complexity 25 (threshold 15). Drivers by points: if/else 6 (22 pts), boolean chains 2, match/switch 1 (nesting depth added 16). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/coerce.rs"},"region":{"startLine":742}}}],"partialFingerprints":{"codehealthFindingId/v1":"25c689a3f7623477072b541f2d445afa1d419eeaddd59a4cdbc5f8b5a6dc85ca"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceContext::infer_pat_inner (cognitive 25): InferenceContext::infer_pat_inner has cognitive complexity 25 (threshold 15). Drivers by points: loops 3 (8 pts), match/switch 4 (7 pts), if/else 5 (6 pts), boolean chains 4 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/pat.rs"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc18b62dbad30352f983c6259946f0c5db5ba4c43aa2bc10dde86895a5810fe2"}},{"ruleId":"D2","level":"warning","message":{"text":"TraitImpls::collect_def_map::collect (cognitive 25): TraitImpls::collect_def_map::collect has cognitive complexity 25 (threshold 15). Drivers by points: loops 5 (10 pts), if/else 3 (9 pts), match/switch 2 (6 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/method_resolution.rs"},"region":{"startLine":735}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dddbde9e20a6303449042b2631424d2d09436d71f6334d4e8dfaa522079435f"}},{"ruleId":"D2","level":"warning","message":{"text":"AdtDef::new (cognitive 25): AdtDef::new has cognitive complexity 25 (threshold 15). Drivers by points: if/else 12 (24 pts), match/switch 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/interner.rs"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c5d1fe6b5ecf4783f4f8ec5d8a1c22a1b6aa702d4b76a0f47754d9c149e49a2"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_ty::mir::lower::mir_body_for_closure_query (cognitive 25): hir_ty::mir::lower::mir_body_for_closure_query has cognitive complexity 25 (threshold 15). Drivers by points: if/else 9 (15 pts), match/switch 4 (7 pts), loops 2 (3 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower.rs"},"region":{"startLine":2105}}}],"partialFingerprints":{"codehealthFindingId/v1":"10c879623437b44dbc45714c73122f5371eb55b74f5a78a99e966fdd7293a49c"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::remove_dbg::compute_dbg_replacement (cognitive 25): ide_assists::handlers::remove_dbg::compute_dbg_replacement has cognitive complexity 25 (threshold 15). Drivers by points: if/else 6 (12 pts), match/switch 4 (8 pts), boolean chains 5 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/remove_dbg.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"33c790e312d6f9f5aae87498ad3558d3ff491f7483fcddc02d6a9762856c525f"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::extract_type_alias::collect_used_generics (cognitive 25): ide_assists::handlers::extract_type_alias::collect_used_generics has cognitive complexity 25 (threshold 15). Drivers by points: if/else 7 (14 pts), match/switch 5 (9 pts), boolean chains 2 (nesting depth added 11). Of this number, 24 points are the body\u0027s own statements and 1 belongs to one function item inside it that branches. The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_type_alias.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"67d10ead43d43cd42063b70b6b5678e3d058912afa45ef970dd5c754f4fc0b1c"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_db::syntax_helpers::node_ext::walk_patterns_in_expr (cognitive 25): ide_db::syntax_helpers::node_ext::walk_patterns_in_expr has cognitive complexity 25 (threshold 15). Drivers by points: if/else 6 (15 pts), match/switch 3 (8 pts), boolean chains 1, loops 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/syntax_helpers/node_ext.rs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"c06db472280cdeaa767e6a3c611170f0139662e2647e31af81c86944b7c4ef5a"}},{"ruleId":"D2","level":"warning","message":{"text":"WorkspaceBuildScripts::rustc_crates (cognitive 25): WorkspaceBuildScripts::rustc_crates has cognitive complexity 25 (threshold 15). Drivers by points: if/else 8 (12 pts), match/switch 3 (9 pts), loops 3 (4 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/build_dependencies.rs"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a0e5fa34ef02e8ac17b44360939ef12b87e5d1910237a0a6d3eb23c32463057"}},{"ruleId":"D2","level":"warning","message":{"text":"FlycheckActor::check_command (cognitive 25): FlycheckActor::check_command has cognitive complexity 25 (threshold 15). Drivers by points: if/else 7 (14 pts), match/switch 5 (10 pts), boolean chains 1 (nesting depth added 12). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/flycheck.rs"},"region":{"startLine":884}}}],"partialFingerprints":{"codehealthFindingId/v1":"7431f8ae34372121d04547a838c1a3951fffea86e51e3bfba265e3febfac322e"}},{"ruleId":"D2","level":"warning","message":{"text":"tt::transform_tt (cognitive 25): tt::transform_tt has cognitive complexity 25 (threshold 15). Drivers by points: if/else 5 (14 pts), loops 3 (6 pts), match/switch 2 (5 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/tt/src/lib.rs"},"region":{"startLine":764}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e9e87ebd2dbc68a391de3f7a8048d3ad4275b634c47f38a6ef778a5185b922e"}},{"ruleId":"D2","level":"warning","message":{"text":"tt::storage::encode (cognitive 25): tt::storage::encode has cognitive complexity 25 (threshold 15). Drivers by points: if/else 9 (14 pts), match/switch 3 (7 pts), boolean chains 4 (nesting depth added 9). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/tt/src/storage.rs"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac5eb275a392bac3a429150f23fcbff05a3617a089a74c82c59c924afed99f93"}},{"ruleId":"D2","level":"warning","message":{"text":"hir::display::write_variants (cognitive 24): hir::display::write_variants has cognitive complexity 24 (threshold 15). Drivers by points: if/else 11 (19 pts), match/switch 1 (3 pts), loops 1 (2 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/display.rs"},"region":{"startLine":489}}}],"partialFingerprints":{"codehealthFindingId/v1":"db507f948327ce0a770ca83d22c9a9ebbf93d4501bc5dfb1ef7579ed535a0be7"}},{"ruleId":"D2","level":"warning","message":{"text":"ItemScope::dump (cognitive 24): ItemScope::dump has cognitive complexity 24 (threshold 15). Drivers by points: if/else 6 (10 pts), match/switch 4 (9 pts), loops 3 (4 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_scope.rs"},"region":{"startLine":751}}}],"partialFingerprints":{"codehealthFindingId/v1":"29554e8a65061dd0611266cf00d633d05a4e0cdad328e9b05b669d3dea35525d"}},{"ruleId":"D2","level":"warning","message":{"text":"Resolver::rename_will_conflict_with_renamed (cognitive 24): Resolver::rename_will_conflict_with_renamed has cognitive complexity 24 (threshold 15). Drivers by points: if/else 6 (17 pts), loops 2 (4 pts), match/switch 1 (2 pts), boolean chains 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/resolver.rs"},"region":{"startLine":846}}}],"partialFingerprints":{"codehealthFindingId/v1":"0da99b9029bfa28934c2139ed76cea1d7051cdf8f4e6b043ffd9690ad4557fb9"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_def::expr_store::pretty::print_where_clauses (cognitive 24): hir_def::expr_store::pretty::print_where_clauses has cognitive complexity 24 (threshold 15). Drivers by points: if/else 4 (14 pts), loops 2 (7 pts), match/switch 1 (3 pts) (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/pretty.rs"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fa815d96f4694746bb729c18ebffd569021c02feca5798f4603e442b765b24e"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_expand::builtin::fn_macro::concat_expand (cognitive 24): hir_expand::builtin::fn_macro::concat_expand has cognitive complexity 24 (threshold 15). Drivers by points: match/switch 5 (12 pts), if/else 2 (6 pts), boolean chains 5, loops 1 (nesting depth added 11). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/builtin/fn_macro.rs"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"a89e6fce26ecbcb53126dea3a908672a48b57dc4798b41120e08dfbe6712f4c4"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceContext::infer_mut_expr (cognitive 24): InferenceContext::infer_mut_expr has cognitive complexity 24 (threshold 15). Drivers by points: match/switch 3 (12 pts), if/else 3 (10 pts), loops 1 (2 pts) (nesting depth added 17). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/mutability.rs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"82bcaa077bd4cf28116953a408da6999ead7e71775e888113e68c66a1cb77169"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::file_structure::structure_node (cognitive 24): ide::file_structure::structure_node has cognitive complexity 24 (threshold 15). Drivers by points: if/else 11 (20 pts), match/switch 2 (3 pts), loops 1 (nesting depth added 10). Of this number, 17 points are the body\u0027s own statements and 7 belong to one function item inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/file_structure.rs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"3dfe64867e7b9d20d7e00869778ae0a8d59bbe362cd2df94a98c078da68fa8cc"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::hover::render::literal (cognitive 24): ide::hover::render::literal has cognitive complexity 24 (threshold 15). Drivers by points: if/else 10 (12 pts), match/switch 7 (12 pts) (nesting depth added 7). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover/render.rs"},"region":{"startLine":849}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8e6684d47c813bd81af39a613bbe5c7c9ac0dd42f16acb5000820a06afb6d67"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::wrap_unwrap_cfg_attr::attempt_get_derive (cognitive 24): ide_assists::handlers::wrap_unwrap_cfg_attr::attempt_get_derive has cognitive complexity 24 (threshold 15). Drivers by points: if/else 9 (12 pts), boolean chains 5, loops 2 (4 pts), match/switch 1 (3 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/wrap_unwrap_cfg_attr.rs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e0e4070d6071ecbe6e6a20174e7f2af829e6182c3d07478c5ddc67d7016b7dc"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_db::rename::source_edit_from_name_ref (cognitive 24): ide_db::rename::source_edit_from_name_ref has cognitive complexity 24 (threshold 15). Drivers by points: if/else 8 (18 pts), match/switch 2 (4 pts), boolean chains 2 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/rename.rs"},"region":{"startLine":578}}}],"partialFingerprints":{"codehealthFindingId/v1":"3dfb74e20693e15f967f8f69b9477dc47b0a1da1a144009e6489c57f0a350c11"}},{"ruleId":"D2","level":"warning","message":{"text":"parser::grammar::expressions::expr_bp (cognitive 24): parser::grammar::expressions::expr_bp has cognitive complexity 24 (threshold 15). Drivers by points: if/else 8 (15 pts), boolean chains 5, match/switch 2 (3 pts), loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/grammar/expressions.rs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"e617548a3a3f6be0113276a4e382fe9384e5930a818e46ef326a74e7e4daaa8b"}},{"ruleId":"D2","level":"warning","message":{"text":"NotifyActor::load_entry (cognitive 24): NotifyActor::load_entry has cognitive complexity 24 (threshold 15). Drivers by points: if/else 7 (16 pts), boolean chains 5, loops 1 (2 pts), match/switch 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/vfs-notify/src/lib.rs"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f87b9c5f45c4d79cf3db162a50edfec93d1315b0334be1ecfd1787a60cb3df6"}},{"ruleId":"D2","level":"warning","message":{"text":"config.substituteVariablesInEnv (cognitive 24): config.substituteVariablesInEnv has cognitive complexity 24 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 5 (7 pts), boolean chains 3 (nesting depth added 9). Of this number, 18 points are the body\u0027s own statements and 6 belong to one function literal inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/config.ts"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b32802a9bde5424df4d4304ba6101940f4583954eb6629088261cd6e063ccb7"}},{"ruleId":"D2","level":"warning","message":{"text":"bootstrap.getServer (cognitive 24): bootstrap.getServer has cognitive complexity 24 (threshold 15). Drivers by points: if/else 9 (17 pts), loops 2 (5 pts), boolean chains 1, ternaries 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/bootstrap.ts"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"e538e42ede3dca10f6dd86f5ced3912e83fb680989bdb85ada51a7e47826e90c"}},{"ruleId":"D2","level":"warning","message":{"text":"Expr::gen_source_code (cognitive 23): Expr::gen_source_code has cognitive complexity 23 (threshold 15). Drivers by points: match/switch 8 (17 pts), if/else 3 (6 pts) (nesting depth added 12). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/term_search/expr.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"69e50fc32213eb344235832ea5729ba80966eb32bcc4cab32640e1909e1cc833"}},{"ruleId":"D2","level":"warning","message":{"text":"hir::term_search::tactics::data_constructor (cognitive 23): hir::term_search::tactics::data_constructor has cognitive complexity 23 (threshold 15). Drivers by points: if/else 11 (20 pts), boolean chains 2, match/switch 1 (nesting depth added 9). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/term_search/tactics.rs"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"149053511dcc4438dee5970bb60da69c07b6d52cabdebfe0f673a8915ef8d795"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_def::lang_item::crate_lang_items (cognitive 23): hir_def::lang_item::crate_lang_items has cognitive complexity 23 (threshold 15). Drivers by points: match/switch 3 (11 pts), loops 4 (8 pts), if/else 4 (nesting depth added 12). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/lang_item.rs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c797b165cfd6ed847adc619da4728cede5e131b3f8ede25282a8b218db9319f"}},{"ruleId":"D2","level":"warning","message":{"text":"ExprUseVisitor::cat_pattern (cognitive 23): ExprUseVisitor::cat_pattern has cognitive complexity 23 (threshold 15). Drivers by points: loops 7 (13 pts), match/switch 3 (6 pts), if/else 2 (4 pts) (nesting depth added 11). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis/expr_use_visitor.rs"},"region":{"startLine":1496}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c900f7a84e44e2342d573e4b07d52561c69c2d457a4e7a35df5b3b49fcbb428"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::syntax_highlighting::highlight::highlight_name_ref_by_syntax (cognitive 23): ide::syntax_highlighting::highlight::highlight_name_ref_by_syntax has cognitive complexity 23 (threshold 15). Drivers by points: match/switch 7 (13 pts), if/else 6 (10 pts) (nesting depth added 10). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting/highlight.rs"},"region":{"startLine":792}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf62b3d047d273c5d7aa556b515168d2d85ac31da04b80b4d88ee81c0e71b9fa"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::extract_function::make_body (cognitive 23): ide_assists::handlers::extract_function::make_body has cognitive complexity 23 (threshold 15). Drivers by points: match/switch 11 (23 pts) (nesting depth added 12). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_function.rs"},"region":{"startLine":1800}}}],"partialFingerprints":{"codehealthFindingId/v1":"decd80ce1f37c1c620a7872d3860450630d01236ae751f5b91e3be0ed8f782ae"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::remove_unused_imports::remove_unused_imports (cognitive 23): ide_assists::handlers::remove_unused_imports::remove_unused_imports has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (10 pts), match/switch 6 (9 pts), loops 2 (4 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/remove_unused_imports.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8543d2c1ed11b35f3d2c98648651ab8aeb47ae6a0b3d794f872630bbcc0afcc"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::merge_match_arms::get_arm_types::recurse (cognitive 23): ide_assists::handlers::merge_match_arms::get_arm_types::recurse has cognitive complexity 23 (threshold 15). Drivers by points: loops 4 (13 pts), if/else 3 (7 pts), match/switch 1 (2 pts), boolean chains 1 (nesting depth added 14). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/merge_match_arms.rs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"05be52114577e39ddcd543da12b4869806cc00a9048b929faa1792403636fccc"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_db::symbol_index::resolve_path_to_modules (cognitive 23): ide_db::symbol_index::resolve_path_to_modules has cognitive complexity 23 (threshold 15). Drivers by points: if/else 6 (11 pts), loops 5 (11 pts), boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/symbol_index.rs"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a3979b068fc25e2575891b990e0417b1de801c937e481e25bf71ffa6e64155f"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_db::imports::merge_imports::recursive_merge (cognitive 23): ide_db::imports::merge_imports::recursive_merge has cognitive complexity 23 (threshold 15). Drivers by points: if/else 4 (13 pts), match/switch 2 (6 pts), boolean chains 3, loops 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/merge_imports.rs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee81a2f5f406b8b0effc8ca55776c5c5751d924c5ac728faf92beddc30f71458"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_db::syntax_helpers::tree_diff::diff::go (cognitive 23): ide_db::syntax_helpers::tree_diff::diff::go has cognitive complexity 23 (threshold 15). Drivers by points: if/else 5 (13 pts), match/switch 3 (6 pts), loops 2 (4 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/syntax_helpers/tree_diff.rs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"090dbd96d32aa6df2acc31060e47059b83146e310ff6c62225b2ccb5ea0147d4"}},{"ruleId":"D2","level":"warning","message":{"text":"parser::grammar::params::param (cognitive 23): parser::grammar::params::param has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (19 pts), boolean chains 3, match/switch 1 (nesting depth added 10). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/grammar/params.rs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd2980523041ec1ff1820cdf215bf2f7f57c9ca7356aa8e4e364f7d55873cd00"}},{"ruleId":"D2","level":"warning","message":{"text":"parser::grammar::paths::path_segment (cognitive 23): parser::grammar::paths::path_segment has cognitive complexity 23 (threshold 15). Drivers by points: if/else 11 (19 pts), match/switch 1 (3 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/grammar/paths.rs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb7d0468b2f54fb562bbeba93b878e993a208c4ba43178e2228b1fa98f682853"}},{"ruleId":"D2","level":"warning","message":{"text":"WorkspaceBuildScripts::run_command (cognitive 23): WorkspaceBuildScripts::run_command has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (13 pts), match/switch 3 (7 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/build_dependencies.rs"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"c99b6629851764d093e6f26d9cbd959b6a7d35010d32bcabffafa1e4f699b9f0"}},{"ruleId":"D2","level":"warning","message":{"text":"Diagnostics::run_ (cognitive 23): Diagnostics::run_ has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (15 pts), loops 2 (4 pts), match/switch 1 (4 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/diagnostics.rs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"33f28e7e6f3acd38ee0d5a4052d3665162bce244086f0d5561be6467a757faaa"}},{"ruleId":"D2","level":"warning","message":{"text":"rust_analyzer::lsp::to_proto::merge_text_and_snippet_edits (cognitive 23): rust_analyzer::lsp::to_proto::merge_text_and_snippet_edits has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 4 (9 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/lsp/to_proto.rs"},"region":{"startLine":1196}}}],"partialFingerprints":{"codehealthFindingId/v1":"1827cc1e3336756e21a1b99565ae650cdfed9822d3b3b15c9ce12fa9e02796a1"}},{"ruleId":"D2","level":"warning","message":{"text":"Printer::print_path (cognitive 22): Printer::print_path has cognitive complexity 22 (threshold 15). Drivers by points: if/else 6 (12 pts), match/switch 3 (5 pts), loops 2 (4 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/pretty.rs"},"region":{"startLine":1111}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ce2e48ae9deeaab30de1a462c93a538d8a6ebe3025d0747c855e494af356276"}},{"ruleId":"D2","level":"warning","message":{"text":"DefMap::resolve_path_fp_with_macro_single (cognitive 22): DefMap::resolve_path_fp_with_macro_single has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (12 pts), match/switch 4 (6 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 8). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/path_resolution.rs"},"region":{"startLine":242}}}],"partialFingerprints":{"codehealthFindingId/v1":"adec8f82893eebc73ef50fd2d83a352135f993f1325a8d5fdea758bb75276909"}},{"ruleId":"D2","level":"warning","message":{"text":"Resolver::rename_will_conflict_with_another_variable (cognitive 22): Resolver::rename_will_conflict_with_another_variable has cognitive complexity 22 (threshold 15). Drivers by points: if/else 5 (16 pts), loops 2 (4 pts), match/switch 1 (2 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/resolver.rs"},"region":{"startLine":797}}}],"partialFingerprints":{"codehealthFindingId/v1":"c582a48f6d85abaff67b60b1b17c59d01d1fe48cc61b2e168fc93bdc576e1c24"}},{"ruleId":"D2","level":"warning","message":{"text":"Visibility::max (cognitive 22): Visibility::max has cognitive complexity 22 (threshold 15). Drivers by points: if/else 9 (16 pts), match/switch 2 (4 pts), boolean chains 2 (nesting depth added 9). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident. This shape REPEATS in the file: one other method here (Visibility::min) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/visibility.rs"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"8294fd5e4c40da0bdabef8728962db1793472daf4f86000e2f5024c271fd37b9"}},{"ruleId":"D2","level":"warning","message":{"text":"Visibility::min (cognitive 22): Visibility::min has cognitive complexity 22 (threshold 15). Drivers by points: if/else 9 (16 pts), match/switch 2 (4 pts), boolean chains 2 (nesting depth added 9). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident. This shape REPEATS in the file: one other method here (Visibility::max) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/visibility.rs"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8e211380192aa0d78878aaf045c76d25a529ba0e7d8a006d9343898b1a33232"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_def::expr_store::lower::lower_function (cognitive 22): hir_def::expr_store::lower::lower_function has cognitive complexity 22 (threshold 15). Drivers by points: match/switch 3 (11 pts), if/else 5 (8 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 12). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"c975f8a30ec9166d11d02d91f7d4728d4c79ba74a31b5ec17e18777174af8f78"}},{"ruleId":"D2","level":"warning","message":{"text":"ExprUseVisitor::walk_expr (cognitive 22): ExprUseVisitor::walk_expr has cognitive complexity 22 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 3 (6 pts), match/switch 2 (4 pts) (nesting depth added 12). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis/expr_use_visitor.rs"},"region":{"startLine":502}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1de901739508e78cc3f0db144722fc9f02206f50e8e74919c910c0cab06f3a3"}},{"ruleId":"D2","level":"warning","message":{"text":"ExprUseVisitor::walk_captures (cognitive 22): ExprUseVisitor::walk_captures has cognitive complexity 22 (threshold 15). Drivers by points: if/else 3 (8 pts), loops 3 (7 pts), match/switch 2 (7 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis/expr_use_visitor.rs"},"region":{"startLine":1052}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c117e8c73b8b74db8eb67d092a296f1ca23cafee3fa737d5b1fffed24f5365c"}},{"ruleId":"D2","level":"warning","message":{"text":"Coerce::coerce_borrowed_pointer (cognitive 22): Coerce::coerce_borrowed_pointer has cognitive complexity 22 (threshold 15). Drivers by points: if/else 10 (17 pts), match/switch 2 (3 pts), boolean chains 1, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/coerce.rs"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"a386ce715c15271a51f1f5b87b15a9294f09e49c87f8751619f690af702d362f"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceContext::compute_definition_site_hidden_types (cognitive 22): InferenceContext::compute_definition_site_hidden_types has cognitive complexity 22 (threshold 15). Drivers by points: if/else 5 (13 pts), loops 4 (7 pts), match/switch 1 (2 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/opaques.rs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"f47508a1cc0ca56c46632d7b69b00d57e70e4cd5b3be053e572d715254610196"}},{"ruleId":"D2","level":"warning","message":{"text":"FulfillmentCtxt::try_evaluate_obligations (cognitive 22): FulfillmentCtxt::try_evaluate_obligations has cognitive complexity 22 (threshold 15). Drivers by points: if/else 4 (11 pts), match/switch 3 (8 pts), loops 2 (3 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/fulfill.rs"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb5995b1e4ed40e5c9d21098b19b4ce5f634100117774280afaabec88b5d24ac"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::moniker::def_to_kind (cognitive 22): ide::moniker::def_to_kind has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11 (19 pts), match/switch 2 (3 pts) (nesting depth added 9). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/moniker.rs"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8ba02a582895939a85c4faf565db5406de44c8db75f473ade7bed915a55b2be"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::convert_closure_to_fn::handle_call (cognitive 22): ide_assists::handlers::convert_closure_to_fn::handle_call has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12 (18 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_closure_to_fn.rs"},"region":{"startLine":600}}}],"partialFingerprints":{"codehealthFindingId/v1":"a31cf3b1b73dec10870a93302db47883d621451ee93924f076c271ee2079d015"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::utils::gen_trait_fn_body::gen_clone_impl (cognitive 22): ide_assists::utils::gen_trait_fn_body::gen_clone_impl has cognitive complexity 22 (threshold 15). Drivers by points: loops 5 (16 pts), match/switch 3 (6 pts) (nesting depth added 14). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/utils/gen_trait_fn_body.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f846b6687726577d44c211455365f9fb0370f14d9d946a5cecf653d5d2b4a3a"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::utils::gen_trait_fn_body::gen_debug_impl (cognitive 22): ide_assists::utils::gen_trait_fn_body::gen_debug_impl has cognitive complexity 22 (threshold 15). Drivers by points: loops 5 (16 pts), match/switch 3 (6 pts) (nesting depth added 14). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/utils/gen_trait_fn_body.rs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"54792077c3e3708ba8f36f407db29c16a638d44616d118fadff8642db484f79c"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_completion::completions::pattern::complete_pattern (cognitive 22): ide_completion::completions::pattern::complete_pattern has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (9 pts), match/switch 5 (8 pts), boolean chains 5 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/pattern.rs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5ac48406e0bbe89d2b7391a218aa52a8d363a8cea8d5835dc7b65e742cbab52"}},{"ruleId":"D2","level":"warning","message":{"text":"Query::search_maps (cognitive 22): Query::search_maps has cognitive complexity 22 (threshold 15). Drivers by points: if/else 4 (10 pts), boolean chains 6, loops 3 (6 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/symbol_index.rs"},"region":{"startLine":581}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1f362d0dc50b617429135d4997f6dee7c99a3787d6486d0499a3fb654239818"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_db::imports::insert_use::insert_use_with_editor_ (cognitive 22): ide_db::imports::insert_use::insert_use_with_editor_ has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11 (17 pts), match/switch 3 (4 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/insert_use.rs"},"region":{"startLine":425}}}],"partialFingerprints":{"codehealthFindingId/v1":"7637e7819ab13f74d8a03dc0eff6609c61164f314f352e2a29ce55fa1ad88b3d"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_diagnostics::handlers::type_mismatch::add_missing_ok_or_some (cognitive 22): ide_diagnostics::handlers::type_mismatch::add_missing_ok_or_some has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12 (20 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/type_mismatch.rs"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"dae7420d07cb7b02cc5d065ae942621ecea9ce9543113c43236a05c103d12b13"}},{"ruleId":"D2","level":"warning","message":{"text":"mbe::parser::parse_metavar_expr (cognitive 22): mbe::parser::parse_metavar_expr has cognitive complexity 22 (threshold 15). Drivers by points: if/else 10 (19 pts), loops 1 (2 pts), match/switch 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/parser.rs"},"region":{"startLine":391}}}],"partialFingerprints":{"codehealthFindingId/v1":"f29226d8bb6c8767da92803aa295d3d78e06ee9a73bc5009e48ad7416af0c3ed"}},{"ruleId":"D2","level":"warning","message":{"text":"CargoWorkspace::new (cognitive 22): CargoWorkspace::new has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (11 pts), loops 6 (8 pts), match/switch 1 (2 pts), boolean chains 1 (nesting depth added 7). Of this number, 16 points are the body\u0027s own statements and 6 belong to one function item inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/cargo_workspace.rs"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbdeedd27425a5aaa3d1ac6e0b686e98cacddfc6bb152e60962836b08ef52b98"}},{"ruleId":"D2","level":"warning","message":{"text":"AnyDiagnostic::body_validation_diagnostic (cognitive 21): AnyDiagnostic::body_validation_diagnostic has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (12 pts), match/switch 3 (5 pts), boolean chains 4 (nesting depth added 8). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/diagnostics.rs"},"region":{"startLine":1417}}}],"partialFingerprints":{"codehealthFindingId/v1":"f06f2e0d7fa29641e2dcf0454a98d9504dd197568794abc04d2f45784013d32b"}},{"ruleId":"D2","level":"warning","message":{"text":"Trait::hir_fmt (cognitive 21): Trait::hir_fmt has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (14 pts), match/switch 1 (4 pts), loops 1 (3 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/display.rs"},"region":{"startLine":900}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d15001fcd2d49bcf190716ac343120d6abe782e213d19f174d3d34dca87e6c1"}},{"ruleId":"D2","level":"warning","message":{"text":"BuiltinDeriveImplTrait::get_method (cognitive 21): BuiltinDeriveImplTrait::get_method has cognitive complexity 21 (threshold 15). Drivers by points: match/switch 13 (21 pts) (nesting depth added 8). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/builtin_derive.rs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"230d028a41a9ed940ac667fb61b325a98f825ca175eb13f43b9ce74bb6e460d2"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::folding_ranges::collapse_expr (cognitive 21): ide::folding_ranges::collapse_expr has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (14 pts), match/switch 2 (6 pts), loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/folding_ranges.rs"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"420d5965c7caf017ac2b9b0a106718f7b4b9e926bdd9319fe667e1f81036cf68"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::replace_if_let_with_match::replace_if_let_with_match (cognitive 21): ide_assists::handlers::replace_if_let_with_match::replace_if_let_with_match has cognitive complexity 21 (threshold 15). Drivers by points: if/else 11 (14 pts), match/switch 4 (5 pts), boolean chains 1, loops 1 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/replace_if_let_with_match.rs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"9633cc627577f2f7c5db04591aad1598a16a4b3cadee2e0e8b38c96b2a534dc1"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::remove_unused_imports::module_search_scope (cognitive 21): ide_assists::handlers::remove_unused_imports::module_search_scope has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (9 pts), loops 3 (7 pts), match/switch 2 (5 pts) (nesting depth added 8). Of this number, 16 points are the body\u0027s own statements and 5 belong to one function item inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/remove_unused_imports.rs"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"8674b2fdefd32ad36cf73f49be5775512d335254aeda70d78cbf749fa522c560"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::convert_tuple_return_type_to_struct::replace_usages (cognitive 21): ide_assists::handlers::convert_tuple_return_type_to_struct::replace_usages has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (13 pts), loops 2 (4 pts), match/switch 1 (3 pts), boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_tuple_return_type_to_struct.rs"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"340ecee4906e45074cffda64cdc1b11ebc549ae40f35ac5e37e28fd20dadcd73"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::convert_tuple_struct_to_named_struct::process_struct_name_reference (cognitive 21): ide_assists::handlers::convert_tuple_struct_to_named_struct::process_struct_name_reference has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 2 (4 pts), match/switch 2 (3 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0eb9d2a4f9cfa31d931d8c7aba2e014449b9003737331b909bc13f11cba7153"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_completion::completions::item_list::trait_impl::get_transformed_fn (cognitive 21): ide_completion::completions::item_list::trait_impl::get_transformed_fn has cognitive complexity 21 (threshold 15). Drivers by points: match/switch 5 (12 pts), if/else 3 (8 pts), boolean chains 1 (nesting depth added 12). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/item_list/trait_impl.rs"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"20e49f80c45384c210fddf6ae806cd532bd9543f0a691c0a9b74e79237959d4b"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_db::syntax_helpers::node_ext::preorder_expr_with_ctx_checker (cognitive 21): ide_db::syntax_helpers::node_ext::preorder_expr_with_ctx_checker has cognitive complexity 21 (threshold 15). Drivers by points: if/else 5 (13 pts), match/switch 2 (4 pts), boolean chains 3, loops 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/syntax_helpers/node_ext.rs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"74485c4995dd5e2807fb18538347d681cf0081e4bcfc067fcf5eb2935ccbcb6e"}},{"ruleId":"D2","level":"warning","message":{"text":"BindingsBuilder::build_inner (cognitive 21): BindingsBuilder::build_inner has cognitive complexity 21 (threshold 15). Drivers by points: loops 4 (14 pts), if/else 1 (5 pts), match/switch 1 (2 pts) (nesting depth added 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/expander/matcher.rs"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"95e90c22cb2132e9e6d59df06b7a368b7468fb4f2765dfa67d47fe3d071cd358"}},{"ruleId":"D2","level":"warning","message":{"text":"mbe::parser::parse_repeat (cognitive 21): mbe::parser::parse_repeat has cognitive complexity 21 (threshold 15). Drivers by points: match/switch 7 (20 pts), loops 1 (nesting depth added 13). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/parser.rs"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"95f8c9112963ee749eb6f0e02647ccc6dd1a699a7682f6a696280889adc53bdf"}},{"ruleId":"D2","level":"warning","message":{"text":"mbe::expander::transcriber::expand_repeat (cognitive 21): mbe::expander::transcriber::expand_repeat has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (11 pts), loops 2 (5 pts), match/switch 1 (3 pts), boolean chains 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/expander/transcriber.rs"},"region":{"startLine":463}}}],"partialFingerprints":{"codehealthFindingId/v1":"eca8e2199cdf2b6da2c0caef8453ac5b84b306cdeb70be32afacdc7d36729cab"}},{"ruleId":"D2","level":"warning","message":{"text":"parser::grammar::expressions::lhs (cognitive 21): parser::grammar::expressions::lhs has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (14 pts), boolean chains 4, loops 1 (2 pts), match/switch 1 (nesting depth added 9). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/grammar/expressions.rs"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd8ed025ea08b55efc53f53118fbd51817030766e93f8689b695762f19de7d8e"}},{"ruleId":"D2","level":"warning","message":{"text":"GlobalState::handle_vfs_msg (cognitive 21): GlobalState::handle_vfs_msg has cognitive complexity 21 (threshold 15). Drivers by points: if/else 4 (11 pts), match/switch 3 (5 pts), boolean chains 3, loops 1 (2 pts) (nesting depth added 10). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/main_loop.rs"},"region":{"startLine":980}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e78da5941bb1a6cdd2fcc2195e9b42abac2605291a7a1e0b669572a3dc4c5dd"}},{"ruleId":"D2","level":"warning","message":{"text":"EditPlan::build (cognitive 21): EditPlan::build has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (12 pts), loops 5, match/switch 1 (3 pts), boolean chains 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/syntax_editor/edit_algo.rs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ec366f0ffc519c7a5d8711730d9b7305ba66ec34f56066982e1f3f10fcdb8b8"}},{"ruleId":"D2","level":"warning","message":{"text":"Converter::next_token (cognitive 21): Converter::next_token has cognitive complexity 21 (threshold 15). Drivers by points: if/else 5 (14 pts), match/switch 2 (6 pts), loops 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax-bridge/src/lib.rs"},"region":{"startLine":663}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3e3aafea52fd0634a5769611e6ca3a0de09eff17c6f5bfdef280def49889bca"}},{"ruleId":"D2","level":"warning","message":{"text":"InactiveReason::fmt (cognitive 20): InactiveReason::fmt has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (10 pts), match/switch 2 (6 pts), loops 2 (4 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/cfg/src/lib.rs"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbc76e1d0b1b7bd8a583ae4e5f66d99d72b62b5d9fbf15c25563c845322efe2c"}},{"ruleId":"D2","level":"warning","message":{"text":"ExprCollector::collect_range_expr (cognitive 20): ExprCollector::collect_range_expr has cognitive complexity 20 (threshold 15). Drivers by points: if/else 13 (18 pts), boolean chains 1, match/switch 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":1936}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ab3d9061e5515da3a7f2d4ea050607081dc47d48c09dfa15ff52d807b089f12"}},{"ruleId":"D2","level":"warning","message":{"text":"DefCollector::update_recursive (cognitive 20): DefCollector::update_recursive has cognitive complexity 20 (threshold 15). Drivers by points: if/else 5 (10 pts), match/switch 3 (8 pts), loops 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":1111}}}],"partialFingerprints":{"codehealthFindingId/v1":"e97f0d1133bcebb1cd9fc5455a9c0ce2261b82b509c1d8cb89ed0b047cb8da66"}},{"ruleId":"D2","level":"warning","message":{"text":"MacroCallId::expand_speculative (cognitive 20): MacroCallId::expand_speculative has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (16 pts), match/switch 3, boolean chains 1 (nesting depth added 7). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/lib.rs"},"region":{"startLine":788}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc1c11ba6bb312b22ec0d0d571567eda3bedf84cba04844a3bb0815fe5ca7820"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_expand::builtin::fn_macro::cfg_select_expand (cognitive 20): hir_expand::builtin::fn_macro::cfg_select_expand has cognitive complexity 20 (threshold 15). Drivers by points: if/else 5 (10 pts), match/switch 3 (5 pts), boolean chains 4, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/builtin/fn_macro.rs"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"e925fcc742333cf1b4ca4a726983ee801fabee6b9a7c2500de3042ab01568d4b"}},{"ruleId":"D2","level":"warning","message":{"text":"TyLoweringContext::lower_ty_ext (cognitive 20): TyLoweringContext::lower_ty_ext has cognitive complexity 20 (threshold 15). Drivers by points: match/switch 4 (10 pts), if/else 3 (9 pts), boolean chains 1 (nesting depth added 12). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":576}}}],"partialFingerprints":{"codehealthFindingId/v1":"da29c8d9b3a2bcaf908bea9553aab8a0a808c77f81d5cbac16516c574c7c67c9"}},{"ruleId":"D2","level":"warning","message":{"text":"Evaluator::exec_atomic_intrinsic (cognitive 20): Evaluator::exec_atomic_intrinsic has cognitive complexity 20 (threshold 15). Drivers by points: if/else 17 (18 pts), boolean chains 2 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":1524}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4ad5028298b7aa9b9938cc2721b1e26524e892910555fd4d8dff11401d8419f"}},{"ruleId":"D2","level":"warning","message":{"text":"MirLowerCtx::lower_params_and_bindings (cognitive 20): MirLowerCtx::lower_params_and_bindings has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (15 pts), boolean chains 2, loops 2, match/switch 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower.rs"},"region":{"startLine":1872}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a41e5b4269f0906a177dfd16d60ceaf1417c9854be3d0ab3e6607ff304605e9"}},{"ruleId":"D2","level":"warning","message":{"text":"InferCtxt::query_response_instantiation_guess (cognitive 20): InferCtxt::query_response_instantiation_guess has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (12 pts), match/switch 2 (4 pts), loops 3, boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/canonical/instantiate.rs"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d4a3737917853d84753867c43b5a32430358a4a2c3dce01749c5ae50bf46a29"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_ty::next_solver::util::sizedness_fast_path (cognitive 20): hir_ty::next_solver::util::sizedness_fast_path has cognitive complexity 20 (threshold 15). Drivers by points: if/else 5 (11 pts), boolean chains 4, loops 1 (3 pts), match/switch 1 (2 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/util.rs"},"region":{"startLine":646}}}],"partialFingerprints":{"codehealthFindingId/v1":"69c8451a5e7f834516803926909fbe265f470618c62187030b68ec66052546f1"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::rename::find_definitions (cognitive 20): ide::rename::find_definitions has cognitive complexity 20 (threshold 15). Drivers by points: match/switch 6 (10 pts), if/else 8 (9 pts), boolean chains 1 (nesting depth added 5). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/rename.rs"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cd6f09ee1e13ed93663d11d3f7cfb13f016234d11d2589fe99b10c4fcaba5b8"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::call_hierarchy::incoming_calls (cognitive 20): ide::call_hierarchy::incoming_calls has cognitive complexity 20 (threshold 15). Drivers by points: if/else 3 (11 pts), match/switch 3 (5 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/call_hierarchy.rs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"7161a6a3b09b1ba765d8e366548ecf422624c863b2bfcc2e9b570b04cabf0d3e"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::expand_macro::expand_macro (cognitive 20): ide::expand_macro::expand_macro has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (15 pts), loops 2 (3 pts), boolean chains 1, match/switch 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/expand_macro.rs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"faa825e18e50aff6a5e731609fb9e448748b49c330f37472f79cd8b2a17f95c8"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::syntax_highlighting::inject::doc_comment (cognitive 20): ide::syntax_highlighting::inject::doc_comment has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (9 pts), loops 3 (6 pts), match/switch 3 (4 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting/inject.rs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab3961c0657f36a0e032d1b414db494781e5d23193f5519ae6bd8728c8e927cd"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::typing::on_eq_typed (cognitive 20): ide::typing::on_eq_typed has cognitive complexity 20 (threshold 15). Drivers by points: if/else 16 (17 pts), boolean chains 3 (nesting depth added 1). Most of this is not in the body itself: 5 of the 20 points are its own statements and the rest belongs to 3 function items inside it that branch (assign_expr, let_stmt, assign_to_eq). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/typing.rs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"155c412084dcfa26c0f12f6b4f9d8b5a189bdef4868b2d136ca9687b35fbaf19"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::goto_type_definition::goto_type_definition (cognitive 20): ide::goto_type_definition::goto_type_definition has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (14 pts), match/switch 3 (4 pts), loops 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/goto_type_definition.rs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b53984ddee1ffd74640a8ba8c2be04781bf7029cc1935994123a0d8099bf229"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::extend_selection::try_extend_selection (cognitive 20): ide::extend_selection::try_extend_selection has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (14 pts), boolean chains 3, match/switch 2 (3 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/extend_selection.rs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"5600c11f00e57d0ff6288d883e3d066cbc60ca304ba6e05973f6dacd6494d918"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::hover::render::try_expr (cognitive 20): ide::hover::render::try_expr has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (15 pts), boolean chains 2, match/switch 1 (2 pts), loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover/render.rs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"0aa6f9f412dc9d426086b9103bfa76d6b04ac056bf089f3f6dfb9297ed7eac24"}},{"ruleId":"D2","level":"warning","message":{"text":"Anchor::from (cognitive 20): Anchor::from has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (14 pts), boolean chains 3, match/switch 2 (3 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_variable.rs"},"region":{"startLine":488}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc23e4ac4049dee62e28b6a01dfc7b545f071b15619e37d8195fef51f2600896"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::inline_local_variable::inline_local_variable (cognitive 20): ide_assists::handlers::inline_local_variable::inline_local_variable has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (15 pts), boolean chains 2, match/switch 2, loops 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/inline_local_variable.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c98f586aebfa13a04188114c7150720acbfd756817863acc5d6dfbf47cb1d79"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::generate_delegate_trait::remove_useless_where_clauses (cognitive 20): ide_assists::handlers::generate_delegate_trait::remove_useless_where_clauses has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (17 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_delegate_trait.rs"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bf8ff4a11160e903fb5f83ebce08c041c66153dba820347630b1d58cd37edff"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::extract_function::fix_param_usages (cognitive 20): ide_assists::handlers::extract_function::fix_param_usages has cognitive complexity 20 (threshold 15). Drivers by points: if/else 4 (9 pts), loops 4 (5 pts), boolean chains 3, match/switch 1 (3 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_function.rs"},"region":{"startLine":2033}}}],"partialFingerprints":{"codehealthFindingId/v1":"61381670b133c6b428c87ae3c013f82951ee42ecb82bcd763a9f27cf5e728d5b"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::move_guard::move_arm_cond_to_match_guard (cognitive 20): ide_assists::handlers::move_guard::move_arm_cond_to_match_guard has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (11 pts), match/switch 4 (7 pts), boolean chains 1, loops 1 (nesting depth added 4). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/move_guard.rs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"c94568427210e38ad203d1305ffc8cf065baf4e79e11e828bad0af92cdfc2beb"}},{"ruleId":"D2","level":"warning","message":{"text":"ReplacementRenderer::render_token (cognitive 20): ReplacementRenderer::render_token has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (14 pts), match/switch 1 (4 pts), boolean chains 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-ssr/src/replacing.rs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dc003f96f5c28a81282587075145c9a8b740357e4622b222f671d22bf0e5623"}},{"ruleId":"D2","level":"warning","message":{"text":"parser::grammar::params::list_ (cognitive 20): parser::grammar::params::list_ has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (13 pts), match/switch 3 (5 pts), boolean chains 1, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/grammar/params.rs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"595231f2f97c15f1baf3336ca1bb0a9a8638af95c44fc047647f033065b5d340"}},{"ruleId":"D2","level":"warning","message":{"text":"CargoOptions::apply_on_command (cognitive 20): CargoOptions::apply_on_command has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (16 pts), match/switch 1 (4 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/flycheck.rs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"68ff6712ce36e9e7cd70832775a65ae9b68b973c9d1817f2e7c5273160718c0f"}},{"ruleId":"D2","level":"warning","message":{"text":"rust_analyzer::handlers::notification::handle_did_save_text_document (cognitive 20): rust_analyzer::handlers::notification::handle_did_save_text_document has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (14 pts), boolean chains 4, loops 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/notification.rs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1cc8323b1438f05b02a645c8a7e0c9002c1bd7680e4aecf06c123308853cae3"}},{"ruleId":"D2","level":"warning","message":{"text":"Expr::needs_parens_in_expr (cognitive 20): Expr::needs_parens_in_expr has cognitive complexity 20 (threshold 15). Drivers by points: boolean chains 10, if/else 7, match/switch 2 (3 pts) (nesting depth added 1). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/prec.rs"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8a7e726a373c7f34e7e7314cddf0c8bd57aa73f50f9ed30e8dbca38076407c2"}},{"ruleId":"D2","level":"warning","message":{"text":"xtask::codegen::lints::generate_descriptor_clippy (cognitive 20): xtask::codegen::lints::generate_descriptor_clippy has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 3, match/switch 1 (3 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"xtask/src/codegen/lints.rs"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"abe22250614f9e3ced3aa747152777038728ad64413056478b25c0b0eca98372"}},{"ruleId":"D2","level":"warning","message":{"text":"hir::display::write_fields (cognitive 19): hir::display::write_fields has cognitive complexity 19 (threshold 15). Drivers by points: if/else 10 (14 pts), loops 1 (3 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/display.rs"},"region":{"startLine":454}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cdd23545694c0054a3252d112290211c5bb1b8088d6d97a2afc1dcfef74af75"}},{"ruleId":"D2","level":"warning","message":{"text":"ExprCollector::lower_generic_args (cognitive 19): ExprCollector::lower_generic_args has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (15 pts), match/switch 1 (2 pts), boolean chains 1, loops 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":1023}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a42c078c15ec77ab1b4d8877761519b38a741b4640032faf80d6fa53b73d983"}},{"ruleId":"D2","level":"warning","message":{"text":"Printer::print_type_bounds (cognitive 19): Printer::print_type_bounds has cognitive complexity 19 (threshold 15). Drivers by points: match/switch 3 (9 pts), if/else 2 (6 pts), loops 2 (4 pts) (nesting depth added 12). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/pretty.rs"},"region":{"startLine":1364}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9f0899f3e7ce445062b3e7c8a5a4603b3feda9b6366d0477e3bdce421fcf90f"}},{"ruleId":"D2","level":"warning","message":{"text":"ModCollector::collect_macro_def (cognitive 19): ModCollector::collect_macro_def has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (15 pts), match/switch 1 (3 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":2599}}}],"partialFingerprints":{"codehealthFindingId/v1":"a33c95a7b44f2a61684e6f3373fc33a2f4ebcde80bcf606058d24447da9e6aea"}},{"ruleId":"D2","level":"warning","message":{"text":"ExprUseVisitor::walk_pat (cognitive 19): ExprUseVisitor::walk_pat has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (13 pts), match/switch 3 (4 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis/expr_use_visitor.rs"},"region":{"startLine":879}}}],"partialFingerprints":{"codehealthFindingId/v1":"41041c6cb1e979bb830a344642d64f27bc223b12fdde7ddbacc241ea7a26686d"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceContext::calculate_diverging_fallback (cognitive 19): InferenceContext::calculate_diverging_fallback has cognitive complexity 19 (threshold 15). Drivers by points: if/else 5 (9 pts), loops 5 (8 pts), match/switch 1 (2 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/fallback.rs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"888c5e83034c880ef68c109cf030fbfb1838847efd4d5870e9c741d6bf7c75c0"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceContext::check_record_pat_fields (cognitive 19): InferenceContext::check_record_pat_fields has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (11 pts), match/switch 2 (4 pts), boolean chains 2, loops 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/pat.rs"},"region":{"startLine":1154}}}],"partialFingerprints":{"codehealthFindingId/v1":"04cff332eebdd63e7e8060adde47428842721aa112870269b3297131c8ba7e9c"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceContext::struct_tail_with_normalize (cognitive 19): InferenceContext::struct_tail_with_normalize has cognitive complexity 19 (threshold 15). Drivers by points: match/switch 4 (12 pts), if/else 3 (6 pts), loops 1 (nesting depth added 11). This file\u0027s own header attributes it to another copyright holder, so it is code this repository carries rather than code it wrote: restructuring the body in place forks it from upstream and turns every future re-sync into a manual merge. The performable moves are to leave the body as close to its upstream form as possible and keep it behind a narrow interface of your own, and to re-sync it when upstream changes \u2014 or, if it has already diverged far enough that you maintain it here, adopt it deliberately and then split the body into named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":2037}}}],"partialFingerprints":{"codehealthFindingId/v1":"a05cb306b1f3f226fb0caa8031fd4fe4e0e4cb1d82fed8f8b4636eeb190fdf8a"}},{"ruleId":"D2","level":"warning","message":{"text":"MirPrettyCtx::blocks (cognitive 19): MirPrettyCtx::blocks has cognitive complexity 19 (threshold 15). Drivers by points: match/switch 4 (12 pts), loops 3 (7 pts) (nesting depth added 12). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/pretty.rs"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c8e9b97000fb4a1949c39b8e469006672115feb5ff8b711417fcd931327d47b"}},{"ruleId":"D2","level":"warning","message":{"text":"Canonicalizer::fold_ty (cognitive 19): Canonicalizer::fold_ty has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (16 pts), match/switch 2 (3 pts) (nesting depth added 8). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/canonical/canonicalizer.rs"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"90582a277471b208288e0af2d552a349ed066c5dbd6cef175f71d303c07820dd"}},{"ruleId":"D2","level":"warning","message":{"text":"SolverContext::fetch_eligible_assoc_item (cognitive 19): SolverContext::fetch_eligible_assoc_item has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (13 pts), match/switch 3 (4 pts), boolean chains 2 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/solver.rs"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1bcae2f3bd0c5e7c9c893bd8831f7a95a7ff77024e1c78f2dcecdb71d2d26c3"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::navigation_target::orig_range_with_focus_r (cognitive 19): ide::navigation_target::orig_range_with_focus_r has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (9 pts), boolean chains 5, match/switch 3 (5 pts) (nesting depth added 4). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/navigation_target.rs"},"region":{"startLine":912}}}],"partialFingerprints":{"codehealthFindingId/v1":"df52015df04ab2c2e21e70f6853166f8b02d1932646b43fbe17a7fa8b0422cc9"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::hover::render::definition_owner_name (cognitive 19): ide::hover::render::definition_owner_name has cognitive complexity 19 (threshold 15). Drivers by points: match/switch 8 (16 pts), if/else 2 (3 pts) (nesting depth added 9). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover/render.rs"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"80891ceb4c7ca20baf1fce5da04e1d575a5d4b042116ca1f69dfb1a5c5cfac23"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::syntax_highlighting::string_injections (cognitive 19): ide::syntax_highlighting::string_injections has cognitive complexity 19 (threshold 15). Drivers by points: if/else 11 (18 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting.rs"},"region":{"startLine":485}}}],"partialFingerprints":{"codehealthFindingId/v1":"e204a49a73cc5ebcfd33be24eaa0de4aadf7e261975661b0c57790ab1c07af71"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::extract_struct_from_enum_variant::tag_generics_in_variant (cognitive 19): ide_assists::handlers::extract_struct_from_enum_variant::tag_generics_in_variant has cognitive complexity 19 (threshold 15). Drivers by points: if/else 2 (8 pts), match/switch 2 (7 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"02c873ef1d3853ebf1c0846ed232b7d653f54c42838ebbf4117dd29df671b851"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::add_missing_impl_members::add_missing_impl_members_inner (cognitive 19): ide_assists::handlers::add_missing_impl_members::add_missing_impl_members_inner has cognitive complexity 19 (threshold 15). Drivers by points: if/else 13 (16 pts), boolean chains 3 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/add_missing_impl_members.rs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6a25154467a55c612a4e1f7bf6918f48b803fa83d0b2acd815024ac2cee666f"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::wrap_unwrap_cfg_attr::wrap_unwrap_cfg_attr (cognitive 19): ide_assists::handlers::wrap_unwrap_cfg_attr::wrap_unwrap_cfg_attr has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (13 pts), match/switch 3 (5 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/wrap_unwrap_cfg_attr.rs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"a57b65b9161993c22d66348a6e38b927be567430d1fb512a902f4f6377e2c66d"}},{"ruleId":"D2","level":"warning","message":{"text":"CompletionContext::new (cognitive 19): CompletionContext::new has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (11 pts), match/switch 5 (6 pts), boolean chains 2 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context.rs"},"region":{"startLine":747}}}],"partialFingerprints":{"codehealthFindingId/v1":"305388132e0ecafa64642126d7fddccebddc4e09d9684512c21fabb6eee6471a"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_completion::render::function::render (cognitive 19): ide_completion::render::function::render has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (11 pts), boolean chains 4, match/switch 4 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/render/function.rs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d3cf559ecbdd7096181d5d3ab23942f1caad4e0f9490f2872dccab02de45772"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_db::imports::insert_use::insert_use_with_alias_option_with_editor (cognitive 19): ide_db::imports::insert_use::insert_use_with_alias_option_with_editor has cognitive complexity 19 (threshold 15). Drivers by points: match/switch 4 (9 pts), if/else 4 (6 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 8). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/insert_use.rs"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"98dc70884df8f8f1f15f4d4e8bd0fdc9f80dc50913692e32a588b9417a7a4483"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_db::rust_doc::format_docs_ (cognitive 19): ide_db::rust_doc::format_docs_ has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (16 pts), boolean chains 2, loops 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/rust_doc.rs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4ea3d07c7f3ff4d5837078455063b56929496525c26a670db8e5c15ccdfb994"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclarativeMacro::parse_macro2 (cognitive 19): DeclarativeMacro::parse_macro2 has cognitive complexity 19 (threshold 15). Drivers by points: if/else 5 (11 pts), match/switch 2 (5 pts), loops 2 (3 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/lib.rs"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dd62cfdf11fc79d3551450f5537b1ba267f507aaea6c9c09e7451dd14129f2d"}},{"ruleId":"D2","level":"warning","message":{"text":"mbe::parser::next_op (cognitive 19): mbe::parser::next_op has cognitive complexity 19 (threshold 15). Drivers by points: match/switch 7 (19 pts) (nesting depth added 12). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/parser.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c028d55ff9bdbd3047f56e528d31fe28a32c9ef611b83012c2f86f8b34b0559"}},{"ruleId":"D2","level":"warning","message":{"text":"Writer::group (cognitive 19): Writer::group has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (13 pts), match/switch 2 (5 pts), loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-api/src/legacy_protocol/msg/flat.rs"},"region":{"startLine":641}}}],"partialFingerprints":{"codehealthFindingId/v1":"eda2eaf280d7b4ffd7af4661724fe5abe27d0b03d1524dc306653ed4eb7703bb"}},{"ruleId":"D2","level":"warning","message":{"text":"rust_analyzer::handlers::request::handle_run_test (cognitive 19): rust_analyzer::handlers::request::handle_run_test has cognitive complexity 19 (threshold 15). Drivers by points: if/else 4 (8 pts), match/switch 2 (7 pts), loops 2 (4 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/request.rs"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"f329938019b4f8dbea7e3ed388b4439399c90e8667edd34a531320a334622d97"}},{"ruleId":"D2","level":"warning","message":{"text":"rust_analyzer::handlers::request::handle_workspace_symbol (cognitive 19): rust_analyzer::handlers::request::handle_workspace_symbol has cognitive complexity 19 (threshold 15). Drivers by points: match/switch 5 (10 pts), if/else 6, boolean chains 2, loops 1 (nesting depth added 5). Most of this is not in the body itself: 6 of the 19 points are its own statements and the rest belongs to 2 function items inside it that branch (decide_search_kind_and_scope, exec_query). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/request.rs"},"region":{"startLine":676}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f4dc78ede73f344e14cbcb28999ea0d438a2d0ca94a17525a759d171db3d927"}},{"ruleId":"D2","level":"warning","message":{"text":"rust_analyzer::handlers::request::handle_code_action (cognitive 19): rust_analyzer::handlers::request::handle_code_action has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 3 (5 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/request.rs"},"region":{"startLine":1499}}}],"partialFingerprints":{"codehealthFindingId/v1":"68b3e326bd52de37fc29da804477d80b09836418316f57fe7e28cc7edd44936f"}},{"ruleId":"D2","level":"warning","message":{"text":"xtask::codegen::lints::generate_lint_descriptor (cognitive 19): xtask::codegen::lints::generate_lint_descriptor has cognitive complexity 19 (threshold 15). Drivers by points: loops 9, if/else 3 (6 pts), boolean chains 2, match/switch 1 (2 pts) (nesting depth added 4). Most of this is not in the body itself: 9 of the 19 points are its own statements and the rest belongs to one function item inside it that branches (insert_lints). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"xtask/src/codegen/lints.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"e78baf55bddd53c99753204f3a9b5812751b717c217fceef32299d00f6383f21"}},{"ruleId":"D2","level":"warning","message":{"text":"CfgExpr::parse_from_ast (cognitive 18): CfgExpr::parse_from_ast has cognitive complexity 18 (threshold 15). Drivers by points: if/else 4 (10 pts), match/switch 4 (8 pts) (nesting depth added 10). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/cfg/src/cfg_expr.rs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a781bbadfd25c348cbefd9f957b6b48016d0b98fcc03b9efbdffaa3f0a8d377"}},{"ruleId":"D2","level":"warning","message":{"text":"AnyDiagnostic::inference_diagnostic (cognitive 18): AnyDiagnostic::inference_diagnostic has cognitive complexity 18 (threshold 15). Drivers by points: match/switch 10 (18 pts) (nesting depth added 8). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/diagnostics.rs"},"region":{"startLine":1549}}}],"partialFingerprints":{"codehealthFindingId/v1":"48c5beb0805b43d1b3d522def8b3c0600749a202b9ad0efb766c33634a198dca"}},{"ruleId":"D2","level":"warning","message":{"text":"hir::term_search::tactics::free_function (cognitive 18): hir::term_search::tactics::free_function has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (11 pts), match/switch 3 (5 pts), boolean chains 2 (nesting depth added 7). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/term_search/tactics.rs"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"318afdc488d6845e07f0073b2b6ea20b809547f55dd4938c48d4984ee4fdb0ef"}},{"ruleId":"D2","level":"warning","message":{"text":"ExprCollector::lower_coroutine_body_with_moved_arguments (cognitive 18): ExprCollector::lower_coroutine_body_with_moved_arguments has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (15 pts), match/switch 1 (2 pts), loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":1097}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5f84cec96c60cfa455822c8b35a6adf7940638c9d6cf2401c59a30630dd064d"}},{"ruleId":"D2","level":"warning","message":{"text":"UseTree::expand_impl (cognitive 18): UseTree::expand_impl has cognitive complexity 18 (threshold 15). Drivers by points: match/switch 5 (9 pts), if/else 3 (6 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 8). Of this number, 14 points are the body\u0027s own statements and 4 belong to one function item inside it that branches. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_tree.rs"},"region":{"startLine":736}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a1c89f9fc88700674034ba933a2bcc4f9fd93e24e8e04b9e040834f33bc2709"}},{"ruleId":"D2","level":"warning","message":{"text":"DefCollector::resolution_loop (cognitive 18): DefCollector::resolution_loop has cognitive complexity 18 (threshold 15). Drivers by points: if/else 4 (12 pts), loops 3 (6 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"745bd85c2a6fe1beb470d030287c8a7200189a67c4d743237371666bbb9eb81b"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_def::attrs::docs::extend_with_attrs (cognitive 18): hir_def::attrs::docs::extend_with_attrs has cognitive complexity 18 (threshold 15). Drivers by points: if/else 4 (13 pts), match/switch 3 (4 pts), boolean chains 1 (nesting depth added 10). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/attrs/docs.rs"},"region":{"startLine":645}}}],"partialFingerprints":{"codehealthFindingId/v1":"73702a06c00c785766aec2d9990601bf4829b9a3716d4fdeb6beb6246dc1eb73"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_expand::mod_path::convert_path (cognitive 18): hir_expand::mod_path::convert_path has cognitive complexity 18 (threshold 15). Drivers by points: match/switch 4 (8 pts), if/else 4 (6 pts), boolean chains 2, loops 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/mod_path.rs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f0966049d0e12a41046a317b9a17df7061936ca4816f0b76661347c42eae653"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclValidator::validate_struct_fields (cognitive 18): DeclValidator::validate_struct_fields has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 2 (3 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: one other method here (DeclValidator::validate_enum_variant_fields) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/decl_check.rs"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"06cfbd03117f466dd3f9eeae63c0024637cc1a4ce913b49c6d3e659ac124bcfc"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclValidator::validate_enum_variants (cognitive 18): DeclValidator::validate_enum_variants has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (14 pts), loops 3 (4 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/decl_check.rs"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"9555fac01f392d4e54de9b6ac784c5e86847388e02dc8ddccbd83ae4ab908eec"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclValidator::validate_enum_variant_fields (cognitive 18): DeclValidator::validate_enum_variant_fields has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 2 (3 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: one other method here (DeclValidator::validate_struct_fields) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/decl_check.rs"},"region":{"startLine":573}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcb6dbf9f2832d1487a1b117f83e32ee50722f5de55e830820b50c99cde12a9a"}},{"ruleId":"D2","level":"warning","message":{"text":"MatchCheckCtx::ctors_for_ty (cognitive 18): MatchCheckCtx::ctors_for_ty has cognitive complexity 18 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 1 (4 pts), match/switch 2 (3 pts), boolean chains 1 (nesting depth added 10). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/match_check/pat_analysis.rs"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"86611e7b782e9080cf6aa52ef84462182f1dea7f4ed0b6f76a1bb30ba29ca0ec"}},{"ruleId":"D2","level":"warning","message":{"text":"CastCheck::do_check (cognitive 18): CastCheck::do_check has cognitive complexity 18 (threshold 15). Drivers by points: match/switch 6 (14 pts), if/else 1 (4 pts) (nesting depth added 11). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/cast.rs"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"aff1c45e23cc58f2621c64cc1f46736114d8ad67e8c6e9df41fece52b187d85a"}},{"ruleId":"D2","level":"warning","message":{"text":"Evaluator::run_drop_glue_deep (cognitive 18): Evaluator::run_drop_glue_deep has cognitive complexity 18 (threshold 15). Drivers by points: if/else 4 (7 pts), match/switch 3 (6 pts), loops 1 (4 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":3101}}}],"partialFingerprints":{"codehealthFindingId/v1":"635ebd417a2b89192a2db919d63906e53a8520b254f4f78dd76158c673d91759"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::inlay_hints::binding_mode::hints (cognitive 18): ide::inlay_hints::binding_mode::hints has cognitive complexity 18 (threshold 15). Drivers by points: match/switch 5 (8 pts), if/else 5 (6 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints/binding_mode.rs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d6b84a69a9acbca8091838a4fefcff63c160c4ee77bc400c861cd0ba6942ff8"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::inlay_hints::chaining::hints (cognitive 18): ide::inlay_hints::chaining::hints has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 1 (2 pts), boolean chains 1, match/switch 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints/chaining.rs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"f691e464a01dfa10406934218978a0702e59c9a0c82c027562651aa1f6412616"}},{"ruleId":"D2","level":"warning","message":{"text":"Module::expand_and_group_usages_file_wise (cognitive 18): Module::expand_and_group_usages_file_wise has cognitive complexity 18 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 2 (6 pts), boolean chains 1, match/switch 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_module.rs"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0151a38f5a641a85c0e3eead4dbc250759ab62c9c1ff2714dad78c13282e309"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::unnecessary_async::unnecessary_async (cognitive 18): ide_assists::handlers::unnecessary_async::unnecessary_async has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (12 pts), match/switch 1 (3 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/unnecessary_async.rs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"8934d1973e9b8fa9edce05f02ffadb9279a155a9664c4872f06a367cc1285b0f"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::auto_import::relevance_score (cognitive 18): ide_assists::handlers::auto_import::relevance_score has cognitive complexity 18 (threshold 15). Drivers by points: match/switch 5 (11 pts), if/else 4 (7 pts) (nesting depth added 9). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/auto_import.rs"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fdf803e495599df347a1f935bcae20efa63fc0dd258bae7d2bd7066e768cb4e"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_completion::completions::attribute::cfg::complete_cfg (cognitive 18): ide_completion::completions::attribute::cfg::complete_cfg has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (10 pts), match/switch 4 (6 pts), boolean chains 2 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/attribute/cfg.rs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"941f4eca99d33b4e104b47d60f6e70cfc25f5eeda3f10e08308fc48e5af4470a"}},{"ruleId":"D2","level":"warning","message":{"text":"Definition::range_for_rename (cognitive 18): Definition::range_for_rename has cognitive complexity 18 (threshold 15). Drivers by points: match/switch 7 (15 pts), if/else 2 (3 pts) (nesting depth added 9). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/rename.rs"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"739576d3d0fa43cf6bf1ba534cf5b01bd3a54eea966057eef7d9e50ef10d4e56"}},{"ruleId":"D2","level":"warning","message":{"text":"parser::grammar::items::adt::record_field_list (cognitive 18): parser::grammar::items::adt::record_field_list has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (14 pts), boolean chains 3, loops 1 (nesting depth added 5). Most of this is not in the body itself: 6 of the 18 points are its own statements and the rest belongs to one function item inside it that branches (record_field). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/grammar/items/adt.rs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1e09f03c70de75ba5e2fbbd73f673b1d677fb45abdc56ea8ed92cabb6f8b989"}},{"ruleId":"D2","level":"warning","message":{"text":"ProcMacroServerProcess::run (cognitive 18): ProcMacroServerProcess::run has cognitive complexity 18 (threshold 15). Drivers by points: match/switch 3 (8 pts), if/else 5 (7 pts), boolean chains 2, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-api/src/process.rs"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"eca21c729e4c789c32514e8b8ca996db4dbe6f1b7da66df857b5081fdf5be273"}},{"ruleId":"D2","level":"warning","message":{"text":"FetchMetadata::new (cognitive 18): FetchMetadata::new has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (14 pts), boolean chains 2, loops 1, match/switch 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/cargo_workspace.rs"},"region":{"startLine":656}}}],"partialFingerprints":{"codehealthFindingId/v1":"111482c0bd4793051363916ae14877143fbce9028bcc014229db4e07abc8afe1"}},{"ruleId":"D2","level":"warning","message":{"text":"rust_analyzer::lsp::to_proto::semantic_tokens (cognitive 18): rust_analyzer::lsp::to_proto::semantic_tokens has cognitive complexity 18 (threshold 15). Drivers by points: if/else 4 (9 pts), match/switch 2 (6 pts), loops 2 (3 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/lsp/to_proto.rs"},"region":{"startLine":748}}}],"partialFingerprints":{"codehealthFindingId/v1":"75a6a3bc9b6f9a6f8c5f95d1f0bd2cc52f378d21887665acbca29b4f5094d87d"}},{"ruleId":"D2","level":"warning","message":{"text":"rust_analyzer::handlers::request::handle_parent_module (cognitive 18): rust_analyzer::handlers::request::handle_parent_module has cognitive complexity 18 (threshold 15). Drivers by points: match/switch 5 (13 pts), if/else 3 (5 pts) (nesting depth added 10). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/request.rs"},"region":{"startLine":931}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fba9330efe862441dc11df67d5596c2f3832703b1364d8cb885821664ff0209"}},{"ruleId":"D2","level":"warning","message":{"text":"stdx::process::imp::read2 (cognitive 18): stdx::process::imp::read2 has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (13 pts), boolean chains 2, match/switch 1 (2 pts), loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/stdx/src/process.rs"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"44b0f1cddc22a6a378c09411ea03328cf1e6b30c5e1e7d6d26d4c44c187c373a"}},{"ruleId":"D2","level":"warning","message":{"text":"syntax::validation::validate_path_keywords (cognitive 18): syntax::validation::validate_path_keywords has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (11 pts), boolean chains 4, match/switch 1 (2 pts), loops 1 (nesting depth added 7). Most of this is not in the body itself: 8 of the 18 points are its own statements and the rest belongs to one function item inside it that branches (use_prefix). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/validation.rs"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6b09f98d92107bb2510dd4dc777bb1459a6e0cf03917522e6e976cd23c303d6"}},{"ruleId":"D2","level":"warning","message":{"text":"xtask::publish::notes::process_inline_macros (cognitive 18): xtask::publish::notes::process_inline_macros has cognitive complexity 18 (threshold 15). Drivers by points: loops 7 (15 pts), match/switch 2 (3 pts) (nesting depth added 9). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"xtask/src/publish/notes.rs"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d04d85f225b39401a551731765cb148037cbb252960bde2b1b054452d3a4abe"}},{"ruleId":"D2","level":"warning","message":{"text":"SyntaxTreeProvider.getElementByRange (cognitive 18): SyntaxTreeProvider.getElementByRange has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (14 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/syntax_tree_provider.ts"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"9716f3ab0235e7f0d46e04b03ed2976b543bd19d5bd217a5a51dff44e00270dd"}},{"ruleId":"D2","level":"warning","message":{"text":"commands.asWorkspaceSnippetEdit (cognitive 18): commands.asWorkspaceSnippetEdit has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (11 pts), loops 2 (6 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/commands.ts"},"region":{"startLine":1147}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f21ca3e3b12cbe0146fea0e8881c9814ecaead19e6722b7810cb71d3920e85f"}},{"ruleId":"D2","level":"warning","message":{"text":"ExprCollector::collect_stmt (cognitive 17): ExprCollector::collect_stmt has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (16 pts), match/switch 1 (nesting depth added 8). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":2719}}}],"partialFingerprints":{"codehealthFindingId/v1":"03108f88e0f2610f8d155bbc8c76b2922a986d14d1fe236758d1d1df7a44436f"}},{"ruleId":"D2","level":"warning","message":{"text":"UseTreeLowering::lower_use_tree (cognitive 17): UseTreeLowering::lower_use_tree has cognitive complexity 17 (threshold 15). Drivers by points: match/switch 4 (9 pts), if/else 4 (7 pts), boolean chains 1 (nesting depth added 8). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_tree/lower.rs"},"region":{"startLine":462}}}],"partialFingerprints":{"codehealthFindingId/v1":"4619fce743d42b808e8f07373e75f628ae5592f34ac8f6eb02d532b70537557b"}},{"ruleId":"D2","level":"warning","message":{"text":"Scope::process_names (cognitive 17): Scope::process_names has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (8 pts), match/switch 2 (5 pts), loops 2 (4 pts) (nesting depth added 9). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/resolver.rs"},"region":{"startLine":1053}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cc466badfb7003afbe369ff52bd42c488f82c2855853961e79a4b97ecd9aba1"}},{"ruleId":"D2","level":"warning","message":{"text":"FunctionSignature::with_source_map (cognitive 17): FunctionSignature::with_source_map has cognitive complexity 17 (threshold 15). Drivers by points: if/else 15 (16 pts), match/switch 1 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/signatures.rs"},"region":{"startLine":631}}}],"partialFingerprints":{"codehealthFindingId/v1":"88f84ce9731beb5def6b8baa850d7337b4191a1f4cc929ec17e5032e2fc1334f"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclValidator::validate_union_fields (cognitive 17): DeclValidator::validate_union_fields has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (14 pts), loops 2 (3 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/decl_check.rs"},"region":{"startLine":415}}}],"partialFingerprints":{"codehealthFindingId/v1":"03c6775a42530dd2d28fb104fc7d985fc7c5a695d33ee15aae14a795531e09a9"}},{"ruleId":"D2","level":"warning","message":{"text":"CoerceMany::coerce_inner (cognitive 17): CoerceMany::coerce_inner has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (11 pts), match/switch 3 (6 pts) (nesting depth added 5). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/coerce.rs"},"region":{"startLine":1295}}}],"partialFingerprints":{"codehealthFindingId/v1":"39a253309c18234d5ac39a6a0a721606dfa6127e3a941a5fd49418daa973759f"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceContext::infer_method_call (cognitive 17): InferenceContext::infer_method_call has cognitive complexity 17 (threshold 15). Drivers by points: match/switch 5 (9 pts), if/else 3 (5 pts), loops 1 (3 pts) (nesting depth added 8). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/expr.rs"},"region":{"startLine":1774}}}],"partialFingerprints":{"codehealthFindingId/v1":"a369a2e0d73f2a5a7cea5187e99d7eebb18860c5cdcc489baf2d7533ae60e4f9"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceContext::infer_tuple_struct_pat (cognitive 17): InferenceContext::infer_tuple_struct_pat has cognitive complexity 17 (threshold 15). Drivers by points: loops 3 (7 pts), if/else 4 (5 pts), match/switch 1 (3 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/pat.rs"},"region":{"startLine":1046}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a04e8241565c56b7aa48a28f7ef97acbc9f3df43f01ca69557d6c3091453b47"}},{"ruleId":"D2","level":"warning","message":{"text":"PathLoweringContext::substs_from_args_and_bindings (cognitive 17): PathLoweringContext::substs_from_args_and_bindings has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (10 pts), match/switch 4, boolean chains 3 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":680}}}],"partialFingerprints":{"codehealthFindingId/v1":"236124508078e7a886654fb023d1f35e0c6b679cd55335da079f7a7492e82bb1"}},{"ruleId":"D2","level":"warning","message":{"text":"Evaluator::unsizing_ptr_from_addr (cognitive 17): Evaluator::unsizing_ptr_from_addr has cognitive complexity 17 (threshold 15). Drivers by points: match/switch 5 (11 pts), if/else 2 (6 pts) (nesting depth added 10). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":1767}}}],"partialFingerprints":{"codehealthFindingId/v1":"850ad3a9fb1d971fbe7d7dad15b0d3c05c126be5dcd81d0621a3cfccf259fed5"}},{"ruleId":"D2","level":"warning","message":{"text":"Generalizer::consts (cognitive 17): Generalizer::consts has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (13 pts), match/switch 2 (3 pts), boolean chains 1 (nesting depth added 8). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/relate/generalize.rs"},"region":{"startLine":592}}}],"partialFingerprints":{"codehealthFindingId/v1":"33aac26b11825a14b49018223c0c3103626c6979e688d921c9e5182578b0b0a0"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceFudger::fold_ty (cognitive 17): InferenceFudger::fold_ty has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (15 pts), match/switch 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/snapshot/fudge.rs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"e058c47a0bb93a6ed2f7e1d329264b71055f88c08863694006686d42e948d6b9"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_ty::lower::path::check_generic_args_len (cognitive 17): hir_ty::lower::path::check_generic_args_len has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6, match/switch 3 (6 pts), boolean chains 3, loops 1 (2 pts) (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":1062}}}],"partialFingerprints":{"codehealthFindingId/v1":"9016ad6fb48fc1e4f36aa47dff1a5a5e3aba96991a0fea1dae31fc87aa801fe7"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_ty::dyn_compatibility::virtual_call_violations_for_method (cognitive 17): hir_ty::dyn_compatibility::virtual_call_violations_for_method has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10 (13 pts), boolean chains 3, loops 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/dyn_compatibility.rs"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"fce24bf3195a38f9d7e6a9856d560fcdfd0f4208859f638960577494b0e8f5ca"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_ty::traits::check_orphan_rules (cognitive 17): hir_ty::traits::check_orphan_rules has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (9 pts), match/switch 3 (7 pts), loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/traits.rs"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"c94e4a198cdca18258d51da6a11199f32626a44aadc26e69ab2abc5226c292c3"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_ty::drop::has_drop_glue_impl (cognitive 17): hir_ty::drop::has_drop_glue_impl has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (14 pts), match/switch 2 (3 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/drop.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b3e9b53eb6d3472a7acf0b4b75bb9feeba6b3e5cab13af75afc89fded16d1db"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::goto_definition::nav_for_exit_points (cognitive 17): ide::goto_definition::nav_for_exit_points has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (13 pts), match/switch 2 (3 pts), boolean chains 1 (nesting depth added 8). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/goto_definition.rs"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"52cd9c727668746389389eb8b183a0b77cc9e5cb5c9244b8a9bffdcfb1e32609"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::signature_help::signature_help_for_generics (cognitive 17): ide::signature_help::signature_help_for_generics has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (12 pts), match/switch 2 (3 pts), boolean chains 1, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/signature_help.rs"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c0a45d5066ced922d8824469d3b6b447176ba4260fd9c046edcd1c7c6789553"}},{"ruleId":"D2","level":"warning","message":{"text":"GeneratedFunctionTarget::insert_fn_at (cognitive 17): GeneratedFunctionTarget::insert_fn_at has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (13 pts), match/switch 3 (4 pts) (nesting depth added 7). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_function.rs"},"region":{"startLine":618}}}],"partialFingerprints":{"codehealthFindingId/v1":"973f0d3235aa0af0cf508b02cfe1709f36e29409851c278052f4714e7e0f809f"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::convert_into_to_from::convert_into_to_from (cognitive 17): ide_assists::handlers::convert_into_to_from::convert_into_to_from has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (9 pts), match/switch 3 (4 pts), boolean chains 3, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_into_to_from.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"328b0d6152be7d4a0b7d93fbbb17e9e33f0b353bff8ec90faf677cc0ab3f88c0"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::convert_named_struct_to_tuple_struct::edit_field_references (cognitive 17): ide_assists::handlers::convert_named_struct_to_tuple_struct::edit_field_references has cognitive complexity 17 (threshold 15). Drivers by points: if/else 2 (9 pts), loops 3 (6 pts), match/switch 1 (2 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_named_struct_to_tuple_struct.rs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7d8de851c4eef0cb82c5bf0e280a80e249914d889fb1f3548fe09274b5f8c6e"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::convert_closure_to_fn::handle_calls (cognitive 17): ide_assists::handlers::convert_closure_to_fn::handle_calls has cognitive complexity 17 (threshold 15). Drivers by points: if/else 3 (7 pts), loops 2 (5 pts), match/switch 2 (5 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_closure_to_fn.rs"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc1179ef08f4d6efca8fceef38cbdb1d6eeebb92199a80bc3eb7d52443707056"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::extract_struct_from_enum_variant::create_struct_def (cognitive 17): ide_assists::handlers::extract_struct_from_enum_variant::create_struct_def has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (14 pts), boolean chains 2, match/switch 1 (nesting depth added 6). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"403efb64965e2d19f2f5da7dbcf7fe3ac41571df5f168e451e9dd4be051abd4d"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::convert_let_else_to_match::remove_mut_and_collect_idents (cognitive 17): ide_assists::handlers::convert_let_else_to_match::remove_mut_and_collect_idents has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10 (15 pts), boolean chains 1, match/switch 1 (nesting depth added 5). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_let_else_to_match.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3529f5bd260321a5abf09f5d3e784caa49ff8520f84399d4cd0df469d90149a"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_completion::completions::attribute::derive::complete_derive_path (cognitive 17): ide_completion::completions::attribute::derive::complete_derive_path has cognitive complexity 17 (threshold 15). Drivers by points: match/switch 5 (10 pts), if/else 1 (3 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 8). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/attribute/derive.rs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"a01a9d4d51d7539a166a4e5f2dbd271d63866f4385a38aff3d8b3a592e2e3ba6"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_completion::completions::mod_::complete_mod (cognitive 17): ide_completion::completions::mod_::complete_mod has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (10 pts), match/switch 3 (6 pts), boolean chains 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/mod_.rs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"77c0cebc941f1cd712442715eaa124e6c9f3e3fda94221bd26e5b5f1a3198eb0"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_completion::completions::postfix::format_like::add_format_like_completions (cognitive 17): ide_completion::completions::postfix::format_like::add_format_like_completions has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 2 (4 pts), match/switch 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/postfix/format_like.rs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"72b2005411adfb99862abef90ee2adcb1f1e639440c0f9ac896d9c063014abf1"}},{"ruleId":"D2","level":"warning","message":{"text":"ScriptSource::parse (cognitive 17): ScriptSource::parse has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11 (14 pts), loops 1 (2 pts), match/switch 1 (nesting depth added 4). This file\u0027s own header attributes it to another copyright holder, so it is code this repository carries rather than code it wrote: restructuring the body in place forks it from upstream and turns every future re-sync into a manual merge. The performable moves are to leave the body as close to its upstream form as possible and keep it behind a narrow interface of your own, and to re-sync it when upstream changes \u2014 or, if it has already diverged far enough that you maintain it here, adopt it deliberately and then split the body into named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/frontmatter.rs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"c00ff8f0016ef0db8da216ac11f7678aa3f6f3d1cf9cf2e0db3d6c9c55e7b5ff"}},{"ruleId":"D2","level":"warning","message":{"text":"LexedStr::to_input (cognitive 17): LexedStr::to_input has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (16 pts), loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/shortcuts.rs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"21828fc6a4e4153b8eab1c2a7df3ce8137885acc03e5b17f9dee935096a2114d"}},{"ruleId":"D2","level":"warning","message":{"text":"parser::grammar::expressions::record_expr_field_list (cognitive 17): parser::grammar::expressions::record_expr_field_list has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (13 pts), match/switch 1 (2 pts), boolean chains 1, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/grammar/expressions.rs"},"region":{"startLine":703}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfaf9e47eb2bb8725effdd92199ac5c3250de6bc8008f28678c3541a42dbb1e5"}},{"ruleId":"D2","level":"warning","message":{"text":"parser::event::process (cognitive 17): parser::event::process has cognitive complexity 17 (threshold 15). Drivers by points: loops 3 (7 pts), match/switch 2 (6 pts), if/else 1 (4 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/event.rs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6edc4bf57a8b24c794c820cb5f06682378699dbdb55ef1d4d6137a2f6edf775"}},{"ruleId":"D2","level":"warning","message":{"text":"WorkspaceBuildScripts::run_once (cognitive 17): WorkspaceBuildScripts::run_once has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (11 pts), loops 3 (6 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/build_dependencies.rs"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"e62053eaedf55b0b36554ca8ef1d67c6307b3913e152bc7c13e8cd08ce68e58b"}},{"ruleId":"D2","level":"warning","message":{"text":"GlobalState::handle_deferred_task (cognitive 17): GlobalState::handle_deferred_task has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (14 pts), match/switch 2 (3 pts) (nesting depth added 9). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/main_loop.rs"},"region":{"startLine":1085}}}],"partialFingerprints":{"codehealthFindingId/v1":"ada6e611458cc84312f42ef852c36fc3725ea53f365ce9e026e0c35a4c003113"}},{"ruleId":"D2","level":"warning","message":{"text":"Function::hir_fmt (cognitive 16): Function::hir_fmt has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (9 pts), match/switch 3 (4 pts), boolean chains 3 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/display.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"66f43b41c7a6a72b83ebb2ccbd005e90c9ab1ce30a0df487e3361f2759b5baa3"}},{"ruleId":"D2","level":"warning","message":{"text":"SemanticsImpl::analyze_impl (cognitive 16): SemanticsImpl::analyze_impl has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (15 pts), match/switch 1 (nesting depth added 5). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":2283}}}],"partialFingerprints":{"codehealthFindingId/v1":"86358a65f7bfc1dfc286a717bac6a112722ca9303d890acb231fd8f676bb241b"}},{"ruleId":"D2","level":"warning","message":{"text":"SemanticsImpl::locals_used (cognitive 16): SemanticsImpl::locals_used has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (9 pts), match/switch 3 (4 pts), boolean chains 2, loops 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":2459}}}],"partialFingerprints":{"codehealthFindingId/v1":"b54be8f0f54e47ffff886ba4d3d7d93338f2d2e5c116db16787dcfa5a6d2aea8"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceAnalyzer::resolve_offset_of_field (cognitive 16): SourceAnalyzer::resolve_offset_of_field has cognitive complexity 16 (threshold 15). Drivers by points: match/switch 4 (11 pts), if/else 2 (4 pts), loops 1 (nesting depth added 9). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":1083}}}],"partialFingerprints":{"codehealthFindingId/v1":"42b33a514830b5784c5a5fbf1ed69a5a094c841980303968257265a3d40246cb"}},{"ruleId":"D2","level":"warning","message":{"text":"Docs::push_doc_lines (cognitive 16): Docs::push_doc_lines has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (9 pts), loops 2 (3 pts), boolean chains 2, match/switch 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/attrs/docs.rs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c576ca53d67de213c2d1441751cc244ab0a272edbf22ec5898c426f9363b39d"}},{"ruleId":"D2","level":"warning","message":{"text":"Docs::remove_indent (cognitive 16): Docs::remove_indent has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (12 pts), boolean chains 2, loops 1, match/switch 1 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/attrs/docs.rs"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"28ddb8e0bc9a2822493a75961d3b953068d097e476ddf3052ccb07942a1188e9"}},{"ruleId":"D2","level":"warning","message":{"text":"AssocItemCollector::record_item (cognitive 16): AssocItemCollector::record_item has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (10 pts), match/switch 3 (6 pts) (nesting depth added 8). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/assoc.rs"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"110dafc76e78279f098598bbebeabbb07759cb43941beb2709fa41e9b6ea38eb"}},{"ruleId":"D2","level":"warning","message":{"text":"ModCollector::collect_macro_rules (cognitive 16): ModCollector::collect_macro_rules has cognitive complexity 16 (threshold 15). Drivers by points: match/switch 5 (12 pts), if/else 4 (nesting depth added 7). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":2517}}}],"partialFingerprints":{"codehealthFindingId/v1":"84ccb49c10c19f207bc74f23e9661c07b11e1788064446aa4b6b07aeb617bc73"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_def::find_path::find_in_sysroot (cognitive 16): hir_def::find_path::find_in_sysroot has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (15 pts), match/switch 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/find_path.rs"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e82da5a01cd7f52d9e2d74760a347f129646d8e529778eb45eee7ba8e51494a"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclValidator::validate_func_body (cognitive 16): DeclValidator::validate_func_body has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 1, match/switch 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/decl_check.rs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"8df41f1ff197d45ed0176dff9d2c094de55e1acb8bc881cc94ce9fefbb8eb419"}},{"ruleId":"D2","level":"warning","message":{"text":"HirFormatter::format_bounds_with (cognitive 16): HirFormatter::format_bounds_with has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (13 pts), match/switch 1 (3 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4db84379bc441fa766a72e42158b55d3c6fb272344b14c4e2c5b579306f0e0f"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceContext::try_index_step (cognitive 16): InferenceContext::try_index_step has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/place_op.rs"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"74c0ce242f2acce0f390d3f20e328e3ca3297c6ba52a35cb193897d550d052c2"}},{"ruleId":"D2","level":"warning","message":{"text":"ProbeContext::collapse_candidates_to_subtrait_pick (cognitive 16): ProbeContext::collapse_candidates_to_subtrait_pick has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (13 pts), loops 2 (3 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/method_resolution/probe.rs"},"region":{"startLine":1909}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9273f1a2f250e9e4a1b5910a3dcb39fa82993a4c0e03f2fa49598c9b7b402a3"}},{"ruleId":"D2","level":"warning","message":{"text":"DbInterner::unsizing_params_for_adt (cognitive 16): DbInterner::unsizing_params_for_adt has cognitive complexity 16 (threshold 15). Drivers by points: if/else 3 (6 pts), match/switch 4 (6 pts), loops 3 (4 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/interner.rs"},"region":{"startLine":1893}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9306595fbf13ebd70df79f4072c208b840ac885a0fd27d6edf9348d0636d492"}},{"ruleId":"D2","level":"warning","message":{"text":"hir_ty::consteval::literal_ty (cognitive 16): hir_ty::consteval::literal_ty has cognitive complexity 16 (threshold 15). Drivers by points: match/switch 7 (16 pts) (nesting depth added 9). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/consteval.rs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"17fadda64435023ea54474a39e63da260b0b31b9ac14a759796e71cd40e37df9"}},{"ruleId":"D2","level":"warning","message":{"text":"ide::inlay_hints::hints (cognitive 16): ide::inlay_hints::hints has cognitive complexity 16 (threshold 15). Drivers by points: match/switch 5 (9 pts), if/else 3 (7 pts) (nesting depth added 8). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints.rs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b5153b57229b584df640a2609e951da5c3abf962f42cc2b36fcdd97a0a19f4f"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::generate_fn_type_alias::generate_fn_type_alias (cognitive 16): ide_assists::handlers::generate_fn_type_alias::generate_fn_type_alias has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (12 pts), match/switch 1 (2 pts), boolean chains 1, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_fn_type_alias.rs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fbbc583a150cd2e3240fce276d7b0b36b03acd66ad824c74cd83faf9fae35a9"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::generate_documentation_template::make_example_for_fn (cognitive 16): ide_assists::handlers::generate_documentation_template::make_example_for_fn has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (12 pts), boolean chains 2, loops 2 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_documentation_template.rs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"c104050a4434dc14728f2245fb8ec008dff4dccb468912a1fdea47e6d07566d8"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::wrap_unwrap_cfg_attr::wrap_derive (cognitive 16): ide_assists::handlers::wrap_unwrap_cfg_attr::wrap_derive has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (12 pts), boolean chains 3, loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/wrap_unwrap_cfg_attr.rs"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"5084beeb1c9c521ce3211d0494432c8acf013909d42ce4bfadadb12ebcf621c3"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::convert_bool_to_enum::find_bool_node (cognitive 16): ide_assists::handlers::convert_bool_to_enum::find_bool_node has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (14 pts), match/switch 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_bool_to_enum.rs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"06b72786ad19ecc08f604d61a8332c63a4cbee1fff5d912241ed443188ca8c43"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_assists::handlers::promote_local_to_const::promote_local_to_const (cognitive 16): ide_assists::handlers::promote_local_to_const::promote_local_to_const has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (12 pts), loops 1 (2 pts), boolean chains 1, match/switch 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/promote_local_to_const.rs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"e18cd06ace180a944b5a8f651d0ca682cf2b3adc8b4a2d716ce13ab72e024dd3"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_completion::completions::fn_param::fill_fn_params (cognitive 16): ide_completion::completions::fn_param::fill_fn_params has cognitive complexity 16 (threshold 15). Drivers by points: match/switch 4 (9 pts), if/else 4 (5 pts), boolean chains 1, loops 1 (nesting depth added 6). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/fn_param.rs"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"0328e85a11fc70d13d6c6be3fe6db5590422514437f107891dd490a97084fedf"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_completion::completions::item_list::trait_impl::add_type_alias_impl (cognitive 16): ide_completion::completions::item_list::trait_impl::add_type_alias_impl has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (10 pts), match/switch 2 (6 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/item_list/trait_impl.rs"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"db14e55e8cec9a6507886e40302d12519f39a3d77e1f32e15c686ba235e5ef4a"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_completion::render::render_resolution_path (cognitive 16): ide_completion::render::render_resolution_path has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (7 pts), match/switch 4 (5 pts), boolean chains 4 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/render.rs"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"51bef711aba430f35c5e757f2020a8e32ffab496e52a750cfaad1177f902f313"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_completion::completions::expr::complete_expr (cognitive 16): ide_completion::completions::expr::complete_expr has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (6 pts), loops 2 (6 pts), match/switch 1 (3 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/expr.rs"},"region":{"startLine":457}}}],"partialFingerprints":{"codehealthFindingId/v1":"c01ca308251b4d4018e1c93468d4a03c9f443647685ecf1d0c3e180767aa9506"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_db::syntax_helpers::node_ext::for_each_tail_expr (cognitive 16): ide_db::syntax_helpers::node_ext::for_each_tail_expr has cognitive complexity 16 (threshold 15). Drivers by points: if/else 3 (7 pts), match/switch 3 (6 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 8). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/syntax_helpers/node_ext.rs"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc905080f01d9dde3720e9b46d2bf63dc782f091de703b12b9959f872a9d6cb9"}},{"ruleId":"D2","level":"warning","message":{"text":"ide_db::rename::rename_field_constructors (cognitive 16): ide_db::rename::rename_field_constructors has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8, loops 5 (7 pts), boolean chains 1 (nesting depth added 2). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/rename.rs"},"region":{"startLine":425}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2c003c4755303593294c5ad69b1258f1a6a56ad35c7823eef781ac0eecab1d4"}},{"ruleId":"D2","level":"warning","message":{"text":"MatchFinder::output_debug_for_nodes_at_range (cognitive 16): MatchFinder::output_debug_for_nodes_at_range has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (9 pts), loops 2 (4 pts), boolean chains 3 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-ssr/src/lib.rs"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"792700f2d420883c51b72d9fd379f1e4acb76a17423ee484c3e69e5680e87312"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceRootConfig::source_root_parent_map (cognitive 16): SourceRootConfig::source_root_parent_map has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (11 pts), loops 2 (3 pts), boolean chains 2 (nesting depth added 7). Of this number, 14 points are the body\u0027s own statements and 2 belong to one function item inside it that branches. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/load-cargo/src/lib.rs"},"region":{"startLine":427}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bd399aa69fdce05bca98f5d0647c7041ffbe76817d8b63837dbd167341a7006"}},{"ruleId":"D2","level":"warning","message":{"text":"mbe::expander::matcher::match_meta_var (cognitive 16): mbe::expander::matcher::match_meta_var has cognitive complexity 16 (threshold 15). Drivers by points: if/else 3 (7 pts), match/switch 4 (7 pts), boolean chains 2 (nesting depth added 7). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/expander/matcher.rs"},"region":{"startLine":775}}}],"partialFingerprints":{"codehealthFindingId/v1":"a840877ccdf16c466ad94d6e1b38a3214989f7c2a9963ae847b039385eed5b43"}},{"ruleId":"D2","level":"warning","message":{"text":"mbe::expander::expand_rules (cognitive 16): mbe::expander::expand_rules has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (15 pts), loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/expander.rs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbe83c7b085bf4f2be7714728718dd4a6c214b68fd932c242435065995042356"}},{"ruleId":"D2","level":"warning","message":{"text":"parser::grammar::expressions::stmt (cognitive 16): parser::grammar::expressions::stmt has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (8 pts), boolean chains 5, match/switch 2 (3 pts) (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/grammar/expressions.rs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"8717f0e238d9b4b7f54e93adfb0023b6512a3085402d5b407817739279af6e08"}},{"ruleId":"D2","level":"warning","message":{"text":"parser::grammar::patterns::pattern_single_r (cognitive 16): parser::grammar::patterns::pattern_single_r has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/grammar/patterns.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"64d4aac472ae3ad4374261ed5f96bdb37a0601ceb10825495793b37d11cec55a"}},{"ruleId":"D2","level":"warning","message":{"text":"FetchMetadata::exec (cognitive 16): FetchMetadata::exec has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (11 pts), boolean chains 3, match/switch 1 (2 pts) (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/cargo_workspace.rs"},"region":{"startLine":764}}}],"partialFingerprints":{"codehealthFindingId/v1":"34b66afaa37e66a85438c90f356ae5259fe94fc1231392bcfabd355cb649938e"}},{"ruleId":"D2","level":"warning","message":{"text":"LsifManager::add_token (cognitive 16): LsifManager::add_token has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (12 pts), loops 1 (2 pts), match/switch 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/lsif.rs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fd19ec899441b49897373a6a4a5c7f70480361574f9cc4056c1e657d13ac4ac"}},{"ruleId":"D2","level":"warning","message":{"text":"rust_analyzer::session::run_session (cognitive 16): rust_analyzer::session::run_session has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (11 pts), match/switch 4, boolean chains 1 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/session.rs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"43d0f5008fc04693d25a61c8a3fe8b501cd4bb448f77c7202eb7730ebbb94417"}},{"ruleId":"D2","level":"warning","message":{"text":"syntax::parsing::reparsing::reparse_token (cognitive 16): syntax::parsing::reparsing::reparse_token has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (12 pts), boolean chains 3, match/switch 1 (nesting depth added 7). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/parsing/reparsing.rs"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"f141e9d1960bea37bc392c1973358d4968d0b1b34266e5d861e11dc25447a4d5"}},{"ruleId":"D2","level":"warning","message":{"text":"syntax::ast::prec::precedence (cognitive 16): syntax::ast::prec::precedence has cognitive complexity 16 (threshold 15). Drivers by points: match/switch 6 (16 pts) (nesting depth added 10). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/prec.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"960e5b118e967b5a10b20b936614d86266727a21509f90733436d72bc5f02c4e"}},{"ruleId":"D2","level":"warning","message":{"text":"line_index::analyze_source_file_sse2 (cognitive 16): line_index::analyze_source_file_sse2 has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (11 pts), loops 2 (5 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"lib/line-index/src/lib.rs"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f86f95bd4e28f7603241ad2f49be086368e7bda5e8ba6a425e76cca938f48c0"}},{"ruleId":"D2","level":"warning","message":{"text":"xtask::tidy::check_cargo_toml (cognitive 16): xtask::tidy::check_cargo_toml has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (13 pts), match/switch 1 (2 pts), loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"xtask/src/tidy.rs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e492676227878d104ee5a29d7eebd450c9ee31485fd0137c17948ae2f268b90"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InferenceContext: TooManyMethods \u2014 207 methods, declared across 15 files: src/infer.rs (55), infer/pat.rs (36), infer/expr.rs (33), infer/closure.rs (19), \u002B11 more file(s). The bar is 30 methods; this is 177 over it, 6.90\u00D7 the bar. That list is where to read them, not a suggestion to split the file: the members belong to the type wherever they are declared, so moving them between files leaves the count unchanged. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":1325}}}],"partialFingerprints":{"codehealthFindingId/v1":"11726b38aab50c9504e596913b2547f558fc3ca58adaefa1167dec4532cce5ad"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MirLowerCtx.lower_expr_to_place_without_adjust: MethodTooLong \u2014 lower_expr_to_place_without_adjust runs 688 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 588 over it, 6.88\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower.rs"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"3614a902460d6602cd692e4c06e76d15a5170f3552e2e47556d7306ceb6ffeb3"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Evaluator.exec_intrinsic: MethodTooLong \u2014 exec_intrinsic runs 661 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 561 over it, 6.61\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"86d21772095bb2074232b886807da11750890d3e5a1ca9dfb1ade63902aa7afb"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ide_completion::context::analysis::classify_name_ref: FunctionTooLong \u2014 ide_completion::context::analysis::classify_name_ref runs 561 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 461 over it, 5.61\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context/analysis.rs"},"region":{"startLine":952}}}],"partialFingerprints":{"codehealthFindingId/v1":"99490e94cf3e75f850764a2ceaa00b1999b355896b3b760afd431f4d4bfa9b56"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ExprCollector: ClassTooLong \u2014 2143 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 113 methods, 3 blocks, lines 508-3760. The bar is 400 significant lines; this is 1743 over it, 5.36\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":508}}}],"partialFingerprints":{"codehealthFindingId/v1":"d662d365b608b572c82140b9fe8ff8ff0ac10ffb855b88bd32ecfc59e9a304a5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: expr_store/lower.rs: FileTooLong \u2014 2641 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 81% of them inside a single declaration: ExprCollector (3 blocks, 508-3760). The bar is 500 significant lines; this is 2141 over it, 5.28\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c00788f16372d72b46ea5c1cd63a57d151401702fadddf8501ec0e384c639574"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SyntaxFactory: TooManyMethods \u2014 157 methods, declared across 2 files: syntax_factory/constructors.rs (153), ast/syntax_factory.rs (4). The bar is 30 methods; this is 127 over it, 5.23\u00D7 the bar. That list is where to read them, not a suggestion to split the file: the members belong to the type wherever they are declared, so moving them between files leaves the count unchanged. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory.rs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fa02d54eb3f41b6f79ebad251aa820c8c35ad146c65c48bbf9f7b97a5fd2f09"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: mir/eval.rs: FileTooLong \u2014 2615 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 78% of them inside a single declaration: Evaluator (2 blocks, 172-3219). The bar is 500 significant lines; this is 2115 over it, 5.23\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"58e4d0f9535aceb84cacaed3b6c471b888a78c71e40a42f0a4b8dea7886f2ab1"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Evaluator: ClassTooLong \u2014 2037 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 69 methods, 2 blocks, lines 172-3219. The bar is 400 significant lines; this is 1637 over it, 5.09\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"923de8e88b33ce7a320e35049de76b3d5327e96f8ea5b47bcf1fb0adfe4ccff5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/config.rs: FileTooLong \u2014 2389 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 1889 over it, 4.78\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/config.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"65801c80b07ef27b7bd0a2f6793b09c2aea12cc6c7aa8ebe79359d43d072cf58"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SemanticsImpl: TooManyMethods \u2014 139 methods. The bar is 30 methods; this is 109 over it, 4.63\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3bf4c0d46f3f1b02e10b0ae491159d4beb589ffa3985b360a713a4730ce4113"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Ty.hir_fmt: MethodTooLong \u2014 hir_fmt runs 439 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 339 over it, 4.39\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":1282}}}],"partialFingerprints":{"codehealthFindingId/v1":"afbf200b0359bf0df22628c444e70eb05dc42dd3d6a905493a9eb80c6a5f2aa9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/display.rs: FileTooLong \u2014 2040 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 1540 over it, 4.08\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b41b6c517deebb84a4132b294f82c1e1a91c1b8982aac917d4c816862ee9c43"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/lower.rs: FileTooLong \u2014 2017 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 46 free functions. The bar is 500 significant lines; this is 1517 over it, 4.03\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"77cd760bfe83aeac340ecd28f901ed10173237446dcc1a4264fc0726685026cb"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceContext.infer_expr_inner: MethodTooLong \u2014 infer_expr_inner runs 393 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 293 over it, 3.93\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/expr.rs"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"9847b0fdec575c553485673bbcac876b1c095a63463756cdc6a342079d2da439"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Evaluator.eval_rvalue: MethodTooLong \u2014 eval_rvalue runs 390 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 290 over it, 3.90\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":1177}}}],"partialFingerprints":{"codehealthFindingId/v1":"091088acc8387579c3eba16a7c62b6bf21f022e6e8e1638d88d684d7fa69808d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: handlers/request.rs: FileTooLong \u2014 1948 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 80 free functions. The bar is 500 significant lines; this is 1448 over it, 3.90\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/request.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bea9c0ac7710637c0c629bfbc3482308457f524a81e5df5be7f439bc446e6a3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/semantics.rs: FileTooLong \u2014 1903 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 1403 over it, 3.81\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"62b589b81f0799a4760197f8f1b229aeec4bbf5229655ec704b434e81ea8365e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ExprCollector.maybe_collect_expr: MethodTooLong \u2014 maybe_collect_expr runs 378 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 278 over it, 3.78\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":1417}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bdc0aef975295f8141bf83a6e9575d7e25e78a1b606b875f800bc988a04949f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ExprCollector: TooManyMethods \u2014 113 methods, declared across 3 files: expr_store/lower.rs (107), lower/format_args.rs (5), lower/asm.rs (1). The bar is 30 methods; this is 83 over it, 3.77\u00D7 the bar. That list is where to read them, not a suggestion to split the file: the members belong to the type wherever they are declared, so moving them between files leaves the count unchanged. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":508}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c6db55f603c694683ce35c43bc4ff83510025d55f316fb7525516ca9369633a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InferCtxt: TooManyMethods \u2014 111 methods, declared across 13 files: infer/mod.rs (71), snapshot/mod.rs (10), canonical/instantiate.rs (6), outlives/obligations.rs (5), \u002B9 more file(s). The bar is 30 methods; this is 81 over it, 3.70\u00D7 the bar. That list is where to read them, not a suggestion to split the file: the members belong to the type wherever they are declared, so moving them between files leaves the count unchanged. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/mod.rs"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"713d7c7899b87a64a5b1b19f5c46bded39247d79201b9da3dad28f5ca182594e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: nameres/collector.rs: FileTooLong \u2014 1813 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 1313 over it, 3.63\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"805f590bc1fc0d562a2d92421faed7f8a6570c1e992d84b61da63ff40afbd54f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: next_solver/interner.rs: FileTooLong \u2014 1804 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 1304 over it, 3.61\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/interner.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cab9e31fd37c99da687bbb7848f616899bbe0c3d433a4c02c1bf07cabecf79f5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: mir/lower.rs: FileTooLong \u2014 1783 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 76% of them inside a single declaration: MirLowerCtx (2 blocks, 82-2059). The bar is 500 significant lines; this is 1283 over it, 3.57\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"772e35bf5e915a3de40cd2c371a5c4e9ccf1754d881b6b0c0cfe31f9d173161a"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: MirLowerCtx: ClassTooLong \u2014 1350 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 67 methods, 2 blocks, lines 82-2059. The bar is 400 significant lines; this is 950 over it, 3.38\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower.rs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"6637cbc42103f2fa4099cead9f7d896e0faadc96e2fca588c2b52f51bf4709c9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/infer.rs: FileTooLong \u2014 1678 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 1178 over it, 3.36\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed49fad9326a390e6132791b296600b9d489dffb0a9947170d6fab5c7c341150"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: hir_expand::builtin::derive_macro::coerce_pointee_expand: FunctionTooLong \u2014 hir_expand::builtin::derive_macro::coerce_pointee_expand runs 328 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 228 over it, 3.28\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/builtin/derive_macro.rs"},"region":{"startLine":1128}}}],"partialFingerprints":{"codehealthFindingId/v1":"fef06c42997a07ce49c31ee9019a946eb759bcec20687d40f17fdbd0e45521ed"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/source_analyzer.rs: FileTooLong \u2014 1613 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 75% of them inside a single declaration: SourceAnalyzer (2 blocks, 77-1751). The bar is 500 significant lines; this is 1113 over it, 3.23\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"41b0f4b6eacaf8a6c2ec3c2b8c9cfd2792ab630aa54b8fe16ac31f26596e7b9b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MirLowerCtx.pattern_match_inner: MethodTooLong \u2014 pattern_match_inner runs 317 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 217 over it, 3.17\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower/pattern_matching.rs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d80abba20260c6e0d0e09d2a2aae312c0b4222297fb0f5fc942c3c1502afa50"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: syntax_factory/constructors.rs: FileTooLong \u2014 1578 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 99% of them inside a single declaration: SyntaxFactory (2 blocks, 15-2413). The bar is 500 significant lines; this is 1078 over it, 3.16\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a24fe03278b73d63d4f6d3eff6e62f506e91b6ea8781ba27941d8ca312a9ad94"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lsp/to_proto.rs: FileTooLong \u2014 1540 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 52 free functions. The bar is 500 significant lines; this is 1040 over it, 3.08\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/lsp/to_proto.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cddc217f5783a7c3489e8bf1c02a7538e7f7ac363d741e5aca9b9de51fcb139a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/diagnostics.rs: FileTooLong \u2014 1512 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 1012 over it, 3.02\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/diagnostics.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fe7ed460880109e88472fb54bf58c3508d912d03537f6bf2df138326e12b33e"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: SourceAnalyzer: ClassTooLong \u2014 1202 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 70 methods, 2 blocks, lines 77-1751. The bar is 400 significant lines; this is 802 over it, 3.01\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"76694f0b06fff449edb71a37abf9e944ad253787644748555b36780c58a47847"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: context/analysis.rs: FileTooLong \u2014 1481 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 981 over it, 2.96\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context/analysis.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f658a66299d6aaba4ce887d5c94336c5775600e504f350ba35b9e9780dd6b1ce"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TokenStream.from_str: MethodTooLong \u2014 from_str runs 296 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 196 over it, 2.96\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-srv/src/token_stream.rs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0ef96723f28cb11100b324c8f7249b64bc4d6057adf1e074911097604901b6c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AnyDiagnostic.inference_diagnostic: MethodTooLong \u2014 inference_diagnostic runs 292 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 192 over it, 2.92\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/diagnostics.rs"},"region":{"startLine":1549}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce249c2919d371ad29e73af30de508528dba6859aeabbccaf8fdee1c2cce9af5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: handlers/extract_function.rs: FileTooLong \u2014 1452 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 36 free functions. The bar is 500 significant lines; this is 952 over it, 2.90\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_function.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"795b89623be1d42c94adcc4a1af72b02866e85de9e1e6e3f607a1fba489f64ad"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ide::hover::render::definition: FunctionTooLong \u2014 ide::hover::render::definition runs 288 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 188 over it, 2.88\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover/render.rs"},"region":{"startLine":446}}}],"partialFingerprints":{"codehealthFindingId/v1":"965812da8892af8e0278dd8d87f7241d67a22f4f7fa1f5eca43415d6163b97f4"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AnalysisStats.run_inference: MethodTooLong \u2014 run_inference runs 288 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 188 over it, 2.88\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":774}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c1ae059d9e1d543b19479f685db4db0a454bcb54af1381fb58d7f23383dac64"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Config: TooManyMethods \u2014 84 methods. The bar is 30 methods; this is 54 over it, 2.80\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/config.rs"},"region":{"startLine":1110}}}],"partialFingerprints":{"codehealthFindingId/v1":"019643bfced13e192c56f646cb39a1ebc275f7487f4dc4d514d1c65e622360d8"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DefCollector.resolve_macros: MethodTooLong \u2014 resolve_macros runs 280 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 180 over it, 2.80\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":1306}}}],"partialFingerprints":{"codehealthFindingId/v1":"13bca00f4e24f7a88f0b8af2ba16a63393b7e953947b4ba0ca75b4d2631b7738"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/workspace.rs: FileTooLong \u2014 1397 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 897 over it, 2.79\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/workspace.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"36ff826a72e5b0347034225ea15db1b361f559a4dbaec535473f6b967472f92c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: infer/expr.rs: FileTooLong \u2014 1373 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 97% of them inside a single declaration: InferenceContext (55-2171). The bar is 500 significant lines; this is 873 over it, 2.75\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/expr.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7ebc0460d8c5ecd246ced742ec99b90bd675a608db95948b49147f442dcdb7a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ModCollector.collect: MethodTooLong \u2014 collect runs 271 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 171 over it, 2.71\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":1898}}}],"partialFingerprints":{"codehealthFindingId/v1":"34a831408d70d67686e8488ad1bddcfc9250b896001c5f7914c81767164153bb"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Analysis: TooManyMethods \u2014 79 methods. The bar is 30 methods; this is 49 over it, 2.63\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/lib.rs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"5147c5cbd83596e1d16aafe13ddfa5b560ec72053f209bf0f1c0c15ba7cd2591"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DefCollector: ClassTooLong \u2014 1005 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 22 methods, 2 blocks, lines 232-1881. The bar is 400 significant lines; this is 605 over it, 2.51\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"5816b61e343a9f9e8e2f31b4ebf4c3ad08dac2077f867b8cc6cd15ac4cf0144f"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DbInterner: ClassTooLong \u2014 997 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 19 methods, 4 blocks, lines 342-2310. The bar is 400 significant lines; this is 597 over it, 2.49\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/interner.rs"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"96ecb45e4d9a44533bd3ad343645e21619fa6566749a436b2d122a49fe1d4b08"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Printer.print_expr_in: MethodTooLong \u2014 print_expr_in runs 248 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 148 over it, 2.48\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/pretty.rs"},"region":{"startLine":531}}}],"partialFingerprints":{"codehealthFindingId/v1":"16e7e8fa0eb46704742b0bc50698a07aa6c1182b3fc259030ef42a7f4ffeb4f3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: method_resolution/probe.rs: FileTooLong \u2014 1220 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 720 over it, 2.44\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/method_resolution/probe.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e82030550a5e16ed945a0f6b2de9f3fb3f176f0b9517562c8b0bad1e071ac30a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: cli/analysis_stats.rs: FileTooLong \u2014 1213 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 86% of them inside a single declaration: AnalysisStats (51-1481). The bar is 500 significant lines; this is 713 over it, 2.43\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4e15047ef897d2250cdd1a2e168f3514771d02bcf5c3b862f0e684b7560c096"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: eval/shim.rs: FileTooLong \u2014 1204 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 98% of them inside a single declaration: Evaluator (31-1640). The bar is 500 significant lines; this is 704 over it, 2.41\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bd4b19ac9bb3ffd9ec07e104e5e96c5829384c0443f6e686a2198d252000b7e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AnalysisStats.run: MethodTooLong \u2014 run runs 237 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 137 over it, 2.37\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"acab2e9af4c01dd985c5af92b2d7b588ef0ff71734d9e4221a7378d9220b0fd9"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SourceAnalyzer: TooManyMethods \u2014 70 methods. The bar is 30 methods; this is 40 over it, 2.33\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca288a532a724b66f9b12e5b0b395dd82156cd1317850ab562fe548d9db83f06"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Evaluator: TooManyMethods \u2014 69 methods, declared across 3 files: mir/eval.rs (55), eval/shim.rs (12), shim/simd.rs (2). The bar is 30 methods; this is 39 over it, 2.30\u00D7 the bar. That list is where to read them, not a suggestion to split the file: the members belong to the type wherever they are declared, so moving them between files leaves the count unchanged. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"c238b3b0b9f7f05a3c657ba120c52fef530c99514204614e1ec37334bbf3860c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Ty: TooManyMethods \u2014 69 methods. The bar is 30 methods; this is 39 over it, 2.30\u00D7 the bar. Most of these members implement ty.Ty (69 of 69 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/ty.rs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"d821a74afe2a318e573d365a6d68e665a9aa17972a22b93dcc1071f198e46962"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ide_completion::completions::postfix::complete_postfix: FunctionTooLong \u2014 ide_completion::completions::postfix::complete_postfix runs 228 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 128 over it, 2.28\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/postfix.rs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"59ed2ee316eb7d64cd5a888aadca0f014d2e3956a30b69b08432e643a0243456"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ide_completion::context::analysis::expected_type_and_name: FunctionTooLong \u2014 ide_completion::context::analysis::expected_type_and_name runs 226 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 126 over it, 2.26\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context/analysis.rs"},"region":{"startLine":591}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ba7493be33be7d3949f9f91698f1b75cffcfe9d2be015db0b9076a045cff8e7"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: hir_ty::layout::layout_of_ty_query: FunctionTooLong \u2014 hir_ty::layout::layout_of_ty_query runs 225 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 125 over it, 2.25\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/layout.rs"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ae365a77aa0c5537bbc122e249a1e677fa0b81a607e6993aab99a242e9d7a6a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MirLowerCtx: TooManyMethods \u2014 67 methods, declared across 3 files: mir/lower.rs (49), lower/pattern_matching.rs (11), lower/as_place.rs (7). The bar is 30 methods; this is 37 over it, 2.23\u00D7 the bar. That list is where to read them, not a suggestion to split the file: the members belong to the type wherever they are declared, so moving them between files leaves the count unchanged. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower.rs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"3adbdfe84ded30d72c5d2cefceb2eba3ff622aadd70ea57180e8d3cda954b71c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: builtin/derive_macro.rs: FileTooLong \u2014 1111 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 611 over it, 2.22\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/builtin/derive_macro.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"91f2b94f209484f0f0d986b5e12d145f7dd5950b4006ef9e21e7ead26f0ac422"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FindUsages.short_associated_function_fast_search: MethodTooLong \u2014 short_associated_function_fast_search runs 219 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 119 over it, 2.19\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":601}}}],"partialFingerprints":{"codehealthFindingId/v1":"292c14ec006057ddb818c6345e74160df22ac5f5c89828e9733c500c1e0834d9"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: GlobalState.handle_event: MethodTooLong \u2014 handle_event runs 219 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 119 over it, 2.19\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/main_loop.rs"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc6f731a5672a79b21c21b3adb2c87ff9d3cb0e5516f39500fb201d0e1bc96e4"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SourceAnalyzer.resolve_path: MethodTooLong \u2014 resolve_path runs 217 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 117 over it, 2.17\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":1157}}}],"partialFingerprints":{"codehealthFindingId/v1":"791d26355f54e0b14068869795a8c6f8ad0e23437524d5ba324122958a4e2bbc"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ide_assists::handlers::convert_closure_to_fn::convert_closure_to_fn: FunctionTooLong \u2014 ide_assists::handlers::convert_closure_to_fn::convert_closure_to_fn runs 216 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 116 over it, 2.16\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_closure_to_fn.rs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c35e632daae0e23233a84139b0d5412078dd89e48f812834fbfedfebf66ffdd"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/lib.rs: FileTooLong \u2014 1076 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 576 over it, 2.15\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/lib.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b05ac88876461f64f725d47f956002f1785294ce726194d805fcd82c430a8d9d"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Ty: ClassTooLong \u2014 840 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 69 methods, 12 blocks, lines 55-1409. The bar is 400 significant lines; this is 440 over it, 2.10\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/ty.rs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"f28e376e88ec83b00ad7691e28e4bc18981c0fbc050e3a92efb713ad44dbb9df"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/commands.ts: FileTooLong \u2014 1042 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 542 over it, 2.08\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/commands.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bd318b49f444b7949cfc2a588ef16059de433b18315a692cfe7048d46a63bc7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: hover/render.rs: FileTooLong \u2014 1035 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 535 over it, 2.07\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover/render.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3975392689027dc384ca1a4be76e40c37cfbac0a9ac6f02c311893493aa6376b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceContext.resolve_variant: MethodTooLong \u2014 resolve_variant runs 207 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 107 over it, 2.07\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":2225}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7e909c84d0f8b20b988075aa87f674abbd9e20114732efe52211a1cd81fa4f3"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: InferenceContext: ClassTooLong \u2014 823 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 207 methods, 2 blocks, lines 1325-2592. The bar is 400 significant lines; this is 423 over it, 2.06\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":1325}}}],"partialFingerprints":{"codehealthFindingId/v1":"646394265cd108843d65f37614c1b0747dc45abe89bc909ca9219703f9021c53"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: expr_store/pretty.rs: FileTooLong \u2014 1012 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 67% of them inside a single declaration: Printer (3 blocks, 450-1411). The bar is 500 significant lines; this is 512 over it, 2.02\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/pretty.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5b780d94f2d0033efbc48f0db2f9409cc006c68c365f90ce1480c2bc548ff0e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ProjectWorkspace.load_cargo: MethodTooLong \u2014 load_cargo runs 202 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 102 over it, 2.02\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/workspace.rs"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"003469470773ef89acc9ccc83ac4bac2c497e02a1bf62928bf7da552534fa190"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: hir_ty::display::render_const_scalar_inner: FunctionTooLong \u2014 hir_ty::display::render_const_scalar_inner runs 201 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 101 over it, 2.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":820}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cbae67ecb363fc66a1fe39ff8fdb591297c42fa1c6903ac501061b2dab80b3b"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: client.createClient: FunctionTooLong \u2014 createClient runs 200 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 100 over it, 2.00\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/client.ts"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d63dab19872c997a00931d952e9f4ca069d5a638e0fa08fb8e0950f1f37b1c0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/attrs.rs: FileTooLong \u2014 998 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 498 over it, 2.00\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/attrs.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"18f4addb7cd340f8893825e5b9935726468696ac6a55bbc9e91976189d7254bd"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/main_loop.rs: FileTooLong \u2014 997 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 88% of them inside a single declaration: GlobalState (176-1482). The bar is 500 significant lines; this is 497 over it, 1.99\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/main_loop.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a755c0de948b4c2e8f496d2153795e2bd355afadedbe14328619d298a2d38cbb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/resolver.rs: FileTooLong \u2014 989 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 489 over it, 1.98\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/resolver.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"515b9701c460d572add2e72e0fd64035854fa357922033c50b6e14af0e705ab3"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ExprCollector.lower_inline_asm: MethodTooLong \u2014 lower_inline_asm runs 197 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 97 over it, 1.97\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower/asm.rs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"d17987208aa08661ac313bd2b5668bf4ff34564a90f8ec82c869cb1c57b80a31"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: next_solver/ty.rs: FileTooLong \u2014 967 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 87% of them inside a single declaration: Ty (12 blocks, 55-1409). The bar is 500 significant lines; this is 467 over it, 1.93\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/ty.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8aa08ca7a09d538c5289854a09e8ba77fc33055be033f761b1a31bc190d248ad"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/lib.rs: FileTooLong \u2014 966 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 466 over it, 1.93\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/lib.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"69ff169514055ead7f8d4e1e3044c63d52ff5394fdcfeb573f024f56762cf607"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/storage.rs: FileTooLong \u2014 966 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 466 over it, 1.93\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/tt/src/storage.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"11f955150b55c8c71b1f683c9d82a75bf7f88b373863cec80a46a2d5b1b0e663"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: commands.viewMemoryLayout: FunctionTooLong \u2014 viewMemoryLayout runs 193 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 93 over it, 1.93\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/commands.ts"},"region":{"startLine":1342}}}],"partialFingerprints":{"codehealthFindingId/v1":"b530c7e3bdfb8b413e5761535e19907f99ad7b602b8a1e7e1ccb5704427f4e7f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: hir_def::hir::format_args::parse: FunctionTooLong \u2014 hir_def::hir::format_args::parse runs 192 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 92 over it, 1.92\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/hir/format_args.rs"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"608f5fdf7a5f46c67b7cde871e50a987d5f8569c2e26001ba38d0cd4920af9ef"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ast/make.rs: FileTooLong \u2014 953 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 149 free functions. The bar is 500 significant lines; this is 453 over it, 1.91\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/make.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c8554b2c51e2f384b8b5609f65f2a9ca532205179ce0f96a77fbf9a130cbdca"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: hir_expand::fixup::fixup_syntax: FunctionTooLong \u2014 hir_expand::fixup::fixup_syntax runs 189 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 89 over it, 1.89\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/fixup.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"80a9fcd72e413064c31231e640a28977674875cd6065bc5c9f4e7cb8bbf14284"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: handlers/generate_function.rs: FileTooLong \u2014 943 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 31 free functions. The bar is 500 significant lines; this is 443 over it, 1.89\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_function.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2b2ffc2a004591f7b78e4dd8af9c397ca580788bbd7618d2ca7a4baebd216e9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/search.rs: FileTooLong \u2014 931 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 65% of them inside a single declaration: FindUsages (2 blocks, 441-1376). The bar is 500 significant lines; this is 431 over it, 1.86\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4974177200872fef3701af581d1718e9ec22931123e15c03b994e6fd13dc98e5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lower/path.rs: FileTooLong \u2014 930 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 68% of them inside a single declaration: PathLoweringContext (2 blocks, 58-1004). The bar is 500 significant lines; this is 430 over it, 1.86\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d235a870bba9aabbb87f9912c8e73eeafa536e0e32812b2c320b1b7dcea136a"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ide_db::prime_caches::parallel_prime_caches: FunctionTooLong \u2014 ide_db::prime_caches::parallel_prime_caches runs 184 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 84 over it, 1.84\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/prime_caches.rs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"baa1a0f9c0a8b652e393ceb852fa1c6d57ea4e442a8ca2c449ff90daa2514a6e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ItemScope: TooManyMethods \u2014 55 methods. The bar is 30 methods; this is 25 over it, 1.83\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_scope.rs"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"befdc4ff6c8dd3f02e052a70792809e58a384ce35ff38c7729969d6cdf4b259e"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: TyLoweringContext: ClassTooLong \u2014 730 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 44 methods, 3 blocks, lines 209-1376. The bar is 400 significant lines; this is 330 over it, 1.83\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7a4ca0939c09d01e77995f0f58380c06f803bf4b050be369becb412a816ee55"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ProjectWorkspace: ClassTooLong \u2014 728 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 19 methods, 3 blocks, lines 55-1102. The bar is 400 significant lines; this is 328 over it, 1.82\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/workspace.rs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6574fa39e7e4546dc4262e3cbc3a94d5ba38586478a855e81d262a96c5510c8"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ide_assists::handlers::add_missing_match_arms::add_missing_match_arms: FunctionTooLong \u2014 ide_assists::handlers::add_missing_match_arms::add_missing_match_arms runs 182 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 82 over it, 1.82\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/add_missing_match_arms.rs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfab549e32f6e711158ac7ec4d2c42955334c884885378357e071680356e25f4"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ide_completion::context::analysis::expand: FunctionTooLong \u2014 ide_completion::context::analysis::expand runs 180 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 80 over it, 1.80\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context/analysis.rs"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"f28489b289ecba57fb720c9d67e20bbce1bc8dfd905e4472bcb5dc301ab0496d"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ide::inlay_hints::adjustment::hints: FunctionTooLong \u2014 ide::inlay_hints::adjustment::hints runs 180 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 80 over it, 1.80\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints/adjustment.rs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab882652c70bd105752d4ed9859bf7d05d6027d42f53c8695422d3eb3dfaf8f6"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: GlobalState.switch_workspaces: MethodTooLong \u2014 switch_workspaces runs 180 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 80 over it, 1.80\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/reload.rs"},"region":{"startLine":467}}}],"partialFingerprints":{"codehealthFindingId/v1":"92ae7a3f5461c498a0fcc06f343a00e43b74d38319fecbebc959b5bbb74d6ec8"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Scip.run: MethodTooLong \u2014 run runs 179 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 79 over it, 1.79\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/scip.rs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"84435a4295cd102816a5fe60a76bd1f9eb29b66ca230ed7fba6de822ddf0fa49"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ExprUseVisitor: ClassTooLong \u2014 713 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 43 methods, 3 blocks, lines 407-1762. The bar is 400 significant lines; this is 313 over it, 1.78\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis/expr_use_visitor.rs"},"region":{"startLine":407}}}],"partialFingerprints":{"codehealthFindingId/v1":"072d950b6b7bacba1c74be743829b73ccf8563fbdd4f89e434da77a412ba47b8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: infer/pat.rs: FileTooLong \u2014 890 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 88% of them inside a single declaration: InferenceContext (240-1726). The bar is 500 significant lines; this is 390 over it, 1.78\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/pat.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"546de202578d0b87e611588bc92c678f5db143dc25c53e93a1f68859489b6b19"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ProbeContext: ClassTooLong \u2014 709 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 39 methods, 4 blocks, lines 48-2082. The bar is 400 significant lines; this is 309 over it, 1.77\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/method_resolution/probe.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"4854afcdcae3e00cd3804b851badc51b8401b6cf1fd4b344c88f45e6430112de"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: infer/coerce.rs: FileTooLong \u2014 885 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 385 over it, 1.77\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/coerce.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"60f87b3eca81d2e2b49212503b946fe9979c30fd8e970641707d7116ef7db2da"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: mbe::expander::matcher::match_loop_inner: FunctionTooLong \u2014 mbe::expander::matcher::match_loop_inner runs 175 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 75 over it, 1.75\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/expander/matcher.rs"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"55b452f09decd915c4f45b28fd83d270325fc059c9ee7980e9a4db2aaec4bf73"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: analysis/expr_use_visitor.rs: FileTooLong \u2014 860 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 83% of them inside a single declaration: ExprUseVisitor (3 blocks, 407-1762). The bar is 500 significant lines; this is 360 over it, 1.72\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis/expr_use_visitor.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"74297f27648338f761ab3f3c64542efcd29f5c9b0e406bb4f09933f698de989f"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Printer: ClassTooLong \u2014 681 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 18 methods, 3 blocks, lines 450-1411. The bar is 400 significant lines; this is 281 over it, 1.70\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/pretty.rs"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd1e3cbd03eaadff592d5a22afd12cb4632d0dd6e41f612c539104fc050a2336"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: GlobalState: TooManyMethods \u2014 51 methods, declared across 4 files: src/main_loop.rs (18), src/global_state.rs (16), src/reload.rs (13), lsp/utils.rs (4). The bar is 30 methods; this is 21 over it, 1.70\u00D7 the bar. That list is where to read them, not a suggestion to split the file: the members belong to the type wherever they are declared, so moving them between files leaves the count unchanged. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/global_state.rs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca504b7cb2d2e85d4f2d403923bdf55ed950a1e2019d52fb655466b137ff8d75"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ide_assists::handlers::extract_variable::extract_variable: FunctionTooLong \u2014 ide_assists::handlers::extract_variable::extract_variable runs 169 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 69 over it, 1.69\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_variable.rs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9c355d20350c1888f1d0c9b2e6cf9e8457668133062e1531a9f3abe03698899"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ExprCollector.collect_pat: MethodTooLong \u2014 collect_pat runs 166 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 66 over it, 1.66\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":2912}}}],"partialFingerprints":{"codehealthFindingId/v1":"478176432c58fbbe759b7c982212e4de7983272b8f254eb5b0461c240f79f591"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ide_diagnostics::semantic_diagnostics: FunctionTooLong \u2014 ide_diagnostics::semantic_diagnostics runs 165 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 65 over it, 1.65\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/lib.rs"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2cbeb42af183b14774fd3c758c3c27a23c853953cf657ea9f5d59a2a1a1c518"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: GlobalState: TooManyFields \u2014 49 stored fields beside 51 methods. The bar is 30 stored fields; this is 19 over it, 1.63\u00D7 the bar. This is width in DATA, not behaviour: every reader that takes the whole type couples to all of its fields, so a change to any one of them is a change every reader has to be checked against. To reduce it, group the fields that are read together by the same callers into a smaller type of their own, and have this one hold that type as a single member \u2014 each reader then names only the group it uses."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/global_state.rs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c162b0cb853d70994cdfb86d55d4336b1e17841764e6f45015a372bd1df1726"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/expr_store.rs: FileTooLong \u2014 812 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 312 over it, 1.62\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2ef7d05cee098c5b4f1bcc6f633e76169cbcab7dc27fc54d99b1cd40d3bd07a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceContext.infer_closure: MethodTooLong \u2014 infer_closure runs 161 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 61 over it, 1.61\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure.rs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"579f562dea50770702b7c4af05aaf2478dce5529cc99de29e588d2171c89b7c2"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: hir_expand::cfg_process::macro_input_callback: FunctionTooLong \u2014 hir_expand::cfg_process::macro_input_callback runs 160 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 60 over it, 1.60\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/cfg_process.rs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"31711de7b712af0b9497725bb4c283fa7b5c19d1636dc48dd73fbc7fc5792acf"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ModCollector: ClassTooLong \u2014 636 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 12 methods, 2 blocks, lines 1884-2782. The bar is 400 significant lines; this is 236 over it, 1.59\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":1884}}}],"partialFingerprints":{"codehealthFindingId/v1":"338d1fca59917cba8788a63ca9dc8d4737afd7d90028c40b985e0520aba2de9b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Expr.gen_source_code: MethodTooLong \u2014 gen_source_code runs 159 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 59 over it, 1.59\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/term_search/expr.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"d639629d806b5719cfc1d286605a2dfcf63102bdb3900556c8c9a9a3f350a5e3"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: PathLoweringContext: ClassTooLong \u2014 635 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 25 methods, 2 blocks, lines 58-1004. The bar is 400 significant lines; this is 235 over it, 1.59\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"172591e6bb41865e23b3271dd1c94075bddf68f0cf275aa32184b3d82c1eb23d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/utils.rs: FileTooLong \u2014 791 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 55 free functions. The bar is 500 significant lines; this is 291 over it, 1.58\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/utils.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"30b21265208afb0917e21e47c4b7a8328e5c3fe9118db1f1987a96693dc86630"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: hir_def::expr_store::lower::path::lower_path: FunctionTooLong \u2014 hir_def::expr_store::lower::path::lower_path runs 158 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 58 over it, 1.58\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower/path.rs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfc065ffc22b0d0b10e921d956b3ec91ea69ce045b8953f919f423ca937a5f66"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AnalysisStats.run_term_search: MethodTooLong \u2014 run_term_search runs 158 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 58 over it, 1.58\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"561ed647463a5ea2767bd93133813308d26c5d8dfe691cb9cb8583231e8f50e1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/signatures.rs: FileTooLong \u2014 786 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 286 over it, 1.57\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/signatures.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9ef8310c9c0a6662ff2540f8492c97a115a8f9ffc27e6d8d950b0c4ca00e8d4"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: rust_analyzer::lsp::to_proto::completion_item: FunctionTooLong \u2014 rust_analyzer::lsp::to_proto::completion_item runs 156 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 56 over it, 1.56\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/lsp/to_proto.rs"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e108d95dea55d4387efb5d0298a6505489095575507aaba798780ac4637fd77"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceContext.analyze_closure: MethodTooLong \u2014 analyze_closure runs 155 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 55 over it, 1.55\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis.rs"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a1ecaa8552ce03173a9d868072ec4cffa8b56f26327a2bcfb435a647488e6cc"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/defs.rs: FileTooLong \u2014 772 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 272 over it, 1.54\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/defs.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b1459712e55881fed1cfe7f231229e7470b1a0479f82bf059061055e72e371d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ast/node_ext.rs: FileTooLong \u2014 765 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 265 over it, 1.53\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/node_ext.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"707511240e5f36844460f4f1d931924eac7839969c97f828162237874ddd447c"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FindUsages: ClassTooLong \u2014 606 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 20 methods, 2 blocks, lines 441-1376. The bar is 400 significant lines; this is 206 over it, 1.52\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":441}}}],"partialFingerprints":{"codehealthFindingId/v1":"376dfa9fef6bf8adc6f9f8337a27a6d97692d375ddda9e3554810b418d5c728e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ClientCapabilities: TooManyMethods \u2014 45 methods. The bar is 30 methods; this is 15 over it, 1.50\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/lsp/capabilities.rs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"7071f1ee9771bbaac34c096cd4314a25d8e1e5e9ebf1dd255de77f584b8b2a69"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Evaluator.create_memory_map: MethodTooLong \u2014 create_memory_map runs 149 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 49 over it, 1.49\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":2365}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cfeaf985ab19934f196097ee04fb52f979346b82b655e44ac061903f63b0cf7"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: hir_ty::next_solver::consts::valtree::allocation_to_const: FunctionTooLong \u2014 hir_ty::next_solver::consts::valtree::allocation_to_const runs 149 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 49 over it, 1.49\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/consts/valtree.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"baa9d1f495d38a6a8a84c2a9ade81704b032cc50b60b93e71bc9329e856ee1fc"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ide::inlay_hints::lifetime::hints_: FunctionTooLong \u2014 ide::inlay_hints::lifetime::hints_ runs 149 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 49 over it, 1.49\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints/lifetime.rs"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"3713ffa45a95e8797cf7d33260dee0a517879b55f6139674bf78b9c7d81f31da"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ide::syntax_highlighting::highlight::highlight_def: FunctionTooLong \u2014 ide::syntax_highlighting::highlight::highlight_def runs 149 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 49 over it, 1.49\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting/highlight.rs"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"63fa4ce5d633ede0f719994a676ae20914ca6bf7b1018271f4556600bf2bd769"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: closure/analysis.rs: FileTooLong \u2014 738 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 238 over it, 1.48\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f69663eca5ca1ea32e93353a06f4ab123d5d8b95285de1aa62a806662c348a1e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TyLoweringContext: TooManyMethods \u2014 44 methods. The bar is 30 methods; this is 14 over it, 1.47\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"274fe2c0796434c04170a4676e835bf49eee385d7bbb8a181e4bce268d6f92d7"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Resolver: ClassTooLong \u2014 582 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 43 methods, 4 blocks, lines 44-1183. The bar is 400 significant lines; this is 182 over it, 1.46\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/resolver.rs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1ffa26706cd20b6a27621af584cf72e9959c1ed349b0f3bde292edcc3de96ec"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: hir_ty::lower::path::substs_from_args_and_bindings: FunctionTooLong \u2014 hir_ty::lower::path::substs_from_args_and_bindings runs 144 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 44 over it, 1.44\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":1155}}}],"partialFingerprints":{"codehealthFindingId/v1":"4440379022abff5c9afca236a3f17282e322b4a72b949d7392d7f3cd6fe4e199"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Resolver: TooManyMethods \u2014 43 methods. The bar is 30 methods; this is 13 over it, 1.43\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/resolver.rs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ddf75922a1687d2daab244691d24fc95bce48560c11de0f2724cd9ba86866f3"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ExprUseVisitor: TooManyMethods \u2014 43 methods. The bar is 30 methods; this is 13 over it, 1.43\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis/expr_use_visitor.rs"},"region":{"startLine":407}}}],"partialFingerprints":{"codehealthFindingId/v1":"a820134634b3f1e6d51c4a0c15afe2650993cf7445a016a036e11a20b0adcc00"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SourceToDefCtx: TooManyMethods \u2014 43 methods. The bar is 30 methods; this is 13 over it, 1.43\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics/source_to_def.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c4260e680efc32ef3d5355442ba92665a45775d9db3ecf21829ed2164928736"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FamousDefs: TooManyMethods \u2014 43 methods. The bar is 30 methods; this is 13 over it, 1.43\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/famous_defs.rs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b0adddcc9decaee05faacc9f4efbf3715f902468250ac4398b5414df41c1b2d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SymbolCollector.collect_from_module: MethodTooLong \u2014 collect_from_module runs 143 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 43 over it, 1.43\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/symbols.rs"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d704c9b1c28dab6df6f392a50e7a7dd2f4074b6f93c8152c0c8ef853e25a9a0"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CargoWorkspace.new: MethodTooLong \u2014 new runs 143 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 43 over it, 1.43\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/cargo_workspace.rs"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"775f38508c153a033e234eed86e5aa1f2834921ceb57998f5249debb08ff65d4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: imports/import_assets.rs: FileTooLong \u2014 711 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 211 over it, 1.42\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/import_assets.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d5337d9b0999f6f157055eaf794154ab97bcbc245d47a928cffe7d61ee739ec"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ide_assists::handlers::generate_new::generate_new: FunctionTooLong \u2014 ide_assists::handlers::generate_new::generate_new runs 142 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 42 over it, 1.42\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_new.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c8017ac59156fe18d8b64ead75328949a2495d31dd32c7b5c52e9fa330418c8"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceContext.try_find_coercion_lub: MethodTooLong \u2014 try_find_coercion_lub runs 141 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 41 over it, 1.41\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/coerce.rs"},"region":{"startLine":926}}}],"partialFingerprints":{"codehealthFindingId/v1":"8835b8713f940c679ba3bbbf005f717ed42e35555ff83bc0b58664b76db5f64d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/reload.rs: FileTooLong \u2014 704 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 87% of them inside a single declaration: GlobalState (68-979). The bar is 500 significant lines; this is 204 over it, 1.41\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/reload.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ba17f11d8fc77fd2240e5203248c46316934694f51ced960fbccec6a12f8c4b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/navigation_target.rs: FileTooLong \u2014 703 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 203 over it, 1.41\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/navigation_target.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"64841eafffdcc4c7eed98230e3de5483e7025723abfa03481e3bd1ab188f677e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: msg/flat.rs: FileTooLong \u2014 701 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 201 over it, 1.40\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-api/src/legacy_protocol/msg/flat.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"89d806d1a4ad3dbf66bf146c7ec489814db0607d2dc41af9c15b126bb93c8edf"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DefMap: TooManyMethods \u2014 42 methods, declared across 3 files: src/nameres.rs (28), nameres/path_resolution.rs (12), nameres/attr_resolution.rs (2). The bar is 30 methods; this is 12 over it, 1.40\u00D7 the bar. That list is where to read them, not a suggestion to split the file: the members belong to the type wherever they are declared, so moving them between files leaves the count unchanged. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres.rs"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"3afeaec5f79b491f63e1416e64519b0732e2ed79b67d242768db7bc49a78e0e5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/display.rs: FileTooLong \u2014 697 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 197 over it, 1.39\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/display.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a3287873a1d1590af8cb86a618170347a154b934f71ec3af0ab73d2425dc4c9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: builtin/fn_macro.rs: FileTooLong \u2014 690 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), declaring 35 free functions. The bar is 500 significant lines; this is 190 over it, 1.38\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/builtin/fn_macro.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb8e683a31efa4183f15b7a15f5fb99f855b59ef9c98f0bdacf635910cc396ac"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DefCollector.record_resolved_import: MethodTooLong \u2014 record_resolved_import runs 138 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 38 over it, 1.38\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":882}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f71fc55ddb834f8fa83a5d7b4c79fe7e93020e6137be07da12cf2a530d85f69"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TyLoweringContext.lower_dyn_trait: MethodTooLong \u2014 lower_dyn_trait runs 138 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 38 over it, 1.38\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":1011}}}],"partialFingerprints":{"codehealthFindingId/v1":"69c012af12c65e2e7941be851bbb6fee3b689e3d905e445ab1ed21ca6140a2ac"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ide_assists::handlers::generate_delegate_methods::generate_delegate_methods: FunctionTooLong \u2014 ide_assists::handlers::generate_delegate_methods::generate_delegate_methods runs 137 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 37 over it, 1.37\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_delegate_methods.rs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"d89e1cf20d033c159818080d1ec206f473b5f42c9d9ea66570707697ddfa8152"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: GlobalState.process_changes: MethodTooLong \u2014 process_changes runs 137 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 37 over it, 1.37\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/global_state.rs"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8a5ab7209246dfcd1eaaf1728eaba2803ae09efd17def3af75ab5e6fbce5367"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InferenceTable: TooManyMethods \u2014 41 methods, declared across 3 files: infer/unify.rs (38), infer/autoderef.rs (2), src/method_resolution.rs (1). The bar is 30 methods; this is 11 over it, 1.37\u00D7 the bar. That list is where to read them, not a suggestion to split the file: the members belong to the type wherever they are declared, so moving them between files leaves the count unchanged. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/unify.rs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"29c8e97be38732e2d504da94dabda1d579c73617ca81ea78cf1c18d99307913a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/lib.rs: FileTooLong \u2014 676 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 176 over it, 1.35\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax-bridge/src/lib.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"373fad2807e5e2bae7a1ba606cbaacd2fbd7f535466c9ae6bf395ee6f48119be"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ExprCollector.maybe_collect_expr_as_pat: MethodTooLong \u2014 maybe_collect_expr_as_pat runs 135 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 35 over it, 1.35\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":2080}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b26f8aae6bec9cc9df6fee4796bb1e961f32ad5e577d5ed0dc72e2361891d2a"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: rust_analyzer::handlers::notification::run_flycheck: FunctionTooLong \u2014 rust_analyzer::handlers::notification::run_flycheck runs 135 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 35 over it, 1.35\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/notification.rs"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"47847cb99a09cdb3c2f9e3c77bb4a1d314f44862be6eb994d08ec4cfbc5b9755"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: infer/mod.rs: FileTooLong \u2014 674 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 67% of them inside a single declaration: InferCtxt (2 blocks, 231-1276). The bar is 500 significant lines; this is 174 over it, 1.35\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7eaab178475fad55fb12b1afc850af06c8c4255422758a2c6348cb5e92e4b7f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ProjectWorkspace.to_roots: MethodTooLong \u2014 to_roots runs 134 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 34 over it, 1.34\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/workspace.rs"},"region":{"startLine":765}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b3ff3e8a246cbedde0810e248afa7c631c7d9a1f4efff7856b81d1696983787"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: rust_analyzer::lsp::capabilities::server_capabilities: FunctionTooLong \u2014 rust_analyzer::lsp::capabilities::server_capabilities runs 134 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 34 over it, 1.34\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/lsp/capabilities.rs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"1301b3204b5a3c13e07ebfb9f32c7bdec55fbb9598cabd8bb76a5a2455a8b547"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lsp/ext.rs: FileTooLong \u2014 669 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 169 over it, 1.34\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/lsp/ext.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7501bed416d07fe840e4dea2b2236e2af2a01bc1252e2a541f2d1df22e02077"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/context.rs: FileTooLong \u2014 667 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 167 over it, 1.33\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dde49852bd12d69c36fbaeb6c8387a33d476ce0e138c43abfa55c5ce3d65ebde"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: AnyDiagnostic: ClassTooLong \u2014 533 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 9 methods. The bar is 400 significant lines; this is 133 over it, 1.33\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/diagnostics.rs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fc12b25292ea0c2b7bdb9728c9753e90e35d4bf17547a0b2501a1843e26ad75"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/flycheck.rs: FileTooLong \u2014 666 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 166 over it, 1.33\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/flycheck.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"38bd6216ff93a5afa0c576cfc0411570a8a3c26d16c2ec6d34ecec89016da1cf"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PathLoweringContext.substs_from_args_and_bindings: MethodTooLong \u2014 substs_from_args_and_bindings runs 133 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 33 over it, 1.33\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":680}}}],"partialFingerprints":{"codehealthFindingId/v1":"42045a71538a572a44646c9adc7faa7e1597225f6cb7d81d9183e5b56a246be6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: imports/merge_imports.rs: FileTooLong \u2014 660 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 160 over it, 1.32\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/merge_imports.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd0b8f1323de3e35331006de692e6d6571988dafb3ffbc6f63862720e5e19030"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: hir_ty::next_solver::default_types: FunctionTooLong \u2014 hir_ty::next_solver::default_types runs 131 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 31 over it, 1.31\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver.rs"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"01495a560c34169db21ab033ba88aa1c45337b71b742acfdf3eba3e71189d1b2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InferenceResult: TooManyMethods \u2014 39 methods. The bar is 30 methods; this is 9 over it, 1.30\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":754}}}],"partialFingerprints":{"codehealthFindingId/v1":"b34f82fc3c4ef89d01726244a48733f457246027a5e0e219ea36b5b66150bc9f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ProbeContext: TooManyMethods \u2014 39 methods. The bar is 30 methods; this is 9 over it, 1.30\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/method_resolution/probe.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"10540b8b8382d8c8a296de68fb54eb06cc6589c164e0525aca3656a8b318c698"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Evaluator.interpret_mir: MethodTooLong \u2014 interpret_mir runs 129 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 29 over it, 1.29\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":944}}}],"partialFingerprints":{"codehealthFindingId/v1":"211705da5a97627eb461d7c96a3326a4ddea1359d4a8046758a99977d7dcc1d3"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ide_assists::utils::gen_trait_fn_body::gen_partial_eq: FunctionTooLong \u2014 ide_assists::utils::gen_trait_fn_body::gen_partial_eq runs 129 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 29 over it, 1.29\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/utils/gen_trait_fn_body.rs"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3ca4c4b7dddc1b522410987556d7548122430a71e4d761df8b7a4b9e24d98b9"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ProbeContext.consider_probe: MethodTooLong \u2014 consider_probe runs 128 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 28 over it, 1.28\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/method_resolution/probe.rs"},"region":{"startLine":1567}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e5976d7e1f3772f1dda3b8b3a2b9d09415f6b7f0f9ca486147751ee5753970c"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: project_model::workspace::cargo_to_crate_graph: FunctionTooLong \u2014 project_model::workspace::cargo_to_crate_graph runs 128 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 28 over it, 1.28\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/workspace.rs"},"region":{"startLine":1262}}}],"partialFingerprints":{"codehealthFindingId/v1":"d63e408bfbe05a97016045bd7503c550ecba811f8e643aac50e2607a88ff44a9"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: tt::storage::encode: FunctionTooLong \u2014 tt::storage::encode runs 128 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 28 over it, 1.28\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/tt/src/storage.rs"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"420c178b4740a7d860a09941c6906653cd4a899d67677d82ebb9c705c89dbe31"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Evaluator.patch_addresses: MethodTooLong \u2014 patch_addresses runs 127 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 27 over it, 1.27\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":2544}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc1f8dccfd8a67a3923c31b1dd9fe2cab63746b8ac7142b52c703f34e69c9a21"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: infer/closure.rs: FileTooLong \u2014 630 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 95% of them inside a single declaration: InferenceContext (51-1166). The bar is 500 significant lines; this is 130 over it, 1.26\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1142437f2f8c0a06a252cfd7452e3af29b184d92e884711a0d8892e4162ee44"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MacroCallId.expand_speculative: MethodTooLong \u2014 expand_speculative runs 126 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 26 over it, 1.26\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/lib.rs"},"region":{"startLine":788}}}],"partialFingerprints":{"codehealthFindingId/v1":"72deb279144860f0abc618546138e29a1039d52a94de47e80f6ad5c2bc88e9ab"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: syntax_highlighting/highlight.rs: FileTooLong \u2014 627 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 127 over it, 1.25\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting/highlight.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b485814c9861af19dc802e9101fb3d155e46c6baaf439f59dfec022d4adfa1b9"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DiagnosticsCollector.collect_impl: MethodTooLong \u2014 collect_impl runs 125 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 25 over it, 1.25\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/diagnostics.rs"},"region":{"startLine":924}}}],"partialFingerprints":{"codehealthFindingId/v1":"e80da457d7176cbe99dd8aab71041a5c6f2240586d25b1045b4a60d8fd22845e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/item_scope.rs: FileTooLong \u2014 623 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 76% of them inside a single declaration: ItemScope (4 blocks, 125-904). The bar is 500 significant lines; this is 123 over it, 1.25\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_scope.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"acaaa3aa4ca6e39b7b3ddeb49ef237fc8548eb48be57aa7b5992bb73544427ea"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ScriptSource.parse: MethodTooLong \u2014 parse runs 124 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 24 over it, 1.24\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/frontmatter.rs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee96e69460a214aef7e25847ade33d392e09ddfe6a03108455b4ab5fb9dfb225"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/inlay_hints.rs: FileTooLong \u2014 619 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 119 over it, 1.24\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1233a8b7e162854ff272f786b1c121fb975992ff87177a3e1a2fcbe47a404f2c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/lib.rs: FileTooLong \u2014 619 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 119 over it, 1.24\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"lib/smol_str/src/lib.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"290d8fa44b321b534c11cd8bdafc6fdd3511663910ed3c33d1726ed562c486cc"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/mir.rs: FileTooLong \u2014 618 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 118 over it, 1.24\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b71ab442290802d6286d6e94c3d2a385487fecd13c3a2e2b2f793f8a688da839"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/lib.rs: FileTooLong \u2014 615 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 115 over it, 1.23\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/lib.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c4972156f24934dc71a16f61274e7e53edb0264466d5a553d906ead41745afa"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: hir_expand::eager::eager_macro_recur: FunctionTooLong \u2014 hir_expand::eager::eager_macro_recur runs 123 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 23 over it, 1.23\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/eager.rs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cada7a3fe16e098cb93eded85ea236af5d707aa133ec5be009c9dce330e2e7f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Expander.expand: MethodTooLong \u2014 expand runs 123 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 23 over it, 1.23\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/load-cargo/src/lib.rs"},"region":{"startLine":583}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dbf3730827d51acbdc0efd9dc1e7bb804ab21826c88b79d35572e3c9ff377f2"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: tt::storage::decode: FunctionTooLong \u2014 tt::storage::decode runs 123 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 23 over it, 1.23\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/tt/src/storage.rs"},"region":{"startLine":827}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca93fa36bed32c5e49400ac3f3be2e8221922f2043fddb154b99f7bb895d6529"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: expander/matcher.rs: FileTooLong \u2014 605 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 105 over it, 1.21\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/expander/matcher.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"18155d25864be7b61e24dea86e5f43c267cef783a27cd7346bcc86b1c7e40a58"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Ctx.transform_path_: MethodTooLong \u2014 transform_path_ runs 121 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 21 over it, 1.21\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/path_transform.rs"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"714c55103591e160458b5924aec8a34df365a5d8ed4536cd6e7d989ce82fd76b"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: rust_analyzer::handlers::request::run_rustfmt: FunctionTooLong \u2014 rust_analyzer::handlers::request::run_rustfmt runs 121 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 21 over it, 1.21\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/request.rs"},"region":{"startLine":2405}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb2ab38d1c62842e805ce09fc04c7a05a0f69e5ddb816aeeef480405adc1ab15"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/global_state.rs: FileTooLong \u2014 601 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 69% of them inside a single declaration: GlobalState (3 blocks, 86-823). The bar is 500 significant lines; this is 101 over it, 1.20\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/global_state.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc01d3c8d756783452901927ed243807c4136b081c46e95453da71bfa17d8172"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Completions: TooManyMethods \u2014 36 methods. The bar is 30 methods; this is 6 over it, 1.20\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions.rs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9346f92b81f51a3e273753fb1a1f10f8c8acfd7f8d89994d3376b284789148c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/lib.rs: FileTooLong \u2014 600 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 73% of them inside a single declaration: Analysis (2 blocks, 243-977). The bar is 500 significant lines; this is 100 over it, 1.20\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/lib.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2c0b8cef94b628a58033089b028b0fc8cc534033d5f00c135c08d161e843bad"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Evaluator.allocate_valtree_in_heap: MethodTooLong \u2014 allocate_valtree_in_heap runs 119 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 19 over it, 1.19\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":1957}}}],"partialFingerprints":{"codehealthFindingId/v1":"55b94ee615c5801b67eab80abe8d50974863843a1f295aceb5ad2d9f05ce9f12"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ItemScope: ClassTooLong \u2014 474 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 55 methods, 4 blocks, lines 125-904. The bar is 400 significant lines; this is 74 over it, 1.19\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_scope.rs"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b8ebb5f6138a423d123da0fa8e3f758faf03c5fe7fac4b3d25707eca6c49b8e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/input.rs: FileTooLong \u2014 591 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 91 over it, 1.18\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/base-db/src/input.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ae5c5210ec26157c78023a5e6419f3849ab6a050c77b7282abeda726f730ffe"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: project_model::workspace::project_json_to_crate_graph: FunctionTooLong \u2014 project_model::workspace::project_json_to_crate_graph runs 118 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 18 over it, 1.18\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/workspace.rs"},"region":{"startLine":1105}}}],"partialFingerprints":{"codehealthFindingId/v1":"db3929074b87afd2c4d6379eea8e107ab4ecb0f9b9aefcb1aeeb7164ebd747a9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/method_resolution.rs: FileTooLong \u2014 588 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 88 over it, 1.18\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/method_resolution.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"07e9bbbd63ad02b20a426f83cc59fcab24b65d0a207e5edb610c020ab20a149f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: next_solver/predicate.rs: FileTooLong \u2014 587 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 87 over it, 1.17\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/predicate.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"29e0c1d8fbb017901748b0eae58c8f301591df6a073b9b3ec217000de63dce13"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: hir_def::attrs::match_attr_flags: FunctionTooLong \u2014 hir_def::attrs::match_attr_flags runs 117 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 17 over it, 1.17\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/attrs.rs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"b359af5c3468a8f3b3fe7e7e9310e1ba8282cb15cee2a374312f6daa03cdcd54"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceContext.check_call_arguments: MethodTooLong \u2014 check_call_arguments runs 117 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 17 over it, 1.17\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/expr.rs"},"region":{"startLine":1921}}}],"partialFingerprints":{"codehealthFindingId/v1":"5260d6c132e50458754d09d19fcd23045907d8a99ebd44cb66c77ca6f4a8a0da"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FindUsages.search: MethodTooLong \u2014 search runs 117 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 17 over it, 1.17\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":929}}}],"partialFingerprints":{"codehealthFindingId/v1":"39f6b54f2a2a7d48c6faa060908a9518047159eae1c27eb289639e21f68bcc13"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ide::file_structure::structure_node: FunctionTooLong \u2014 ide::file_structure::structure_node runs 117 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 17 over it, 1.17\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/file_structure.rs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"479677ceb632735aea56c0e3205a7ed977e336efd016c49ce2fce2a73db3baed"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Semantics: TooManyMethods \u2014 35 methods. The bar is 30 methods; this is 5 over it, 1.17\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"038852d100de3d449078bbf0eb11011a25945dca5e8349b5aaf1691036ab16d6"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Resolver.resolve_path_in_value_ns_with_prefix_info: MethodTooLong \u2014 resolve_path_in_value_ns_with_prefix_info runs 116 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 16 over it, 1.16\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/resolver.rs"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"b04239ba05369640a116e3efb1af5b620191cf025a043fa1e517e63a3fe81132"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceContext.check_record_expr_fields: MethodTooLong \u2014 check_record_expr_fields runs 116 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 16 over it, 1.16\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/expr.rs"},"region":{"startLine":968}}}],"partialFingerprints":{"codehealthFindingId/v1":"3335f409796cdac83ba26acd7a64739fa2e70b62117e1e06eccdc84c11a21b01"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Evaluator.exec_extern_c: MethodTooLong \u2014 exec_extern_c runs 116 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 16 over it, 1.16\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":397}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdc645254f0aeb3b21ccd1e1c61959cf1ce06e049949fd108276f64b5e9caed5"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ide_assists::handlers::extract_function::extract_function: FunctionTooLong \u2014 ide_assists::handlers::extract_function::extract_function runs 116 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 16 over it, 1.16\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_function.rs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d08a20af8f432b9b5bd92288f68fb9a5934962fa4e4189531fee013ae3ed0da"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/completions.rs: FileTooLong \u2014 575 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 70% of them inside a single declaration: Completions (2 blocks, 57-641). The bar is 500 significant lines; this is 75 over it, 1.15\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"57f5d1337df2a30bc68b9734d8cf65a58c1d91214a997df9b21b06940f160b46"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lower/pattern_matching.rs: FileTooLong \u2014 572 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 96% of them inside a single declaration: MirLowerCtx (56-749). The bar is 500 significant lines; this is 72 over it, 1.14\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower/pattern_matching.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"be1d566fd8280b10ad61365a4a80dfe6d5cdc65bfa20928095ea5917559896fd"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: hir_ty::mir::lower::mir_body_for_closure_query: FunctionTooLong \u2014 hir_ty::mir::lower::mir_body_for_closure_query runs 114 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 14 over it, 1.14\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower.rs"},"region":{"startLine":2105}}}],"partialFingerprints":{"codehealthFindingId/v1":"6be417f98d2a14707019ed767425262d9d03d621d9d630e731bb1026788ca47b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/ast_id.rs: FileTooLong \u2014 569 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 69 over it, 1.14\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/span/src/ast_id.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"06bafb3dfe65743afdc194b2345796622df25be0920ba7df67aa2f6cb7d84585"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: InferCtxt: ClassTooLong \u2014 453 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 111 methods, 2 blocks, lines 231-1276. The bar is 400 significant lines; this is 53 over it, 1.13\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/mod.rs"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"24f175eb60f58516571248f61a15911e1d12e607bb026df86cf6b7c50466a145"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: hir::source_analyzer::resolve_hir_path_: FunctionTooLong \u2014 hir::source_analyzer::resolve_hir_path_ runs 113 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 13 over it, 1.13\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":1872}}}],"partialFingerprints":{"codehealthFindingId/v1":"19f158fd3dded0c354eec20f213f98eda285757c655a5e6b46b967bc2b50758a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: NotifyActor.run: MethodTooLong \u2014 run runs 113 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 13 over it, 1.13\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/vfs-notify/src/lib.rs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"90e43e57ae064b0e58bcaf5c2e268f736aaccceec4beb4e167054f351bb4b1ec"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: AttrFlags: ClassTooLong \u2014 448 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 24 methods. The bar is 400 significant lines; this is 48 over it, 1.12\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/attrs.rs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"249ed9b6877582e56eddbde68d093124aeea4a58c04b8e02aa14dc0fdf2e338e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Printer.print_mod_item: MethodTooLong \u2014 print_mod_item runs 112 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 12 over it, 1.12\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_tree/pretty.rs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8dd169f5e2649fc990f1052653b331578eb6fa1b6b257bac2cfadc83f34ce1a"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: hir_ty::lower::generic_predicates: FunctionTooLong \u2014 hir_ty::lower::generic_predicates runs 112 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 12 over it, 1.12\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":2518}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e83b4980294f015f8a21437431b6913930d0a912dff79c1bbef788d9a5744c3"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ide_assists::handlers::generate_delegate_trait::generate_impl: FunctionTooLong \u2014 ide_assists::handlers::generate_delegate_trait::generate_impl runs 112 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 12 over it, 1.12\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_delegate_trait.rs"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"166c1ee735f8cefc4fd16d58d179aba4a1b91813341ca1cb8a3fcb42efad8c5c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AnalysisStats.run_body_lowering: MethodTooLong \u2014 run_body_lowering runs 112 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 12 over it, 1.12\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":1162}}}],"partialFingerprints":{"codehealthFindingId/v1":"2583abb39fd2536eae125bd3ab9d42e2f6bc4a3b80e7ebcdba5b30ace70b13d9"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: rust_analyzer::lsp::to_proto::code_lens: FunctionTooLong \u2014 rust_analyzer::lsp::to_proto::code_lens runs 112 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 12 over it, 1.12\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/lsp/to_proto.rs"},"region":{"startLine":1758}}}],"partialFingerprints":{"codehealthFindingId/v1":"f31283bffbd083ecd80e8bfd01e1dc34482f74413c15224436f7a24db42bab2b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/rename.rs: FileTooLong \u2014 558 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 58 over it, 1.12\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/rename.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"358a5708339ae97711f794ce8a1463a7986233e864a4b9931d1caf2b20e0c8ac"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MirLowerCtx.lower_expr_as_place_without_adjust: MethodTooLong \u2014 lower_expr_as_place_without_adjust runs 111 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 11 over it, 1.11\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower/as_place.rs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dbe9de29942211986463b3ee416db457d801d661db181a1c93a5e4986647ea5"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ide::syntax_highlighting::highlight::punctuation: FunctionTooLong \u2014 ide::syntax_highlighting::highlight::punctuation runs 111 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 11 over it, 1.11\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting/highlight.rs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2798d74b30a8d58fadd1d5420be02c6ddf91e668442fc669a6a12c5a932dead"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AnalysisStats.run_ide_things: MethodTooLong \u2014 run_ide_things runs 111 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 11 over it, 1.11\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":1329}}}],"partialFingerprints":{"codehealthFindingId/v1":"216ee8940cf80852254688b9d71ff135fc91972220629db4cafb5189404b1635"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: syntax_bridge::prettify_macro_expansion::prettify_macro_expansion: FunctionTooLong \u2014 syntax_bridge::prettify_macro_expansion::prettify_macro_expansion runs 111 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 11 over it, 1.11\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax-bridge/src/prettify_macro_expansion.rs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e1f30d871de6495a00a6a2d3502284d5c929e37926f59439a53f392aa2db0a9"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Analysis: ClassTooLong \u2014 440 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 79 methods, 2 blocks, lines 243-977. The bar is 400 significant lines; this is 40 over it, 1.10\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/lib.rs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"68d2353cb9c0eeee15bf2ed92eb8fc23e7b91f00bb6eb68c54015cf68558f9d3"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ExprUseVisitor.walk_expr: MethodTooLong \u2014 walk_expr runs 110 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 10 over it, 1.10\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis/expr_use_visitor.rs"},"region":{"startLine":502}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc59906e5a39666d8721c9aa94449f1a3c6e49dc2825d213f105d1c47ec68f3c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ExprUseVisitor.cat_pattern: MethodTooLong \u2014 cat_pattern runs 110 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 10 over it, 1.10\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis/expr_use_visitor.rs"},"region":{"startLine":1496}}}],"partialFingerprints":{"codehealthFindingId/v1":"e784c618b6041cc30b5b78d29db50ed0de030cb450cb9ef329712263f43511d9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/rename.rs: FileTooLong \u2014 546 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 46 over it, 1.09\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/rename.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d977b6ae4ffbf8588eee7b49e8624513ac16fde24337a2ed735382df89887246"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/hover.rs: FileTooLong \u2014 546 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 46 over it, 1.09\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f8434c03d525f2e7f27c320640922f16bb79d083a6a66a6d2b434eb355ad664"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ide_db::imports::import_assets::trait_applicable_items: FunctionTooLong \u2014 ide_db::imports::import_assets::trait_applicable_items runs 109 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 9 over it, 1.09\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/import_assets.rs"},"region":{"startLine":775}}}],"partialFingerprints":{"codehealthFindingId/v1":"68ac65d16fe2e76b62f303acd3c0b4cacd16d503961e4a4a318cb984072e7479"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: proc_macro_srv_cli::main_loop::run_old: FunctionTooLong \u2014 proc_macro_srv_cli::main_loop::run_old runs 109 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 9 over it, 1.09\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-srv-cli/src/main_loop.rs"},"region":{"startLine":473}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcba3cfbdf13b8e0c15184fbea8b06cb3bd884a27abea292d892f39553ae1e09"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/cargo_workspace.rs: FileTooLong \u2014 544 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 44 over it, 1.09\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/cargo_workspace.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"15848570011eb4bf6e009319dadaf53ffde185dc38fb92b30e13c2cfdbb855f9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/token_stream.rs: FileTooLong \u2014 543 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 61% of them inside a single declaration: TokenStream (6 blocks, 20-659). The bar is 500 significant lines; this is 43 over it, 1.09\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-srv/src/token_stream.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"caa467c90e54130ce3c8b605e3c9e664aa3e3e2fc1d5625840995ef20e2cf732"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DiagnosticsCollector: ClassTooLong \u2014 434 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 23 methods, 2 blocks, lines 719-1414. The bar is 400 significant lines; this is 34 over it, 1.09\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/diagnostics.rs"},"region":{"startLine":719}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c34eb177fc88b4949b97428e20aae78d10d2d9bce03e23dc1214a834a228a85"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/nameres.rs: FileTooLong \u2014 541 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 41 over it, 1.08\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"190dd89e8553d93736125887126f509f4911830b9b6a609f4b883e47c22b64c4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/highlight_related.rs: FileTooLong \u2014 540 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 40 over it, 1.08\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/highlight_related.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"03a47620a632e8092aedc9a5c9b713ba035e7e81be66b0442e4052abf294fe2e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DbInterner.for_each_relevant_impl: MethodTooLong \u2014 for_each_relevant_impl runs 108 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 8 over it, 1.08\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/interner.rs"},"region":{"startLine":1632}}}],"partialFingerprints":{"codehealthFindingId/v1":"a72390c343e913b19daf2419502a774b821fc7786a950bc914f165b92aae9689"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ide::syntax_highlighting::highlight::highlight_name_ref: FunctionTooLong \u2014 ide::syntax_highlighting::highlight::highlight_name_ref runs 108 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 8 over it, 1.08\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting/highlight.rs"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"191048f0a8418f874e0c3cd5e56037685f0c05058526c0d3a65ce93d695a7acc"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/render.rs: FileTooLong \u2014 538 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 38 over it, 1.08\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/render.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef023651884227ddb0f1d180beb8cd8a38b2c539d20fc52144b8a9ae176fad6f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: expressions/atom.rs: FileTooLong \u2014 538 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 38 over it, 1.08\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/grammar/expressions/atom.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f804804ee78d8dd22755dc1bce9c28a78df550beae98f247f177774cbc56ed7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/hir.rs: FileTooLong \u2014 534 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 34 over it, 1.07\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/hir.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c122aa80fb953fe7082fa828cca3e9685de048c70ee0a5a6fdac5e4bd0566c21"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: next_solver/generic_arg.rs: FileTooLong \u2014 533 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 33 over it, 1.07\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/generic_arg.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cd5610009e4cb9d997b63e67641c3c77813261d916dc4be2821923039132cc9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: handlers/extract_module.rs: FileTooLong \u2014 532 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 32 over it, 1.06\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_module.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"96f772f1e131a7248cd8bae8d6846b40f58816d43572d157d7632eb06ffce97e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/lang_item.rs: FileTooLong \u2014 529 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 29 over it, 1.06\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/lang_item.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0ca96fd585632c5b512c3dbe4c837d4c38f2e0c69ca895b8336284f75b9690c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/signature_help.rs: FileTooLong \u2014 529 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 29 over it, 1.06\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/signature_help.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6026499532a775aad5162c168dccf4e7e7aff15531c266d0e390ac4ecf994d5d"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DeclValidator: ClassTooLong \u2014 421 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 21 methods, 2 blocks, lines 125-776. The bar is 400 significant lines; this is 21 over it, 1.05\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/decl_check.rs"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"08c6f547b1fb8e09e20c7d1c7a12ea49aad0dbcc5d445496e6db182de20db48f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: hir_expand::builtin::derive_macro::parse_adt_from_syntax: FunctionTooLong \u2014 hir_expand::builtin::derive_macro::parse_adt_from_syntax runs 105 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 5 over it, 1.05\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/builtin/derive_macro.rs"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"48dbcfd74a5cbb3ddec983330932afbc19a264e82d47865fbd7907ab598af9e2"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: hir_ty::lower::resolve_type_param_assoc_type_shorthand: FunctionTooLong \u2014 hir_ty::lower::resolve_type_param_assoc_type_shorthand runs 105 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 5 over it, 1.05\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":2099}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e59d65c32964df085cc7ae061a8fa09c0976bccbdde7f869d5ba24682eb5b60"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MirEvalError.pretty_print: MethodTooLong \u2014 pretty_print runs 105 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 5 over it, 1.05\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"783817b3586da6eb6a9d01ed66e32cf43e204ff449c4f854bd4cb08ef59df975"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceContext.resolve_all: MethodTooLong \u2014 resolve_all runs 104 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 4 over it, 1.04\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":1618}}}],"partialFingerprints":{"codehealthFindingId/v1":"69769a4ee4e9c23cb4ba4fdf70fb91bc4f463ac7ec02d3d912e44e27475b850a"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ide_completion::context::analysis::analyze: FunctionTooLong \u2014 ide_completion::context::analysis::analyze runs 104 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 4 over it, 1.04\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context/analysis.rs"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cedbbaaf4eab7f7cfe077994e7861888d45a9869576ba5e3d8ea5a99e962a3b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: GlobalState.current_status: MethodTooLong \u2014 current_status runs 104 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 4 over it, 1.04\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/reload.rs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"07986acd5367a138684576a9d7c52700cc040dd8bd8a0c46b1735bd8640e99a2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Ctx: TooManyMethods \u2014 31 methods, declared across 2 files: item_tree/lower.rs (30), item_tree/attrs.rs (1). The bar is 30 methods; this is 1 over it, 1.03\u00D7 the bar. That list is where to read them, not a suggestion to split the file: the members belong to the type wherever they are declared, so moving them between files leaves the count unchanged. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_tree/lower.rs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"df8dcd67742ab3a3bff8b8fa1589a51d2ee6bf5355d3424b5be6fc45926f80f0"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: GlobalState: ClassTooLong \u2014 412 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 51 methods, 3 blocks, lines 86-823. The bar is 400 significant lines; this is 12 over it, 1.03\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/global_state.rs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"12ddf35af9ace67a6cf87f4b27929ddb7b10b1226641e70bf0d2bf02f3328c8e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ExpressionStoreBuilder.finish: MethodTooLong \u2014 finish runs 103 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 3 over it, 1.03\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store.rs"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"9aa8bb46cd50211a7649a9799625bcb0eaa7ab171eaf312a7a247809e8bc8409"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ProjectFolders.new: MethodTooLong \u2014 new runs 103 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 3 over it, 1.03\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/load-cargo/src/lib.rs"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"11a16adbb55c4c349dd24cc2b0fe1c9fe20c4b8077e179ff692bb3288aa6c2b4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/matching.rs: FileTooLong \u2014 511 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 72% of them inside a single declaration: Matcher (2 blocks, 100-649). The bar is 500 significant lines; this is 11 over it, 1.02\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-ssr/src/matching.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"522113873c7f6468c08b18a957ae391c6205c12b914438d84314a36dc4861da5"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CrateGraphBuilder.set_in_db: MethodTooLong \u2014 set_in_db runs 102 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 2 over it, 1.02\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/base-db/src/input.rs"},"region":{"startLine":597}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f0e1fe7a62e0437fd8015d1fe372c3a8b9a3e842c360e1d6b5aa45e0bb71c82"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ExprCollector.lower_type_ref: MethodTooLong \u2014 lower_type_ref runs 102 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 2 over it, 1.02\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":746}}}],"partialFingerprints":{"codehealthFindingId/v1":"1653f84ea9cb98a0514f870e1b387d2c0a8e75f05355c0d41808342d47838313"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ide_assists::utils::gen_trait_fn_body::gen_debug_impl: FunctionTooLong \u2014 ide_assists::utils::gen_trait_fn_body::gen_debug_impl runs 102 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 2 over it, 1.02\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/utils/gen_trait_fn_body.rs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"71ec57cecf19b394d8fb82e1ad7a1e564d2bb7b6ede2d5726cdc546ad1c289c4"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ide::signature_help::signature_help_for_call: FunctionTooLong \u2014 ide::signature_help::signature_help_for_call runs 102 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 2 over it, 1.02\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/signature_help.rs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e6e6c7b901672823423300da8ec4242737d26d1df7825512b63a154ef2ad464"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/runnables.rs: FileTooLong \u2014 508 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 8 over it, 1.02\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/runnables.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"833eb9df3f97ce496b36d340854330f06b3511ca7ec0a1d8691b2bf92a46ae1e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: syntax_editor/edit_algo.rs: FileTooLong \u2014 508 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 8 over it, 1.02\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/syntax_editor/edit_algo.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f5ccc8a5533e8b596e4a7f2e6081265a7b8f18b1d50e22acca3213d1496d8d1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: diagnostics/decl_check.rs: FileTooLong \u2014 507 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 83% of them inside a single declaration: DeclValidator (2 blocks, 125-776). The bar is 500 significant lines; this is 7 over it, 1.01\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/decl_check.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"78ea3944cc44e21ab72214591ab22a574a05bc0518500afb345415f159153211"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: semantics/source_to_def.rs: FileTooLong \u2014 506 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 78% of them inside a single declaration: SourceToDefCtx (2 blocks, 188-722). The bar is 500 significant lines; this is 6 over it, 1.01\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics/source_to_def.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"144206dac0185461efd4343b02344cd45ce204371fa12a8bb71f367bc2eccd36"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: handlers/generate_delegate_trait.rs: FileTooLong \u2014 506 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 6 over it, 1.01\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_delegate_trait.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b2023a0184be24c7427068d5a18f545e51f7e2f6c9c83afc1a4bfb018274a8b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Printer.print_pat: MethodTooLong \u2014 print_pat runs 101 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 1 over it, 1.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/pretty.rs"},"region":{"startLine":896}}}],"partialFingerprints":{"codehealthFindingId/v1":"0551ee0b7e2a794a6520d1b10d9ffb2aaa24bcc19debb4cc0a7b81e178c1891e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: hir_ty::display::render_const_scalar_from_valtree_inner: FunctionTooLong \u2014 hir_ty::display::render_const_scalar_from_valtree_inner runs 101 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 1 over it, 1.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":1095}}}],"partialFingerprints":{"codehealthFindingId/v1":"8aad02c1dc3d60aaba8cdaf8ebc94b90d8f0a35cf0af4b7f7324ea8b20419e00"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: hir_ty::display::write_bounds_like_dyn_trait: FunctionTooLong \u2014 hir_ty::display::write_bounds_like_dyn_trait runs 101 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 1 over it, 1.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":2100}}}],"partialFingerprints":{"codehealthFindingId/v1":"7720f5842a1dc081a178f45157a36837e8c3f73656b994086de393b678e74f97"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceContext.compute_min_captures: MethodTooLong \u2014 compute_min_captures runs 101 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 1 over it, 1.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis.rs"},"region":{"startLine":724}}}],"partialFingerprints":{"codehealthFindingId/v1":"43fe016f2ffaf2bfd031190f6fa9409b1a0d07287f2468052f8b3b520e81d314"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: hir_ty::infer::coerce::coerce: FunctionTooLong \u2014 hir_ty::infer::coerce::coerce runs 101 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 1 over it, 1.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/coerce.rs"},"region":{"startLine":1457}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac104bcf90ad1963cd4a4df326be8d65b03cc9e40c65fe880b8590b5d8b0228a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceContext.infer_mut_expr_without_adjust: MethodTooLong \u2014 infer_mut_expr_without_adjust runs 101 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 1 over it, 1.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/mutability.rs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b33bfe8a9a6f93a3a80e78f116e4ebcdb015b9ac2c28316422e1a0bd9bcea96"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceContext.infer_pat_inner: MethodTooLong \u2014 infer_pat_inner runs 101 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 1 over it, 1.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/pat.rs"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"e601d3e64d1f7101034c14e3ef5f7f5755fd3d7d2296fe1ab0fe01d7d8f0f645"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: ide_assists::handlers::add_turbo_fish::add_turbo_fish: FunctionTooLong \u2014 ide_assists::handlers::add_turbo_fish::add_turbo_fish runs 101 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 1 over it, 1.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/add_turbo_fish.rs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"283077fe9bba1d3f7f711495d7671c1dd2fab6d3f0097d6e6948dd2b41468421"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: attrs/docs.rs: FileTooLong \u2014 504 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 4 over it, 1.01\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/attrs/docs.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8c5344ae6d598c5124cb230a58dbfaf3fdb943eb2909f3eb71acf5b6049c75f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/doc_links.rs: FileTooLong \u2014 504 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 4 over it, 1.01\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/doc_links.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fc00316a65ecfa4616fcf78e420534f3e225633a0278181d27ddcce809ce19c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/lib.rs: FileTooLong \u2014 504 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 4 over it, 1.01\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/load-cargo/src/lib.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"535d579d3d18f87d8c308db0435748644808a4a8bb6fa651f98533fc6951b1af"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Completions: ClassTooLong \u2014 403 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 36 methods, 2 blocks, lines 57-641. The bar is 400 significant lines; this is 3 over it, 1.01\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions.rs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"f289b91e617e5d10f55484a70069aba60b12719c4bdd3cff092a16d9e3312479"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (6 members, 7 shared lines): crates/syntax/src/ast/syntax_factory/constructors.rs:1568-1597 | crates/syntax/src/ast/syntax_factory/constructors.rs:1724-1743 | crates/syntax/src/ast/syntax_factory/constructors.rs:1767-1785 | crates/syntax/src/ast/syntax_factory/constructors.rs:1795-1839 | crates/syntax/src/ast/syntax_factory/constructors.rs:1865-1902 | crates/syntax/src/ast/syntax_factory/constructors.rs:2198-2229 \u2014 These 6 members are variants of one another: a block of 7 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 6 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 6 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":1568}}}],"partialFingerprints":{"codehealthFindingId/v1":"f58251cb3a08e0c789b04343665ab0db24793ddc09f7c8ce4692d80bc874f051"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (5 members, 8 shared lines): crates/syntax/src/ast/syntax_factory/constructors.rs:459-470 | crates/syntax/src/ast/syntax_factory/constructors.rs:863-874 | crates/syntax/src/ast/syntax_factory/constructors.rs:1083-1094 | crates/syntax/src/ast/syntax_factory/constructors.rs:1139-1150 | crates/syntax/src/ast/syntax_factory/constructors.rs:1599-1610 \u2014 These 5 members are variants of one another: a block of 8 lines reported below appears in every one of them, and the pairwise near-duplicate rows they would otherwise produce are collapsed into this row. Read them as one construct written 5 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 5 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9b527e3100fe646d3b79a0de443ea5824165d074a799ead8b7b520aa272e9cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (29 shared lines): crates/syntax/src/ast/syntax_factory/constructors.rs:342-386 | crates/syntax/src/ast/syntax_factory/constructors.rs:2152-2189 \u2014 These two members are variants of one another: 29 of their lines are already reported as duplicated blocks below, spread through both bodies rather than gathered into one. Read them as a single construct written twice. The repair is at the members\u0027 grain \u2014 factor the shared pipeline into one implementation the two call with their differences as parameters or as an injected step, or, where the difference is systematic (sync against async, one transport against another), generate one from the other. Extracting the individual blocks below is not the same fix: it leaves the two bodies in place and the next edit still has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"599e6383ab2a1defa3023ddc87e59c90273c0300d41c51a03b265886fd2297f8"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (15 shared lines): crates/hir-ty/src/consteval.rs:157-208 | crates/hir-ty/src/next_solver/ty.rs:683-712 \u2014 These two members are variants of one another: 15 of their lines are already reported as duplicated blocks below, spread through both bodies rather than gathered into one. Read them as a single construct written twice. The repair is at the members\u0027 grain \u2014 factor the shared pipeline into one implementation the two call with their differences as parameters or as an injected step, or, where the difference is systematic (sync against async, one transport against another), generate one from the other. Extracting the individual blocks below is not the same fix: it leaves the two bodies in place and the next edit still has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/consteval.rs"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"55216ba8b5491da614cb026cafafbf7788433213df15caedce43b10461fc7cf4"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (29 corresponding lines): crates/proc-macro-srv/src/token_stream.rs:689-723 | crates/tt/src/lib.rs:437-486 \u2014 These two members are one piece of code written twice and then edited apart: 29 consecutive lines correspond almost exactly, broken only by small local edits. Most of that correspondence is NOT reported as duplicated blocks below \u2014 the edits cut it into fragments and only the largest of them clear the block floor, so the rows below understate it. The repair is at the members\u0027 grain \u2014 factor the shared implementation into one the two call with their differences as parameters or as an injected step, or, where the difference is systematic (an extra return value, one transport against another), generate one from the other. Left alone, the next edit has to be made twice and the two will drift further apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-srv/src/token_stream.rs"},"region":{"startLine":689}}}],"partialFingerprints":{"codehealthFindingId/v1":"bba912fdd01345e195defdd03987c201b8f9bc22c82e92fb7073f532612ad2ce"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (11 corresponding lines): crates/syntax/src/ast/syntax_factory/constructors.rs:1314-1325 | crates/syntax/src/ast/syntax_factory/constructors.rs:1332-1344 \u2014 These two members are one piece of code written twice and then edited apart: 11 consecutive lines correspond almost exactly, broken only by small local edits. Most of that correspondence is NOT reported as duplicated blocks below \u2014 the edits cut it into fragments and only the largest of them clear the block floor, so the rows below understate it. The repair is at the members\u0027 grain \u2014 factor the shared implementation into one the two call with their differences as parameters or as an injected step, or, where the difference is systematic (an extra return value, one transport against another), generate one from the other. Left alone, the next edit has to be made twice and the two will drift further apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":1314}}}],"partialFingerprints":{"codehealthFindingId/v1":"87f66164818d39e776502b65cc31cc3f6f256f04654144aa24aa4d7768d1bc0d"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (22 members, 50\u002B identical tokens): crates/syntax/src/ast/syntax_factory/constructors.rs:54-64 | crates/syntax/src/ast/syntax_factory/constructors.rs:195-205 | crates/syntax/src/ast/syntax_factory/constructors.rs:207-217 | crates/syntax/src/ast/syntax_factory/constructors.rs:472-482 | crates/syntax/src/ast/syntax_factory/constructors.rs:500-510 | crates/syntax/src/ast/syntax_factory/constructors.rs:693-703 | crates/syntax/src/ast/syntax_factory/constructors.rs:746-756 | crates/syntax/src/ast/syntax_factory/constructors.rs:758-768 | crates/syntax/src/ast/syntax_factory/constructors.rs:876-886 | crates/syntax/src/ast/syntax_factory/constructors.rs:933-943 | crates/syntax/src/ast/syntax_factory/constructors.rs:949-959 | crates/syntax/src/ast/syntax_factory/constructors.rs:978-988 | crates/syntax/src/ast/syntax_factory/constructors.rs:1058-1068 | crates/syntax/src/ast/syntax_factory/constructors.rs:1127-1137 | crates/syntax/src/ast/syntax_factory/constructors.rs:1359-1369 | crates/syntax/src/ast/syntax_factory/constructors.rs:1423-1433 | crates/syntax/src/ast/syntax_factory/constructors.rs:1506-1516 | crates/syntax/src/ast/syntax_factory/constructors.rs:1518-1528 | crates/syntax/src/ast/syntax_factory/constructors.rs:2021-2031 | crates/syntax/src/ast/syntax_factory/constructors.rs:2033-2043 | crates/syntax/src/ast/syntax_factory/constructors.rs:2231-2240 | crates/syntax/src/ast/syntax_factory/constructors.rs:2280-2290 \u2014 These 22 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 22 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 22 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"792b2e02b71c12ea48b4110f462f499e898a7ae258a4b63c9e10921c02bcf2a7"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): crates/ide/src/highlight_related.rs:311-388 | crates/ide/src/highlight_related.rs:394-459 | crates/ide/src/highlight_related.rs:494-584 | crates/ide/src/highlight_related.rs:589-660 | crates/ide/src/highlight_related.rs:790-821 \u2014 These 5 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 5 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 5 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/highlight_related.rs"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fde43a4cb17895caa2a1c14f95eb24b0b9d1d962eca7458baba057c709ba8df"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): crates/syntax/src/syntax_editor/edits.rs:36-44 | crates/syntax/src/syntax_editor/edits.rs:58-66 | crates/syntax/src/syntax_editor/edits.rs:70-78 | crates/syntax/src/syntax_editor/edits.rs:82-96 | crates/syntax/src/syntax_editor/edits.rs:100-108 \u2014 These 5 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 5 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 5 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/syntax_editor/edits.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e18e5c4a96e1c453bf72f9322d5a8f452617d50f73f5d9fa9083b708567ad26"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): crates/hir-ty/src/diagnostics/expr.rs:624-660 | crates/hir-ty/src/diagnostics/expr.rs:667-697 | crates/hir/src/source_analyzer.rs:2178-2203 | crates/hir/src/source_analyzer.rs:2210-2235 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/expr.rs"},"region":{"startLine":624}}}],"partialFingerprints":{"codehealthFindingId/v1":"715d88d315688fb8f54b85f6197330a79819d7f2a2634708f2519221bed14c22"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): crates/ide/src/hover/render.rs:66-153 | crates/ide/src/hover/render.rs:161-217 | crates/ide/src/hover/render.rs:273-306 | crates/ide/src/hover/render.rs:977-1028 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover/render.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c111b0d8b067dae0d67eba491af5bc854c86af5516924edb912b8b3b4c16880"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): crates/ide-assists/src/handlers/generate_default_from_new.rs:50-95 | crates/ide-assists/src/handlers/generate_enum_is_method.rs:46-100 | crates/ide-assists/src/handlers/generate_enum_projection_method.rs:123-179 | crates/ide-assists/src/handlers/generate_single_field_struct_from.rs:47-155 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_default_from_new.rs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a463c406c5d6cbdd8f472b28c46b28a9d75232ef2b1191c956cbe8dcc1bc206"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): crates/rust-analyzer/src/cli/analysis_stats.rs:1498-1512 | crates/rust-analyzer/src/cli/analysis_stats.rs:1514-1528 | crates/rust-analyzer/src/cli/analysis_stats.rs:1535-1550 | crates/rust-analyzer/src/cli/analysis_stats.rs:1556-1571 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":1498}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5bbd5f8319f909078206fdc2571a278013d521b3e1cd6e7c5e3101e0902ded1"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): crates/syntax/src/ast/syntax_factory/constructors.rs:601-611 | crates/syntax/src/ast/syntax_factory/constructors.rs:1115-1125 | crates/syntax/src/ast/syntax_factory/constructors.rs:1184-1196 | crates/syntax/src/ast/syntax_factory/constructors.rs:1217-1229 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":601}}}],"partialFingerprints":{"codehealthFindingId/v1":"e30ac2f7be23af55d215ae2a812ff58669977ead22bc7e113f0b777e185e7883"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (42 lines \u00D7 2): crates/hir-def/src/visibility.rs:173-214 | crates/hir-def/src/visibility.rs:239-280 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/visibility.rs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"4384006fecb6ae4b2794232579b7dd6a464188cd16c42728aff46a0d5936c4cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 2): crates/hir/src/term_search/expr.rs:187-219 | crates/hir/src/term_search/expr.rs:229-261 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/term_search/expr.rs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb160e2d6eba7a2ffbebeba2f5a40d24c84df4e343adfad76c6b301f9673d645"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30\u201333 lines \u00D7 2): lib/line-index/src/lib.rs:317-349 | lib/line-index/src/lib.rs:419-448 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"lib/line-index/src/lib.rs"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdcce903ac03a08e972be2a899fc134ef8aa95cd6a41b2015adc629c556aa885"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (31 lines \u00D7 2): crates/hir-ty/src/next_solver/interner.rs:1521-1551 | crates/hir-ty/src/next_solver/interner.rs:1583-1613 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/interner.rs"},"region":{"startLine":1521}}}],"partialFingerprints":{"codehealthFindingId/v1":"df2e2a4c9982925bef787bb1c853374df47dfe87ec6db784ab357e55e6e91016"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 2): crates/ide-assists/src/handlers/convert_for_to_while_let.rs:120-145 | crates/ide-assists/src/handlers/convert_iter_for_each_to_for.rs:162-187 \u2014 before extracting anything, compare \u0060crates/ide-assists/src/handlers/convert_for_to_while_let.rs\u0060 and \u0060crates/ide-assists/src/handlers/convert_iter_for_each_to_for.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 47 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_for_to_while_let.rs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"6602daf3621dc70b38651fe83918a6b5b81b2b04576561fa366e25da1b7688ce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 2): crates/ide-diagnostics/src/handlers/field_shorthand.rs:33-58 | crates/ide-diagnostics/src/handlers/field_shorthand.rs:79-104 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/field_shorthand.rs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a6a3ffbf32199d22b27e2cadc95c21514c6559b8698b3ae21cf80315c47da05"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): crates/hir-ty/src/mir/eval/shim.rs:592-615 | crates/hir-ty/src/mir/eval/shim.rs:664-687 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":592}}}],"partialFingerprints":{"codehealthFindingId/v1":"746038245ca8ea36463c93a837ddedbc08d66dc9aade3c7c6b6a2fb5f13e4c77"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201324 lines \u00D7 2): crates/ide-completion/src/completions/expr.rs:120-140 | crates/ide-completion/src/completions/expr.rs:189-212 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/expr.rs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"80b010b3eb3fcbcf77e40dbe1c307c5159b94f4b6425b755e75662a15e802382"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): crates/rust-analyzer/src/cli/analysis_stats.rs:932-955 | crates/rust-analyzer/src/cli/analysis_stats.rs:1037-1060 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":932}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0a534520d549d44bb1849234310af9b15d42fe692c48fdd644bc9f95b199f0f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): crates/proc-macro-api/src/legacy_protocol/msg/flat.rs:213-235 | crates/proc-macro-api/src/legacy_protocol/msg/flat.rs:255-277 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-api/src/legacy_protocol/msg/flat.rs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2e6393f9abb2283930fe4867472be8aa2e48b7b7a9f4a7c050905375594261b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201323 lines \u00D7 2): crates/syntax/src/ast/syntax_factory/constructors.rs:999-1021 | crates/syntax/src/ast/syntax_factory/constructors.rs:1032-1052 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":999}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ceecd1505e5363524393d15067df7d939f9a7e4bb9b0ea6a56e2d3be487391a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): crates/tt/src/storage.rs:877-899 | crates/tt/src/storage.rs:901-923 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/tt/src/storage.rs"},"region":{"startLine":877}}}],"partialFingerprints":{"codehealthFindingId/v1":"69efb62368193272c03bcacec806566b1cb9dfaa692cc50f25ae0662a7637f2a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 3): crates/hir-ty/src/diagnostics/decl_check.rs:327-348 | crates/hir-ty/src/diagnostics/decl_check.rs:417-438 | crates/hir-ty/src/diagnostics/decl_check.rs:578-599 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/decl_check.rs"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"b154b1190be2fa1bd238f976ace97d385e2f11772d24011614a7d7945c2b2bcd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): crates/rust-analyzer/src/cli/analysis_stats.rs:1197-1218 | crates/rust-analyzer/src/cli/analysis_stats.rs:1276-1297 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":1197}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee4df72d7da14e04ba66b9a54ee2da0aa87748ea48ea9b4239c3c9c22af7fcb5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): crates/ide-completion/src/context/analysis.rs:1567-1587 | crates/ide-completion/src/context/analysis.rs:1596-1616 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context/analysis.rs"},"region":{"startLine":1567}}}],"partialFingerprints":{"codehealthFindingId/v1":"38ae8d01ef7df34281e78e30d1ad1a36c01f6d007d1b4e58b3c7f7cdfb6dca8c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): crates/proc-macro-srv/src/token_stream.rs:697-717 | crates/tt/src/lib.rs:456-476 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-srv/src/token_stream.rs"},"region":{"startLine":697}}}],"partialFingerprints":{"codehealthFindingId/v1":"c41dd97dee15daa205c2f6ed86eb84cbf2ff1d14af29b7c76d36c6ec2b115817"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): crates/hir-def/src/resolver.rs:823-842 | crates/hir-def/src/resolver.rs:873-892 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/resolver.rs"},"region":{"startLine":823}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae001e1cf5d28612ec8ee90765f37a2788a81c8cf9b58055b8ea717eb4457a3e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5\u201320 lines \u00D7 3): crates/hir-ty/src/mir/eval.rs:2471-2490 | crates/hir-ty/src/mir/eval.rs:2502-2519 | crates/hir-ty/src/mir/eval.rs:3153-3157 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":2471}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed89e71e456b32a97f78e93a9136ab2d3d61a443ee741e96ad90266175db1c8c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201320 lines \u00D7 2): crates/ide-completion/src/completions/expr.rs:203-222 | crates/ide-completion/src/completions/type.rs:115-130 \u2014 before extracting anything, compare \u0060crates/ide-completion/src/completions/expr.rs\u0060 and \u0060crates/ide-completion/src/completions/type.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 46 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/expr.rs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f7cfe801c8253937be9b1f96563d2262901d0c97f5b2b6f53fa39d948aef8bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): crates/rust-analyzer/src/cli/analysis_stats.rs:986-1005 | crates/rust-analyzer/src/cli/analysis_stats.rs:1090-1109 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":986}}}],"partialFingerprints":{"codehealthFindingId/v1":"067bc6b13a9ff2d4a4aa7e0f550daa7ac4d69c1fb3e28b975831c3b343eb4ee5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 3): crates/hir-ty/src/diagnostics/decl_check.rs:357-375 | crates/hir-ty/src/diagnostics/decl_check.rs:445-463 | crates/hir-ty/src/diagnostics/decl_check.rs:608-626 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/decl_check.rs"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"db35c992981e73ba4c112b9f0132579f44c882145282790a8a117b136742342e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): crates/intern/src/intern.rs:51-69 | crates/intern/src/intern.rs:78-96 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/intern/src/intern.rs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"090c1fc6e25eab2b9b8da61dd6fefd63c898057b8a073a5039f8d1f6f9bc8ddb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): crates/proc-macro-srv-cli/src/version.rs:40-58 | crates/rust-analyzer/src/version.rs:39-57 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-srv-cli/src/version.rs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"c348bb39fbb9278b6fc16bd120556c32ef8365ac5334a26985ceb16d9ad2851f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201318 lines \u00D7 2): crates/ide-completion/src/completions/expr.rs:131-148 | crates/ide-completion/src/completions/type.rs:72-87 \u2014 before extracting anything, compare \u0060crates/ide-completion/src/completions/expr.rs\u0060 and \u0060crates/ide-completion/src/completions/type.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 46 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/expr.rs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e9fc88f06382629388509762d98304ce92c2c1b56239671106968cd30f3f309"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201318 lines \u00D7 2): crates/ide-diagnostics/src/handlers/unlinked_file.rs:130-147 | crates/ide-diagnostics/src/handlers/unlinked_file.rs:190-206 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/unlinked_file.rs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"79b1d0e7755aca75c8b2b8828d34fb46688aac94a8cf84c55431ce74691a8bce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 3): crates/proc-macro-srv/src/token_stream.rs:115-131 | crates/proc-macro-srv/src/token_stream.rs:143-159 | crates/proc-macro-srv/src/token_stream.rs:171-187 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-srv/src/token_stream.rs"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"2aa58466fc6edff37f67ca273dfda9e78e6f0ae7f6ea14a859b4a632217e9ca7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): crates/hir-ty/src/infer/expr.rs:76-92 | crates/hir-ty/src/infer/expr.rs:293-309 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/expr.rs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d27dae1477f10a9552e2d340ef058343479c4deae5ef7916889744af86e84de"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): crates/ide/src/syntax_highlighting/highlight.rs:540-556 | crates/ide/src/syntax_highlighting/highlight.rs:563-579 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting/highlight.rs"},"region":{"startLine":540}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6da95347c1b58d6e6e71e7e77384043a1a19a594d16d7f82effd73e24ce674c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 3): crates/proc-macro-api/src/legacy_protocol/msg/flat.rs:152-167 | crates/proc-macro-api/src/legacy_protocol/msg/flat.rs:228-243 | crates/proc-macro-api/src/legacy_protocol/msg/flat.rs:270-285 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-api/src/legacy_protocol/msg/flat.rs"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"e48e31399c4416eb0dda715487d1bd295ce91f203427b8ab4bc474891e9b0366"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): crates/hir-ty/src/infer/callee.rs:137-152 | crates/hir-ty/src/infer/callee.rs:190-205 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/callee.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"359564652c2044bd5daa834b9111546aa1e25b2691392689313ec4fe97672cce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): crates/ide/src/runnables.rs:364-379 | crates/ide/src/runnables.rs:456-471 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/runnables.rs"},"region":{"startLine":364}}}],"partialFingerprints":{"codehealthFindingId/v1":"680f1b547282222a963c1ddadaad350cb29035e02c2e5eb09be4326a6b861d0a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): crates/ide-assists/src/handlers/generate_deref.rs:70-85 | crates/ide-assists/src/handlers/generate_deref.rs:113-128 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_deref.rs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fcaabe0209c0f9e482d01e929a5cf3c1dcc78690141435a128e8beef2b43d9b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): crates/ide-db/src/imports/merge_imports.rs:879-894 | crates/ide-db/src/imports/merge_imports.rs:918-933 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/merge_imports.rs"},"region":{"startLine":879}}}],"partialFingerprints":{"codehealthFindingId/v1":"69a7a18aedaa443a2366140808e0b97b55e9683e10a8b5e03240bf7e4b492d9d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): crates/rust-analyzer/src/handlers/request.rs:2002-2017 | crates/rust-analyzer/src/handlers/request.rs:2032-2047 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/request.rs"},"region":{"startLine":2002}}}],"partialFingerprints":{"codehealthFindingId/v1":"979ea252982ee9de88089b3e53020c11aae77f781627ec4400732ace84fa73d5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 3): crates/hir/src/source_analyzer.rs:136-150 | crates/hir/src/source_analyzer.rs:189-203 | crates/hir/src/source_analyzer.rs:234-248 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d9a0b7731cb0a4e0f622cdf94027dc6168865676615431371907a2d444a7a78"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 3): crates/hir-ty/src/infer.rs:1934-1948 | crates/hir-ty/src/infer.rs:2235-2249 | crates/hir-ty/src/infer/path.rs:156-170 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":1934}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0922bd9e52438df17268a3646bf905b4f242ee013ec532eabb1858d6bc58a8c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201315 lines \u00D7 2): crates/hir-def/src/nameres/collector.rs:2147-2161 | crates/hir-def/src/nameres/collector.rs:2169-2178 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":2147}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d8ba628aa7571875b45d0fe90e7da8b910079f0c18ccd02c1cf085f409fe9f8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): crates/ide/src/doc_links.rs:601-615 | crates/ide/src/doc_links.rs:617-631 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/doc_links.rs"},"region":{"startLine":601}}}],"partialFingerprints":{"codehealthFindingId/v1":"339d3120d0c8ddb80d0a813e8ccb82d20e98898d4ae75a689a5a8402f421da36"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): crates/ide/src/syntax_highlighting/escape.rs:47-61 | crates/ide/src/syntax_highlighting/escape.rs:76-90 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting/escape.rs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"f24951a14739f8049a15bea8381e4465763e9af04943e70df23f45b629655a67"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): crates/ide-assists/src/utils/gen_trait_fn_body.rs:444-458 | crates/ide-assists/src/utils/gen_trait_fn_body.rs:637-651 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/utils/gen_trait_fn_body.rs"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"603fdcd8f27b50f4ba0755e84906a6937571e567d7c06da554f525ef0b5ad5e8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): crates/ide-completion/src/context/analysis.rs:214-228 | crates/ide-completion/src/context/analysis.rs:335-349 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context/analysis.rs"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ba56a62abd20a777d6522ca6075d809bf7c886a62b27706e59c668e5a1547ad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): crates/rust-analyzer/src/cli/analysis_stats.rs:958-972 | crates/rust-analyzer/src/cli/analysis_stats.rs:1063-1077 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":958}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fa44f99cd93d0c08817069a8eb1d1f44265b0f5a0632f929fa6267c9afccb53"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): crates/span/src/map.rs:169-183 | crates/syntax/src/lib.rs:225-239 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/span/src/map.rs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"49d85fd2f08f5995fc7cf74a23f95b20b8a0ad689555fde9da7fe0ca0ca5d09d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): xtask/src/codegen/lints.rs:294-308 | xtask/src/codegen/lints.rs:310-324 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"xtask/src/codegen/lints.rs"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"81412ea4a981bba3c86b20cd2fb147645404208961c9428242769030a8c98e8c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 5): crates/hir-expand/src/fixup.rs:150-163 | crates/hir-expand/src/fixup.rs:180-193 | crates/hir-expand/src/fixup.rs:196-209 | crates/hir-expand/src/fixup.rs:226-239 | crates/hir-expand/src/fixup.rs:266-279 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/fixup.rs"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"210823334f23462e27ca53d3e569219615005e3df1f7bbd906125f5ca197ff75"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201314 lines \u00D7 4): crates/hir-ty/src/diagnostics/expr.rs:631-644 | crates/hir-ty/src/diagnostics/expr.rs:674-687 | crates/hir/src/source_analyzer.rs:2185-2196 | crates/hir/src/source_analyzer.rs:2217-2228 \u2014 there are 4 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 4 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/expr.rs"},"region":{"startLine":631}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9f06a7ec67dc3356fc95806eed1ed4b71c51c5a584802a9e963a1f25fb33572"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): crates/hir-expand/src/lib.rs:1211-1224 | crates/hir-expand/src/lib.rs:1252-1265 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/lib.rs"},"region":{"startLine":1211}}}],"partialFingerprints":{"codehealthFindingId/v1":"245a62aa98cfe98d70dcb936cbd4184672afadc838f8fba061b80bae56467b3c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): crates/hir-ty/src/display.rs:1536-1549 | crates/hir-ty/src/display.rs:1595-1608 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":1536}}}],"partialFingerprints":{"codehealthFindingId/v1":"768095a6fb08867eccf8e14e779c994aa1bca6c7befa053e49bddef48398db7b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): crates/hir-ty/src/display.rs:1868-1881 | crates/hir-ty/src/display.rs:1920-1933 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":1868}}}],"partialFingerprints":{"codehealthFindingId/v1":"710035c55795934d8cacf7ab6a2561b061d4478e0b35ace0011ee302b62a55a5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): crates/hir-ty/src/mir/lower.rs:1287-1300 | crates/hir-ty/src/mir/lower.rs:1317-1330 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower.rs"},"region":{"startLine":1287}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6d60f17652f590463406a4756091350f1ffc24c0dc13084b16ccfc0dddfd4c7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): crates/ide/src/inlay_hints/lifetime.rs:118-131 | crates/ide/src/inlay_hints/lifetime.rs:175-188 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints/lifetime.rs"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"56efde6da72be8adeb33695694341ac08176abdbce5bf66634e63141ee94f571"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): crates/ide-assists/src/handlers/generate_function.rs:585-598 | crates/ide-assists/src/handlers/generate_function.rs:644-657 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_function.rs"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"84d57f5b18fcdaacb5838ff204361af198d6889fd1091291ce45aecaac40bd26"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): crates/ide-completion/src/context/analysis.rs:2074-2087 | crates/syntax/src/algo.rs:137-150 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context/analysis.rs"},"region":{"startLine":2074}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d4547aa589fa5f72ceecee378be56ac7d96a7b7f66b13d8ef44c2d9b6864450"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): crates/ide-completion/src/render/const_.rs:30-43 | crates/ide-completion/src/render/type_alias.rs:52-65 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/render/const_.rs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"dac79f890a139f2df437dd8512c8e056328871e614e76b62b17340325b2aa32f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): crates/ide-db/src/imports/import_assets.rs:894-907 | crates/ide-db/src/imports/import_assets.rs:919-932 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/import_assets.rs"},"region":{"startLine":894}}}],"partialFingerprints":{"codehealthFindingId/v1":"b87a9e3e7e9e0f717137391c79261c5a08f6cb56d0038cf77c17db32c187f1ba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201314 lines \u00D7 2): xtask/src/codegen/lints.rs:348-358 | xtask/src/codegen/lints.rs:374-387 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"xtask/src/codegen/lints.rs"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e1f2fa412fc2454d6100b0d2e752868ca5ea782c19b63be130d3bae2193f160"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): crates/syntax/src/validation.rs:328-340 | crates/syntax/src/validation.rs:344-356 | crates/syntax/src/validation.rs:360-372 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/validation.rs"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"d28f2f7fcdcea23382d19d00f4bd46cb139852db8d14475092ca3f655f6f6419"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): crates/hir/src/term_search.rs:120-132 | crates/hir/src/term_search.rs:158-170 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/term_search.rs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"e33c42434bfc707fa6554f95766499d90f39e44b73358a8ada82b36352ed0b66"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): crates/hir-ty/src/infer/cast.rs:346-358 | crates/hir-ty/src/infer/cast.rs:359-371 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/cast.rs"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"6444683d5e3ab0b4c3ff7123309af593262a2d267777142b08047674256c4349"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): crates/hir-ty/src/next_solver/normalize.rs:252-264 | crates/hir-ty/src/next_solver/normalize.rs:267-279 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/normalize.rs"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a0de3c39a20f41d542e1b87fcece89015cf5669d9c4e7571f19cf69629c6f20"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): crates/hir-ty/src/traits.rs:253-265 | crates/hir-ty/src/traits.rs:276-288 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/traits.rs"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"069dcefadba3323bd2611160a3ced6b7dc277593813cc5ceef30b991e2e6bfce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): crates/ide-completion/src/context/analysis.rs:238-250 | crates/ide-completion/src/context/analysis.rs:359-371 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context/analysis.rs"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fe7775f2f76b3ae44d6b485d3843c9bf05f900e17579b5ac9919bdd5cd4faea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): crates/ide-completion/src/completions/snippet.rs:17-29 | crates/ide-completion/src/completions/snippet.rs:57-68 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/snippet.rs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"74e091f1b43488ed884dd8ec3e28054aa5885b673813c2aebc699ae06eb8e678"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): crates/ide-completion/src/completions/flyimport.rs:263-275 | crates/ide-completion/src/completions/flyimport.rs:316-327 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/flyimport.rs"},"region":{"startLine":263}}}],"partialFingerprints":{"codehealthFindingId/v1":"67701bd0f6c86fefa0f1acf214d54a20d641d36bacf200df19776a276fca6557"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): crates/ide-db/src/syntax_helpers/node_ext.rs:47-59 | crates/ide-db/src/syntax_helpers/node_ext.rs:146-157 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/syntax_helpers/node_ext.rs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"35b2574808a48c9b5874be0f0d2fa4e3cbc69e723522c7f8ee00a6cdd243f9cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): crates/rust-analyzer/src/cli/analysis_stats.rs:157-168 | crates/rust-analyzer/src/cli/analysis_stats.rs:170-182 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b75345975943e0fa3f0f87cb04d725381069cbc789cac0b39ca3c9241e5bf47"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): crates/syntax/src/ast/syntax_factory/constructors.rs:374-386 | crates/syntax/src/ast/syntax_factory/constructors.rs:2177-2189 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e8bf5a25803e7d64ba6cbb9b290d4bb53dd15b8ced1bcb7020968b25fa0f5d1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 3): crates/hir-def/src/nameres/collector.rs:2146-2156 | crates/hir-def/src/nameres/collector.rs:2168-2178 | crates/hir-def/src/nameres/collector.rs:2183-2194 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":2146}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c94d616ba7ef152b3c9442f496e334f685bb53e130a8aecad1e1e341f457454"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201312 lines \u00D7 3): crates/syntax/src/ast/syntax_factory/constructors.rs:1820-1831 | crates/syntax/src/ast/syntax_factory/constructors.rs:1950-1957 | crates/syntax/src/ast/syntax_factory/constructors.rs:2213-2222 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":1820}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5018ea13c3f9cd0810adae55c669e9e6883bf7918f7727af0be49ab24392fbb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/hir-def/src/expr_store.rs:374-385 | crates/hir-def/src/item_scope.rs:842-853 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store.rs"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b5029c3e1fd883c31c209d8f3f111f17eec517f50ca5a6093eba385b300c515"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/hir-def/src/lang_item.rs:158-169 | crates/hir-def/src/lang_item.rs:183-194 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/lang_item.rs"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b3f63ffd555d3ebcedcb3088f6be9f4ba34d771bee6315d9d489f4858ef6418"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): crates/hir-def/src/signatures.rs:91-102 | crates/hir-def/src/signatures.rs:179-189 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/signatures.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"f840324e71286e54b35bf93292e975ffb6418fa4989860d26cb3d52829d3f176"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): crates/hir-def/src/signatures.rs:191-201 | crates/hir-def/src/signatures.rs:267-278 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/signatures.rs"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"27299b9b6b60e49a52db6e64ddd6241ddd0036346fcec9944aef232549911596"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/hir-ty/src/display.rs:1067-1078 | crates/hir-ty/src/display.rs:1213-1224 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":1067}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f91d16bac3d0adac8ccdb52f71d449ce52ddcd933d09fb292c0033b5170be8b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/hir-ty/src/display.rs:1793-1804 | crates/hir-ty/src/display.rs:1817-1828 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":1793}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f0c629f715e325a88f63064dd4a8977c4a77b610f106dfe76f8d7f935da3d09"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/hir-ty/src/display.rs:2070-2081 | crates/hir-ty/src/display.rs:2115-2126 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":2070}}}],"partialFingerprints":{"codehealthFindingId/v1":"5456e6f3fcb9d5732e7f20968cf2544566a75447e5c2e8bd9a3b51e2f9ea118d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/hir-ty/src/infer.rs:2407-2418 | crates/hir-ty/src/infer.rs:2469-2480 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":2407}}}],"partialFingerprints":{"codehealthFindingId/v1":"a80225e8e2d1d799e54351d660a13188937077d4d7956d3f0fb26f0c82c06af2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/hir-ty/src/lib.rs:267-278 | crates/hir-ty/src/lib.rs:301-312 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lib.rs"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"153bf9dd589b78b5d658b838dd7af0bb983a23ed9a9f55fbf18284825ac1e9cb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/hir-ty/src/next_solver/ty.rs:1007-1018 | crates/hir-ty/src/next_solver/ty.rs:1054-1065 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/ty.rs"},"region":{"startLine":1007}}}],"partialFingerprints":{"codehealthFindingId/v1":"667b633162b3e0682736e46fabcac2f74702338d11b2f87db44d5afb419b0d9f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/ide-assists/src/handlers/convert_tuple_return_type_to_struct.rs:291-302 | crates/ide-assists/src/handlers/unwrap_return_type.rs:217-228 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_tuple_return_type_to_struct.rs"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"d713fc5c1c5a0d848835f8acfff5b38f03e8850ee2723306838e9b79844029ab"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs:196-207 | crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs:239-250 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef51af62f4358947ab64d1d8401e1845e6d8d636b6d28f3d7cd07ba63f95dac0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/ide-db/src/search.rs:329-340 | crates/ide-db/src/search.rs:360-371 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"48f52a3842de430365106e2ccaff8d1d5301ec6682d03f65de90a69d9649f313"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/ide-db/src/syntax_helpers/format_string.rs:121-132 | crates/ide-db/src/syntax_helpers/format_string.rs:178-189 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/syntax_helpers/format_string.rs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"00830bff475528724b47b5e243b94bbe7d8a83766aed41b8c938525c574c5a82"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): crates/rust-analyzer/src/cli/lsif.rs:310-320 | crates/rust-analyzer/src/cli/scip.rs:64-75 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/lsif.rs"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"85c88de7a6797f7c6578ab0fd6b33bbf12d8b61c32f303a3408cf0b3101e449b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/rust-analyzer/src/lsp/to_proto.rs:1424-1435 | crates/rust-analyzer/src/lsp/to_proto.rs:1438-1449 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/lsp/to_proto.rs"},"region":{"startLine":1424}}}],"partialFingerprints":{"codehealthFindingId/v1":"46b99e6cc0d04564f80539e319ea7457f6a1d0a83e92c5c1fc2ab0280dbc0122"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): crates/hir-ty/src/lower.rs:1683-1693 | crates/hir-ty/src/lower.rs:2287-2297 | crates/hir-ty/src/lower.rs:2922-2932 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":1683}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff82541b64b1f2bb6be0207f3ba331f7b0a236fa1ac4564839e05848be672447"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): crates/ide/src/static_index.rs:120-130 | crates/rust-analyzer/src/cli/diagnostics.rs:131-141 | crates/rust-analyzer/src/cli/unresolved_references.rs:98-108 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 3 call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made 3 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/static_index.rs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d88e07dffbf065a5757af96ab3209627f5a8ca8961523a141bfc20b6ed9fc73"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/hir/src/lib.rs:3312-3322 | crates/hir/src/lib.rs:3353-3363 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/lib.rs"},"region":{"startLine":3312}}}],"partialFingerprints":{"codehealthFindingId/v1":"382d3546195a0bc7627f38c0a4ca5926c8f08b0f7c6e13915cdfd88908dfdeb0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): crates/hir/src/lib.rs:4220-4229 | crates/hir/src/lib.rs:4254-4264 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/lib.rs"},"region":{"startLine":4220}}}],"partialFingerprints":{"codehealthFindingId/v1":"cad762ff23b988e6006518712663aafef41283c45f76aa1170afaabab009c5f6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201311 lines \u00D7 2): crates/hir-def/src/expr_store/lower.rs:2556-2566 | crates/hir-def/src/expr_store/lower.rs:2572-2580 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":2556}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9da4873cf4b4c9996856a94db0e9c7a56908cc1387e2943668ea9b9ff9d26b5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/hir-def/src/expr_store/pretty.rs:589-599 | crates/hir-def/src/expr_store/pretty.rs:608-618 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/pretty.rs"},"region":{"startLine":589}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9dd333554171298fa5a36a30e1bb30c4c9c073b5b36f5fb9190ec7676d35575"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/hir-def/src/expr_store.rs:794-804 | crates/hir-def/src/expr_store.rs:829-839 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store.rs"},"region":{"startLine":794}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee437223251be74916f5edebee87373ca4df85cb1e7b1c461de88226e7ef8324"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/hir-def/src/item_scope.rs:922-932 | crates/hir-def/src/item_scope.rs:935-945 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_scope.rs"},"region":{"startLine":922}}}],"partialFingerprints":{"codehealthFindingId/v1":"9183decd9fd54199100ac1c932c95af0d53555ba714bdd2f0ba16154d69956e3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201311 lines \u00D7 2): crates/hir-ty/src/infer/op.rs:211-218 | crates/hir-ty/src/infer/op.rs:222-232 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/op.rs"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7cb5811b697b3cc1658d087e4a112da8e9c6868574cf24510f22801c865a70b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/hir-ty/src/lower/path.rs:749-761 | crates/hir-ty/src/method_resolution/confirm.rs:409-419 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":749}}}],"partialFingerprints":{"codehealthFindingId/v1":"317d928137d047dbbb43ed8f851a4444cf21d1e89466bd64d12c0bb67678db37"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/hir-ty/src/lower.rs:1652-1662 | crates/hir-ty/src/lower.rs:1683-1693 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":1652}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6190a090f4b7bb5b750bd8d40b673404581c4e8b323fdb4675a83afa35dc5e9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/hir-ty/src/lower.rs:1768-1778 | crates/hir-ty/src/lower.rs:2286-2296 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":1768}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c2428566dadafb815c7cf654f520a514c1cda0554a0822e06902687be440376"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/hir-ty/src/mir/eval/shim.rs:621-631 | crates/hir-ty/src/mir/eval/shim.rs:693-703 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":621}}}],"partialFingerprints":{"codehealthFindingId/v1":"00c3d3b1dda7ac2e2cfa33827882bc77ffb6cec6533a417c8ba107f34d39b89f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/hir-ty/src/mir/eval.rs:2613-2623 | crates/hir-ty/src/mir/eval.rs:2634-2644 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":2613}}}],"partialFingerprints":{"codehealthFindingId/v1":"793caf59d0388c62703782f73b395feb592cadbd7ad3db04d2d5a8d3bd6f0d1f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/hir-ty/src/mir/eval.rs:2799-2809 | crates/hir-ty/src/mir/eval.rs:2811-2821 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":2799}}}],"partialFingerprints":{"codehealthFindingId/v1":"6aea1bce2f97e66fe3715ae115c22519972f0f3d694c61d0243ee99727f1f64e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/hir-ty/src/mir/lower.rs:534-544 | crates/hir-ty/src/mir/lower.rs:1042-1052 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower.rs"},"region":{"startLine":534}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ba0407b955cc9a70555e2b5f370ab2a205463b6651470b4fc4c8d6c12281e31"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): crates/ide/src/inlay_hints.rs:103-112 | crates/ide/src/inlay_hints.rs:150-160 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints.rs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"34a3495a741878200226a3cf766955f2ed944c8d1b9d25875fe5cd44243f8830"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/ide-assists/src/handlers/generate_enum_is_method.rs:117-127 | crates/ide-assists/src/handlers/generate_enum_projection_method.rs:198-208 \u2014 before extracting anything, compare \u0060crates/ide-assists/src/handlers/generate_enum_is_method.rs\u0060 and \u0060crates/ide-assists/src/handlers/generate_enum_projection_method.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 38 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_enum_is_method.rs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"69d707f2be5888e57ea9abfdd149983d7d4f06ee848f64d73ed6fa8a737981d4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): crates/ide-assists/src/utils/gen_trait_fn_body.rs:662-672 | crates/ide-assists/src/utils/gen_trait_fn_body.rs:682-691 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/utils/gen_trait_fn_body.rs"},"region":{"startLine":662}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2cb618919258eceba8262464db74e2572f30c0a5358c6c443de5aab0e381269"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/ide-completion/src/completions/type.rs:68-78 | crates/ide-completion/src/completions/type.rs:111-121 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/type.rs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"aada11ac54ec2d63e773047ba990fcc40bbc10eece408483a45f3a83e5e617a0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/mbe/src/expander/matcher.rs:523-533 | crates/mbe/src/expander/matcher.rs:543-553 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/expander/matcher.rs"},"region":{"startLine":523}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0c5572e5dc8f992cef3886bc800b1876dada427ef38269549a30bc086424165"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u201311 lines \u00D7 2): crates/parser/src/grammar/expressions.rs:705-715 | crates/parser/src/grammar/patterns.rs:407-413 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/grammar/expressions.rs"},"region":{"startLine":705}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8b9bde3f09734b3faa80b44e71d03abdc5c5a7bbf38b35dd5e9148e98dc4df8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/proc-macro-srv/src/token_stream.rs:195-205 | crates/proc-macro-srv/src/token_stream.rs:221-231 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-srv/src/token_stream.rs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"79ceca760fcabf44e9c219cde152730326caec3e14e2ed17ccc6559d878949a2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/rust-analyzer/src/lsp/to_proto.rs:1829-1839 | crates/rust-analyzer/src/lsp/to_proto.rs:1883-1893 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/lsp/to_proto.rs"},"region":{"startLine":1829}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8632ca722305ff6df8310b529e3d0cf3e86579dd1ec8251ba50039a06196fba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): crates/syntax/src/ast/edit.rs:91-100 | crates/syntax/src/ast/edit.rs:108-118 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/edit.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"91ecefc6e811b980191cfb3002e20eb55fdb46965de1be788dc51a3edc52e26c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/syntax/src/validation.rs:375-385 | crates/syntax/src/validation.rs:388-398 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/validation.rs"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3e003037858710204d721034df9849c57f73d7a4a9d67d84ac7d27218feaf3a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u201310 lines \u00D7 6): crates/syntax/src/ast/syntax_factory/constructors.rs:410-418 | crates/syntax/src/ast/syntax_factory/constructors.rs:674-680 | crates/syntax/src/ast/syntax_factory/constructors.rs:1816-1825 | crates/syntax/src/ast/syntax_factory/constructors.rs:1884-1893 | crates/syntax/src/ast/syntax_factory/constructors.rs:2173-2181 | crates/syntax/src/ast/syntax_factory/constructors.rs:2209-2217 \u2014 all 6 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f92c6d2e23d6585521c47007660180e82574911dd618ec788c0d4f959ffd07d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 5): crates/syntax/src/ast/syntax_factory/constructors.rs:167-176 | crates/syntax/src/ast/syntax_factory/constructors.rs:1573-1582 | crates/syntax/src/ast/syntax_factory/constructors.rs:1800-1809 | crates/syntax/src/ast/syntax_factory/constructors.rs:1868-1877 | crates/syntax/src/ast/syntax_factory/constructors.rs:2202-2211 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b6affccdc9ed0aa4c41371727e691adc715af9ea436693b71efae73925e1ade"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): crates/hir-ty/src/lower.rs:1769-1779 | crates/hir-ty/src/lower.rs:2287-2296 | crates/hir-ty/src/lower.rs:2922-2931 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":1769}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cf6a7424e268731b5a04104b0e85e439d30ff7117c0df07f9c0f7b736c5a1fe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/hir/src/semantics/child_by_source.rs:64-73 | crates/hir/src/semantics/child_by_source.rs:91-100 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics/child_by_source.rs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"475b394d9f796cfc175edc26e0f55a91bb201bb9b79438359e898a3bbb7ceaf6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/hir-def/src/attrs.rs:533-542 | crates/hir-def/src/attrs.rs:544-553 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/attrs.rs"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"3aa6c01bc0d84d493adf75e4086e19140a358136166dc89b5e8210bba79c876e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/hir-def/src/item_scope.rs:697-706 | crates/hir-def/src/item_scope.rs:713-722 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_scope.rs"},"region":{"startLine":697}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9ccbeb77337e5f538a24c5b9e30eda5f2e20fc5d17adcedac43184e16a3a9a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/hir-ty/src/display.rs:1172-1181 | crates/hir-ty/src/display.rs:1188-1197 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":1172}}}],"partialFingerprints":{"codehealthFindingId/v1":"2120afca5f1576d995c0601ce07475f7820734fd5952eb518d968121c2553758"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): crates/hir-ty/src/infer/expr.rs:1020-1028 | crates/hir-ty/src/infer/pat.rs:1199-1208 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/expr.rs"},"region":{"startLine":1020}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6e092e4cf79f0adb9a89d2ebc6850703224616d9af6930db8c7b528deb70428"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/hir-ty/src/lower/path.rs:352-361 | crates/hir-ty/src/lower/path.rs:408-417 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd97efe3ff34bd34c320ea6e0857a35b674d21427975514feaefa90b3836d5fe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/hir-ty/src/lower.rs:1486-1495 | crates/hir-ty/src/lower.rs:1823-1832 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":1486}}}],"partialFingerprints":{"codehealthFindingId/v1":"52a6ba6b8e687853576a0d6690e0a11200ae2ed621f34cd18e1cfc653af8352d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/hir-ty/src/lower.rs:2823-2832 | crates/hir-ty/src/lower.rs:2920-2929 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":2823}}}],"partialFingerprints":{"codehealthFindingId/v1":"62c4479e4d8c9400f2f8d73b60641189811bfcc1449ce94401d571bf0e762365"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): crates/ide/src/rename.rs:682-690 | crates/ide/src/rename.rs:695-704 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/rename.rs"},"region":{"startLine":682}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8ce6a1c041694028b6197a5b32067c5ec1709e2b814363f93595f598570ca9a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/ide/src/runnables.rs:382-391 | crates/ide/src/runnables.rs:473-482 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/runnables.rs"},"region":{"startLine":382}}}],"partialFingerprints":{"codehealthFindingId/v1":"40dc4ae9bf8d608ef9a08dd3b02f78053c18e9ab31d18cb143d4997e5480de3b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/ide/src/inlay_hints/lifetime.rs:35-44 | crates/ide/src/inlay_hints/lifetime.rs:91-100 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints/lifetime.rs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"d47a0f68cbde3ea6de92a035654f1ef42a1dd9ff9bac81b11f736899c4a0a84a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/ide/src/inlay_hints/extern_block.rs:40-49 | crates/ide/src/inlay_hints/extern_block.rs:58-67 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints/extern_block.rs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b9a206f1dbc88fe81f009a7c7581d093575ed8518b637952b3011abb47c3e48"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201310 lines \u00D7 2): crates/ide-assists/src/handlers/generate_enum_is_method.rs:47-54 | crates/ide-assists/src/handlers/generate_enum_projection_method.rs:124-133 \u2014 before extracting anything, compare \u0060crates/ide-assists/src/handlers/generate_enum_is_method.rs\u0060 and \u0060crates/ide-assists/src/handlers/generate_enum_projection_method.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 38 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_enum_is_method.rs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"f56d5e73ba92f6af8ab4eec978762e47ce5650aaab5ad7d136c3d7ca65d09657"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/ide-completion/src/completions/attribute.rs:90-99 | crates/ide-completion/src/completions/attribute/derive.rs:21-30 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/attribute.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6718c350927ef2b81fae9c61e1f7ffb6058737b5a6c62ccb7fdc4ba936c952b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u201310 lines \u00D7 2): crates/ide-completion/src/completions.rs:347-353 | crates/ide-completion/src/completions.rs:370-379 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions.rs"},"region":{"startLine":347}}}],"partialFingerprints":{"codehealthFindingId/v1":"2231a3f6c1de39704778429864efa3563e4fdd5d42be72fcbd2302e4182fef02"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201310 lines \u00D7 2): crates/ide-completion/src/completions/dot.rs:46-55 | crates/ide-completion/src/completions/dot.rs:108-115 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/dot.rs"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"98ed02e07fa54aa61ae553a4513f5bbd72a9dba4649826915c9eecbb762c84b1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/ide-db/src/syntax_helpers/format_string.rs:131-140 | crates/ide-db/src/syntax_helpers/format_string.rs:214-223 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/syntax_helpers/format_string.rs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"c42bbb72d06872db2f25b1dae2f865f6985d912f43c1acb86a7a784b8c140c10"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/ide-diagnostics/src/handlers/unresolved_field.rs:44-53 | crates/ide-diagnostics/src/handlers/unresolved_method.rs:41-50 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/unresolved_field.rs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e8d4c956ba34396055c7561c9a7d34ce825c9f1ea1875c712030962c1148e44"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/load-cargo/src/lib.rs:656-665 | crates/load-cargo/src/lib.rs:703-712 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/load-cargo/src/lib.rs"},"region":{"startLine":656}}}],"partialFingerprints":{"codehealthFindingId/v1":"61d6e1b94189c4df78840382fd6abca58b2940d48015d19598e5737d69e37375"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201310 lines \u00D7 2): crates/proc-macro-srv/src/dylib/proc_macros.rs:38-47 | crates/proc-macro-srv/src/dylib/proc_macros.rs:49-56 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-srv/src/dylib/proc_macros.rs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"a25d61701de56956a0e20da24370a667adb7b1ba78738c1d0fb3786ceceaa45b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/rust-analyzer/src/cli/analysis_stats.rs:852-861 | crates/rust-analyzer/src/cli/analysis_stats.rs:1273-1282 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":852}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0138bdba1f4187673dd2726f23ace7733b0a1354a075dddf9514f16fa5e655c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/syntax-bridge/src/lib.rs:549-558 | crates/syntax-bridge/src/lib.rs:591-600 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax-bridge/src/lib.rs"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"86004a4e314df692af272ab1b66daccabf4916a54bf702b8a72136758b6ee79d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): crates/ide-assists/src/handlers/generate_default_from_new.rs:87-95 | crates/ide-assists/src/handlers/generate_enum_is_method.rs:92-100 | crates/ide-assists/src/handlers/generate_enum_projection_method.rs:171-179 | crates/ide-assists/src/handlers/generate_single_field_struct_from.rs:147-155 \u2014 before extracting anything, compare \u0060crates/ide-assists/src/handlers/generate_enum_is_method.rs\u0060 and \u0060crates/ide-assists/src/handlers/generate_enum_projection_method.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 38 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_default_from_new.rs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"c336cfaf7fc291f5e0a7b87b47ad668dab5c69b410510bcf6df834d6b04ba22d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): crates/hir-ty/src/infer.rs:2442-2450 | crates/hir-ty/src/infer.rs:2483-2491 | crates/hir-ty/src/infer.rs:2546-2554 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":2442}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c274c2aee7bb043af488b985d2aafecc319d0a706233a38310ce097432df957"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): crates/syntax/src/ast/syntax_factory/constructors.rs:351-359 | crates/syntax/src/ast/syntax_factory/constructors.rs:1797-1805 | crates/syntax/src/ast/syntax_factory/constructors.rs:2155-2163 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9a2221a525a963edb44898cc80436c19f73cc6b8c3368091e29b477ef9533cb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/hir/src/lib.rs:5434-5442 | crates/hir/src/lib.rs:5543-5551 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/lib.rs"},"region":{"startLine":5434}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa46c5e2f0d229dd9ec3057b9a1b2e6cc495755be7972f210e4eaf9a0c5ff1c2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/hir/src/semantics/source_to_def.rs:681-689 | crates/hir/src/semantics/source_to_def.rs:692-700 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics/source_to_def.rs"},"region":{"startLine":681}}}],"partialFingerprints":{"codehealthFindingId/v1":"766958cd69b65f5ba243a7da680bd914c201cf85322edf0dfc7dbdc735d3ba7e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/hir/src/semantics.rs:2617-2625 | crates/hir/src/semantics.rs:2629-2637 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":2617}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3d65beaf53bc77921a1f0486a138ad2c5cec97f228dc39136cd6e9d996094d3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/hir/src/symbols.rs:290-298 | crates/hir/src/symbols.rs:331-339 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/symbols.rs"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4fd676b125863865785208fb9ad80da3eb27231b7a7079e1ce37a3dcc681940"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/hir/src/term_search/tactics.rs:54-62 | crates/hir/src/term_search/tactics.rs:104-112 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/term_search/tactics.rs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"9171d04fae47a1cb060e2fd49112721271bb2d24f7491564bb6a856d731e4f00"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/hir-def/src/attrs.rs:661-669 | crates/hir-def/src/attrs.rs:673-681 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/attrs.rs"},"region":{"startLine":661}}}],"partialFingerprints":{"codehealthFindingId/v1":"092e7d575456e57d9ca466dd1c113fc49c499b0735d7ddfbf347b634677154a2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): crates/hir-def/src/attrs.rs:1289-1297 | crates/hir-def/src/attrs.rs:1310-1317 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/attrs.rs"},"region":{"startLine":1289}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ea8b30307e1b34a388ed56d0d7c6569c4b1e1ac1478a598586ff23edd916a99"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/hir-def/src/expr_store/lower.rs:1142-1150 | crates/hir-def/src/expr_store/lower.rs:1186-1194 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":1142}}}],"partialFingerprints":{"codehealthFindingId/v1":"27806bf1182e9ceb34a21011a5d97a19a1f818e96bc02397c6a4890d504e75b5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/hir-def/src/expr_store/lower.rs:2747-2755 | crates/hir-def/src/expr_store/lower.rs:2760-2768 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":2747}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddb1c94ff748afc6b2fcf13383e0350a23700647a138b50beca4c17ccc537faa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/hir-def/src/import_map.rs:250-258 | crates/hir-def/src/import_map.rs:296-304 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/import_map.rs"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"0abdf2892510d627612e69f74a22dfab56dc8f2fe3d1f77554daf2a4d518b364"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/hir-def/src/nameres/path_resolution.rs:269-277 | crates/hir-def/src/nameres/path_resolution.rs:384-392 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/path_resolution.rs"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"abbb42f23e3328610f7e6d3e724814319d0368f26780c49ac087a074716e676a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/hir-def/src/src.rs:155-163 | crates/hir-def/src/src.rs:170-178 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/src.rs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"f77ad4ee7df83511cdf078c0c910238ad21ba4435aa056dab00cedc6a97b72f6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/hir-expand/src/builtin/fn_macro.rs:880-888 | crates/hir-expand/src/builtin/fn_macro.rs:956-964 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/builtin/fn_macro.rs"},"region":{"startLine":880}}}],"partialFingerprints":{"codehealthFindingId/v1":"82857cd4a269f23cdebd94f15aab91962db117085bab9fd6ab4e10b56bc44fa1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/hir-ty/src/consteval.rs:234-242 | crates/hir-ty/src/consteval.rs:272-280 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/consteval.rs"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"e133b7ced80cd76b395ae7deb95b1456e6cbd61ce54eb3d4481b4895011da82a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/hir-ty/src/display.rs:850-858 | crates/hir-ty/src/display.rs:1123-1131 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":850}}}],"partialFingerprints":{"codehealthFindingId/v1":"33f612ecb802aef91e05da6ac74df5593f2f8445d9b1044c3b4ab859a76084ec"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/hir-ty/src/display.rs:869-877 | crates/hir-ty/src/display.rs:1142-1150 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":869}}}],"partialFingerprints":{"codehealthFindingId/v1":"a32f6a613e7962ebbdc933836d6c3597ba735cf928e755ec25ecb7e833b242b8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (4\u20139 lines \u00D7 3): crates/hir-ty/src/display.rs:891-894 | crates/hir-ty/src/display.rs:926-934 | crates/hir-ty/src/display.rs:956-964 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":891}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2b20ebe059ab54960aede3768379b6c7f8c543cb49f59f858a8f9df19755bad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/hir-ty/src/infer/closure/analysis.rs:1225-1233 | crates/hir-ty/src/infer/closure/analysis.rs:1240-1248 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis.rs"},"region":{"startLine":1225}}}],"partialFingerprints":{"codehealthFindingId/v1":"694961046cc8087c67a9c9e91d93dfbb05aa9583356cdf5cba9a1dd2b50f36af"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/hir-ty/src/lower.rs:1484-1492 | crates/hir-ty/src/lower.rs:2286-2294 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":1484}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bc05ff5e08dade6b45d894a6973611ad8d0796036b821cd13a4e044f2c01a34"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/hir-ty/src/next_solver/def_id.rs:252-260 | crates/hir-ty/src/next_solver/def_id.rs:279-287 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/def_id.rs"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"c987609699f2959b2672c29e9a0503cf0d511cc8535bd017417da5eac977a659"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/ide/src/signature_help.rs:516-524 | crates/ide/src/signature_help.rs:642-650 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/signature_help.rs"},"region":{"startLine":516}}}],"partialFingerprints":{"codehealthFindingId/v1":"f11ef2446c1528384f5998e43bcc3410defaa1ab6eb4d2305e5e26d2ab1bf41f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/ide-assists/src/handlers/generate_delegate_trait.rs:285-294 | crates/ide-assists/src/handlers/generate_delegate_trait.rs:395-403 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_delegate_trait.rs"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"b93883fc98b09d77fe680216ae2f5d5c89d6c16739a0c05dabc9eed87e2c03d6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/ide-assists/src/handlers/introduce_named_lifetime.rs:138-146 | crates/ide-assists/src/handlers/introduce_named_lifetime.rs:197-205 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/introduce_named_lifetime.rs"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f5677bf00cd799eb100b19f6d9f9671884faa5fde7c3031ca3fb1426135545a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/ide-assists/src/handlers/move_from_mod_rs.rs:31-39 | crates/ide-assists/src/handlers/move_to_mod_rs.rs:31-39 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/move_from_mod_rs.rs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2697b88cdfef796b621d51e41a04b00247d90e3c018dba93e4a1054f8ddaa8a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): crates/ide-assists/src/handlers/convert_closure_to_fn.rs:428-436 | crates/ide-assists/src/handlers/convert_closure_to_fn.rs:438-445 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_closure_to_fn.rs"},"region":{"startLine":428}}}],"partialFingerprints":{"codehealthFindingId/v1":"50c5274a7f721aa61e892cd834228d6f25a336b7329dbf7c05b9227872f0d163"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/ide-assists/src/handlers/replace_method_eager_lazy.rs:32-40 | crates/ide-assists/src/handlers/replace_method_eager_lazy.rs:142-150 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/replace_method_eager_lazy.rs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8b7da413e37a5ba1645652be54231fde8f8f400d877bdc87f326b18f1cc6ed6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/ide-assists/src/handlers/convert_for_to_while_let.rs:38-46 | crates/ide-assists/src/handlers/convert_iter_for_each_to_for.rs:104-112 \u2014 before extracting anything, compare \u0060crates/ide-assists/src/handlers/convert_for_to_while_let.rs\u0060 and \u0060crates/ide-assists/src/handlers/convert_iter_for_each_to_for.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 47 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_for_to_while_let.rs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"8026cb3a82a82f516ca2297867e37fc9c1e9162667a8039a4c5e78be70a39658"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/ide-assists/src/handlers/generate_impl.rs:49-57 | crates/ide-assists/src/handlers/generate_impl.rs:97-105 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_impl.rs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"227baa552167716b0e811c55353b33669fa5aabb05354d6914581d02cfbaa7d0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/ide-assists/src/utils/gen_trait_fn_body.rs:601-609 | crates/ide-assists/src/utils/gen_trait_fn_body.rs:694-702 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/utils/gen_trait_fn_body.rs"},"region":{"startLine":601}}}],"partialFingerprints":{"codehealthFindingId/v1":"913c0ecbdb8fdc15aa21305d8949c37a05e00c94c38a3345566773929feda00c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/ide-db/src/imports/import_assets.rs:377-385 | crates/ide-db/src/imports/import_assets.rs:392-400 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/import_assets.rs"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"d69cc97dcf0077f9ba15df198290c412ee74afccbb8c1e82a5dcf1bab811f621"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/ide-db/src/syntax_helpers/node_ext.rs:378-386 | crates/ide-db/src/syntax_helpers/node_ext.rs:406-414 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/syntax_helpers/node_ext.rs"},"region":{"startLine":378}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fe48555c8f7369d116f86018b703039a89c90949adb5c4a3bfcf72f3d5ca325"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/mbe/src/lib.rs:165-173 | crates/mbe/src/lib.rs:225-233 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/lib.rs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d8c4fddda1d6c39a9cbb9374873d3c3f0e905a264e9011c5018c60bfabccaf8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/proc-macro-api/src/legacy_protocol/msg/flat.rs:174-182 | crates/proc-macro-api/src/legacy_protocol/msg/flat.rs:323-331 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-api/src/legacy_protocol/msg/flat.rs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"27c0f25ec83c66d29721edcba8f30315ee488537cfb2a8adbe00fccd0821df7a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/proc-macro-srv-cli/src/main_loop.rs:51-59 | crates/proc-macro-srv-cli/src/main_loop.rs:477-485 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-srv-cli/src/main_loop.rs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ea653153ee5a459f8a12649824641d24036639115958c628e55d978cda6efed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/rust-analyzer/src/cli/analysis_stats.rs:1179-1187 | crates/rust-analyzer/src/cli/analysis_stats.rs:1261-1269 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":1179}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bd9210ad6dbc29b6b2afe2de02c61baab4bbf2adff549309e1d33b1a5c0f28b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/syntax/src/ast/syntax_factory/constructors.rs:175-183 | crates/syntax/src/ast/syntax_factory/constructors.rs:1940-1948 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"37ad0e7f6bb296b35c647d2e4593c25ae032d64b534447a57158fdff35a7d1c4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (1\u20139 lines \u00D7 19): crates/syntax/src/ast/syntax_factory/constructors.rs:464-464 | crates/syntax/src/ast/syntax_factory/constructors.rs:570-570 | crates/syntax/src/ast/syntax_factory/constructors.rs:627-635 | crates/syntax/src/ast/syntax_factory/constructors.rs:831-833 | crates/syntax/src/ast/syntax_factory/constructors.rs:868-868 | crates/syntax/src/ast/syntax_factory/constructors.rs:1088-1088 | crates/syntax/src/ast/syntax_factory/constructors.rs:1103-1103 | crates/syntax/src/ast/syntax_factory/constructors.rs:1144-1144 | crates/syntax/src/ast/syntax_factory/constructors.rs:1162-1162 | crates/syntax/src/ast/syntax_factory/constructors.rs:1284-1286 | crates/syntax/src/ast/syntax_factory/constructors.rs:1319-1319 | crates/syntax/src/ast/syntax_factory/constructors.rs:1337-1337 | crates/syntax/src/ast/syntax_factory/constructors.rs:1377-1385 | crates/syntax/src/ast/syntax_factory/constructors.rs:1393-1394 | crates/syntax/src/ast/syntax_factory/constructors.rs:1551-1551 | crates/syntax/src/ast/syntax_factory/constructors.rs:1587-1587 | crates/syntax/src/ast/syntax_factory/constructors.rs:1604-1604 | crates/syntax/src/ast/syntax_factory/constructors.rs:1641-1643 | crates/syntax/src/ast/syntax_factory/constructors.rs:1736-1736 \u2014 all 19 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":464}}}],"partialFingerprints":{"codehealthFindingId/v1":"20279c3b908aa1404ee05fa8ee498e02e83ebda1856b120e9e2cd3a50ad1a940"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): xtask/src/codegen/grammar/ast_src.rs:225-233 | xtask/src/codegen/grammar/ast_src.rs:234-242 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"xtask/src/codegen/grammar/ast_src.rs"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"6574d94cd3f78ab67f8163a6dc08d0155ba38bdf64f3f4f47a77359e166c8910"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): xtask/src/codegen/lints.rs:192-200 | xtask/src/codegen/lints.rs:213-221 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"xtask/src/codegen/lints.rs"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"baf590c6040591a906904a000e02315b1c349d211204e3c58f3ce17922d624c8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): crates/hir-ty/src/display.rs:850-857 | crates/hir-ty/src/display.rs:869-876 | crates/hir-ty/src/display.rs:1123-1130 | crates/hir-ty/src/display.rs:1142-1149 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":850}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c42c6d361114c221c48fa13c976054140fdcb57694f34c213bbb0f3f809b40c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): crates/syntax/src/ast/syntax_factory/constructors.rs:353-360 | crates/syntax/src/ast/syntax_factory/constructors.rs:401-408 | crates/syntax/src/ast/syntax_factory/constructors.rs:1483-1490 | crates/syntax/src/ast/syntax_factory/constructors.rs:2157-2164 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c752b51b4535a81841446302e959681ca2631aa61385ee7d31b83bae306f1b4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): crates/syntax/src/ast/syntax_factory/constructors.rs:353-360 | crates/syntax/src/ast/syntax_factory/constructors.rs:401-408 | crates/syntax/src/ast/syntax_factory/constructors.rs:1799-1806 | crates/syntax/src/ast/syntax_factory/constructors.rs:2157-2164 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2da324d2876c177ecaab12d788f15b586bfa4173694c472d5dd5ad2d092df63"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): crates/syntax/src/ast/syntax_factory/constructors.rs:420-427 | crates/syntax/src/ast/syntax_factory/constructors.rs:1820-1828 | crates/syntax/src/ast/syntax_factory/constructors.rs:1950-1957 | crates/syntax/src/ast/syntax_factory/constructors.rs:2213-2220 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bba1e3b0322ac982310c7c18cae3a305d7c48cfd197a4963fee4c3256b558de"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): crates/hir-ty/src/next_solver/util.rs:561-568 | crates/hir-ty/src/next_solver/util.rs:589-596 | crates/hir-ty/src/next_solver/util.rs:620-627 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/util.rs"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"09b8e66bfc08614abee51ef1ec8ca602a3dbb213f71457b22e20378db3df9a9c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): crates/ide-db/src/search.rs:1247-1254 | crates/ide-db/src/search.rs:1263-1270 | crates/ide-db/src/search.rs:1275-1282 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":1247}}}],"partialFingerprints":{"codehealthFindingId/v1":"90d5394fa6434174a49d1fb9999df463536f2f01c22cb646a53ffa882fe3c4e7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): crates/syntax/src/ast/syntax_factory/constructors.rs:166-173 | crates/syntax/src/ast/syntax_factory/constructors.rs:1483-1490 | crates/syntax/src/ast/syntax_factory/constructors.rs:1867-1874 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"19bea650d339a793845ffb16df7085075adca77d1bc60802974c4ebd6b300388"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): crates/syntax/src/ast/syntax_factory/constructors.rs:185-193 | crates/syntax/src/ast/syntax_factory/constructors.rs:653-660 | crates/syntax/src/ast/syntax_factory/constructors.rs:1776-1785 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e2a4d6db2fc0c4e70f2dab7d659873f3a352f7529ac850cad5227e834a6b466"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): crates/syntax/src/ast/syntax_factory/constructors.rs:969-976 | crates/syntax/src/ast/syntax_factory/constructors.rs:1465-1473 | crates/syntax/src/ast/syntax_factory/constructors.rs:2348-2355 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":969}}}],"partialFingerprints":{"codehealthFindingId/v1":"c13236ce84ec97911bd81b82e2a2171155dabfa4de694b8dd8cd157c32b71acf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/hir/src/lib.rs:2506-2513 | crates/hir/src/lib.rs:2515-2522 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/lib.rs"},"region":{"startLine":2506}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7e0d5355eddd89d09e0dc82dca809499772f75ae0d24a898d5712839de17f84"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/hir/src/semantics/child_by_source.rs:75-82 | crates/hir/src/semantics/child_by_source.rs:102-109 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics/child_by_source.rs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"0928bb3af12a05d31b5129a4464fdaaed51cebc94eeee664c75a736e4c9cb970"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/hir/src/semantics/source_to_def.rs:633-640 | crates/hir/src/semantics/source_to_def.rs:644-651 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics/source_to_def.rs"},"region":{"startLine":633}}}],"partialFingerprints":{"codehealthFindingId/v1":"be9c17ed34c494e6392581db357e9f8f80ca67f30f65d2f439ed8edd46782609"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/hir-def/src/expr_store/scope.rs:163-170 | crates/hir-def/src/expr_store/scope.rs:182-189 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/scope.rs"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"256ac17c84b2a478ceb0a4293e943ca6745695185075f1ab6df9442ffa9e2611"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/hir-def/src/find_path.rs:406-413 | crates/hir-def/src/find_path.rs:423-430 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/find_path.rs"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf415b515fd9059a5b62df8fff124a38a2ee039e568f53d885ab1ed1a267e3ad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/hir-def/src/hir/format_args.rs:353-360 | crates/hir-def/src/hir/format_args.rs:377-384 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/hir/format_args.rs"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ae754bf46a6b208c0a31d1958efc337f36ec1d5108cecc5449bc22095436783"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/hir-def/src/item_scope.rs:657-664 | crates/hir-def/src/item_scope.rs:674-681 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_scope.rs"},"region":{"startLine":657}}}],"partialFingerprints":{"codehealthFindingId/v1":"e252c19fc854de93f51ab3d2a327e7283e5719322bfe3ea1fe79ebaf6cce59a8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/hir-def/src/nameres/collector.rs:692-699 | crates/hir-def/src/nameres/collector.rs:749-756 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":692}}}],"partialFingerprints":{"codehealthFindingId/v1":"703119fe8fd2ba22d02361e40e4ab0f41929e8646a1d08f87813447c9ff70270"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/hir-def/src/nameres/collector.rs:2569-2576 | crates/hir-def/src/nameres/collector.rs:2645-2652 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":2569}}}],"partialFingerprints":{"codehealthFindingId/v1":"35968038a53181819c4ddf7e33bdf7adabaa649d999c2a55311a064fc1ebade1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/hir-def/src/nameres/collector.rs:2583-2590 | crates/hir-def/src/nameres/collector.rs:2655-2662 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":2583}}}],"partialFingerprints":{"codehealthFindingId/v1":"a296f90b4f8e140ee5e9808c3655bba2ec9de9e285f3f04d2337fc5c35e6bd9e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/hir-ty/src/infer.rs:2321-2328 | crates/hir-ty/src/infer.rs:2370-2377 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":2321}}}],"partialFingerprints":{"codehealthFindingId/v1":"3849aecc76a8a976b9be04c860784cca47b01fc6bd574dbbb036dd619e380996"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (4\u20138 lines \u00D7 3): crates/hir-ty/src/next_solver/consts/valtree.rs:137-140 | crates/hir-ty/src/next_solver/consts/valtree.rs:166-173 | crates/hir-ty/src/next_solver/consts/valtree.rs:191-198 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/consts/valtree.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"058c85f2c20e7bcbe10ba76bf43c4978b329957a172ead294ad9f8b4f6b3fb0c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/ide/src/hover/render.rs:122-129 | crates/ide/src/hover/render.rs:167-174 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover/render.rs"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad50d10ca430f3c0caef66ad5017647197920ffe8e27b7d55b01350deda4b729"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/ide/src/hover/render.rs:553-560 | crates/ide/src/hover/render.rs:587-594 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover/render.rs"},"region":{"startLine":553}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f3f0ea921d519aa694dda1e970d2d8c2d5ea3feb8b88673d6a1cdfe0fd7f82f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/ide-assists/src/handlers/convert_to_guarded_return.rs:125-132 | crates/ide-assists/src/handlers/convert_to_guarded_return.rs:204-211 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_to_guarded_return.rs"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc15be4db4815fa6ea947bd8cb936d67da9b5c2bb190378eb20d1ab33e6b47ae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/ide-assists/src/handlers/generate_enum_is_method.rs:59-66 | crates/ide-assists/src/handlers/generate_enum_projection_method.rs:137-144 \u2014 before extracting anything, compare \u0060crates/ide-assists/src/handlers/generate_enum_is_method.rs\u0060 and \u0060crates/ide-assists/src/handlers/generate_enum_projection_method.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 38 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_enum_is_method.rs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"f63bd81ddf6121742bfff8a97131abba0d2e65edf3dadd8a205cee63682f5ba8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/ide-assists/src/handlers/convert_named_struct_to_tuple_struct.rs:290-297 | crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs:348-355 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_named_struct_to_tuple_struct.rs"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"3031675ff45c1d7718efa82aa4fea6023219d01ed12a15049604dc78db6b0b13"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/ide-assists/src/handlers/convert_closure_to_fn.rs:115-122 | crates/ide-assists/src/handlers/convert_closure_to_fn.rs:126-133 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_closure_to_fn.rs"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d8d976e799696b19705d7a50e7ae7b71e6dac92a37b9d0411234ef5573ad687"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/ide-assists/src/handlers/bind_unused_param.rs:27-34 | crates/ide-assists/src/handlers/remove_unused_param.rs:69-76 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/bind_unused_param.rs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"0890ba189602eed468c02b417633733cea8baa6e4e81282c265dc48290f050c6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/ide-completion/src/completions/attribute.rs:101-108 | crates/ide-completion/src/completions/item_list.rs:47-54 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/attribute.rs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5ad903b3b0739568913534bc5dd1da260085984e08d2ae4fd1240ca2bfc1f7b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/ide-completion/src/completions/expr.rs:171-178 | crates/ide-completion/src/completions/type.rs:95-102 \u2014 before extracting anything, compare \u0060crates/ide-completion/src/completions/expr.rs\u0060 and \u0060crates/ide-completion/src/completions/type.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 46 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/expr.rs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"93e88b84688b1c64d312078eceea1f05a9624b361d62afd78849d17bf508296b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/intern/src/gc.rs:137-144 | crates/intern/src/gc.rs:150-157 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/intern/src/gc.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"b10a747bc8f1a4b688337b5921228101d72005570557f2ad696f57074852bf8a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/proc-macro-srv/src/token_stream.rs:209-216 | crates/proc-macro-srv/src/token_stream.rs:235-242 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-srv/src/token_stream.rs"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"eff1b023a6cf5fabec4aaba5b82099ed3bb1027dbe92f46901bb88611e717989"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (4\u20138 lines \u00D7 4): crates/rust-analyzer/src/cli/analysis_stats.rs:1505-1508 | crates/rust-analyzer/src/cli/analysis_stats.rs:1521-1524 | crates/rust-analyzer/src/cli/analysis_stats.rs:1543-1550 | crates/rust-analyzer/src/cli/analysis_stats.rs:1564-1571 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":1505}}}],"partialFingerprints":{"codehealthFindingId/v1":"2309c50969a939ffdf29c60277787ca00a20367d85a8318fdca8ddf1feb5593e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 2): crates/rust-analyzer/src/handlers/dispatch.rs:83-89 | crates/rust-analyzer/src/handlers/dispatch.rs:248-255 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/dispatch.rs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"54bf3bb907a5641bcf3f22a44e146ab0fdb1edd692bfe2beec4ef725e652ba4e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/syntax/src/ast/syntax_factory/constructors.rs:1259-1266 | crates/syntax/src/ast/syntax_factory/constructors.rs:1960-1969 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":1259}}}],"partialFingerprints":{"codehealthFindingId/v1":"da5e0c6d85b6c04b05d9d4c7da18a1d6febc60039bcfe4bbd47cd027cc82888d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): lib/smol_str/src/serde.rs:45-52 | lib/smol_str/src/serde.rs:55-62 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"lib/smol_str/src/serde.rs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"089eb37c65281fd8c5704d0c885094adc67c3f3f79cf181c03929f4745256b68"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 11): crates/syntax/src/ast/syntax_factory/constructors.rs:90-96 | crates/syntax/src/ast/syntax_factory/constructors.rs:293-299 | crates/syntax/src/ast/syntax_factory/constructors.rs:538-545 | crates/syntax/src/ast/syntax_factory/constructors.rs:783-789 | crates/syntax/src/ast/syntax_factory/constructors.rs:925-931 | crates/syntax/src/ast/syntax_factory/constructors.rs:1075-1081 | crates/syntax/src/ast/syntax_factory/constructors.rs:1625-1631 | crates/syntax/src/ast/syntax_factory/constructors.rs:1659-1665 | crates/syntax/src/ast/syntax_factory/constructors.rs:1709-1717 | crates/syntax/src/ast/syntax_factory/constructors.rs:1753-1761 | crates/syntax/src/ast/syntax_factory/constructors.rs:1849-1857 \u2014 all 11 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"104eda551333bf496eeaead228aa0846c269ec60adf517670e34f566fb70d5a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 9): crates/syntax/src/ast/syntax_factory/constructors.rs:173-179 | crates/syntax/src/ast/syntax_factory/constructors.rs:1001-1007 | crates/syntax/src/ast/syntax_factory/constructors.rs:1034-1040 | crates/syntax/src/ast/syntax_factory/constructors.rs:1579-1585 | crates/syntax/src/ast/syntax_factory/constructors.rs:1728-1734 | crates/syntax/src/ast/syntax_factory/constructors.rs:1771-1777 | crates/syntax/src/ast/syntax_factory/constructors.rs:1806-1812 | crates/syntax/src/ast/syntax_factory/constructors.rs:1874-1880 | crates/syntax/src/ast/syntax_factory/constructors.rs:2208-2214 \u2014 all 9 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"f14203437d160a69fdb43bf00ac37fae855ca8d7c89181db0c214a8af773b68e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 5): crates/syntax/src/syntax_editor/edits.rs:38-44 | crates/syntax/src/syntax_editor/edits.rs:60-66 | crates/syntax/src/syntax_editor/edits.rs:72-78 | crates/syntax/src/syntax_editor/edits.rs:90-96 | crates/syntax/src/syntax_editor/edits.rs:102-108 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/syntax_editor/edits.rs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6331d0403436dbb2a319877fddd0002a2956e6789e348bc3268ae43d3870932"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): crates/hir/src/lib.rs:5716-5722 | crates/hir/src/lib.rs:5731-5737 | crates/hir/src/lib.rs:5742-5748 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/lib.rs"},"region":{"startLine":5716}}}],"partialFingerprints":{"codehealthFindingId/v1":"dad84c15046bbd645a335e7abaa6d7ed370fc7d86ecc3032961be77c7eace8e8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): crates/hir-def/src/item_scope.rs:391-397 | crates/hir-def/src/item_scope.rs:402-408 | crates/hir-def/src/item_scope.rs:413-419 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_scope.rs"},"region":{"startLine":391}}}],"partialFingerprints":{"codehealthFindingId/v1":"9462a801c008fa1d67aad025277ae21d656418934765762b455e32bd05973021"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): crates/hir-ty/src/db.rs:385-391 | crates/hir-ty/src/db.rs:414-420 | crates/hir-ty/src/db.rs:444-450 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/db.rs"},"region":{"startLine":385}}}],"partialFingerprints":{"codehealthFindingId/v1":"16ad60ab51dd0054a3b4ed4936cd84cf999ef47879b9bdbfc68ced8e61ef436d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): crates/ide/src/hover/render.rs:120-127 | crates/ide/src/hover/render.rs:166-172 | crates/ide/src/hover/render.rs:983-989 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover/render.rs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"59dacaff61cd2c231df259fef195d4f6d848129017ac6b110e6ba6b0ae47ddc5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): crates/ide/src/hover/render.rs:166-172 | crates/ide/src/hover/render.rs:280-286 | crates/ide/src/hover/render.rs:983-989 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover/render.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"e31410412a09966b018f4cab8754611f35a611ea10a1fbb142fbf3631e7e8a8e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): crates/rust-analyzer/src/handlers/dispatch.rs:54-60 | crates/rust-analyzer/src/handlers/dispatch.rs:82-88 | crates/rust-analyzer/src/handlers/dispatch.rs:247-253 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/dispatch.rs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"b08d715f2608447c99df7f65570b66fa27a469903ab782605625e2a4bee85c18"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/hir/src/source_analyzer.rs:1317-1323 | crates/hir/src/source_analyzer.rs:1408-1414 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":1317}}}],"partialFingerprints":{"codehealthFindingId/v1":"abb9081f1d7e84c9cd2659c659cc36e1c7f10f4230981f1943ab78948b4ecccb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/hir-def/src/item_scope.rs:259-265 | crates/hir-def/src/item_scope.rs:274-280 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_scope.rs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"3390d6395405a83d6450e43a37930248254299da0354dace15073cd762b38960"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/hir-def/src/item_scope.rs:774-780 | crates/hir-def/src/item_scope.rs:792-798 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_scope.rs"},"region":{"startLine":774}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbb3b9ad98274d0848efb3eb7e69d2ffce9b609213407d2a19fc16602416a80b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/hir-def/src/resolver.rs:202-208 | crates/hir-def/src/resolver.rs:386-392 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/resolver.rs"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"7847564feb95102f1f314be8360cc48076357f8a9c7b9a7e3fdc9acbd1a2a596"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/hir-def/src/resolver.rs:230-236 | crates/hir-def/src/resolver.rs:459-465 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/resolver.rs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"71d64ad83c12d88ed2c5bdd7ee8731c5f371480f671b1df61ae268f944c32b74"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/hir-ty/src/display.rs:996-1002 | crates/hir-ty/src/display.rs:1022-1028 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":996}}}],"partialFingerprints":{"codehealthFindingId/v1":"551d955542f763a0c8ee39c2a169696da2075ff9479d2c06368bd3824de6be35"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/hir-ty/src/lower/path.rs:363-369 | crates/hir-ty/src/lower/path.rs:419-425 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"295e90668677c1a3f48feff0f9b522a5e95868b03334e6dd75bb564eb6040849"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6\u20137 lines \u00D7 2): crates/ide/src/hover/render.rs:529-534 | crates/ide/src/hover/render.rs:562-568 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover/render.rs"},"region":{"startLine":529}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4f18cb0dfba1d55f466e0e01372de6f504fb684f06a1f4842fadb7060ca3ef0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/ide/src/signature_help.rs:595-601 | crates/ide/src/signature_help.rs:729-735 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/signature_help.rs"},"region":{"startLine":595}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d537c05cce1288681385ba55d4c88d4d1757d7b2f976763573120cca85c3421"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/ide/src/typing.rs:259-265 | crates/ide/src/typing.rs:295-301 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/typing.rs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"562e3cbf38ea506ed3f135d6623c012d9e873ee811fb540d675db73da5366214"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/ide/src/inlay_hints/lifetime.rs:79-85 | crates/ide/src/inlay_hints/lifetime.rs:146-152 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints/lifetime.rs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"2135c912dae6cd36bb2754559004dbd1ee73c118406063ce0fed423ef300fc14"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/ide-assists/src/handlers/add_missing_match_arms.rs:167-173 | crates/ide-assists/src/handlers/add_missing_match_arms.rs:200-206 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/add_missing_match_arms.rs"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"12d84bb3136b2ad1f4b3e917cc883976efa0b564608b6e1baa1432346761ada3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/ide-assists/src/handlers/convert_named_struct_to_tuple_struct.rs:162-168 | crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs:151-157 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_named_struct_to_tuple_struct.rs"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"834b90290027883995202a0e4e3fe8e5b0bf89c130189a6cc0ce861ec5b04f06"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/ide-db/src/active_parameter.rs:177-183 | crates/syntax/src/ast/node_ext.rs:59-65 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/active_parameter.rs"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b435362821d65a19bf40367f1ff2af65a06763a4e59a1b010159629d12ba8a8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/ide-db/src/syntax_helpers/node_ext.rs:179-185 | crates/ide-db/src/syntax_helpers/node_ext.rs:207-213 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/syntax_helpers/node_ext.rs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ea3dcd4ca38b5d890794afa35f38640f630d7f4d230c266f56ea739349ed36e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/ide-diagnostics/src/handlers/type_mismatch.rs:392-398 | crates/ide-diagnostics/src/handlers/type_mismatch.rs:416-422 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/type_mismatch.rs"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"70ba2a646b58714fe1324ee4a4703a49d8d5483996b82caff9cc18b2cf6244f1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/parser/src/grammar/items/adt.rs:143-149 | crates/parser/src/grammar/items/adt.rs:155-161 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/grammar/items/adt.rs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"23e3da18c8deefecfe0cbec906181cba61a6040e098cb934c6af8e3a069d3224"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/proc-macro-api/src/legacy_protocol/msg/flat.rs:370-376 | crates/proc-macro-api/src/legacy_protocol/msg/flat.rs:389-395 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-api/src/legacy_protocol/msg/flat.rs"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"be97fb4db3c5149abd7d3eff93e0fbbde59ed4c92aabf45b6b57240db249efef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/proc-macro-srv/src/token_stream.rs:294-300 | crates/proc-macro-srv/src/token_stream.rs:310-316 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-srv/src/token_stream.rs"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d149c5d83f99d42015483488e7c3e6c06fa84bb920ee35ff6b8d9a4fdf648b6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/rust-analyzer/src/cli/analysis_stats.rs:1197-1203 | crates/rust-analyzer/src/cli/analysis_stats.rs:1235-1241 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":1197}}}],"partialFingerprints":{"codehealthFindingId/v1":"528ba85c364a11b1a4f2aced3d4c1555e4483c316708bc9742abc28e39ac5621"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/rust-analyzer/src/handlers/dispatch.rs:117-123 | crates/rust-analyzer/src/handlers/dispatch.rs:192-198 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/dispatch.rs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3e359888107c97e4204bea6b2a58033deb44a86fd831e07154efbaa72bea3be"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6\u20137 lines \u00D7 2): crates/span/src/lib.rs:94-99 | crates/span/src/lib.rs:113-119 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/span/src/lib.rs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"21cd11e3122be0f5f3b8f45b56eabe98d9256e0f1bbf0ccbf1bd5d6a2fe93381"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/syntax/src/ast/syntax_factory/constructors.rs:593-599 | crates/syntax/src/ast/syntax_factory/constructors.rs:796-802 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":593}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b1c12fad8e983f4c526b197c6c5b68154d0fbfa808fa3cf3508342491b7bcee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/macros/src/lib.rs:100-106 | crates/macros/src/lib.rs:118-124 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/macros/src/lib.rs"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"970cf81d8b79ea7bc3fed24ee2fac9f698132c94648f8d04e525060f393189ca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 13): crates/syntax/src/ast/syntax_factory/constructors.rs:174-179 | crates/syntax/src/ast/syntax_factory/constructors.rs:181-187 | crates/syntax/src/ast/syntax_factory/constructors.rs:649-654 | crates/syntax/src/ast/syntax_factory/constructors.rs:1545-1550 | crates/syntax/src/ast/syntax_factory/constructors.rs:1580-1585 | crates/syntax/src/ast/syntax_factory/constructors.rs:1729-1734 | crates/syntax/src/ast/syntax_factory/constructors.rs:1772-1777 | crates/syntax/src/ast/syntax_factory/constructors.rs:1807-1812 | crates/syntax/src/ast/syntax_factory/constructors.rs:1823-1831 | crates/syntax/src/ast/syntax_factory/constructors.rs:1875-1880 | crates/syntax/src/ast/syntax_factory/constructors.rs:1939-1944 | crates/syntax/src/ast/syntax_factory/constructors.rs:1952-1957 | crates/syntax/src/ast/syntax_factory/constructors.rs:2215-2222 \u2014 all 13 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"5199198c9cf26b39a76d3dd39f6ec38d3047054e21558912bfdfbb7fb7f1418f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (1\u20136 lines \u00D7 13): crates/syntax/src/ast/syntax_factory/constructors.rs:465-470 | crates/syntax/src/ast/syntax_factory/constructors.rs:571-573 | crates/syntax/src/ast/syntax_factory/constructors.rs:869-874 | crates/syntax/src/ast/syntax_factory/constructors.rs:1089-1094 | crates/syntax/src/ast/syntax_factory/constructors.rs:1104-1109 | crates/syntax/src/ast/syntax_factory/constructors.rs:1145-1150 | crates/syntax/src/ast/syntax_factory/constructors.rs:1164-1169 | crates/syntax/src/ast/syntax_factory/constructors.rs:1338-1338 | crates/syntax/src/ast/syntax_factory/constructors.rs:1352-1357 | crates/syntax/src/ast/syntax_factory/constructors.rs:1552-1552 | crates/syntax/src/ast/syntax_factory/constructors.rs:1588-1588 | crates/syntax/src/ast/syntax_factory/constructors.rs:1605-1610 | crates/syntax/src/ast/syntax_factory/constructors.rs:1737-1743 \u2014 all 13 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":465}}}],"partialFingerprints":{"codehealthFindingId/v1":"2da303cd79f2777df1a09d3b2b8ef6574bd8783c7d337dec830eacd0e9943144"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 5): crates/syntax/src/ast/syntax_factory/constructors.rs:181-186 | crates/syntax/src/ast/syntax_factory/constructors.rs:674-679 | crates/syntax/src/ast/syntax_factory/constructors.rs:1816-1821 | crates/syntax/src/ast/syntax_factory/constructors.rs:1884-1889 | crates/syntax/src/ast/syntax_factory/constructors.rs:2173-2178 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"77f19145b025f0b64c7df53b66fe9264fa892475eb15dbf53aeeca4a6efca549"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 4): crates/syntax/src/ast/syntax_factory/constructors.rs:410-415 | crates/syntax/src/ast/syntax_factory/constructors.rs:649-654 | crates/syntax/src/ast/syntax_factory/constructors.rs:1545-1550 | crates/syntax/src/ast/syntax_factory/constructors.rs:1939-1944 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"9896bd6e490fceac567432675eb976ebc8d8d485a06bcb04a18f10610457b583"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 4): crates/syntax/src/ast/syntax_factory/constructors.rs:606-611 | crates/syntax/src/ast/syntax_factory/constructors.rs:1120-1125 | crates/syntax/src/ast/syntax_factory/constructors.rs:1191-1196 | crates/syntax/src/ast/syntax_factory/constructors.rs:1224-1229 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":606}}}],"partialFingerprints":{"codehealthFindingId/v1":"14a0c64ae53f87f62e08849f811a57f80363ba551c866d10e3aa6bccc81e4fd3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): crates/hir/src/semantics.rs:2308-2313 | crates/hir/src/semantics.rs:2315-2320 | crates/hir/src/semantics.rs:2322-2327 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":2308}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ff80a7241dec1d605f6d97a1bba53c3ee3e69f4d461a3d66bd36dcba085dad7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): crates/hir-def/src/visibility.rs:336-341 | crates/hir-def/src/visibility.rs:343-348 | crates/hir-def/src/visibility.rs:350-355 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/visibility.rs"},"region":{"startLine":336}}}],"partialFingerprints":{"codehealthFindingId/v1":"e419736fd21c2ea75670174f1fb14fdfedaf2d097db7844694613a3bdbda8655"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): crates/syntax/src/ast/make.rs:492-497 | crates/syntax/src/ast/make.rs:1008-1013 | crates/syntax/src/ast/make.rs:1308-1313 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/make.rs"},"region":{"startLine":492}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa6ded39e7bfd2edf3e5d54354786e890094b4dda2d79bc08ca034a490fb2a92"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/hir/src/source_analyzer.rs:1546-1551 | crates/hir/src/source_analyzer.rs:1563-1568 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":1546}}}],"partialFingerprints":{"codehealthFindingId/v1":"743876b756e44f0164698526a8fdb0b6f16e6b0d532bf53ad05f9ab8edd8a7f5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/hir/src/term_search/expr.rs:130-135 | crates/hir/src/term_search/expr.rs:159-164 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/term_search/expr.rs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"fae546ff00070c15f3c1310590560accd76cfd09fafde50b01935fd120d9fbcb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/hir/src/term_search/expr.rs:130-135 | crates/hir/src/term_search/expr.rs:271-276 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/term_search/expr.rs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd40f0df3f1c1ff259cb2fd2b5f18445339e5cba528d932599e41e020e059e50"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/hir-def/src/expr_store/lower.rs:1179-1184 | crates/hir-def/src/expr_store/lower.rs:1208-1213 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":1179}}}],"partialFingerprints":{"codehealthFindingId/v1":"08e8ebb478934ba9b41ca95769b6aab1449251f46c951217a2afb82c09f27b07"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/hir-def/src/item_scope.rs:244-249 | crates/hir-def/src/item_scope.rs:259-264 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_scope.rs"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b4247c7ceae5c872e8f84fca9d1adbf6f49037ceada12983478013383492b49"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/hir-ty/src/infer/coerce.rs:1000-1005 | crates/hir-ty/src/infer/coerce.rs:1007-1012 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/coerce.rs"},"region":{"startLine":1000}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ab31a23bcd1be0e72ccfa2a5ae2af8a4fbab3bf42f9f29cb664a4f3a13df70c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/hir-ty/src/mir/eval/shim.rs:235-240 | crates/hir-ty/src/mir/eval/shim.rs:247-252 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"b13223db344afc168b43987e9c2eb5745e00752ebc03e2aa1c33dc46d8e7d94f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/hir-ty/src/next_solver/consts/valtree.rs:163-168 | crates/hir-ty/src/next_solver/consts/valtree.rs:236-241 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/consts/valtree.rs"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"666913c67d565fb04117ae5032eda9726e3eb691a678b7a6b96703fdb7d3208b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/hir-ty/src/next_solver/infer/errors.rs:161-166 | crates/hir-ty/src/next_solver/infer/errors.rs:168-173 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/errors.rs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"9918e7bf5de802833db1f3f903bf8e853fc88144df92a1ad8b26623161541bba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/hir-ty/src/next_solver/interner.rs:1215-1220 | crates/hir-ty/src/next_solver/interner.rs:1229-1234 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/interner.rs"},"region":{"startLine":1215}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7ea470564b9935e50c6c18759940e729535ab036891777942877d74aa1a3ac3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/ide-assists/src/handlers/expand_glob_import.rs:51-56 | crates/ide-assists/src/handlers/expand_glob_import.rs:109-114 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/expand_glob_import.rs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"6032ca745da60c2467fb6725367c23915e6974881b17b03b8ff70686b775d717"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/ide-assists/src/handlers/unwrap_return_type.rs:41-46 | crates/ide-assists/src/handlers/wrap_return_type.rs:44-49 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/unwrap_return_type.rs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"81e6531c89683a75e8b957a2c6567dc3fe7c6eb6f746a82edd83104ee1bf24e4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5\u20136 lines \u00D7 2): crates/ide-assists/src/handlers/generate_default_from_new.rs:98-103 | crates/ide-assists/src/utils.rs:623-627 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_default_from_new.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"924ec4658e39e082358f8c037e97f3a42b4cd1e81b4c818e886ff3af4b151447"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/ide-assists/src/handlers/convert_from_to_tryfrom.rs:45-50 | crates/ide-assists/src/handlers/convert_into_to_from.rs:60-65 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_from_to_tryfrom.rs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"23a48185772e8fb9cb46b03909a30efcd7ef4dfd3445956dd8cc875f4d82b93a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/ide-assists/src/handlers/convert_for_to_while_let.rs:152-157 | crates/ide-assists/src/handlers/convert_iter_for_each_to_for.rs:194-199 \u2014 before extracting anything, compare \u0060crates/ide-assists/src/handlers/convert_for_to_while_let.rs\u0060 and \u0060crates/ide-assists/src/handlers/convert_iter_for_each_to_for.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 47 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_for_to_while_let.rs"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a4880a99ba80677de54786c0691ab0033dec9857adf7329408cb4dbfc17817d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/ide-assists/src/handlers/convert_for_to_while_let.rs:158-163 | crates/ide-assists/src/handlers/convert_iter_for_each_to_for.rs:200-205 \u2014 before extracting anything, compare \u0060crates/ide-assists/src/handlers/convert_for_to_while_let.rs\u0060 and \u0060crates/ide-assists/src/handlers/convert_iter_for_each_to_for.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 47 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_for_to_while_let.rs"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a5e8bc3da173db3dbffe20671eb5cdbd3594a1d67da2da1fb712073b6374c48"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/ide-assists/src/utils/gen_trait_fn_body.rs:56-61 | crates/ide-assists/src/utils/gen_trait_fn_body.rs:166-171 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/utils/gen_trait_fn_body.rs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b93493818507e12222b8e75028b610e4072d70f27a7d8e770e6dabbbf78e23a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/ide-assists/src/utils/gen_trait_fn_body.rs:197-202 | crates/ide-assists/src/utils/gen_trait_fn_body.rs:231-236 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/utils/gen_trait_fn_body.rs"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f2427cff5dfea721aca5d65c00c9ef318a7287612c6d615b0190087f1e2d565"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/ide-assists/src/utils/gen_trait_fn_body.rs:391-397 | crates/ide-assists/src/utils/gen_trait_fn_body.rs:671-676 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/utils/gen_trait_fn_body.rs"},"region":{"startLine":391}}}],"partialFingerprints":{"codehealthFindingId/v1":"370148e2d1d1b4afc671f71643d5d3cee404127ef37b5023a0847e4e129ea412"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/ide-assists/src/utils/gen_trait_fn_body.rs:503-508 | crates/ide-assists/src/utils/gen_trait_fn_body.rs:536-541 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/utils/gen_trait_fn_body.rs"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ebcecd1cea5bc3ec614121e7c2c5966e810234688db56159095548d9df667fe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/ide-assists/src/handlers/remove_unused_param.rs:166-171 | crates/ide-assists/src/handlers/remove_unused_param.rs:191-196 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/remove_unused_param.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"8003b2e47890ffedc65bde6dab0cdb87a3fff08d467376696a953fabc5b8008f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/load-cargo/src/lib.rs:596-601 | crates/load-cargo/src/lib.rs:633-638 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/load-cargo/src/lib.rs"},"region":{"startLine":596}}}],"partialFingerprints":{"codehealthFindingId/v1":"571818771616bed9592708ff7651a65b87daa8348355bcc2c4c504be64b64997"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/rust-analyzer/src/cli/analysis_stats.rs:456-461 | crates/rust-analyzer/src/cli/analysis_stats.rs:1339-1344 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":456}}}],"partialFingerprints":{"codehealthFindingId/v1":"042708ee9b6d338c3344bc3da68abe0e086162dd7101fb02a8068f852c6675f5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/rust-analyzer/src/cli/analysis_stats.rs:844-849 | crates/rust-analyzer/src/cli/analysis_stats.rs:1265-1270 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":844}}}],"partialFingerprints":{"codehealthFindingId/v1":"687560920a6b5c62f5b897d35ce39155d998c5c00c89288f83290b17e7a30604"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/rust-analyzer/src/handlers/request.rs:1074-1079 | crates/rust-analyzer/src/handlers/request.rs:1108-1113 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/request.rs"},"region":{"startLine":1074}}}],"partialFingerprints":{"codehealthFindingId/v1":"21b1c3f6cd39145972087c91e5a27cd1235884df363e4554bd2d13d403f3d669"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/syntax/src/syntax_editor/edits.rs:131-136 | crates/syntax/src/syntax_editor/edits.rs:148-153 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/syntax_editor/edits.rs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"38c1ebafb038845bde5b44a98666900e85e082a761e574d65fa9eecf12b84b55"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/syntax/src/validation.rs:407-412 | crates/syntax/src/validation.rs:421-426 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/validation.rs"},"region":{"startLine":407}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf21567d42277564b916d53854bab4711157faacbe8e334d0ddb9583bdb2fcc5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/syntax/src/algo.rs:82-87 | crates/syntax/src/algo.rs:102-107 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/algo.rs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a0339bca445fe8413d46f9fc102066b6840c6ef2e668e162b0e06cd23f0aaa2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/syntax/src/ast/syntax_factory/constructors.rs:362-367 | crates/syntax/src/ast/syntax_factory/constructors.rs:2166-2171 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf5e59469310854ed421d1ba65af9e42ed9be41ed78001e53d8d1f6881c191fa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (2\u20136 lines \u00D7 20): crates/syntax/src/ast/syntax_factory/constructors.rs:57-58 | crates/syntax/src/ast/syntax_factory/constructors.rs:463-464 | crates/syntax/src/ast/syntax_factory/constructors.rs:564-569 | crates/syntax/src/ast/syntax_factory/constructors.rs:604-605 | crates/syntax/src/ast/syntax_factory/constructors.rs:625-626 | crates/syntax/src/ast/syntax_factory/constructors.rs:830-831 | crates/syntax/src/ast/syntax_factory/constructors.rs:867-868 | crates/syntax/src/ast/syntax_factory/constructors.rs:1087-1088 | crates/syntax/src/ast/syntax_factory/constructors.rs:1097-1102 | crates/syntax/src/ast/syntax_factory/constructors.rs:1118-1119 | crates/syntax/src/ast/syntax_factory/constructors.rs:1143-1144 | crates/syntax/src/ast/syntax_factory/constructors.rs:1161-1162 | crates/syntax/src/ast/syntax_factory/constructors.rs:1283-1284 | crates/syntax/src/ast/syntax_factory/constructors.rs:1305-1306 | crates/syntax/src/ast/syntax_factory/constructors.rs:1318-1319 | crates/syntax/src/ast/syntax_factory/constructors.rs:1336-1337 | crates/syntax/src/ast/syntax_factory/constructors.rs:1375-1376 | crates/syntax/src/ast/syntax_factory/constructors.rs:1603-1604 | crates/syntax/src/ast/syntax_factory/constructors.rs:1640-1641 | crates/syntax/src/ast/syntax_factory/constructors.rs:2283-2284 \u2014 all 20 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e73f555024efc7af25a04eee9b04c9ea948ec2550d2ca5fd40b95d3c7a8b37e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/syntax/src/ast/syntax_factory/constructors.rs:1320-1325 | crates/syntax/src/ast/syntax_factory/constructors.rs:1339-1344 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":1320}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa3972d98c307a954bacdaf82dfb646cf1671f16b257d77bc1af85f500fa935f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): xtask/src/codegen/diagnostics_docs.rs:35-40 | xtask/src/codegen/feature_docs.rs:34-39 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"xtask/src/codegen/diagnostics_docs.rs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"a67ceadf5862c92083704d6c07d669702473aca4d0d6e8f6a2a977f1030036be"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/macros/src/lib.rs:98-103 | crates/macros/src/lib.rs:209-214 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/macros/src/lib.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"5630cbd0a4f9289a63b1f096adb291e336193404f891a037346ffcd28c7e9635"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 22): crates/syntax/src/ast/syntax_factory/constructors.rs:59-64 | crates/syntax/src/ast/syntax_factory/constructors.rs:200-205 | crates/syntax/src/ast/syntax_factory/constructors.rs:212-217 | crates/syntax/src/ast/syntax_factory/constructors.rs:477-482 | crates/syntax/src/ast/syntax_factory/constructors.rs:505-510 | crates/syntax/src/ast/syntax_factory/constructors.rs:698-703 | crates/syntax/src/ast/syntax_factory/constructors.rs:751-756 | crates/syntax/src/ast/syntax_factory/constructors.rs:763-768 | crates/syntax/src/ast/syntax_factory/constructors.rs:881-886 | crates/syntax/src/ast/syntax_factory/constructors.rs:938-943 | crates/syntax/src/ast/syntax_factory/constructors.rs:954-959 | crates/syntax/src/ast/syntax_factory/constructors.rs:983-988 | crates/syntax/src/ast/syntax_factory/constructors.rs:1063-1068 | crates/syntax/src/ast/syntax_factory/constructors.rs:1132-1137 | crates/syntax/src/ast/syntax_factory/constructors.rs:1364-1369 | crates/syntax/src/ast/syntax_factory/constructors.rs:1428-1433 | crates/syntax/src/ast/syntax_factory/constructors.rs:1511-1516 | crates/syntax/src/ast/syntax_factory/constructors.rs:1523-1528 | crates/syntax/src/ast/syntax_factory/constructors.rs:2026-2031 | crates/syntax/src/ast/syntax_factory/constructors.rs:2038-2043 | crates/syntax/src/ast/syntax_factory/constructors.rs:2236-2240 | crates/syntax/src/ast/syntax_factory/constructors.rs:2285-2290 \u2014 all 22 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bb95cc378812746b58340513f314746e19dd05901ed030db09c25b8c7af492e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (3\u20135 lines \u00D7 5): crates/ide/src/highlight_related.rs:315-319 | crates/ide/src/highlight_related.rs:398-402 | crates/ide/src/highlight_related.rs:505-509 | crates/ide/src/highlight_related.rs:598-602 | crates/ide/src/highlight_related.rs:798-800 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/highlight_related.rs"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff1f3e9251155e7c82d5e06e4985fa2ba9dca2803fbb95f91887800572dfeb01"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): crates/syntax/src/ast/syntax_factory/constructors.rs:316-320 | crates/syntax/src/ast/syntax_factory/constructors.rs:1186-1190 | crates/syntax/src/ast/syntax_factory/constructors.rs:1219-1223 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e03cfb18670804cbd55e063e82138a0550fed84c6dbf7be58b3ab9c3b286d62"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/hir/src/lib.rs:3900-3904 | crates/hir/src/lib.rs:3918-3922 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/lib.rs"},"region":{"startLine":3900}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7d988cdbb6d25e8c62191939b8816b45d65ef6182de0e3b66598519b490d283"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/hir/src/source_analyzer.rs:1513-1517 | crates/hir/src/source_analyzer.rs:1529-1533 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":1513}}}],"partialFingerprints":{"codehealthFindingId/v1":"c57d7d2bf5c458cb986a559fa7c57d1ed7cb964582407ad8bcb43f89b571988d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): crates/hir-def/src/expr_store/body.rs:111-115 | crates/hir-def/src/expr_store/body.rs:117-121 | crates/hir-def/src/expr_store/body.rs:122-126 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/body.rs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"111a7ba209a8b4cd00d3b21bc91e8d265e3fad5437c418d5999a7115a7c23379"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/hir-def/src/expr_store/lower.rs:1185-1189 | crates/hir-def/src/expr_store/lower.rs:1196-1200 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":1185}}}],"partialFingerprints":{"codehealthFindingId/v1":"952cffd77d8cdeea1a9922b346c31091ce406f24d8dc6e640674ed557dfc269a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/hir-ty/src/consteval.rs:180-184 | crates/hir-ty/src/next_solver/ty.rs:692-696 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/consteval.rs"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"8de84ad4ea5d8aefc24e9f24e0dc3913dd910cbf367b9f800489fe13ef345668"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/hir-ty/src/consteval.rs:191-195 | crates/hir-ty/src/next_solver/ty.rs:700-704 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/consteval.rs"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"20d2cf927ff53e00ac861770a848641a19304e43ece994d955e1029921f85352"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/hir-ty/src/consteval.rs:200-204 | crates/hir-ty/src/next_solver/ty.rs:706-710 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/consteval.rs"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"5920908f5066aa9ded920ee93a84cf2dc4f7b2a2c41c1b79f96247fd4eb6a917"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/hir-ty/src/infer/cast.rs:462-466 | crates/hir-ty/src/infer/cast.rs:492-496 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/cast.rs"},"region":{"startLine":462}}}],"partialFingerprints":{"codehealthFindingId/v1":"af4258210a6f9e54b865810de12df61ed54a2c8d65ac8a962ede668dffe6f801"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/hir-ty/src/method_resolution.rs:594-598 | crates/hir-ty/src/method_resolution.rs:710-714 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/method_resolution.rs"},"region":{"startLine":594}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5f99c04463bb49f06f208ca701cd374349f6caa90cd8f95c475232a4f2600bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/hir-ty/src/mir/eval.rs:1976-1980 | crates/hir-ty/src/mir/eval.rs:1988-1992 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":1976}}}],"partialFingerprints":{"codehealthFindingId/v1":"101e07d62c788de99305c5de6d5faad7b5a5f786923e45302a34ac4172f511c3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/hir-ty/src/mir/eval.rs:1992-1996 | crates/hir-ty/src/mir/eval.rs:2001-2005 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":1992}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d5a3cf2c89a2093278f5aaea3c43efa1de17d0eb7b769386193179616cabca4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/ide/src/navigation_target.rs:713-717 | crates/ide/src/navigation_target.rs:785-789 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/navigation_target.rs"},"region":{"startLine":713}}}],"partialFingerprints":{"codehealthFindingId/v1":"cada6558ce43b0b1eb8cad0d90f1912595f86acb846e376ad0cbd8c8ddb3962d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/ide/src/interpret.rs:43-47 | crates/ide/src/interpret.rs:71-75 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/interpret.rs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ba5b18af42c1c0fc503f51ebcbea644b1758fe1fbd252e7cba4267e7603555a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/ide-assists/src/handlers/convert_bool_to_enum.rs:494-498 | crates/ide-assists/src/handlers/convert_tuple_return_type_to_struct.rs:242-246 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_bool_to_enum.rs"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f265d60095861b2b313b4be8997417967c1b1549d2502a9906c3029a60cdd8f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (3\u20135 lines \u00D7 3): crates/ide-assists/src/handlers/extract_function.rs:1510-1514 | crates/ide-assists/src/handlers/extract_function.rs:1529-1533 | crates/ide-assists/src/handlers/extract_function.rs:1535-1537 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_function.rs"},"region":{"startLine":1510}}}],"partialFingerprints":{"codehealthFindingId/v1":"19e8a6945808783604ac38ab00bb682333321f3bdbc5fbdac66f0aaba66118b9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/ide-assists/src/handlers/introduce_named_lifetime.rs:102-106 | crates/ide-assists/src/handlers/introduce_named_lifetime.rs:171-175 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/introduce_named_lifetime.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"d49961f2049c6fac5938e905b2110a8a98473ab8c7f402605cd3c6514c69eb43"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/ide-assists/src/handlers/convert_named_struct_to_tuple_struct.rs:76-80 | crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs:78-82 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_named_struct_to_tuple_struct.rs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dff2691c5a140660e66884131a62266120be485de98149c27810393f1acb4fe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/ide-assists/src/handlers/apply_demorgan.rs:276-280 | crates/ide-assists/src/handlers/convert_iter_for_each_to_for.rs:227-231 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/apply_demorgan.rs"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"56ace15491a1092f685a529f1cb6e1a1a4e8a9bbe6d24680cfd7aa34c8fc096f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/ide-assists/src/utils/gen_trait_fn_body.rs:179-183 | crates/ide-assists/src/utils/gen_trait_fn_body.rs:213-217 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/utils/gen_trait_fn_body.rs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"96854ab50d5d20550195724d3db6ebafedfd4ff9a3f2b27bd17b3d9351a75507"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/ide-completion/src/completions/record.rs:32-36 | crates/ide-completion/src/completions/record.rs:60-64 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/record.rs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"48781265ea071f5e6ba049b8c1705b0f1a0b03aba4f05c2b64b343734e15f527"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/ide-db/src/imports/merge_imports.rs:505-509 | crates/ide-db/src/imports/merge_imports.rs:530-534 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/merge_imports.rs"},"region":{"startLine":505}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dce3422105578d159a036781b74f3bf59018e9ca60352b31fcbc4450ce33664"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/ide-db/src/syntax_helpers/format_string.rs:254-258 | crates/ide-db/src/syntax_helpers/format_string.rs:272-276 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/syntax_helpers/format_string.rs"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b86b0d0bcbf075e500dbd8b1ab40549527185c9bfda53786a2dcea493fe59f3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/ide-db/src/syntax_helpers/node_ext.rs:98-102 | crates/ide-db/src/syntax_helpers/node_ext.rs:139-143 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/syntax_helpers/node_ext.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"12c91172b443d2da03fa6442ace473c8dba1fd83e56f6f918118d7af05bad360"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/ide-ssr/src/fragments.rs:29-33 | crates/ide-ssr/src/fragments.rs:52-56 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-ssr/src/fragments.rs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddab90c26974054d969b786d1550687199bc86541dae10bd15f7741d1924286d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/parser/src/grammar/items.rs:368-372 | crates/parser/src/grammar/items.rs:377-381 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/grammar/items.rs"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdc159576a1df6e8ed37e64c632c545fc1ac188d79cb69b515a13e846a521df0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/parser/src/grammar/expressions/atom.rs:326-330 | crates/parser/src/grammar/patterns.rs:225-231 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/grammar/expressions/atom.rs"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffc5f3680a2a65d2364bed15084005ee8be9b78dd57277d45f5495c77fdc8d3f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (3\u20135 lines \u00D7 4): crates/rust-analyzer/src/cli/analysis_stats.rs:1500-1504 | crates/rust-analyzer/src/cli/analysis_stats.rs:1516-1520 | crates/rust-analyzer/src/cli/analysis_stats.rs:1538-1540 | crates/rust-analyzer/src/cli/analysis_stats.rs:1559-1561 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":1500}}}],"partialFingerprints":{"codehealthFindingId/v1":"229916b5996fca5f846a8209b589b469e7e9669ce7656a2e355500e336439737"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/syntax/src/syntax_editor/edits.rs:247-251 | crates/syntax/src/syntax_editor/edits.rs:263-267 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/syntax_editor/edits.rs"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"010c127d3838ded77e1aa995b81efc09b0e2ddf2cfeb5f7b32658a59323593cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/syntax/src/ast/syntax_factory/constructors.rs:535-539 | crates/syntax/src/ast/syntax_factory/constructors.rs:1242-1246 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":535}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb4c15864386d775438a7c414a5d0ecdc0b4fb619a23b7f064f1c644682d3b6b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/syntax-bridge/src/to_parser_input.rs:92-96 | crates/syntax-bridge/src/to_parser_input.rs:104-108 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax-bridge/src/to_parser_input.rs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"42828b2fed9e5e946b401713448c2ebed53e98af589d66fbeee02b2d58862b62"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/base-db/src/lib.rs:433-438 | crates/stdx/src/panic_context.rs:42-47 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/base-db/src/lib.rs"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a49dd7d9c7ea735c47328862dd05d90b13b1a79dbd226651a048ca1683df55b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/hir-def/src/expr_store/pretty.rs:486-492 | crates/hir-def/src/item_tree/pretty.rs:63-69 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/pretty.rs"},"region":{"startLine":486}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a9a6f10d86a7ba737a939477dbb2a1417e203c54a10e410a63454daf8772950"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/hir-def/src/lib.rs:856-863 | crates/hir-ty/src/next_solver/def_id.rs:175-182 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/lib.rs"},"region":{"startLine":856}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6a21b33f878efc52892ee26712b4d5c418c28e3b08851fa827b27e4707c84e0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/hir-ty/src/diagnostics/match_check/pat_util.rs:19-23 | crates/hir-ty/src/utils.rs:149-153 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/match_check/pat_util.rs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"e699c7ff93fd803c50d7ad5626f826ca2de2fe22f0b1dc5d2f06f4580e52e179"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 4): crates/hir-ty/src/next_solver/infer/at.rs:213-218 | crates/hir-ty/src/next_solver/infer/at.rs:228-233 | crates/hir-ty/src/next_solver/infer/mod.rs:1327-1332 | crates/hir-ty/src/next_solver/infer/mod.rs:1342-1347 \u2014 there are 4 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 4 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/at.rs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb2efa4a21c76605d796283815f0ab9eef259944e0614e4119674d253a3c67d7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/ide-db/src/imports/merge_imports.rs:647-653 | crates/ide/src/folding_ranges.rs:385-391 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/merge_imports.rs"},"region":{"startLine":647}}}],"partialFingerprints":{"codehealthFindingId/v1":"277ee11e60a237f0962ff2b4fbd94689fecd99f92e1432335cebb334f6965503"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/intern/src/intern.rs:102-107 | crates/intern/src/symbol.rs:181-186 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/intern/src/intern.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c5da0732978dc760e21dca4d678728b93122278dc0db737b727a7991b09822f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): crates/proc-macro-srv/src/server_impl/rust_analyzer_span.rs:101-111 | crates/proc-macro-srv/src/server_impl/token_id.rs:94-104 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-srv/src/server_impl/rust_analyzer_span.rs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"0347468357130ef8935c8d39a7db99940b647478884fd32d88d97f2777283f7a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/proc-macro-srv-cli/src/version.rs:28-35 | crates/rust-analyzer/src/version.rs:27-34 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-srv-cli/src/version.rs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"b548dbb31abd746d303a0c4a761cf5c7598a22bfb5504fa6d43549d3a59c3dda"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): crates/syntax/src/ast/expr_ext.rs:76-85 | crates/syntax/src/ast/node_ext.rs:1138-1147 | crates/syntax/src/ast/node_ext.rs:1160-1169 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/expr_ext.rs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fb924879df06c9f7e32eeeff4931db99d9a0320be9a19e47e492679b5a2f76e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/hir/src/attrs.rs:282-288 | crates/ide/src/navigation_target.rs:621-627 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/attrs.rs"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"b10636b1015f8d389ea2c9b08e3d28109ba8f0031e6191a2d9a947f32f4f9a3c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): crates/hir/src/lib.rs:2788-2795 | crates/hir/src/lib.rs:2809-2816 | crates/ide-db/src/defs.rs:929-936 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/lib.rs"},"region":{"startLine":2788}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2bb06999d7aa0cbbc62a2820fc3ea5d4f16671f56210cef1b68ccf8b134187c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/hir-def/src/item_scope.rs:977-982 | crates/hir/src/lib.rs:2696-2701 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_scope.rs"},"region":{"startLine":977}}}],"partialFingerprints":{"codehealthFindingId/v1":"e33046f5c84172ddaf15fab3d753aedb8b78c4b89edbc205fc79fcfa8a0bbb23"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/hir-ty/src/display.rs:2010-2015 | crates/hir-ty/src/next_solver/generic_arg.rs:374-379 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":2010}}}],"partialFingerprints":{"codehealthFindingId/v1":"b64340cf6366c801de48ff864c43ddbea268fbadb06d0b092f605dcfcdade194"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/hir-ty/src/next_solver/consts.rs:69-77 | crates/hir-ty/src/next_solver/ty.rs:93-101 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/consts.rs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"46d8a6f10f0778228fcf92927afe5618fc1555024f871858658d6769e4069981"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/hir-ty/src/next_solver/fold.rs:74-79 | crates/hir-ty/src/next_solver/infer/canonical/canonicalizer.rs:304-309 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/fold.rs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a898ad0068aa0c8d1958da3205f48b6160670f75cb46feefe89388e7c65ccb8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): crates/rust-analyzer/src/cli/analysis_stats.rs:1011-1024 | crates/rust-analyzer/src/cli/analysis_stats.rs:1115-1128 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":1011}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d97d3afdfbc7cd289f5e69482cda8c28b49ce56d2c5659722bbd83e2b4e0671"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/hir-ty/src/display.rs:1552-1559 | crates/hir-ty/src/display.rs:1611-1622 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":1552}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc183c042d98f3888ee04d6088b04232c6b0c7e2d52b467e8722ed38d198613a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/hir-ty/src/infer/coerce.rs:357-367 | crates/hir-ty/src/infer/coerce.rs:828-832 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/coerce.rs"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"f49736535d5a432c53317d49506b1938db427f993362a7a21950c3ccbb993d2e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/hir-def/src/expr_store/pretty.rs:908-917 | crates/hir-def/src/expr_store/pretty.rs:1010-1019 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/pretty.rs"},"region":{"startLine":908}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc684498d6857c29d9d8c01115834053c9c9ec0a0b37501039d3f0e727838fc8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): crates/hir-ty/src/display.rs:1770-1779 | crates/hir-ty/src/display.rs:1794-1803 | crates/hir-ty/src/display.rs:1818-1827 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":1770}}}],"partialFingerprints":{"codehealthFindingId/v1":"65470ac93cecbe258884dcb52af6aee23a8938c52dc579ee15efa1f6444e187d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/hir-ty/src/mir/eval/shim.rs:636-644 | crates/hir-ty/src/mir/eval/shim.rs:708-716 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":636}}}],"partialFingerprints":{"codehealthFindingId/v1":"f480d07247622f174e254b5967727ddf4feaea48daa4e1d6bc150f6a65e2ffef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/cfg/src/cfg_expr.rs:64-72 | crates/cfg/src/cfg_expr.rs:74-82 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/cfg/src/cfg_expr.rs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"7be347755fd28911f7997d988ac7ae71817eeabdc1aef0b947bce4a6fcb55cba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/ide-assists/src/handlers/sort_items.rs:179-187 | crates/ide-assists/src/handlers/sort_items.rs:191-199 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/sort_items.rs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"32afd305ea6d0b3427dba057dbd383eb55c05404517734c2c916a87c204b9435"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/hir-ty/src/next_solver/def_id.rs:99-106 | crates/hir-ty/src/next_solver/def_id.rs:113-120 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/def_id.rs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f5659968398159ca7baba1bea46c6a1b16efe793d310eaf2e6e2489a430c02e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/rust-analyzer/src/main_loop.rs:265-272 | crates/rust-analyzer/src/reload.rs:646-653 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/main_loop.rs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"50c19d9236ae5d24890fdedbf7f2dd61ff5f7cf6aeba5e8ee7bbcf4ee022639f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/hir-ty/src/mir/eval/shim.rs:584-590 | crates/hir-ty/src/mir/eval/shim.rs:656-662 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":584}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f139607fb58143d3af5c481ee1b947395a6acc0e74d1792b00ee7c96de8b1d2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/ide-diagnostics/src/handlers/trait_impl_redundant_assoc_item.rs:33-39 | crates/ide-diagnostics/src/handlers/trait_impl_redundant_assoc_item.rs:41-47 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/trait_impl_redundant_assoc_item.rs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"5118cc27a309b7be07744be1c7f3c563da3c98199377a27a1ac288fbf335540a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/hir-ty/src/infer/coerce.rs:1045-1051 | crates/hir-ty/src/infer/coerce.rs:1052-1058 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/coerce.rs"},"region":{"startLine":1045}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c83940c0287e55cc7621033dcf06667261f770bd2b9b67b3096779220ab7a42"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): lib/lsp-server/src/stdio.rs:15-20 | lib/lsp-server/src/stdio.rs:32-37 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"lib/lsp-server/src/stdio.rs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"e98bcaaab91e2ea64995effafe538326b25170228a80e8f1f8dd34d82f60fa6a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/ide-assists/src/handlers/expand_glob_import.rs:58-63 | crates/ide-assists/src/handlers/expand_glob_import.rs:119-124 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/expand_glob_import.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"9305076c64c3e74e8f74279c395eafa3a1ff2846cefc318424c82b9070a93efd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/hir-ty/src/mir/eval/shim.rs:471-476 | crates/hir-ty/src/mir/eval/shim.rs:482-487 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":471}}}],"partialFingerprints":{"codehealthFindingId/v1":"10161dd6828b3e58b90053b99fb6469906cc3bd6b5b38a404f96b685a301b5a3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/hir-ty/src/display.rs:923-928 | crates/hir-ty/src/display.rs:1045-1050 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":923}}}],"partialFingerprints":{"codehealthFindingId/v1":"2126fdb37896218f77710e7ce58803c62362dfba144a6dbce6e90fc0d615d6d9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/rust-analyzer/src/handlers/request.rs:1923-1927 | crates/rust-analyzer/src/handlers/request.rs:1962-1966 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/request.rs"},"region":{"startLine":1923}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea38d035bf08e352abb59df55348915bc96ac95bc721c5a05d203e23068c1030"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/parser/src/lexed_str.rs:349-353 | crates/parser/src/lexed_str.rs:361-365 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/lexed_str.rs"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"824ee09925dc0c86785447328f754fcbc0aa66545f0fd7e1de8524c6d8d1981f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): crates/parser/src/lexed_str.rs:349-353 | crates/parser/src/lexed_str.rs:361-365 | crates/parser/src/lexed_str.rs:373-377 | crates/parser/src/lexed_str.rs:387-391 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/lexed_str.rs"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"4866fd31abcb635919ad83afa16a4c34c9e7fa507a46f11108cca694f4f704a0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/hir/src/lib.rs:478-482 | crates/hir/src/lib.rs:493-497 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/lib.rs"},"region":{"startLine":478}}}],"partialFingerprints":{"codehealthFindingId/v1":"273726b51c0f5a1fe9850e721843e8c2fad4f4f85366f8928ba8ff3c5a87f55d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/hir/src/display.rs:390-394 | crates/hir/src/display.rs:428-432 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/display.rs"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"184b8a7871ee881f5a8aff29d772c67b4f6fa2aa8efd33082eed95c6158f7094"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/hir-expand/src/builtin/fn_macro.rs:552-557 | crates/hir-expand/src/builtin/fn_macro.rs:659-664 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/builtin/fn_macro.rs"},"region":{"startLine":552}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2cd0127b7544bfb7fee215d3488b82d8de284c25ae60479c15abde8c4582e01"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/hir-ty/src/display.rs:878-882 | crates/hir-ty/src/next_solver/consts/valtree.rs:121-125 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":878}}}],"partialFingerprints":{"codehealthFindingId/v1":"79a2464c27e32de89d50ebdf0ec7e0e3659a60cc45e383ea9946f713f286f964"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/hir-ty/src/infer.rs:2356-2361 | crates/hir-ty/src/infer.rs:2363-2368 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":2356}}}],"partialFingerprints":{"codehealthFindingId/v1":"278fe3b6ddc901989eebe4a2e82d94c57fe86a8f4fd16aead88a90d233d17346"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/hir-ty/src/mir/eval.rs:2028-2034 | crates/hir-ty/src/mir/eval.rs:2056-2062 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":2028}}}],"partialFingerprints":{"codehealthFindingId/v1":"f26d00bc4e9762c6e6889971fcb6cc54eca02f3b167069cd9a30ebe9122d70ee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/hir-ty/src/next_solver/def_id.rs:247-251 | crates/hir-ty/src/next_solver/def_id.rs:273-277 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/def_id.rs"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f3597db6157b64a8384b7c11041780afbe285899b6e0dd1f5ed4f6dd161c1e4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/ide/src/interpret.rs:28-34 | crates/ide/src/view_mir.rs:18-24 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/interpret.rs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"745d3c747674266d37b87f0e5196e9afdad28000ce52b709d3c0048aed1363f5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/ide-assists/src/handlers/convert_named_struct_to_tuple_struct.rs:62-66 | crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs:64-68 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_named_struct_to_tuple_struct.rs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"c18d493d9a7eae7c9c301e65b1cf9ecf6a0bc5056fbecaf026ba605ce062bd91"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/ide-assists/src/handlers/move_from_mod_rs.rs:24-28 | crates/ide-assists/src/handlers/move_to_mod_rs.rs:24-28 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/move_from_mod_rs.rs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecf2fb6b04cec2b4680d9786001f5154431c45191915c1b8a392baf0df3b452b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/ide-assists/src/utils/gen_trait_fn_body.rs:384-388 | crates/ide-assists/src/utils/gen_trait_fn_body.rs:655-659 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/utils/gen_trait_fn_body.rs"},"region":{"startLine":384}}}],"partialFingerprints":{"codehealthFindingId/v1":"915ebd9d4bc0c64d358871ae3fae79e46dd496aaacce528ede094e49d9ebfdd1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/ide-completion/src/completions/item_list/trait_impl.rs:296-301 | crates/ide-completion/src/completions/item_list/trait_impl.rs:327-332 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/item_list/trait_impl.rs"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"a35977ff048b9c7555ede789e7daf82710099f0a586f8ab7c8ec635e613e6dfd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/ide-db/src/search.rs:312-320 | crates/ide-db/src/search.rs:343-351 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"959e2934d2bf28ec693d9b4410eb05c59afec85d7d10de80d8520cb01ff27366"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/ide-db/src/search.rs:322-326 | crates/ide-db/src/search.rs:353-357 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c228b0740454316320a36a92033b8a42fbd1f8feb83348abfaa51ed4ea98432"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/syntax/src/ast/token_ext.rs:310-314 | crates/syntax/src/ast/token_ext.rs:356-360 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/token_ext.rs"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c2b51eae5ee50d9e814ecd78b8aaba6d086e2d923a26b97fe487fa95b2706a8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/syntax/src/ast/syntax_factory/constructors.rs:2343-2347 | crates/syntax/src/ast/syntax_factory/constructors.rs:2362-2366 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/syntax_factory/constructors.rs"},"region":{"startLine":2343}}}],"partialFingerprints":{"codehealthFindingId/v1":"70e0d8595a2ce36b435b7733a86d2ed07fe94dce9f7d09c09ff4dae0839416f6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): crates/test-utils/src/fixture.rs:208-214 | crates/test-utils/src/fixture.rs:215-221 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/test-utils/src/fixture.rs"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"3aadc3633018128ba5868caaa2272151eda1cd968eb6b29d5d217a79a4bc1799"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project hir-def: hir-def has instability 0.82 with 2 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0bc265e961b497c243b87e8adbba8807ab992036e0f45311298fa17d2275c88a"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project hir-ty: hir-ty has instability 0.89 with 1 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"db6d6d9c8e5a7d831e1de63242a499cc71c1e5d9a30d19468d2dc63d144b0618"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project ide-completion: ide-completion has instability 0.86 with 1 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"bcde845f4a3b31c67d31d73f3e9567aab6b162473d500e6beb1bb2c2c514617e"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project ide-diagnostics: ide-diagnostics has instability 0.86 with 1 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"19cec4b69fae8522d6e7d35c8e61fa9ac9bd1238768617f2e5b1213b00c30a99"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project mbe: mbe has instability 0.86 with 1 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"632e992a17f5c2ac232013bb8c6f2b4b8ed102a57107ba5592965aaba0715504"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project project-model: project-model has instability 0.88 with 1 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"dbdb65436b5e2dfd05bd59aba91e2fa2fa3ff1afac848e158d5d5d1d2a7f294a"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project test-fixture: test-fixture has instability 0.90 with 1 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"39201c6ae6e679b7e17dc3042e227d9d65c36e83386f9eb3d21eb817be2fd4d3"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: edition: edition: abstractness 0.00, instability 0.00, distance 1.00 \u2014 zone of pain \u2014 concrete and depended on by 2 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8791443bf747d3978fb4536f3f03b9676ffb4bf24c1ccaa59f785a10d71168d4"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: paths: paths: abstractness 0.00, instability 0.00, distance 1.00 \u2014 zone of pain \u2014 concrete and depended on by 8 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"bd9e65cfa92adf9a430f37c153a1e24323e61b875b378811b4280cfda9207fd8"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: profile: profile: abstractness 0.00, instability 0.00, distance 1.00 \u2014 zone of pain \u2014 concrete and depended on by 3 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8d7185b755b4a6faa9cef4e6a8e759bf93b801d410563808b759e3a73953041d"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: stdx: stdx: abstractness 0.19, instability 0.00, distance 0.81 \u2014 zone of pain \u2014 concrete and depended on by 22 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2a6d25a78eda0cac573cabc65708240efc83ccab8d554c2a5c3a7902480788fd"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: span: span: abstractness 0.05, instability 0.17, distance 0.79 \u2014 zone of pain \u2014 concrete and depended on by 15 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"18c14f3bd3d91e3d560c7eec2357fb2f5c2b268ae82531efba6e6374d9c8d16b"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: cfg: cfg: abstractness 0.00, instability 0.27, distance 0.73 \u2014 zone of pain \u2014 concrete and depended on by 8 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"856a714254d9f7a61736039adb4d918f3c0f9b9622e104ae14e60a54074b4ef7"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: parser: parser: abstractness 0.13, instability 0.14, distance 0.73 \u2014 zone of pain \u2014 concrete and depended on by 6 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f34d1a282fc883997f4f59f52dee541072bc39626bfa72bd1cd446ec8cd674ba"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: tt: tt: abstractness 0.05, instability 0.25, distance 0.70 \u2014 zone of pain \u2014 concrete and depended on by 9 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"eb93276d5b369fb20774c2da99a9193af33e82753f0185a9757ec9bf3c62ec8c"}},{"ruleId":"D11","level":"error","message":{"text":"Test declared unreliable: ratoml_inherit_config_from_ws_root: This test is disabled or skipped with a reason naming unreliability \u2014 the repository\u0027s own words: \u0022flaky test that tends to hang\u0022. A test that is skipped for flakiness is neither passing nor protecting the code it covers; either stabilise it or delete it, but do not leave it disabled indefinitely. (Found by reading the repository\u0027s own test source \u2014 the suite itself was not re-run, since the reliability runner does not support this ecosystem.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/tests/slow-tests/ratoml.rs"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bf52969b38b8b61bc23eb20fdf3d897d5c5d14ea1af196c2f11f03bf2441cee"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-def/src/expr_store/lower.rs: crates/hir-def/src/expr_store/lower.rs changed 30 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 89 in ExprCollector::maybe_collect_expr at line 1417. 9 of those changes were fix/bug commits, and the other 21 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-def/src/expr_store/lower.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":1417}}}],"partialFingerprints":{"codehealthFindingId/v1":"f51a2e57340d61d7b24ebd9db2bd31d30bf0eeb4e563525f6681849beee795b9"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-ty/src/mir/lower.rs: crates/hir-ty/src/mir/lower.rs changed 19 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 131 in MirLowerCtx::lower_expr_to_place_without_adjust at line 469. 5 of those changes were fix/bug commits, and the other 14 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-ty/src/mir/lower.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower.rs"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dfafed503de3175cb1f209acbb86408c72b74936de4eeec76a48c1d54714613"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-ty/src/mir/eval.rs: crates/hir-ty/src/mir/eval.rs changed 16 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 100 in Evaluator::eval_rvalue at line 1177. 5 of those changes were fix/bug commits, and the other 11 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-ty/src/mir/eval.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":1177}}}],"partialFingerprints":{"codehealthFindingId/v1":"3db7751b285cb38befc06b8c4715395468d4dae2533f20c4cd35c9aaab1b1ca1"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-ty/src/infer/expr.rs: crates/hir-ty/src/infer/expr.rs changed 19 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 84 in InferenceContext::infer_expr_inner at line 317. 6 of those changes were fix/bug commits, and the other 13 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-ty/src/infer/expr.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/expr.rs"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"706a3fe178faf2067247a0463ded7f46590692bf5292d2081215c693ce622708"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-ty/src/mir/eval/shim.rs: crates/hir-ty/src/mir/eval/shim.rs changed 8 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 198 in Evaluator::exec_intrinsic at line 561. 2 of those changes were fix/bug commits, and the other 6 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-ty/src/mir/eval/shim.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad89fc7ea3be375e9d5bdc15cea9517da3d95893aa5296d353237d5239265c09"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-ty/src/infer.rs: crates/hir-ty/src/infer.rs changed 25 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 48 in InferenceContext::resolve_variant at line 2225. 3 of those changes were fix/bug commits, and the other 22 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-ty/src/infer.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":2225}}}],"partialFingerprints":{"codehealthFindingId/v1":"22ce722e69ab0d8a908ceaddb2f89f0aef9d411c83651613a7e8f5703fc055d2"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir/src/diagnostics.rs: crates/hir/src/diagnostics.rs changed 14 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 59 in AnyDiagnostic::inference_diagnostic at line 1549. 1 of those changes was a fix/bug commit, and the other 13 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir/src/diagnostics.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/diagnostics.rs"},"region":{"startLine":1549}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e816e31eaadcde1ba51a7c6a64dc46cec4ed59b6668b477baa86636c301ea46"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/rust-analyzer/src/main_loop.rs: crates/rust-analyzer/src/main_loop.rs changed 9 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 74 in GlobalState::handle_event at line 315. 3 of those changes were fix/bug commits, and the other 6 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/rust-analyzer/src/main_loop.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/main_loop.rs"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a15bb216183b07aa3f499a82c92535964afbb85c877c24ab8eda6ba3224d8eb"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/ide/src/hover/render.rs: crates/ide/src/hover/render.rs changed 10 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 64 in ide::hover::render::definition at line 446. 2 of those changes were fix/bug commits, and the other 8 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/ide/src/hover/render.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover/render.rs"},"region":{"startLine":446}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e15967b6e1f2c7a317e722c517000f0f575a76ccc3db8a31d67c39b4df6ccc8"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir/src/source_analyzer.rs: crates/hir/src/source_analyzer.rs changed 13 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 45 in SourceAnalyzer::resolve_path at line 1157. 7 of those changes were fix/bug commits, so the churn is repair rather than feature work. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir/src/source_analyzer.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":1157}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8abf268bf86f4bfdc42e2d3c5b796efa1ac4cb601b755b160d768136d4f9593"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/rust-analyzer/src/config.rs: crates/rust-analyzer/src/config.rs changed 12 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 48 in rust_analyzer::config::field_props at line 3750. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/rust-analyzer/src/config.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/config.rs"},"region":{"startLine":3750}}}],"partialFingerprints":{"codehealthFindingId/v1":"b245c37c09991f3935c3583aa6562cc38626fedc12ef050812485da4fa02c3b3"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-def/src/nameres/collector.rs: crates/hir-def/src/nameres/collector.rs changed 15 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 38 in ModCollector::collect at line 1898. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-def/src/nameres/collector.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":1898}}}],"partialFingerprints":{"codehealthFindingId/v1":"43ca558910706ecd120e2b1ffe81009278cd6c970b211f30f5b4cc69f3b7cdba"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-ty/src/lower.rs: crates/hir-ty/src/lower.rs changed 21 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 27 in TyLoweringContext::lower_dyn_trait at line 1011. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-ty/src/lower.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":1011}}}],"partialFingerprints":{"codehealthFindingId/v1":"89e7ea87ef8eb4f3c8cc2e611570ff8810e661272cb1f8117c46177a909bed71"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/ide-diagnostics/src/lib.rs: crates/ide-diagnostics/src/lib.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 92 in ide_diagnostics::semantic_diagnostics at line 375. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/ide-diagnostics/src/lib.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/lib.rs"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"620e52079b198aca37e87b2ba6815074eb40d62a9487ebe882218aa50d1265cb"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-expand/src/builtin/derive_macro.rs: crates/hir-expand/src/builtin/derive_macro.rs changed 9 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 57 in hir_expand::builtin::derive_macro::coerce_pointee_expand at line 1128. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-expand/src/builtin/derive_macro.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/builtin/derive_macro.rs"},"region":{"startLine":1128}}}],"partialFingerprints":{"codehealthFindingId/v1":"6df53a13e72fc0f17b01e3918bfdb4a395bd25137ce1edc50656154435ac1fb8"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-def/src/attrs.rs: crates/hir-def/src/attrs.rs changed 7 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 71 in hir_def::attrs::match_attr_flags at line 131. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-def/src/attrs.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/attrs.rs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ff4ed5afe66434b77785082ea85096c762237d5bab4e8d10370f36530502dc8"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-def/src/expr_store.rs: crates/hir-def/src/expr_store.rs changed 13 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 32 in ExpressionStore::visit_expr_children at line 671. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-def/src/expr_store.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store.rs"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d46b89adf10349baeb34394da15e7557475b85612ddac704a961f2c4807dc55"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/ide-assists/src/handlers/extract_variable.rs: crates/ide-assists/src/handlers/extract_variable.rs changed 11 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 36 in ide_assists::handlers::extract_variable::extract_variable at line 74. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/ide-assists/src/handlers/extract_variable.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_variable.rs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb236dc88beb9c98d741cde174a8bb81958f7d985dd38b69dcd321d0f10271fe"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir/src/semantics.rs: crates/hir/src/semantics.rs changed 15 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 26 in SemanticsImpl::descend_into_macros_impl at line 1237. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir/src/semantics.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":1237}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a4e7c393c9ba79bf01299342091df44198e3ba3c095a346538d79e1681ada16"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-def/src/resolver.rs: crates/hir-def/src/resolver.rs changed 9 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 41 in Resolver::resolve_path_in_value_ns_with_prefix_info at line 353. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-def/src/resolver.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/resolver.rs"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0364be5579c4b783a8dc065159f8946ad94918b92a178a20df496d4b1b31295"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/rust-analyzer/src/cli/analysis_stats.rs: crates/rust-analyzer/src/cli/analysis_stats.rs changed 7 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 48 in AnalysisStats::run at line 52. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/rust-analyzer/src/cli/analysis_stats.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa28b950d4adbf910805255758eeb5e557df0c55a6542738524c8077520ddb53"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-expand/src/lib.rs: crates/hir-expand/src/lib.rs changed 17 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 18 in MacroCallId::expand_speculative at line 788. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-expand/src/lib.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/lib.rs"},"region":{"startLine":788}}}],"partialFingerprints":{"codehealthFindingId/v1":"901277f4f0321ff41fe750373901ac3593ee9ce582c60f34895d13814039e822"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-ty/src/mir/lower/pattern_matching.rs: crates/hir-ty/src/mir/lower/pattern_matching.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 46 in MirLowerCtx::pattern_match_inner at line 117. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-ty/src/mir/lower/pattern_matching.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower/pattern_matching.rs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc87da6be18e8e6dd7e6e206741ebc0f6d82c3a24b9f66a04f8b60b743dcb1f1"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/ide-completion/src/render.rs: crates/ide-completion/src/render.rs changed 10 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 24 in ide_completion::render::render_resolution_path at line 408. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/ide-completion/src/render.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/render.rs"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"68b6ef9c9f6c89945461fb6d48eb06793c587fb253e8ca16925174b30d90bd0c"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-ty/src/infer/closure/analysis/expr_use_visitor.rs: crates/hir-ty/src/infer/closure/analysis/expr_use_visitor.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 40 in ExprUseVisitor::walk_expr at line 502. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-ty/src/infer/closure/analysis/expr_use_visitor.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis/expr_use_visitor.rs"},"region":{"startLine":502}}}],"partialFingerprints":{"codehealthFindingId/v1":"5672227fac1439839fbfadff2560a846b4b9a2f251928e351a82a42a9467b46a"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/ide-assists/src/handlers/inline_call.rs: crates/ide-assists/src/handlers/inline_call.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 46 in ide_assists::handlers::inline_call::inline at line 338. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/ide-assists/src/handlers/inline_call.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/inline_call.rs"},"region":{"startLine":338}}}],"partialFingerprints":{"codehealthFindingId/v1":"c79b3b7ac4a23247f66a4fb6f2358a67095cc7f22cd03d400a6d6017d278c797"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-ty/src/infer/mutability.rs: crates/hir-ty/src/infer/mutability.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 40 in InferenceContext::infer_mut_expr_without_adjust at line 55. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-ty/src/infer/mutability.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/mutability.rs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e4951578a38905a5e74c1e24a407147a3d18d36984551901b0e8992a65764fa"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-ty/src/diagnostics/unsafe_check.rs: crates/hir-ty/src/diagnostics/unsafe_check.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 33 in UnsafeVisitor::walk_expr at line 266. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-ty/src/diagnostics/unsafe_check.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/unsafe_check.rs"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"85068066cb88c2fccaaf53f2c8a9c33e2e566c79bef8ad6c2f84af578914e1ab"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-ty/src/next_solver/interner.rs: crates/hir-ty/src/next_solver/interner.rs changed 13 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in DbInterner::for_each_relevant_impl at line 1632. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-ty/src/next_solver/interner.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/interner.rs"},"region":{"startLine":1632}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a3de1b1c18aab7bb7c0c87fd001eeb50071ec8158b0a61d4faddd1df4aa4407"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-expand/src/builtin/fn_macro.rs: crates/hir-expand/src/builtin/fn_macro.rs changed 8 times in last 90 days, max cyclomatic complexity 22 in BuiltinFnLikeExpander::find_by_name at line 41. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-expand/src/builtin/fn_macro.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/builtin/fn_macro.rs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7cd15885e5d2f7a30316e0035cc62dfc170db7d7d558f14d876403916f4f060"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/rust-analyzer/src/reload.rs: crates/rust-analyzer/src/reload.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 29 in GlobalState::switch_workspaces at line 467. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/rust-analyzer/src/reload.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/reload.rs"},"region":{"startLine":467}}}],"partialFingerprints":{"codehealthFindingId/v1":"64919cfc71a52d24a31c56c2dd0b575c68c13cff1611e40208f9d92ac338ed32"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-ty/src/mir.rs: crates/hir-ty/src/mir.rs changed 9 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 18 in MirBody::walk_places at line 1074. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-ty/src/mir.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir.rs"},"region":{"startLine":1074}}}],"partialFingerprints":{"codehealthFindingId/v1":"e65183791951901a67186e50eeb2921fd82702eb30f988a54dc4f4b938c870b9"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-ty/src/lower/path.rs: crates/hir-ty/src/lower/path.rs changed 7 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 23 in hir_ty::lower::path::substs_from_args_and_bindings at line 1155. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-ty/src/lower/path.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":1155}}}],"partialFingerprints":{"codehealthFindingId/v1":"2500c5e98ff09997767101f082e1f0e1798a41bd930ae16f5720e2eb5c8564ea"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/ide/src/hover.rs: crates/ide/src/hover.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 30 in ide::hover::hover_offset at line 159. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/ide/src/hover.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover.rs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2615824eafed0ccc754ded923da9dcee031946b0358358564130fbc2a9e1ef5"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-ty/src/consteval.rs: crates/hir-ty/src/consteval.rs changed 9 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in hir_ty::consteval::intern_const_ref at line 79. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-ty/src/consteval.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/consteval.rs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"4975cb2ef97efe79ac0771303a245dd976ecd7eb2854837ab692fb94ffb218de"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/ide-db/src/path_transform.rs: crates/ide-db/src/path_transform.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 25 in Ctx::transform_path_ at line 355. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/ide-db/src/path_transform.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/path_transform.rs"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f54f857137f67e20fdfb11477dfa78875d4ba2fa62fb3d696ed1eab419ea23b"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/ide-db/src/search.rs: crates/ide-db/src/search.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 39 in FindUsages::short_associated_function_fast_search at line 601. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/ide-db/src/search.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":601}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c41990bb5bc1af7fb849dc17741d6fa047a101d841b6a5cd10dec8f86800829"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-def/src/expr_store/lower/path.rs: crates/hir-def/src/expr_store/lower/path.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 38 in hir_def::expr_store::lower::path::lower_path at line 41. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-def/src/expr_store/lower/path.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower/path.rs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"f050855f4e0534471a895cf81c5f00bb5a53e19f518ab63347b85e6d6a619e1e"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-def/src/expr_store/lower/format_args.rs: crates/hir-def/src/expr_store/lower/format_args.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 27 in ExprCollector::collect_format_args_impl at line 110. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-def/src/expr_store/lower/format_args.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower/format_args.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"d527164ba36e17cfdfa3f6fb43ef4a108b4389d8271f881086625de9f8257745"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-def/src/expr_store/lower/asm.rs: crates/hir-def/src/expr_store/lower/asm.rs changed 2 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 49 in ExprCollector::lower_inline_asm at line 17. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-def/src/expr_store/lower/asm.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower/asm.rs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e6982d7b73b75df4147e8ba5ed782c44c83b2c4b8c7b4db9ddcb145e32527b6"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/ide-completion/src/completions/attribute.rs: crates/ide-completion/src/completions/attribute.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 23 in ide_completion::completions::attribute::complete_attribute_path at line 70. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/ide-completion/src/completions/attribute.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/attribute.rs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2f582c548a7be9a6504a9eb3d8bf7598bfec70fb8c8fa51d1e84b7ef3f93187"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/parser/src/grammar/expressions/atom.rs: crates/parser/src/grammar/expressions/atom.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 22 in parser::grammar::expressions::atom::parse_asm_expr at line 349. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/parser/src/grammar/expressions/atom.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/grammar/expressions/atom.rs"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"b12e13355cc191074d7e26ed5bdbffb8b81150ea0f978fc40175820ae5faf00f"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/ide-completion/src/completions/type.rs: crates/ide-completion/src/completions/type.rs changed 2 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 41 in ide_completion::completions::type::complete_type_path at line 12. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/ide-completion/src/completions/type.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/type.rs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"31b21e4787038f5a0eba24b9a55e81874c3bdf4226e38f058a760120cf98ff07"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/project-model/src/workspace.rs: crates/project-model/src/workspace.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in ProjectWorkspace::load_cargo at line 209. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/project-model/src/workspace.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/workspace.rs"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"2880977bf420412dbbd033afa581283437a2d95fc1f6f49bcc0d00a02bc20862"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-expand/src/mod_path.rs: crates/hir-expand/src/mod_path.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 19 in hir_expand::mod_path::convert_path at line 259. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-expand/src/mod_path.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/mod_path.rs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a14008e000d8b27eb5ae73d2bcc540181ce7474f75540cbf3e8d5d37d1a462f"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/rust-analyzer/src/bin/main.rs: crates/rust-analyzer/src/bin/main.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 19 in rust_analyzer::bin::main::actual_main at line 36. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/rust-analyzer/src/bin/main.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/bin/main.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8302ad919d391bc522a489d4840b09cf06d36e286de37c631139500132172b9"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/ide-completion/src/completions/attribute/cfg.rs: crates/ide-completion/src/completions/attribute/cfg.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in ide_completion::completions::attribute::cfg::complete_cfg at line 12. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/ide-completion/src/completions/attribute/cfg.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/attribute/cfg.rs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"3794d8d8e43a4021085023df4e88f8c2c42f4d1015a9733c991551bbf6a0869a"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/project-model/src/build_dependencies.rs: crates/project-model/src/build_dependencies.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in WorkspaceBuildScripts::build_command at line 435. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/project-model/src/build_dependencies.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/build_dependencies.rs"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"d456b4b8f9fdad8256222efa1d0e9e383782aff11bcd3e59d09952b2feb185fc"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-def/src/item_tree/pretty.rs: crates/hir-def/src/item_tree/pretty.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 21 in Printer::print_mod_item at line 155. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-def/src/item_tree/pretty.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_tree/pretty.rs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b219e6a7885785c7c4ab0624d657234d09490c6b7c7ad15b55225f7151db2f1"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/ide/src/inlay_hints/closing_brace.rs: crates/ide/src/inlay_hints/closing_brace.rs changed 2 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 31 in ide::inlay_hints::closing_brace::hints at line 21. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/ide/src/inlay_hints/closing_brace.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints/closing_brace.rs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe58cdea150bee9f28427dd125103355e0d159553e376c94eb564489160b42d8"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-def/src/nameres/path_resolution.rs: crates/hir-def/src/nameres/path_resolution.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in DefMap::resolve_remaining_segments at line 448. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-def/src/nameres/path_resolution.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/path_resolution.rs"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfc41e7644a57a5249ffc6fe08777f8d317619ac86d2a9f8a6db7de07dca6ede"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/hir-def/src/builtin_derive.rs: crates/hir-def/src/builtin_derive.rs changed 3 times in last 90 days, max cyclomatic complexity 19 in BuiltinDeriveImplTrait::get_method at line 45. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-def/src/builtin_derive.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/builtin_derive.rs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e1ea513d3394a449f55ed3d2e4813adc6abc6c06c4b60de644d647a79f280d5"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/ide-db/src/rename.rs: crates/ide-db/src/rename.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in ide_db::rename::source_edit_from_def at line 673. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/ide-db/src/rename.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/rename.rs"},"region":{"startLine":673}}}],"partialFingerprints":{"codehealthFindingId/v1":"811797ae7ca1f052f8893c96f7c01e3d96d03c7dc9088318ed74bf964f22c463"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: crates/ide-diagnostics/src/handlers/missing_fields.rs: crates/ide-diagnostics/src/handlers/missing_fields.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in ide_diagnostics::handlers::missing_fields::fixes at line 56. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, with the area under test before it moves. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/ide-diagnostics/src/handlers/missing_fields.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/missing_fields.rs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"d460f32b5ffa9a2697d2b550db4c6f9fe90b4e57e6f1a3f111c905f6b4ec9771"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: crates/hir-ty/src/generics.rs: crates/hir-ty/src/generics.rs changed 7 times in last 90 days and 4 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 6 (its worst body is hir_ty::generics::parent_generic_def at line 388), UNDER the 15 threshold, so this is deliberately not filed as a churn \u00D7 complexity hotspot \u2014 the difficulty here is in the behaviour the file has to get right, not in its control flow, and refactoring it for complexity would be the wrong move. The repairs counted were: \u201Cfix: len method of generics next solver to use \u0060consider_late_bound\u0060\u201D; \u201Cfix: consider_late_bound field in Generics for RPITs\u201D; \u201Cfix: idx and type of lifetimes captured by opaque\u201D; \u201Cfix: early/late bound idx and opaque captured lifetimes\u201D. Each one is a case this code did not handle. Before the next change lands here, check that every one of them is pinned by a test that fails without its fix; where the same area keeps coming back, the durable fix is usually at the interface that keeps being misused rather than at the line that was last corrected. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-ty/src/generics.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/generics.rs"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"a486b260df653a237668721de3e4aa2ab772eba96f0528179f9108fcfa4e107b"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: crates/hir-ty/src/next_solver/generics.rs: crates/hir-ty/src/next_solver/generics.rs changed 6 times in last 90 days and 4 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 9 (its worst body is hir_ty::next_solver::generics::generics at line 12), UNDER the 15 threshold, so this is deliberately not filed as a churn \u00D7 complexity hotspot \u2014 the difficulty here is in the behaviour the file has to get right, not in its control flow, and refactoring it for complexity would be the wrong move. The repairs counted were: \u201Cfix: Fix \u0060.zip(None)\u0060 call\u201D; \u201Cfix: Handle enum variants in next-solver \u0060generics\u0060\u201D; \u201Cfix: len method of generics next solver to use \u0060consider_late_bound\u0060\u201D; \u201Cfix: consider_late_bound field in Generics for RPITs\u201D. Each one is a case this code did not handle. Before the next change lands here, check that every one of them is pinned by a test that fails without its fix; where the same area keeps coming back, the durable fix is usually at the interface that keeps being misused rather than at the line that was last corrected. Counted over 2026-06-29..2026-09-27, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-29 18:04:31 \u002B00:00\u0027 --until=\u00272026-09-27 18:04:31 \u002B00:00\u0027 --full-history --no-merges -- crates/hir-ty/src/next_solver/generics.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/generics.rs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9e274f07b912f90c6e8c40af71cac5ebcdd785d68cd26b0bdfb6b1337dcec12"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #1: If anonymized user #1 becomes unavailable, 13 significant file(s) lose their only recent owner: crates/hir-ty/src/next_solver/infer/region_constraints/mod.rs, crates/hir-ty/src/infer/fallback.rs, crates/ide-diagnostics/src/handlers/generic_args_prohibited.rs, crates/hir-ty/src/upvars.rs, crates/ide-diagnostics/src/handlers/inactive_code.rs, crates/hir-ty/src/next_solver/infer/unify_key.rs, crates/ide-diagnostics/src/handlers/field_shorthand.rs, crates/parser/src/grammar/params.rs (\u002B5 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"aead3902b208bb815a0f86fdd13e9e48ff9c391ba4150594f9d2b3c8f8b4efd9"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #2: If anonymized user #2 becomes unavailable, 7 significant file(s) lose their only recent owner: crates/ide/src/inlay_hints/closure_captures.rs, crates/rust-analyzer/src/session.rs, crates/ide/src/inlay_hints/discriminant.rs, crates/stdx/src/macros.rs, crates/ide/src/predicate_eval.rs, crates/vfs/src/file_set/tests.rs, crates/hir-ty/src/solver_errors.rs. Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"81ab9ef7193205f85dd4943c0529422f62ee9d486beecf244a120fb51b2dfef3"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #3: If anonymized user #3 becomes unavailable, 3 significant file(s) lose their only recent owner: crates/ide-assists/src/handlers/introduce_named_lifetime.rs, crates/ide-assists/src/handlers/move_const_to_impl.rs, crates/proc-macro-api/src/pool.rs. Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0ee75fec365a1480aa68263af6723668f5792ac599c8e907ae16705a7830718d"}},{"ruleId":"D16","level":"note","message":{"text":"Further sole-owners (lower concentration): 10 other contributor(s) are each the sole owner of a small amount of code below the off-boarding threshold \u2014 folded into the bus-factor score and metrics (34 single-owned of 747 analysed files in total, counted over production source files of roughly 2,400 bytes or more, excluding vendored, generated and example/demo trees and test files identified by path convention, largest first; 747 of the 1426 production source files in this repository met that bar). They are anonymized user #4 (2 file(s)), anonymized user #5 (1 file(s)), anonymized user #6 (1 file(s)), anonymized user #7 (1 file(s)), anonymized user #8 (1 file(s)), anonymized user #9 (1 file(s)) (\u002B4 more) \u2014 spread or document their files in the same way, at lower priority than the named off-boarding risks above."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6eac528f2429e724e1a97ed868f79eefbcf1888dab4af9a9e673429369bb5b2f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this *somehow* should be platform agnostic... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/base-db/src/lib.rs"},"region":{"startLine":271}}}],"partialFingerprints":{"codehealthFindingId/v1":"09ec4776565ab91776f624e22b9beb3b37f3fd315f80f50f3326c1c4257db061"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: VFS rewrite should allow us to get rid of this wrapper \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/base-db/src/lib.rs"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"863ea82e20064dc59f5836a72716a7b435a01d6afc5cf02d0b23cbf45e6df8a5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This ought to be a \u0060VfsPath\u0060 or something opaque. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/base-db/src/input.rs"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f594c8a7a741d877073aa118945ff9c7ce304aee4aff3141cfd5ed73faf0176"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: can\u0027t actually remove the file, just reset the text \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/base-db/src/change.rs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"812bb1c152c29acaf86b7a3cc191617d803f68aa0d259cded8ee267ce423e636"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Parsing from \u0060tt\u0060 is only used in a handful of places, reconsider \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/cfg/src/cfg_expr.rs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"60052b0c48ba42bc9642adbe406bf1a8dd54496036323b72380680f9452ca766"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: handle \u0060mod\u0060 inside block expression \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/test_db.rs"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"d49178e4c8beeef48434f092e76e01b087bae9139cee9385dae7969d17b24d6e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: should we provide \u0060self\u0060 here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/resolver.rs"},"region":{"startLine":625}}}],"partialFingerprints":{"codehealthFindingId/v1":"a43b049289ac771b01916b0348bb4cc2e8838e5767e47ff158bfdc71a2f3f76a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(trait_alias): Trait alias brings aliased traits in scope! Note that supertraits of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/resolver.rs"},"region":{"startLine":690}}}],"partialFingerprints":{"codehealthFindingId/v1":"80a2c22abfe3b67e5b747447090a6ffd260f2ce950c8b419b3220029d7129394"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This adds as many module scopes as there are blocks, but resolving in each \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/resolver.rs"},"region":{"startLine":931}}}],"partialFingerprints":{"codehealthFindingId/v1":"658d1f1cb1f24913dbddce134a396d7d96892a0f0e1f64954dfe33f83fe8e778"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This adds as many module scopes as there are blocks, but resolving in each \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/resolver.rs"},"region":{"startLine":1138}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b57841def5322bf00b698913a08cb7c8e065fc9d48de9fbb4718d7abdd6d993"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: hack, account for local (and only local) shadowing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/resolver.rs"},"region":{"startLine":1324}}}],"partialFingerprints":{"codehealthFindingId/v1":"493e7665b3c182f1acd077842794309713975b1b168358db5e72eca27de6097f"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: /// HACK: In order to test builtin derive expansion, we gate their fast path with this atomic when cfg(test). \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres.rs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c28fc5851acc97b18874dbf560c4b8cd41f38415d3bf69e39397554d1a2e570"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: There are probably some other things that could be here, but this is less severe and you \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres.rs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1a412a5af3931d100c72bdcbf7f4c53e2b12d4cbe31a6df687da5b251282857"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Figure out a better way for the IDE layer to resolve these? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres.rs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"51f96d65f941c0ff423f7e9a188e192166429865ca0e2a509a59a80000c0c2d6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this can use some more human-readable format (ideally, an IR \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres.rs"},"region":{"startLine":636}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb72b89fa66c9921f34284b4373493609dca3994088dd8c965099089f3539ba2"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Store this as an erased \u0060salsa::Id\u0060 to save space \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/lib.rs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7cdfbe027a7273540472557565973205d046f92f39156bdacef7a02a21cd2c0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Store this as an erased \u0060salsa::Id\u0060 to save space \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/lib.rs"},"region":{"startLine":630}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cd80677530cf344b3852dd7b2670855315f7f071d726932acdcaac6c1bcb4ec"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Store this as an erased \u0060salsa::Id\u0060 to save space \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/lib.rs"},"region":{"startLine":646}}}],"partialFingerprints":{"codehealthFindingId/v1":"258e45ff6d75d35ae2a8a01d6cea7f7fc46fcc1d5f582ea0a3246ea85029f49b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Store this as an erased \u0060salsa::Id\u0060 to save space \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/lib.rs"},"region":{"startLine":715}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b8f261060c071636137c06810e5e118f342144d011a34c8004a9bc3435874b8"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: not every function, ... is actually an assoc item. maybe we should make \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/lib.rs"},"region":{"startLine":904}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c4871a4c6f08cde1ad48c7373ff4a9eb758efcf588ee4e184cffc0f90fbdd95"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Check callers of this, this method likely can be removed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/lib.rs"},"region":{"startLine":959}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d3fd38fb82a0a958422573133a5b57e6fb79f643e39331f42b6cd5b7e22c559"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Should we remove this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/lang_item.rs"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbccac3bdc4e58d2304144a404b95fab85be76c2cabc79cea28c58e1055b2d6f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(swatinem): the following lang items are used for async lowering and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/lang_item.rs"},"region":{"startLine":622}}}],"partialFingerprints":{"codehealthFindingId/v1":"92ad678f0fdc64ec4770722d8dce4812ba69f3e5b9d4832ba992a110b4c380e9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Would be nice to encode \u0060None\u0060 into this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_tree.rs"},"region":{"startLine":504}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a972a8adbd4a972efa321b249bd2a6ebb233c55729e0f80b828a85356e1d0e4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Macro shadowing in one module is not properly handled. Non-item place macros will \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_scope.rs"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"40e2dee11b9737c35174036b2f6eb89e60199f745b00eea967034be618352e1e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: shadowing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_scope.rs"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"36a9f09f51e676832da8d7c4d91f101b8335b801d374eb6cd3db1efe5d2db478"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: shadowing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/path_resolution.rs"},"region":{"startLine":640}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b5794a1c1ca3834da3901e46f87a5feb2852ec55924cc317d87886841df3742"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: /// XXX: this is O(N) rather than O(1), try to not introduce new usages. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_scope.rs"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"eeee09343b9065bdba10e38dfe26257f664ed1552846401bd86a634d60041506"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: /// XXX: this is O(N) rather than O(1), try to not introduce new usages. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_scope.rs"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"123ddf9d53d0c75ecb23a3e9d2d9985c5e66959496ed2836499b5fe209a287a9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is only used in collection, we should move the relevant parts of it out of ItemScope \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_scope.rs"},"region":{"startLine":571}}}],"partialFingerprints":{"codehealthFindingId/v1":"840e793443eb97d0d9dab9f3ebde4b9759c5d3dca370f191aeebc9b745d2fd9a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Document and simplify this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_scope.rs"},"region":{"startLine":594}}}],"partialFingerprints":{"codehealthFindingId/v1":"6292c3267d6f921cc350b9fac0ab04ce8b1e43218785b63e7a8c70d7ec5f89a8"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This should check all import infos, not just the first \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/import_map.rs"},"region":{"startLine":638}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb4ad3a6e7a19302e68bc19182c85d6d2803f3b3ddc1edea0c8dbd8174e61e17"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: The rendered paths are relative to the defining crate. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/import_map.rs"},"region":{"startLine":802}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4934632ae41c76686d5044278b61c723cfd8087dbe9f0ea554506bc6dbc23ca"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(#17451): Use builtin types once stabilised."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/hir.rs"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"17992853bb0213493049e483a0c87c06ac45609e5699f0b9567c8853eb7844d9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We could have multiple applicable names here, but we currently only return the first \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/find_path.rs"},"region":{"startLine":279}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb618b493c7865f7308dde6c520dfad6f784fdb7a9d43b76194d409be806e289"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: we should guide this to look up the path locally, or from the same crate again? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/find_path.rs"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"73f019fc9d4c17464c31df20f3998b4fdc6d1022b00509a1335a465bb546b7c5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: cache the \u0060find_local_import_locations\u0060 output? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/find_path.rs"},"region":{"startLine":485}}}],"partialFingerprints":{"codehealthFindingId/v1":"81e6fe0544bc7cf2ed37507cf5f78f7fb5dfdb1ec4c1fb5195891d9c7d5a586e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Change \u0060node_\u0060 prefix to something more reasonable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store.rs"},"region":{"startLine":1134}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d12b3ad4531758a07eff97503c6c31f7d06a6289666a7038f677b69180d35db"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: /// XXX: AST Nodes and SyntaxNodes have identity equality semantics: nodes are \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/dyn_map.rs"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"9527688f719d0966ea7151d07ce36a70937296e0afa141c101be3685de6af8d1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u0060IS_TEST\u0060 and \u0060IS_BENCH\u0060 should be based on semantic information, not textual match. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/attrs.rs"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"66d527bae95cbfd3f25ccc4f0b662cbcdee2490f7cbdf489ed18a196f2379931"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Handle source maps for escaped text. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/attrs/docs.rs"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"34e9137356483984cc846608eb596e0c23d64c3bf66702d9c578057748cd5130"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: deduplicate with \u0060HirDisplay\u0060 impl \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/pretty.rs"},"region":{"startLine":1260}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c9c2ba63ef4f292fbf00f4453d823cb4befe83be9ec24968cfad018f4218ac7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: add diagnostic for missing body \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"1213e519ce91ce4af61fae6da9f941ed6b2e82f36bf442a0e1cb1d6d069f05ec"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment repeated across 16 files: The identical FixmeComment appears in 16 files (23 occurrences) \u2014 almost certainly one boilerplate line from a single migration or decision, not 23 independent debts. Fix the systemic cause once rather than file-by-file. Text: \u0022// FIXME\u0022. Source code is not a task system: track the cleanup where tasks live. (Every occurrence still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6d7c1c7123bc50e92f912fcef04573cdabdb1ad5e0605943b31bde57f26850c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Keyword check? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":725}}}],"partialFingerprints":{"codehealthFindingId/v1":"502c93605bb0b871411a676f19282c190e3c67091c01cee4fb64c16fc45db88e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Move some of these arms out into separate methods for clarity \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":1423}}}],"partialFingerprints":{"codehealthFindingId/v1":"65fd3cc6ed0749cf30944250735e3c8a158c35d6b889deaa583b16a43d1206dd"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Report an error here otherwise. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":2258}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ee4cda77228ee52318040d451e9f8f843ef0eb607ee830ae90b0ea5da6a50c0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /// FIXME: Rustc wraps the condition in [\u0060DropTemps\u0060] -- a construct equivalent to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":2383}}}],"partialFingerprints":{"codehealthFindingId/v1":"668c0dc43bc07a4fadbddcd4d36936dd93ab32200bd952707fcced1293611bc9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Emit an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":3267}}}],"partialFingerprints":{"codehealthFindingId/v1":"756418b18048c22f3a02b9d5e639688bd4ce2d6f9770468af861d30fa214c825"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Emit an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":3290}}}],"partialFingerprints":{"codehealthFindingId/v1":"1837094fa27e78bc756d2b5b50f3b870a9072a8b0eab40956a69cf55a7f456d8"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Emit an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower/format_args.rs"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce0b17c3fc7bc153c386d2e0bb69c2c56ece1f9c9583dbd39f3aab093cc5ae7a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Emit an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/pat.rs"},"region":{"startLine":592}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3abdd7b6770c4725664b70eee9570fbcd197d4d34ec42b5ab194803c2d60eb7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Emit an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/pat.rs"},"region":{"startLine":871}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec382cabe001b1ace6d924bb8857943a57b8b03a3883ef5a3d1c0cafc9c773c5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Emit an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/pat.rs"},"region":{"startLine":1014}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5490d50553c7ddd23e50bd2cffe839b8990a20750b257f59381932ff28197de"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Emit an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/pat.rs"},"region":{"startLine":1386}}}],"partialFingerprints":{"codehealthFindingId/v1":"98941574204ca0dcc4bd6aadd073ea8c14754c1e51521ad8488d6a2dee3b6c7b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Emit an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/pat.rs"},"region":{"startLine":1424}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b50691f7a453d4c6773df29cacc4c46f82fad11b28b8c609c02daae47b2559c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Emit an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/pat.rs"},"region":{"startLine":1461}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7dfd1af63ca4e051eac5f22b316f0c3720118c03d5e0ce6fdc83f7e4e3a89ca"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Emit an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/expr.rs"},"region":{"startLine":948}}}],"partialFingerprints":{"codehealthFindingId/v1":"6215aca925c103b8f4053baa22b53e758b27ad24692cb1e510e15d1fc35b8d8e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Emit an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/expr.rs"},"region":{"startLine":2013}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc238d5fc80665b1898993085afae812feedac2ed011a5c3d07d09c7c48294a7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Emit an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"2399b5bef7e09eea7664201d0295dafd7f66fbe729c765737230d0fb8ba74ff1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Emit an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":524}}}],"partialFingerprints":{"codehealthFindingId/v1":"0449093b989a51f7b7eae8760767fe1254236c6f71ea60e54abb88e31046a50a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: desugared exprs don\u0027t have ptr, that\u0027s wrong and should be fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":3556}}}],"partialFingerprints":{"codehealthFindingId/v1":"98142882231dedb3b3210fb93f4d9f88be5fd5469bd752028bd228ac0cdcea7d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: desugared pats don\u0027t have ptr, that\u0027s wrong and should be fixed somehow. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":3607}}}],"partialFingerprints":{"codehealthFindingId/v1":"aef04ce244c3e2288512a6191c9cb8d926fa547c526c0c31d37c5d3bd94acdad"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: within_limit should support this, instead of us having to extract the error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/expander.rs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"80b48d5911360bbcc7e2c79d7725152f543013505395db2865c1da54bdb82864"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Report an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower/path.rs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"c90b3ea8204923e872137d685b0e934c4e0e3bbb08b4b4fb235391de56decca5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Report an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower/path.rs"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe900c1a24f018587c1acfbdd7fc45d5c917e3c2b337ecb9fe1f03ce37efedc6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Report an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower/path.rs"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebd16eacc0404f91b0edbe57b1474ebe7b04b2dbfe320248172cee7e34065e32"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Report an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"17159a639c2ccd100448b7b3a95c05f00f768ea7c7341e6ec31197ad7b786e0c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Report an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":498}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1f32be35703e2a18f64b6cdf391bf35a518f10ee768cbcfda418d6c05eafde0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Report an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":513}}}],"partialFingerprints":{"codehealthFindingId/v1":"0395dea1f09cfa892aff944e2ca2c35c8ea26eda6c4e1d455854bc4e6bc21b68"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Report an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":527}}}],"partialFingerprints":{"codehealthFindingId/v1":"31ea4788270734496a57068c7f0864cfec0ed3bfe080e0a7691d9b763244043e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Report an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"c87bb0e8d662524dda37c887be0e900c45b061b2a321f0199da4eeb19e3109df"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Report an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":1048}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0752e1a879714af7514f965ed529902565ec7d6ec8c3716bd4dbc78ce8ef7f3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Report an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":1059}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b660acf3bd336798e7334fac6b1b19d150e04f0680e99ba33b625274433dd54"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Report an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":1220}}}],"partialFingerprints":{"codehealthFindingId/v1":"89a3ba607f96299e2cd7c8a2f2b6cb3765c6653f0cb57c05fd65379f7f219ab2"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Report an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":2305}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f9e86131f8c3db86e71f788a575a0836c9b77e79003f2bb882b8f275901473c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Report an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":2414}}}],"partialFingerprints":{"codehealthFindingId/v1":"27590ad30ec00acd214cab915e42c15cf67a43656a579671f1e601003e428b0c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Report an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":2476}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7c63b60878cfc515c3387f28a5b3693287d758cc9c7117bf03644ee274332ec"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Report an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/method_resolution/probe.rs"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea5649aaa44352af2413f9df130775ab8791a76b4fd7bc6eed337980ef01503f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Unnecessary clone \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower/path.rs"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8994f9ff2c6a1249c82aa3ca8a6f88c7aaedc3da52155b2c68690c1d934f63e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this bottom up traversal is not too precise. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower/path.rs"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"295f9f2035331d5838e4d94815f67d5dcf5c73a52dec67477d18d452fe73cd61"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Make this a \u0060super let\u0060 when we have this statement. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower/format_args.rs"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"897a33ece32ac0b2e7e191c0c543b379734dc0cc83ef4e3843d17fe6a2283cc0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Make this a \u0060super let\u0060 when we have this statement. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower/format_args.rs"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"11b9cd3da55d1aef10d26fb1100f8323ea9460d8d5fe360bc8fabc563738eccc"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Unbox this once \u0060Idx\u0060 has a niche, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/hir/type_ref.rs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1a5d1e016689300e4c38fb6f5fd6b878c9b8b51f59198b9bf0b7124a4862681"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Diagnose \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/hir/format_args.rs"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"a75ae13ce62041f5f083e1d20960109a6baef2b5519670589a8b44f86418cb79"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Diagnose \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/hir/format_args.rs"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"19161afcfd9bef3a2e9a5c93edcc06641ce63b859623fe6ac140af7fdcf69300"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Diagnose \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/hir/format_args.rs"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"195d5bdea5376217f5ba7d7cd77db4e1bfc653641d86e4aac611269e86b9b6da"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Diagnose \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/hir/format_args.rs"},"region":{"startLine":428}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fef3c24c74c16886b1f363088c7eda4141e405579c7381a8b312d5bc7ea415a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Diagnose \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/hir/format_args.rs"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b536b492f1c48b07c30f2335194780976ab1c660341c1f36215b225aa544c72"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is problematic, we might want to synthesize a dummy \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/hir/format_args.rs"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"848dbb1d1d6e35494a078debc7d2142eb01ef60cdcdcb69706dace424268390a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This will lead us to show failed trait bounds (e.g. \u0060T: Display\u0060) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/hir/format_args.rs"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"1404d8e1ff3262eb31aed56fa4638a429ff93453f8289a99e1734a9e61604c78"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Handle \u0060global_asm!()\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_tree/lower.rs"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ee67f17d2b4a0cb2258e23b2ea2cee806deb36402256cc714cf7b617a553183"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: report errors somewhere \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_tree/lower.rs"},"region":{"startLine":477}}}],"partialFingerprints":{"codehealthFindingId/v1":"eee748b082c46da5b14b1a369e44467d5dfeab9f0b76c55d55804538f0aa9c5b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: I\u0027m sure there\u0027s already better way to do this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/macro_expansion_tests/mod.rs"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"af8cace259845317675a7926a2b9158917223f2513ffd5b5c00b6caf05cb9fca"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: The pretty printer breaks by leaving whitespace here, \u002Bsyntaxctxt is used to avoid that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/macro_expansion_tests/mbe.rs"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"73374330df0c6dfed21c18583fe2b9d4d9689653bb23393dd76ff4febee3339a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is the wrong expansion, see FIXME on \u0060builtin_fn_macro::use_panic_2021\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9b83b4ccc546ce6be48c72f14a6c5d13d26c6341f9a481745b26d5dbd328eda"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: actually expand with const \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/macro_expansion_tests/builtin_derive_macro.rs"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b78fab57481aff120f43b22b3400ddd0f14db28ff3f8e891cb81fab1de76873"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME we should have testing infra for multi level expansion tests \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/macro_expansion_tests/mbe/regression.rs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"b616dc2a69b26992f2d3ad4b850109834f971afa5c56930e4ea64ac40e151097"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: the second rule of the macro should be removed and an error about \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/macro_expansion_tests/mbe/regression.rs"},"region":{"startLine":877}}}],"partialFingerprints":{"codehealthFindingId/v1":"365911d21c1215f6142cbf36687c03b77b01886f03d65ccd113890475824d8a0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Should this error? rustc currently accepts it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/macro_expansion_tests/mbe/metavar_expr.rs"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"87cc15c83ebedc570ae20df326e64ccbe1aef921d17b041420757d1f7c5cd7d0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Should this error? rustc currently accepts it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/macro_expansion_tests/mbe/metavar_expr.rs"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d7020000cceb569e197a7a1046821385e757ffd86a5e6b708cadb54b581557f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Should this error? rustc currently accepts it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/macro_expansion_tests/mbe/metavar_expr.rs"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"cede3e6fcfd4bd245f716cb1015540db5ea419f81391ad2e0025e14041d78bf1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Should this error? rustc currently accepts it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/macro_expansion_tests/mbe/metavar_expr.rs"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"e074928184c30841842d8164259d965eb123439b760b0786b9cf69bf0edd6676"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Should this error? rustc currently accepts it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/macro_expansion_tests/mbe/metavar_expr.rs"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"91f235379ab8b1e53f196ce22d138818ae72c5ef1dce819be165a97d42a49839"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Should this error? rustc currently accepts it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/macro_expansion_tests/mbe/metavar_expr.rs"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3bac2d3a2af29f64bf6d21959686212deb1f6d3bf812ff2e6faa2b4cdcafef0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this actually works OK under rustc. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/macro_expansion_tests/mbe/matching.rs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"7340726463f140053c31302613029f90beff20e69b4454ab882ec415dca33345"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: If the next segment doesn\u0027t resolve in the module and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/path_resolution.rs"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"532554a559c532e1165ad33bd274b22370d2173f14355582a163d4458ccadd41"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Inefficient \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/path_resolution.rs"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e92ba78ffb08df5a669406c2ea93c32b38664cc4a41ef7ec8cb0b8891633af6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Need to filter visibility here and below? Not sure. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/path_resolution.rs"},"region":{"startLine":526}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bd0605c5388bc3ddd184acf1312f37b33d810ea125ed168eafaa690ccb23196"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Implement this correctly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/path_resolution.rs"},"region":{"startLine":553}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca8029ade3cc494f5239ba8787eef63d600bbfbb60bc0a5caa4711044d2a5bf9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Implement this correctly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":1053}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fb8aa2d7d372ccbab3ad2ae0aae29246413f920e645d58f7c1c707f4c241ec1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Edition, is this rightr? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/mod_resolution.rs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9defe950de808fe48650e3c52ab107c58fda2bc6420088f3e325cae59507839"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Whats the difference between this and unresolved_proc_macro \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/diagnostics.rs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"f37fc87f48728da7f409ec02fed40bc07e20336b4b575ff2792e67751660e667"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: There has to be a better way to do this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":263}}}],"partialFingerprints":{"codehealthFindingId/v1":"2739284c4a1261f3dd16d76ee519ff04135dedd4d41a5d2f914ed537b4792fb5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Remove this clone \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":522}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2555343b7254fe04078335b761e326da04d088b6d524d3170306e9ec21a1d68"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Report diagnostic on 404. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":777}}}],"partialFingerprints":{"codehealthFindingId/v1":"873d66fc4d3a06ecc817daccb5676db827b62a2d23a4765c2efed6a1e580ada8"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We maybe could skip this, if we handle the indeterminate imports in \u0060resolve_imports\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":819}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e07ef8219ff60e074c9275ea0dcf5bc01bec6535d83ae8b71808cfa00ce2895"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Expansion error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":1370}}}],"partialFingerprints":{"codehealthFindingId/v1":"5899cbb1e1a1e19fe412ac8f327a5fb3d82c2a8663e2d24f16e562b7533b5cdf"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This code is almost duplicate below. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":1390}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebfb504e8c68ff5b92efafe3f5970bf4ddabe14c9cb6c9841e1b0068628e2a51"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is a hack. The proper way to do this is by having a chain of derive helpers scope, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":1738}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac0b1e7a4c5d0a890402dd0489a262053adcc13ebcb3469bb28145c553050a18"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: we shouldn\u0027t need to re-resolve the macro here just to get the unresolved error! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":1788}}}],"partialFingerprints":{"codehealthFindingId/v1":"8736e39b4532284325952bd19766a522717546847bbaa5088432bc2dced62d22"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // macro name, but we assume it isn\u0027t as there\u0027s no such case yet. FIXME if \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":2624}}}],"partialFingerprints":{"codehealthFindingId/v1":"de13b2c389f22ab1c5ef8946d4e6b9c81a4953dd16e18bd632d4fd41a8ddf442"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Immediately expanding in \u0022Case 1\u0022 is insufficient since \u0022Case 2\u0022 may also define \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":2689}}}],"partialFingerprints":{"codehealthFindingId/v1":"a69144e20aab27b7a333bb29400d321e7eecdd27095488cf596f02cf6e3fd9f5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: if there were errors, this might\u0027ve been in the eager expansion from an \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":2724}}}],"partialFingerprints":{"codehealthFindingId/v1":"07aadc7215c535c99cfada1eb8f216b985f09e0e5f02053c9bd841e2f31fe202"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this test does succeed, but takes quite a while: 90 seconds in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/collector.rs"},"region":{"startLine":2822}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8688425ae4f6f65978cd7e41f909246619cef84a51c1ab73560a3a384984eb3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: tool modules can be shadowed by actual modules \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/attr_resolution.rs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"078b58027d36dceca1fc057cefec1876b234b4bb1847fe7e0555bf27087a5987"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(trait-alias) probably needs special handling here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/assoc.rs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ec1df9d1e8e27cf3c65c015686465f05d4e7b9d1e5050ef33b892278c4b8b70"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Expansion error? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/assoc.rs"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"b10ad6b2f5634f2b8afea00d3c2008504095153166bd42d3ac84624dc085baed"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Should error on disallowed item kinds. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/assoc.rs"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc92d918613b5e9fb61a012233d0ced9692cd9ee7eb4bd8e666fe83b4338f1de"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: should not expand. legacy macro scoping is not implemented. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/tests/macros.rs"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3b2bd526b0384c8c9a6c8cf925bb02687e5c9c755c886045871e756e93d7d55"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: should not see \u0060NotFoundBefore\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/tests/macros.rs"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"8951e8b6d3581fe403c39e12b6e945b1be97301cc7f684c2defe785dbbe26d4d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // See FIXME in \u0060ModCollector::collect_macro_call()\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/tests/macros.rs"},"region":{"startLine":1543}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1111292720d5b625afcd5c65ea5db236b49140ba68492abcf6f4ca5c15d13e3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is less than ideal \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/nameres/tests/incremental.rs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"df7fbab448b0bd545db760679ad98aacb1a1517be285169aaba85dda4cf35e00"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is less than ideal \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/test-fixture/src/lib.rs"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8feb67c64b0791feaf13af65aad1e1cb82bb7ebdb3792ec98ab40ea6ea86558"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Is it correct for us to only take the span at the start? This feels somewhat \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/span_map.rs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5f1247df20fb5175ea7e1ede2c17a40036c79d97d1677b5d3327c93ef8f3fa0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Can we avoid the string allocation here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/proc_macro.rs"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d66cf6876253244a755cb9a07150f2bb40d56071720fae5e8bdb3986d5f879d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This needs to go once we have hygiene \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/name.rs"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c5b8eb9f7dc1fd2713d310bd3b56b3a15977651674356c4e505b051760732df"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This should take a database argument to hide the interning \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/name.rs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bf79baabe721544f52fbc210551a47e1b0b049c94e870e7c1844a859c89f403"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Remove this in favor of \u0060display\u0060, see fixme on \u0060as_str\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/name.rs"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd22ee6543865502ec8d29ef6a7718cbac34de7d94bef18c7c5842573075ad07"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u0027\u0060static\u0060 can also be a label, and there it does need escaping. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/name.rs"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"b69ef9399f875034350a097a01a79b80d0bf1580b9c1dc7e40c6179cf7bd4486"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Can we remove this somehow? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/mod_path.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"1736a2e468e26a28e022132de58060e31b34f48ed57aa2fbd5d898df12aa7c4e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is only a guess and it doesn\u0027t work correctly for \u0060macro_rules!\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/mod_path.rs"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f0f4e6c45f71e8dbacde5b1375fa214f1b7b8d46b0584b2781c5385a7e3aad0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is being interned, subtrees can vary quickly differing just slightly causing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/lib.rs"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8266c8fb9b65c01752dfdf365b76bd7963f86e0ea97969ff1b0f0da623e2724"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This shouldn\u0027t be here, we can derive this from \u0060invoc_attr_index\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/lib.rs"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"da377e89802817e932849bd5f4f1e8b2186f078be92b36f7c159b07b1900789e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We should verify that the parsed node is one of the many macro node variants we expect \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/lib.rs"},"region":{"startLine":489}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2f1389c9650f9c9b8d27a266ebdbff055e6102748469043b9758d6ca774e78d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We should report both errors! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/lib.rs"},"region":{"startLine":710}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c59a156d7fbe40a71a1ef09f3dc874c32ac3aa6838b8416cec1772a929cc25e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(stmt_expr_attributes) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/lib.rs"},"region":{"startLine":1152}}}],"partialFingerprints":{"codehealthFindingId/v1":"298b8f6af388d76162a2be8c7e55ad00dc8d132c968911ea38fe0a01bdbee6a2"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: should be the range of the macro name, not the whole derive \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/lib.rs"},"region":{"startLine":1245}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6e7a33f1c0596ca1d9a3b7b3789c82e9f02a6c15a316057c029414f01b113eb"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: handle \u0060cfg_attr\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/lib.rs"},"region":{"startLine":1248}}}],"partialFingerprints":{"codehealthFindingId/v1":"286d4ca6fff7497ee9c40e2d1623808feb4872d086c4599f90d22581cb90e586"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: can be expensive to create, we should check the use sites and maybe replace them with \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/lib.rs"},"region":{"startLine":1286}}}],"partialFingerprints":{"codehealthFindingId/v1":"03c3ce10de85596d79906d0a43388d0ea861e22f35674682ed5ead83b824372e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Consider adding a reverse map to ExpansionInfo to get rid of the linear search which \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/lib.rs"},"region":{"startLine":1321}}}],"partialFingerprints":{"codehealthFindingId/v1":"b52cf34a907ca0141a21d92ecdcee318b794d5eaee04f6e6709cde521aed1571"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is only public because of its use in \u0060load_cargo\u0060 (which we should consider removing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/lib.rs"},"region":{"startLine":1480}}}],"partialFingerprints":{"codehealthFindingId/v1":"283a15fee9a16bc2ea35e57adf1d9424cb5d246c941cfc17976305cc0c24f626"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: macros in statement position are treated as expression statements, they should \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/lib.rs"},"region":{"startLine":1525}}}],"partialFingerprints":{"codehealthFindingId/v1":"13a3d385210531e00bc66b47e5207137cd9d1381f1544dbe33ab0f293d18a086"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This can be \u0060true\u0060 once we always use \u0060tcx.is_diagnostic_item\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/inert_attr_macro.rs"},"region":{"startLine":569}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c4baac8961610eb5672f05c684980135c38b046e3abd766ce8bec26af3b388f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Move this into the span crate? Not quite possible today as that depends on \u0060MacroCallLoc\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/hygiene.rs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"00da26adb58dc03609a61d917f4c75ee8da6b4b22c35889691cae4ac4a7a4959"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: should probably instead check that it\u0027s a valid punctuation character \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/fixup.rs"},"region":{"startLine":479}}}],"partialFingerprints":{"codehealthFindingId/v1":"20c091df0fc9fb4bfdd7ab24bfa6f4e6b064ad1475e3b95c2e457d56ead27afc"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: https://github.com/rust-lang/rust-analyzer/pull/12937#discussion_r937633695"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/fixup.rs"},"region":{"startLine":547}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c0689b53f72a5018bc071afbb614e7b7d8a269c023e268da997dde186a79a53"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Figure out an API that makes proper use of ctx, this only exists to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/files.rs"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6c9fa5f879feee4f2a5f4a058c94c9a6caf01ccb639b1b9d0df0503ce747a90"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Figure out an API that makes proper use of ctx, this only exists to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/files.rs"},"region":{"startLine":412}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a88992a38a632ba295959f94090c9d055c1537cccda1405df65f0cf1a3fb35f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This heuristic is brittle and with the right macro may select completely unrelated nodes? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/files.rs"},"region":{"startLine":525}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ae46dfa588f49f8ac8edb424e01f17772aceeac3246f4bbb94561adc1db2b39"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We only report a single error inside of eager expansions \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/eager.rs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae4b5cf597d23208ebc915e5ab84304c6f9a9268782119a4a825dd1debf3542d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We discard parse errors here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/eager.rs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"7636b884667a864e9bf502b44134cfdc7ed6a9eaa3870df7e86720249e621a41"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/builtin/quote.rs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"266da5f2153cb5036f1f7b227ef23ce7670b1549111ec26b80db1af5c737b45d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/consts/valtree.rs"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"4003a4bb76447b5ac0909c053b29075004104b052c1d7ee0e9d8b7f7605c5e39"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_closure_to_fn.rs"},"region":{"startLine":690}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebcb5af5aae47ae1d82b82879a2c082a0d62b9a5bc4d918c9b42558358a74fd2"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/dot.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cf952bd2c47f8e9f04016a0f8b627dc7f063653a5be3481c9c289e9d3b9b338"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/expand_macro.rs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0ce6683cdf52360f089e423a0d9ed69c726c751eaf0d43f44f9a5d80f5cf48b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/doc_links.rs"},"region":{"startLine":379}}}],"partialFingerprints":{"codehealthFindingId/v1":"92a296b001d825841341c14bfb58a66e875da7ee10f57f39be48b04bd829f9c6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/validation.rs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fe983db1d73954c2090942d10cc0975000f60c126153ebc8d2f4f602b7379c7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Not all puncts are handled \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/builtin/quote.rs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"4374989a32652509ab5053355cc4ef710918f5a54458a061d0c084ad0d3157f6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /// FIXME: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/builtin/quote.rs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"d191ad1252492e5aa68a559e888249b9b0920edcb807850956cc8fb60264e3ad"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: RA purposefully lacks knowledge of absolute file names \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/builtin/fn_macro.rs"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"acf147ccd1005c0752ed97f61fb18d20f9eb37bc8f5bef3924e4e0975de695e5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Record allow_internal_unstable in the macro def (not been done yet because it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/builtin/fn_macro.rs"},"region":{"startLine":512}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1b1bedcad0a5279f44e19defd1a705001f59f102c7da1c9fcf52b7c66404cba"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: hack on top of a hack: \u0060$e:expr\u0060 captures get surrounded in parentheses \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/builtin/fn_macro.rs"},"region":{"startLine":562}}}],"partialFingerprints":{"codehealthFindingId/v1":"2137310dca35d6e08494e4d725715632255822e23e513c88003b767fed760f24"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Ignored like env!(\u0022NAME\u0022, \u0022compile_error message\u0022) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/builtin/fn_macro.rs"},"region":{"startLine":782}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa44424359ca7a26b5131d7bb4349dfb89340c57342c66bff0c6646cc19af604"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We wrap expression fragments in parentheses which can break this expectation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/builtin/fn_macro.rs"},"region":{"startLine":798}}}],"partialFingerprints":{"codehealthFindingId/v1":"db63ec483aa215c09fb3860b81ca779f0efe5edd7a1333ba1f0bed488d583bde"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: rewrite in terms of \u0060#![feature(exact_length_collection)]\u0060. See: #149266"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/builtin/fn_macro.rs"},"region":{"startLine":805}}}],"partialFingerprints":{"codehealthFindingId/v1":"c23f037a3a3d174242e4f33a9ee009db16909c52b2b24615595a92f5eb1a7aee"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: rewrite in terms of \u0060#![feature(exact_length_collection)]\u0060. See: #149266"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_bool_then.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"52e695e4248ef358e81933b09d97d22d4a548aaf7a91e938322ee2d1f4af4ae5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: rewrite in terms of \u0060#![feature(exact_length_collection)]\u0060. See: #149266"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/tests/raw_identifiers.rs"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8e1808374020eb3896a749a5c45016e3df2d05507979e9fe7067badf7dcde48"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: rewrite in terms of \u0060#![feature(exact_length_collection)]\u0060. See: #149266"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/tests/slow-tests/support.rs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"71f2d1528117fdc9fa5b934c524c57c355e4805de37732d1f9be5a9da1fb1d77"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Parse errors \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/builtin/fn_macro.rs"},"region":{"startLine":842}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fd03689ea6bc0edb32dcb029ec35a32f9a4d5112869edca1fdc4475ceebb3d2"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: actually read the file here if the user asked for macro expansion \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/builtin/fn_macro.rs"},"region":{"startLine":866}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a707b19d9a8dc1b68cf7d0a594a43f61139f6235bbbceadd98db767c92c1d7a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: we\u0027re not able to read excluded files (which is most of them because \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/builtin/fn_macro.rs"},"region":{"startLine":890}}}],"partialFingerprints":{"codehealthFindingId/v1":"609bc5539975dbfce4b054638d0cbb47e760789ebacedcd11936fefd7dd61259"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This whole thing needs a refactor. Each derive requires its special values, and the result is a mess. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/builtin/derive_macro.rs"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"209326ea9043d7244d0e73e2662945f49c723cb24dd161894ab60f4d4f6c68a1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Probably not correct wrt. opaques. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/variance.rs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"683aad74790294209ff70f549f49506e3f5fa9538f0f96f6a567b5bc206c437d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: RPITs have variance, but we can\u0027t treat them as their own thing right now \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/variance.rs"},"region":{"startLine":550}}}],"partialFingerprints":{"codehealthFindingId/v1":"229e8567b18f25a919c0d88b56119a3edf5579cf4f67661dadc1842424c33929"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(next-solver): I believe this should be \u0060PostAnalysis\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/traits.rs"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb51566575e0d1dc4ac87714214df21bd86251afb659d693964f86e99f3901bf"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: param coverage \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/traits.rs"},"region":{"startLine":384}}}],"partialFingerprints":{"codehealthFindingId/v1":"39b7f1e1470ed0f738bda33f472840c924b3533e37253383971156e7052b10bd"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Check impl constness (when we implement const impls). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/specialization.rs"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"544c12ba774b9d8c32c19985a8facb755e612a3e828c4debf045446e5b0cac55"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Handle more error kinds. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/solver_errors.rs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a07cdc19927216bc02540532ba028501d510e1b355edf0c5cc263ad846e1de7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(#11924) allow zero-length arrays?"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/representability.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"416a24802f24738e741cea8d2abf7b72bcff3afffc89807dab5546c3feafb38b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Collect opaques from \u0060#[define_opaque]\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/opaques.rs"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"69f92dff17898f4cdd3ceaa9c309f2e5b470df78697e657c7e0d48f25a549d22"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Support general TAITs, or decisively decide not to. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/opaques.rs"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bceb285f4f0a38ed53292ecc6cb73b6f706b4912718673e54e86e2cd90e0a05"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME : This should actually just be of type \u0060MirSpan\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir.rs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba8405918be55322e6607e5d1c5b6ce2e26b5ad539f8886fbdf4020a9a070d92"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /// glue is special - this would be part of Rust\u0027s memory model. (**FIXME**: due we have an \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir.rs"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"f316d76e30aeb402ebbdbce89913cae56f7955a918b693d09afb52c5f25fd616"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /// **FIXME**: Document exactly which \u0060CastKind\u0060s allow which types of casts. Figure out why \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir.rs"},"region":{"startLine":927}}}],"partialFingerprints":{"codehealthFindingId/v1":"1550a4ee2683d1be1b7b195c0976c6b2998b5ecc3564ed84461816290604465b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME link to \u0060pointer::offset\u0060 when it hits stable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir.rs"},"region":{"startLine":931}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8edc306436f7ce290163f019b9457867125541051f48581e6d197630118df70"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME TyKind::Coroutine... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir.rs"},"region":{"startLine":1248}}}],"partialFingerprints":{"codehealthFindingId/v1":"09e28f1d664808faa3affff17284d32524953443239b13730d08158eebbe92be"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME TyKind::Coroutine / TyKind::CoroutineClosure... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir.rs"},"region":{"startLine":1263}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f4fefa6d9a5588805841640128189c9c3c90d5d1027ccbd23e5f396543a5c38"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Report error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/method_resolution.rs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"4085261b4e92d7ded9d6c82722d90e4484f314ea3638f6eb69eab62682d97a67"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We should stop passing \u0060None\u0060 for the failure case \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/method_resolution.rs"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"cddf3a4bb77b875cb8e0eef1a9d2b2b02b39582dc4482fa64857a4a281f2a554"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: decide whether inferred regions should be replaced with error or erased. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/method_resolution.rs"},"region":{"startLine":517}}}],"partialFingerprints":{"codehealthFindingId/v1":"df18b5ba1fc468a0ed8ca75e726fcf3cfe04903ae7800126f76fc2deef8016ff"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Reservation impls should be considered during coherence checks. If we are \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/method_resolution.rs"},"region":{"startLine":750}}}],"partialFingerprints":{"codehealthFindingId/v1":"bffe54bddae964676dcececc5eaff5a912d43051fd04b80f868fdee0fb2e32e2"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We should use the elided lifetime here, or \u0060ElisionFailure\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"f938bf673f0be866cf992059882605c132c1f45785238c4c28cdc75fb9d777c9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: It should infer the eldided lifetimes instead of stubbing with error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":615}}}],"partialFingerprints":{"codehealthFindingId/v1":"c080457b63f3287aba74482a9fac672c0bd556b9ff59d2f571de73618cad1319"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: report error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":712}}}],"partialFingerprints":{"codehealthFindingId/v1":"44bdaf6126c8da0919130db46ad4665be6f92e75b0cc103adf0c1885fef07449"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: report error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":1278}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1716c1f90de8c3aab6557fa8d347b4b85d7a4f4a928919d5dd133838d07fa72"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: report error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"d884af75a03c2d42384c623b6c787d504650374ade087dbad5b8a3a8ad2dbf25"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(splat): handle splatted arguments \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":777}}}],"partialFingerprints":{"codehealthFindingId/v1":"265b1b54a00716fc0c9b2f92baad789e8c10c555cc6f5bbe6f27aa97695bc64a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(splat): handle splatted arguments \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lib.rs"},"region":{"startLine":467}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec2c74d15863cc28afe73404dbb23d12a071ee02bc9e26180b6fe7dd8cca8e0c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(trait_alias): We need to handle trait alias here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":866}}}],"partialFingerprints":{"codehealthFindingId/v1":"47839ceddc8042cef4521f482ed0ed7fc7ba5a8b10af4ba647d71141f1317b85"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(sized-hierarchy): Remove this bound modifications once we have implemented \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":942}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b55a7d2dd57741d4288beb82d681d99ba392d3a880f67dbc41d78137c5cb33e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Report \u0022conflicting associated type\u0022 error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":1109}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e3009aadf71421785fe5876783fb99a2db5cf9544275f6e8f9689d47d775851"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(negative_bounds): Handle this correctly... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":1139}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ed3707b63ad2a8cfbb3c2938e3f1fea3dece365af290f6d47ccaee749262226"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(mgca): We should walk the const instead of not doing anything \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":1159}}}],"partialFingerprints":{"codehealthFindingId/v1":"5335960e00e647c7dcd136f869d0e2d81549f4c6e13298da58336a27f07e01bf"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We should normalize projections here, like rustc does. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":2496}}}],"partialFingerprints":{"codehealthFindingId/v1":"94a35fb607552ed3629e53eab5fb60f477ddfb297ccce4e4d111e8778e0d64ef"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Remove this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":2914}}}],"partialFingerprints":{"codehealthFindingId/v1":"87291ef592e73578b805490d48a4ec6afc5cc949ca433bc65ea4d6698bc67e78"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Remove this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":789}}}],"partialFingerprints":{"codehealthFindingId/v1":"95b9a6220a681595450370ac4e2fbe024b5f63e68c0d884d88ecada9b073f7cd"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: we should never create non-existential predicates in the first place \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower.rs"},"region":{"startLine":2933}}}],"partialFingerprints":{"codehealthFindingId/v1":"55a0cfc4ff44a39b3fe7c1b5a547287bf85ab2eb5da9a6d1a967aa1e8d46079c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We used to import \u0060rustc_*\u0060 deps from \u0060rustc_private\u0060 with \u0060feature = \u0022in-rust-tree\u0022 but \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lib.rs"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"4047d5d09c6cb14b2f7eb2bb5f2f7ec3089d798b223c3d9dbd619edc7425efb6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Remove more variants once they get added to LayoutCalculatorError \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/layout.rs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ec12d8ab3083486579787d0de46160ed3fc6696530dffa5917fbe0bee1dbe4c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: move this to the \u0060rustc_abi\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/layout.rs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b5ce331f22b0381ce1352a42404c5995e68974ec0077da56653039f8db974cf"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(next-solver) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/layout.rs"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"476a7004ea31b444913cfd23016aebd494ea624d064b34a88a43efcad54d5034"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(next-solver) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/layout.rs"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdfbd177f4a76567b53eed5b266c189ec88e5ac649373b80134b35fdcf80fb17"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(next-solver) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/interner.rs"},"region":{"startLine":1860}}}],"partialFingerprints":{"codehealthFindingId/v1":"0565589767edf073b30b0d8135bc611df31af5dfb015356072e1c2486fe93872"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(next-solver) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/interner.rs"},"region":{"startLine":2047}}}],"partialFingerprints":{"codehealthFindingId/v1":"92128ebc3425ab61e2d24a8ab95496dc7f45d34613fcebb28021544cc0036ac6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(next-solver) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/interner.rs"},"region":{"startLine":2058}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec8ae7b3040256bb1a573821feda5de85529361cd4a743e421c9ac9b33cd2484"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(pattern_types): create implied bounds from pattern types in signatures \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/layout.rs"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c1adf8c15163a28ee297f37f9961ab5f68760a73f765d61d006f0f727b03b1f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Turn this into a query, it can be quite slow \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/inhabitedness.rs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"2848503fd0e7abad677e4b2c18b7ff0d577de15198299af1c871ae3a35dbf0ae"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Turn this into a query, it can be quite slow \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/inhabitedness.rs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffc07cc030d3b68b360050b8d97defd53a91370c363281260bf98df40285c4a7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This should be emitted in body lowering \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"953cab0d7a3afbd04bb385b18b1bdaba9c0335cded305973019b6e634c70bb07"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We should use this when appropriate. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":637}}}],"partialFingerprints":{"codehealthFindingId/v1":"77718766dc5b9789d4b701b41fa5c439daf255a7160dedef15b5fb8f11db7ee2"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This isn\u0027t as useful as initially thought due to us falling back placeholders to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":779}}}],"partialFingerprints":{"codehealthFindingId/v1":"62330800b21829ab9d5b40461ab36973e95389f0ba2b0fadabfc0a8a5a5b3a41"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Remove this, change it to be in \u0060InferenceContext\u0060: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":785}}}],"partialFingerprints":{"codehealthFindingId/v1":"d265efb96e9bf24c0256110ebe53d2068609b7e0a634907574f1c17699c6058e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Report an error if needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":1996}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bfc2e90ca586c1cc860083542014f58ff8616005a110dd52bfc9dc619a3ef6f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Report errors. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":2002}}}],"partialFingerprints":{"codehealthFindingId/v1":"e25457e1ac917fc4ef558875a7653b09a1e0307cec7b8d6b0bfe0a2eb31ea932"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: fetch the limit properly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":2042}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd5a79154bb406bdb06a2fa6ff17c5e70ec0c7d4311189875ddf22247dbd68fc"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Emit diagnostic. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":2184}}}],"partialFingerprints":{"codehealthFindingId/v1":"7496ac665aea7f783276677a006809155e905bb4119beaea622a135e3b2fc1fb"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Report error if there are generics on the variant. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":2294}}}],"partialFingerprints":{"codehealthFindingId/v1":"84ccca6a6c32899667b855003a61400c9fd43200d2350fff43c68430df6bbe88"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: with \u0060inherent_associated_types\u0060 this is allowed, but our \u0060lower_partly_resolved_path()\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":2421}}}],"partialFingerprints":{"codehealthFindingId/v1":"b314dbe36ed6770e39aba12bdb84095fcc154f6ef6f40ada9e6c6d89823eedd9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME Error E0071, expected struct, variant or union type, found enum \u0060Foo\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":2445}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4128a7420e1dc5afce93c7eaedeb668b5edd26d53631ca4b51ff040f36fab1f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME Error E0071, expected struct, variant or union type, found enum \u0060Foo\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":2486}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2565a5fb6cae1993a66c81816814376618ec230adbcb2a43ad6c0ad7ba20260"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME Error E0071, expected struct, variant or union type, found enum \u0060Foo\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":2549}}}],"partialFingerprints":{"codehealthFindingId/v1":"f44f6b8c8d658d6a48e7399c99f4d23bf0cad6c3ea8d6bbae972f95fed9daba1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME this could happen in array size expressions, once we\u0027re checking them \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":2507}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f8068b313548ac9f80e20b61fe596ff192600aea8da4f988a1d2054e916ccf4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME potentially resolve assoc type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":2511}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a2273f8c254449bae3e3830dc162c1ba6a14d169e49edb5607f94a82f0bdd17"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME potentially resolve assoc type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":2564}}}],"partialFingerprints":{"codehealthFindingId/v1":"e126df62d33b0a5d89264bb177d8b51d63a36146e92e84fdb97682f5959a9fc5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME diagnostic \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":2515}}}],"partialFingerprints":{"codehealthFindingId/v1":"0560e487ab489f3d4d5fa95feaa649ee9ac3f054dfd51d6dbaca38b3c25395a2"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME diagnostic \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":2528}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ef57f8dccd37abb2de8e097aa974657ad0e97e87f83daf0e3a50a80b2372654"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME diagnostic \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":2568}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a37133659c080a2eec4ad97cee487a89d7c7ab9ac4c84b439eee0650c4341c3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: get rid of this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer.rs"},"region":{"startLine":2609}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd9c31561731ada6b72729b4d9dfdcbab1a4adc676f0e7b4e97f142fa5b586ff"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We should use \u0060explicit_predicates_of\u0060 here, which hasn\u0027t been implemented to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/dyn_compatibility.rs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e0f6faeec454433284210e3328f87fc4131bdb699191daaae9b435f868ecbe9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: That seems problematic to fake a generic param like that? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/dyn_compatibility.rs"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"97b570be9befa20c7f4a35cfcf62e045f4b3f05aa5485b85a3c4acdf75b90c74"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Coroutine witness. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/drop.rs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"1491fbb4bae056e5daf0845a11f3cab45b67c02026b2397d67f6f234cd524c36"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: To consider, ref and dyn trait lifetimes can be omitted if they are \u0060\u0027_\u0060, path args should \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed123a46039f1abb9e34afb515ce3076b4c4ada1110785f7f2ab77cff3647bff"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Also named lifetimes may be rendered in places where their name is not in scope? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"42b23beb413c5e5b1e471d5f9c04e2359a5f21daeebbd4c4a302dfcd7c8d5f23"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We shouldn\u0027t use \u0060param.id\u0060, it should be removed. We should know the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":696}}}],"partialFingerprints":{"codehealthFindingId/v1":"28e9241cc1d47bd8bcabe3ce439f73eb98be25185b0a68244bfb5c6160ea4672"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(#17451): Replace with builtins once they are stabilised."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":848}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cde85d9e538969cd6d5bf9dcc95736fd372420cc557bea9fc4189a537a5d421"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(#17451): Replace with builtins once they are stabilised."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":867}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d5f81788c1ba4baa35f12166b28db33b30cf174f9cbaa230b5a0dbecbf39791"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(#17451): Replace with builtins once they are stabilised."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":1121}}}],"partialFingerprints":{"codehealthFindingId/v1":"04ee628834272ab0654f82e3f7b2eac2b5b44583e7384bcc279d656c07118165"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(#17451): Replace with builtins once they are stabilised."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":1140}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fa08546f96a97fffb551ddd2dd1e8f6b8b6c9386f7194021091fcae7ad17e3b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: ADTs, requires \u0060adt_const_params\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":1201}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f71b41a33cc393e2a14c8bc5d3b73de68ed8b16a205740abb7a0a88814ececd"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: no_std Cfg? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":1476}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c70df696cfee9ae74f0be8a150ffafe053727ed70e2554b2432205a91c77ef5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: it would maybe be good to distinguish this from the alias type (when debug printing), and to show the substitution \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":1521}}}],"partialFingerprints":{"codehealthFindingId/v1":"12cc9d6fc47fe22d8315d7a1d643d6e69e99029d16a571b0ef2d2847a7e1f8e0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We should not access \u0060param.id\u0060, it should be removed, and we should know the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":1663}}}],"partialFingerprints":{"codehealthFindingId/v1":"b884fb67fb773af8da04c0af63a096946a13eebc9a880e13c2a419f7f4df2da9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is not correct, really. But I\u0027m not sure how we can from the ty representation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":2279}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc82d1ad2ece05a6915179af77b3343eb7efa0afc6d92ad145d7bc8a55eb378d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: should use the dependency name instead if available, but that depends on \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/display.rs"},"region":{"startLine":2708}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d9108d8fb762600cc9014738fedfc83729562ada193b0a001c8038fd32af1c3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Collapse \u0060mir_body_for_closure\u0060 into \u0060mir_body\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/db.rs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"3979128f3fe40318a6a39b412555d2df4d131b7cc93ce675b69e72686b28a737"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Report an error? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/consteval.rs"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b5167f4fab32fe614729204609f5a975fe968f734ada0efa35f22815f974062"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: Fake the param. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/builtin_derive.rs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"70b4d2f2577a0c2abdba84e015e64b9e27c6ca9e740edb133402a1c16d24e22a"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: The recursion limit for \u0060Autoderef\u0060 is currently 20, so \u0060Vec::contains()\u0060 shouldn\u0027t \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/autoderef.rs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb14480dbcf0ec7e2d6bc54b5b6caaae6e072c6b0ea2a0807e02bae6c194c102"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(#17451): Add \u0060f16\u0060 and \u0060f128\u0060 tests once intrinsics are added."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/consteval/tests/intrinsics.rs"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"451ab54f90fc785ebd22231478d99937f1a6475ecc69fb38d001d985cc1ead91"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this should be an \u0060expect\u0060, but that currently results in \u0060lint_expectation_unfulfilled\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/consteval/tests/intrinsics.rs"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"5312fe1703ba4be801da8bb4f67864145f88d13ceac65c413648e80fc8911bb0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This needs to be the edition of the span of each call. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/unsafe_check.rs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"40e13e892fdcccf7041f19f8841e3818f3ca2e77313d0d40b08c1a817bf9a0b5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: for now, only bool literals are implemented \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/match_check.rs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"35cdd46cb557d26efba31e10a58d5ee0f8c349fe2c9a7983a29bf3900ef88507"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX(iDawer): Collecting pattern adjustments feels imprecise to me. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/match_check.rs"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"59f05d0576ab015514a1312c7013c529d35cbbbc3262431c8742c2db2482e4ba"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX(iDawer): field lookup is inefficient \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/match_check.rs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"64369c9a7555478830e2c1a95dc6415c62b3584adaf76472273920b2e4c94272"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Due to shortcomings in the current type system implementation, only emit \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/expr.rs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"73e943768ac96c65c2735aff6ba45f1a46d0537692f20ec8b4c74d60ea34235f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME we should use the type checker for this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/expr.rs"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa945f6e8fbd6329128002b187da3249af735859b724b8b28dc542c166cbf209"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME Report unreachable arms \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/expr.rs"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"056bb759639f33569c32c1e9106e73bb64fc51b493d967b4ddce5f9b2ee144e2"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: only look at source_map if we do have missing fields \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/decl_check.rs"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"56eba4d9ea959926c8e515fba50aabbd9cb11a27084c293e3f7b58b991154a58"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: Only look at sources if we do have incorrect names. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/decl_check.rs"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"d95fc4a9c955f9a29042c9f0e707e873b370cda8471974d3fef94168d19413e7"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: Only look at sources if we do have incorrect names. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/decl_check.rs"},"region":{"startLine":432}}}],"partialFingerprints":{"codehealthFindingId/v1":"08540bb23f9326447bd76c5ceb3ad76a7c01f44ef49c9c1b35aabfb1c30757ae"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: only look at sources if we do have incorrect names \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/decl_check.rs"},"region":{"startLine":522}}}],"partialFingerprints":{"codehealthFindingId/v1":"01e9c74280e395b38fd96ed9ed9a3cd2add13e3600a98efdbc59ecac589fa247"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: only look at sources if we do have incorrect names \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/decl_check.rs"},"region":{"startLine":593}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee569fc8d81ae1ad48e67153833d6c11c2eb3be32a726559f33ce13c95d1e0ef"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(deref_patterns): This could report an error comparable to the one in rustc. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/diagnostics/match_check/pat_analysis.rs"},"region":{"startLine":510}}}],"partialFingerprints":{"codehealthFindingId/v1":"5448d03e0ac4ed4f94b7bfae4d5212f82097bd4e58903716a1b117f1e3694e1f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We should also report \u0060SizedSelf\u0060 here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/dyn_compatibility/tests.rs"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d2a83c575509fb8cd29cac8c9af3d9b747c931cafd895f2af60595adf041394"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(next-solver): Handle \u0060goals\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/unify.rs"},"region":{"startLine":569}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b372ec0c09d3473db5d9e01605cb18ad06ebbffcead8fc1de64281811cb87ca"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This should not use a dummy span. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/unify.rs"},"region":{"startLine":741}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1247ebfb36df34780c95af751a1babfc5d9df716ef4c1e8ef5d693a130d8b14"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This should not use a dummy span. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/opaques.rs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"a621ad2ceb1bd41f87659a26c2af945ebf5c4ceeb621a92edc18b58e06058da1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(#18741) -- this is almost but not quite the same as the"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/place_op.rs"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"44a18e707e18773d87e2a87d81bf5272e57a9d9981978a3528d48096972d7f4e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(trait-system-refactor-initiative#231): we may want to treat"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/place_op.rs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab077a16e3449d83bc1570b674fedf5a0eaaba64cc4ab3213ddee3c5615adbdb"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: rustc does not use the type of \u0060index_expr\u0060 with the following explanation. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/place_op.rs"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"050291689546267637fd9509988e297e2ab6384d2c84a145cdbbb0442e530821"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: report error, invalid Self reference \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/path.rs"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0e9e91010971bc9eb0d7e29126be9909a67aaf7396f8303a0df45014a22b623"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: report error, unresolved first path segment \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/path.rs"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"e35cb1350ced03b063dcca5bf24bd2e8046e451f9f6c0cd12becfe68e7728632"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(deref_patterns): If \u0060deref_patterns\u0060 stabilizes, it may make sense to move \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/pat.rs"},"region":{"startLine":584}}}],"partialFingerprints":{"codehealthFindingId/v1":"fabe2e652c3cea86bf61655becb2152ba8a675dd4761f0b6cdab6fa6c34e70cf"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(deref_patterns): If box patterns and deref patterns need to coexist, box \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/pat.rs"},"region":{"startLine":615}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4d7757157cece64ecf6505260517418515a9f6ade12f2853bc80c4e97e312bb"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(deref_patterns): we\u0027ll get better diagnostics for users trying to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/pat.rs"},"region":{"startLine":723}}}],"partialFingerprints":{"codehealthFindingId/v1":"b89b30abaef108c598eb74b5d0700b3fba405ac53c2ed31400121e0b3d3f09cd"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(ref_pat_eat_one_layer_2024_structural): If we already tried \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/pat.rs"},"region":{"startLine":1419}}}],"partialFingerprints":{"codehealthFindingId/v1":"33dc8d2797e8ef5bc7f5ef6b4774256a620cc3ee44f77c86c6461bc31ff23c77"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(ref_pat_eat_one_layer_2024_structural): If this results in a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/pat.rs"},"region":{"startLine":1451}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e3039975d6cb510ddfa8336a57967cfdd8611e07263200c970baec67e4aa17d"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK(eddyb) Bypass checks due to reborrows being in \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/op.rs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"744c1e35d765fd0c365844f09980e1c2c3e28577e9bcd2a3cfe6103d7d56468a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Report diagnostic. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/op.rs"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fe5292f3cf4c2096bbc38d256e0172f2c8b6b3205a029c7ff880da819af7b28"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: rustc does the following, but given this is only relevant when the unstable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/fallback.rs"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6ccb5c0738bb0a40178f1ec5f4b26801fdc785d963fefaf96d0d17deea24017"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(tschottdorf): this is problematic as the HIR is being scraped, but \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/expr.rs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"6799cbfeef967e943c33713dafcc64cc04bffaaf8977b75cebcecf55da3da8ae"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u0060sym\u0060 should report for things that are not functions or statics. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/expr.rs"},"region":{"startLine":850}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a9ac6b6211464a1f36a7a871237184873107296eaa233ed13bac0aebff0060b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Emit an error: missing fields. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/expr.rs"},"region":{"startLine":1075}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd8756cbdcf7bd0c28a143c5f388b5ee4dd4c59e3270ba947008c58ec3d2fbf5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Emit an error: missing fields. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/expr.rs"},"region":{"startLine":1167}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef76d6c02d58531f00493ba802c3f7243cf7ea9fc4f0ae8f335f3a7b90aa40ff"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We are currently creating two branches here in order to maintain \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/expr.rs"},"region":{"startLine":1079}}}],"partialFingerprints":{"codehealthFindingId/v1":"34675affed456c4d6a8a18b29e6064350702f8a293116aea1d7c4278fbd28ed5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(tschottdorf): don\u0027t call contains_explicit_ref_binding, which \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/expr.rs"},"region":{"startLine":1226}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1416a52ecb20d16ac79a90d1f52498c29ca55708a8beae63743d8c05aed4665"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Do it here like rustc. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/expr.rs"},"region":{"startLine":1339}}}],"partialFingerprints":{"codehealthFindingId/v1":"c19a6503ba90ed41554c425d84c11afc1b5a7f6bc188e854611e742c9d7937f0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: the element expectation should use \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/expr.rs"},"region":{"startLine":1368}}}],"partialFingerprints":{"codehealthFindingId/v1":"50ca895a0544766293eb6222ba823c1125f3d624cafbcdebc95d43e42663f60b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Merge this diagnostic into UnresolvedField? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/expr.rs"},"region":{"startLine":1690}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc9c237a3e181e876aad8094ae57929af33e470d006ed668404f9e4e973443c1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Using fresh infer vars for the method args isn\u0027t optimal, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/expr.rs"},"region":{"startLine":1725}}}],"partialFingerprints":{"codehealthFindingId/v1":"063e2908848278edb5ba9815d939ce2f27ab6bb4dc8e787d21928687e8c49713"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Target features. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/coerce.rs"},"region":{"startLine":1467}}}],"partialFingerprints":{"codehealthFindingId/v1":"537474b8494b64b89d80566d18572e7c3cd2f9bc19ddaacfbb023acb57a77726"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We don\u0027t fallback correctly since this is done on \u0060InferenceContext\u0060 and we only have \u0060InferCtxt\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/coerce.rs"},"region":{"startLine":1590}}}],"partialFingerprints":{"codehealthFindingId/v1":"aaa1296fbcf9a861b93a8e690ef644936084ca1a4b96c4c392605cbea17f7063"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: structurally normalize? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/coerce.rs"},"region":{"startLine":1662}}}],"partialFingerprints":{"codehealthFindingId/v1":"d78de35cca9fe6a25863a2ec2031469d401984a6210d1da0cce709f9a41927df"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We could probably actually just unify this further -- \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure.rs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"98f7a9550ff9f384b73b2e1b796e67111913bcb4b42fb183ff493c7755c8d146"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: lift these out into a struct \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure.rs"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"74fc31d8df794f1af590cf6499a2bf0012bb4e58210936db2d4faa2d0fc59d26"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Report diagnostics. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure.rs"},"region":{"startLine":493}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6632663848f8ec984a03fadb580f6d5ba70c6a2e8b81f8508a60ccce9f5c7f4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We may want to elaborate here, though I assume this will be exceedingly rare. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure.rs"},"region":{"startLine":664}}}],"partialFingerprints":{"codehealthFindingId/v1":"b63df878441c227c07823648e533c8636e8abd110e41af84ec6058bb1eec6701"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We probably should store this signature inference output in a way \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure.rs"},"region":{"startLine":691}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c620bebba3dd451bea1e9dc0009e797ad7fd8198d367f650504c1d22ece9b6f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(#45727): As discussed in [this comment][c1], naively"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure.rs"},"region":{"startLine":895}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb320b77e79da537cb4e142a397b07dd407db2b6f7855c04622b8608cc416858"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: def id needs to be changed? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure.rs"},"region":{"startLine":1161}}}],"partialFingerprints":{"codehealthFindingId/v1":"da7a0d489c266177f3b0219ff09f61edeafa7aaa01a439b5084f2d3f4be7dd99"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: rustc does some ABI checks here, but the ABI mapping is in rustc_target and we don\u0027t have access to that crate. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/callee.rs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"746665a1cda740037f317345146982c39fde7359c83411d05cc93661b68e3985"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack: we know that there are traits implementing Fn for \u0026F \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/callee.rs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cfde69280e268214b6554d5a68f33b1e2e9b2eb94b04fedfbf582afac391d96"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK(async_closures): For async closures, prefer \u0060AsyncFn*\u0060 \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/callee.rs"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"88e12d123b7eedfaf2a650c7412610cf1d96a35cfd21a3c9cd6673f5b7721a2a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Actually lower the expression as const. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/callee.rs"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"3db0016e5628a002f426f486f39c72cf6707d3a22922b767b215d18148a6fdc3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: evaluate and unify with the const \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/callee.rs"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e51bdc4efe40de578c736e531e64e926ee5ec468d3903d4a22cdaf52a94c2ec"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(const_trait_impl): these arms should error because we can\u0027t enforce them \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/callee.rs"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e3d25e9bb14f204efc3cfc12c7406a28fe253d808c6f2cea822a9b3f5fa082e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /// FIXME: Rename this to indicate the borrow is actually not immutable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis.rs"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"b628aad742ae90b8c09ffd7c55c332932fd088438864fe5e13039bc09e12c6ab"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(async_closures): This could be cleaned up. It\u0027s a bit janky that we\u0027re just \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis.rs"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"93526593c12afeafb4d1626e45dd5cd68a50d89e880efe367c018005388f2cd5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Insert coroutine stalled predicates, this matters for MIR. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis.rs"},"region":{"startLine":936}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f8f274dbf9a6826c66106ce6cee294f960955ff6eea720f7aa87b4e984f9391"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //         // FIXME: throwing away the param-env :( \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis.rs"},"region":{"startLine":941}}}],"partialFingerprints":{"codehealthFindingId/v1":"7898478c1e54b8fa721f6ae12ee59846ca1d33df33b2a79d33e5d023cc91f86f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We should use the edition from the closure expr. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis.rs"},"region":{"startLine":1607}}}],"partialFingerprints":{"codehealthFindingId/v1":"a612c4bf220aa79af0f3d283bf7a1ff56a8245dfbce30dbfb811f7056219ad4c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /// FIXME: \u0060ExprUseVisitor\u0060 has an entirely different opinion on what \u0060FakeRead(ForLet)\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis/expr_use_visitor.rs"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"a933e9ab1f52b6951a724131e3192bf02a1c74b664cdf9653eed1d818fcec7f5"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: this could be a fake pattern corresponding to a deref inserted by match \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis/expr_use_visitor.rs"},"region":{"startLine":887}}}],"partialFingerprints":{"codehealthFindingId/v1":"218f624f79700d98e355a29c261b272ee01109e270b7fbacb04bfdb5efa90542"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Does the MIR code skip this read when matching on a ZST? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis/expr_use_visitor.rs"},"region":{"startLine":970}}}],"partialFingerprints":{"codehealthFindingId/v1":"355bbcfcac7fcf891238b93ad6ac6b60aab57bea68243c20915c4859876d6db9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: What if the type being matched only has one \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis/expr_use_visitor.rs"},"region":{"startLine":987}}}],"partialFingerprints":{"codehealthFindingId/v1":"d775e76bdbd8fd50630140d49bb67f04f4730719ce663e861f26bfcdc2fb543c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /// FIXME(never_patterns): update this comment once the aforementioned MIR builder \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/closure/analysis/expr_use_visitor.rs"},"region":{"startLine":1739}}}],"partialFingerprints":{"codehealthFindingId/v1":"b40475463754379b9960f6761685ce9ad8a3c534c3da7033e4f583080f7b48b4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(#17451): Add \u0060f16\u0060 and \u0060f128\u0060 once they are stabilised."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/layout/tests.rs"},"region":{"startLine":524}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d4ce9b1ffc5b3ce37a344765c178911a22862b4e13eed1743c0d76ff274d703"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: These tests currently fail, because rust-analyzer hasn\u0027t yet implemented the changes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/layout/tests/closure.rs"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e365af437dbb19003b520fbb6763b3cd0907ce69dbd967ea81a5d2dbef9eb95"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: These tests currently fail, because rust-analyzer hasn\u0027t yet implemented the changes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/layout/tests/closure.rs"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd96f3c784786f5dd9abb3655d22f089c1fde0e203b086fe3731ff5f12b039cb"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME report error (ambiguous associated type) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5284b3c8e665ab408bb89e751a65c979f8fadc3f04bc38c152fca50dac561c9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME report error (ambiguous associated type) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"02d465b5f5a8cfdbbf34f34bc3b10df04207a5919f459cad728e5ddf1e3d19bf"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u0060substs_from_path_segment()\u0060 pushes \u0060TyKind::Error\u0060 for every parent \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"a98607ade78d94c9570818e61edd45c0b39ec1d4acee0805cb7bea82eeade745"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u0060substs_from_path_segment()\u0060 pushes \u0060TyKind::Error\u0060 for every parent \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":540}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1922007d9f483636004e860681b0bc72987b4d8430539977bc213ec3d1392f4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u0060substs_from_path_segment()\u0060 pushes \u0060TyKind::Error\u0060 for every parent \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":912}}}],"partialFingerprints":{"codehealthFindingId/v1":"08a99b7b9095ec2066944f79c68cce7f2dddfc594fbc8a02632faaa5c741de10"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: report error (associated type not found) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbdfa7fb814555766de755a4a3625e65892aaa40b1e3b0c81a9fd7d1aa80e0e3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Handle other reasons. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"690866f1fda559949335a7a1a41b3ae3c68b572c776cf03c930927ade3add7ad"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: rustc generates E0107 (incorrect number of generic arguments) and not \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"89cdb205f19130ff4ce97d76e35804f39913043fb8666b61603a489bed59cba7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This isn\u0027t strictly correct, enum variants may be used not through the enum \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":595}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3e1ea5bbb7579dfa40859a039d8517cea4000d45764a85805fe3f001cb56986"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Check there are other lifetimes in scope, and error/lint. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":1107}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1fda89960cd364eaea8c5ad1cdb0a486f7355c038ca307930d1c54abab428a2"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Report a diagnostic here, rustc emits \u0060E0404: expected trait, found struct\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":1240}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb6c5457772cc60ebd92a40fdb181282008697dc60554b110546939774ec273a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: With \u0060AnonymousCreateParameter\u0060, we need to create a new lifetime parameter here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/lower/path.rs"},"region":{"startLine":1370}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9a66f3a668db05cbc273f4bf482946d76fb3616956adc5d4e7216c89d15f18e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Emit the lint. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/method_resolution/probe.rs"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb1eedcc33880669608fee35fae959cb331beaffd63e150be44a3ef111a9fb5b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Emit the lint. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/method_resolution/confirm.rs"},"region":{"startLine":597}}}],"partialFingerprints":{"codehealthFindingId/v1":"262a8ac60c86718b5e971a32e3ad65bd8605d35df6f390d932d9de78756baf74"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Report \u0022type annotations needed\u0022 error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/method_resolution/probe.rs"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"52e09b0d979c18d55fd0ef77763de58021877664a46d1d7aa3417339aee513d5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(-Znext-solver): We alternatively could check the predicates of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/method_resolution/probe.rs"},"region":{"startLine":1750}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec6a00ddb03d9645f9bafc97518e16154d98c27aef0e403760a3cb7122c5557b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Need to leak-check here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/method_resolution/probe.rs"},"region":{"startLine":1772}}}],"partialFingerprints":{"codehealthFindingId/v1":"505ef5d25021be4ef849fb1adde09b79e9e350065f40ca22d3574cd9b2eaae10"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: check the return type here somehow. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/method_resolution/probe.rs"},"region":{"startLine":1891}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e05f4f5d7b8b959ee6fcc533a86fe4388e784f022178cca98dfdcd97753b6a7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME -- check for types that deref to \u0060Self\u0060, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/method_resolution/probe.rs"},"region":{"startLine":2000}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4a9421667e44f70f6fb0ad9f7038cc654949dd02974254f83f483fc2a0c2519"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Do we need to fill the memory map too? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/monomorphization.rs"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ce2045da842b550efd137e53ec60a702a011240dd0f3f18fc33f7bc4a332919"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Make this smaller, its stored in database queries \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower.rs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"74f48b115f20dc5056c37ee06faad1fdc48372744e4159c6bfd64c4d95433983"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(next-solver): Is \u0060non_body_analysis()\u0060 correct here? Don\u0027t we want to reveal opaque types defined by this body? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower.rs"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"25033922554b36797ed801d4fe67533c80344bb88bad8714b63da5e6e2d35f98"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: make these short circuit \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower.rs"},"region":{"startLine":1190}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce6f81ca96a9cc1afa34ac40ac51fd45d0f70ad8d15b8839a1c5f98a0b871ae6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Handle more than one span. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower.rs"},"region":{"startLine":1259}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ded86c4f89cad14ad1eddbe9d91865da0fd7135dfd1a6fa3e981ac95d68ef9f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: rustc\u0027s ty is dependent on the adt type, maybe we need to do that as well \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower.rs"},"region":{"startLine":1670}}}],"partialFingerprints":{"codehealthFindingId/v1":"0befe43768ee94d1dff5c55265abf426a395ba70b6da67c9495792aebd79f1e1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: It should never happens, but currently it will happen in some cases, not sure when exactly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower.rs"},"region":{"startLine":1950}}}],"partialFingerprints":{"codehealthFindingId/v1":"5102aa34ed1a9fad2888ef3cffa167e923315cef475c5bfbc4f47e38afff3744"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This can happen in fake reads. I believe this is a bug. So we change the fake read\u0027s meaning. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower.rs"},"region":{"startLine":2219}}}],"partialFingerprints":{"codehealthFindingId/v1":"7af0b3f453e28e8d8b6e6db7db953e74aff243794ff4bce3783c9cacd64aa1fc"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(#17451): Switch to builtin \u0060f16\u0060 and \u0060f128\u0060 once they are stable."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ce184bf066585a3419cd645a648f1d0779319a902eaa60607fb24028e47e2ec"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is a workaround, see the comment on \u0060interpret_mir\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"039ec36799fee3586175f3b652deda4f4719deda2af122453dcb86cc08d8d071"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This should be folded into ConstEvalError? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a9a454949f8a2cef3dd33f8ce451633d58543f2dc7036a7ca6f73d72073bbe3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /// FIXME: Fold this into InternalError \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee0a1b9300e06ac1d0ec2f1ba47316c8d3bc19fe170be97e0f349a7a9e8d4756"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: replace parents with parts \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":578}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ba5261db09acc559f34286d444b7edcb03f14c2a317385b071e843cedfdc272"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is workaround. Ideally, const generics should have a separate body (issue #7434), but now"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":615}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c87785b1d1cf826cdfda4dcfea63e6932eba7e5eda9c1ae2decbb5993927842"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: there is some leak here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval.rs"},"region":{"startLine":3018}}}],"partialFingerprints":{"codehealthFindingId/v1":"07ec92415f7e875b8e296bd48c8cfc0ff84d409f07374ddd300ee27b897ae577"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: replace this function with panic when that works \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/tests.rs"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"3facca33c244c207b35f7aa2227e3ecd7e78ebb20cfb2fae8afc6c8745664db3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: replace this function with panic when that works \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/tests.rs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"63c0e6baafed19f002c7f7cfb1c9f8bc379a52f1e66118bdef9c2394da102b1b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: replace this function with panic when that works \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/tests.rs"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"48ee56abfc16f985a3d98dd9194c7ff15ae2f99fe994bce69f52673a30c8eee3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: replace this function with panic when that works \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/tests.rs"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"759d5bf17240168ec0a1dc0b67ad604437637a624bc516943d41c364a155387a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: replace this function with panic when that works \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/tests.rs"},"region":{"startLine":422}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e7da4d17fc74be3407ca6dba5c909e56d77495949f26fb58d0cd2097207465f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: replace this function with panic when that works \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/tests.rs"},"region":{"startLine":499}}}],"partialFingerprints":{"codehealthFindingId/v1":"99dfaa93ab3c4d0b1bae0f13988fc828919ddbaabcf45d8ea5a67310057e9ca2"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: replace this function with panic when that works \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/tests.rs"},"region":{"startLine":517}}}],"partialFingerprints":{"codehealthFindingId/v1":"c58b5a5c832f24db19c8c55001e0d0ffc1c6ce5e650208dfe84e7b98fd808627"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: replace this function with panic when that works \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/tests.rs"},"region":{"startLine":622}}}],"partialFingerprints":{"codehealthFindingId/v1":"91da449e1bb14cc4464432a46d6c09d79821b28861fa09be2dfd03e038dda588"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: replace this function with panic when that works \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/tests.rs"},"region":{"startLine":764}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e690d3a5c19330b50b79f2bc6db2e93ebe6396fcc5b734bc1bebae8619d53e3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: replace this function with panic when that works \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/tests.rs"},"region":{"startLine":784}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a121e8ecd583f64800d6548f2c864418e740841f051d1b35bf1bba86bcfe2ea"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: replace this function with panic when that works \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/tests.rs"},"region":{"startLine":886}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ac9dd863ca7478a8fce45eff4a19f03a14451db59842f38f157f0c877ebb4fd"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: replace this function with panic when that works \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/tests.rs"},"region":{"startLine":915}}}],"partialFingerprints":{"codehealthFindingId/v1":"551b34fb1eebd3fe435a988d526ee4ca163a6dd1de7f13e110026530076eba7c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this should be 3 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/tests.rs"},"region":{"startLine":336}}}],"partialFingerprints":{"codehealthFindingId/v1":"16c0aa89d9df6234ec66074255843ab00bf31aa593a481bd1d04844cd36b318c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(#17451): Add \u0060f16\u0060 and \u0060f128\u0060 intrinsics."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":581}}}],"partialFingerprints":{"codehealthFindingId/v1":"af8519205f86eb8b032eab27e828215aad7400232f774f9f307941ba15b34ce6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: these rounds should be different, but only \u0060.round()\u0060 is stable now. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":605}}}],"partialFingerprints":{"codehealthFindingId/v1":"63c42dcd252fac761dd58fcb072df9e4d98dc59afac665953407e6e0d51b3361"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: these rounds should be different, but only \u0060.round()\u0060 is stable now. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":677}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e355b80db0fb33c00d3b1f6a6dbbdf2fe154edd678b6580eb8cb576b765bc87"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this is wrong for const eval, it should return 2 in some \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":827}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1710bad63a19f6e5e5e6fe5da36c97fdaebbf793b606324b4beac1eaa90fc26"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: signed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":851}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae114dce2807b632a0fc19a3fae9430825f2debbf76161b7ebad18dd6dfcfa24"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: signed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":854}}}],"partialFingerprints":{"codehealthFindingId/v1":"674ccfff56b38b7c9c76a802480b9fceea0b05ecb752d1824797952c6898c66e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: signed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":911}}}],"partialFingerprints":{"codehealthFindingId/v1":"04586842c317706e9cd083edd95e31c8d1fc9a8acf93fe347dec78e272299357"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: signed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":923}}}],"partialFingerprints":{"codehealthFindingId/v1":"248b8ab8de51f3ab190b5966542ecdbbdf2955d8051350184ffa6eebc91cbc70"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: signed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":935}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb4f0866e33cfde0842f887f1c0534c89dfe1c702725f93328697e4ae96969b5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: signed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":949}}}],"partialFingerprints":{"codehealthFindingId/v1":"d50a845de72a0098f4c4048beeeffbf7a9a6724ac0427d97ce75d22499711840"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We should actually implement these checks \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":1102}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ffb54dd2889a0b378203f613e5968b68748a8a92f523dcf5a44578e5e562b99"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: wrong for manual impls of \u0060FnOnce\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/eval/shim.rs"},"region":{"startLine":1248}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d7520f7853b7689004912736d8a24bf57bec56f3cc37f1499a25f18869a2766"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: MIR lowering should be skipped for bodies with inference errors. Once \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/mir/lower/pattern_matching.rs"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a0d75304f4833825f9cefddad3972f72ae854417dfc3c1cdd67b11cbf9aa9f6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(next-trait-solver): uplift \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/util.rs"},"region":{"startLine":382}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac915c7acc4cb21bc869700e19a1c757a3a418eed20c2da4a95aecf841007c76"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(sized_hierarchy): this temporarily reverts the \u0060sized_hierarchy\u0060 feature \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/util.rs"},"region":{"startLine":663}}}],"partialFingerprints":{"codehealthFindingId/v1":"e56c090b1603e7706396a846ba2e1c182a745f0c4fcc16a8e82f5ec222991726"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Should this be here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/ty.rs"},"region":{"startLine":746}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a5f5e40440afd6464b2e44c577a93c9952d8de8bea1694962279ba623b43a53"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We shouldn\u0027t use \u0060param.id\u0060 here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/ty.rs"},"region":{"startLine":760}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ed2f515367d54407b3d5debf8d81ba84e7b9a2fa108f5444770b28fca5470c2"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /// FIXME: Get rid of this, it\u0027s not a good abstraction \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/ty.rs"},"region":{"startLine":806}}}],"partialFingerprints":{"codehealthFindingId/v1":"4593359783c1fc793a0ce9988caa1296494f7528518af39495352046d19a7427"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: Coroutine witness types are lifetime erased, so they \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/ty.rs"},"region":{"startLine":1212}}}],"partialFingerprints":{"codehealthFindingId/v1":"e49cbd5566c981251abe7d41953976dbebd59016dafe1282315615bf3378c1b8"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: I\u0027m not pleased with this. Ideally a \u0060Param\u0060 should only know its index - the defining item \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/ty.rs"},"region":{"startLine":1436}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f596481b3e73176d3424877e5764b605b51c4e070d79f885f817b8d1e728623"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(next-solver): \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/solver.rs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e056349c5acb105a17c0a166b9af9c6a5697575ac454cc91efaa261e626c2a2"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: add if we care about regions \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/solver.rs"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdef6753599a2049159dc207137ebec4ad0daf7c27c34f49e4dd1879f0db23af"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Not all evaluation errors should return an error const, rustc returns None on \u0060EvaluateConstErr::{HasGenericsOrInfers, InvalidConstParamTy}\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/solver.rs"},"region":{"startLine":279}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbb37aed6f8b6e453b23edf744c4be9b261403ec6b61fc6b9b8703a9005b2a78"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Properly consider opaques here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/solver.rs"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"df505bb734fe43d5e152f95a064c8fb48ed977009e08c7db176d0715c8b7572c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: See \u0060ParamTy\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/region.rs"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"85a58d5383382edc4577da015e37ef2e423ad98df87cee8b094c96a954a35a44"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: See \u0060ParamTy\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/consts.rs"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"0906fe7cd22d72975476e343c6cfefb9e85fba7f103665054bdb5839370ca0d2"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this is actual unstable - see impl in predicate.rs in \u0060rustc_middle\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/predicate.rs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"cda5f66d6d925b9794c73fda707634616ab987887fbc261b1634110c2e4bf2cb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO implement Debug by hand \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/predicate.rs"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb793d58bd285c7e494deee93b448a66e238f60e7a30f0d9adb34a1b49ec12e3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This transmute is not safe as is! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/interner.rs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"015b59fe0d95832bbe31f9833a998fb5ff91844bb9d0f26621b4a7ce8c71c8a5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: very wrong, see https://github.com/rust-lang/rust/pull/144808"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/interner.rs"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"4382020479f352af148b03aff2781678f821d1b6a2aac34cac22f11ce7e40da3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(next-solver): remove this method \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/interner.rs"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"41db47ebbcaca1e10a1a353282ea0f103d789774d893087868c17c52aa17dc06"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(next-solver): track variances \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/interner.rs"},"region":{"startLine":1074}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d265beeca3c4bdfe8a713dc6771e5a899008149697b97028718f5d0be4c53cd"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(next-solver): This uses the types of \u0060query mir_borrowck\u0060 in rustc. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/interner.rs"},"region":{"startLine":1106}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2a74ebecda16332fac9a68bf34fe78209582253fcddf1cd879641a3e6985f94"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Is this correct wrt. combined kind of assoc type bounds, i.e. \u0060where Self::Assoc: Trait\u003CAssoc2: Trait\u003E\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/interner.rs"},"region":{"startLine":1388}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e201562bdffe2def232198850a2c2d94450f66652e2419826697f289b43776b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: derive PartialEq on SolverTraitLangItem \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/interner.rs"},"region":{"startLine":1554}}}],"partialFingerprints":{"codehealthFindingId/v1":"176ee0afd1fbab046cac994498743540e0f6b77804e846f6c5ae29b87ea4ed3d"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: For integer and float variables we have to manually look at all impls \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/interner.rs"},"region":{"startLine":1711}}}],"partialFingerprints":{"codehealthFindingId/v1":"597fd5290c252bf3379399a56288427e6721f81cf2c7d07aa4bd233fea72809f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: These should ideally not exist as a self type. It would be nice for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/interner.rs"},"region":{"startLine":1761}}}],"partialFingerprints":{"codehealthFindingId/v1":"847f4a3826906be50fab7b3643014c4b26f13db16fbe506d7961a13acbe71394"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(next-solver): should check if the associated item has a value. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/interner.rs"},"region":{"startLine":1799}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2a5f0d837a3f7b9dbca55dc53fd815c8b265be3f0ad311ea4e22849b89c3aff"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Actually implement this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/interner.rs"},"region":{"startLine":2106}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e2113c7bb0807f8c0c64f63d48b37c76d25a44f4c4670746511c74fba3288a7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: add splat support when the experiment is complete \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/interner.rs"},"region":{"startLine":2282}}}],"partialFingerprints":{"codehealthFindingId/v1":"413937b509c95a9b0429d4a72a4b4d2ab20ff6d8fece5f37f4932c13386849b3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //  - We added all storages (FIXME: it\u0027s too easy to forget to add a new storage here). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/interner.rs"},"region":{"startLine":2640}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cd3ae0ae7c9d69611f3a5a081ee124f5abd09dfeee3a37fe0c08bda8f6f89f1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We ignore the expected term of \u0060NormalizesTo\u0060 goals \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/inspect.rs"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"06a947f751dfd90755d25689ffb6596d705e20a852e6cdd05d43a19613c977ea"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(-Znext-solver): This does not handle impl candidates \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/inspect.rs"},"region":{"startLine":418}}}],"partialFingerprints":{"codehealthFindingId/v1":"b89a57da8b8d053cc93833cb5ed301643b4bdf6df38d1554ed9d4cc1f70f4ecf"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: should use \u0060ClosureSubst\u0060 when possible \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/generic_arg.rs"},"region":{"startLine":699}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b7a21420b6427275dd8ec3f851df22ab39ff9cfb67120a043def1628eef3f28"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u003Chttps://github.com/Gankra/thin-vec/pull/66\u003E is merged, this can be removed."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/fulfill.rs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"264a3f522c087fcd8a3e79fd5297fec921441a04e6134145fbae40b4b5a63c79"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Unsized ADT. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/consts/valtree.rs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ff4b5cb7deb6ef9737febcd24f4a17b9a7eee6f9847ea7350713a4fb75f36be"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This requires \u0060adt_const_params\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/consts/valtree.rs"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"301c3df15753b8a5a507309035d4fc9de441cdd0eca0626e722142b3ca9e1da0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Fn items. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/consts/valtree.rs"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"172dfe8b5acc58d06a0cf3ee2098d941cf9db9b43f830acc9369d011b06d49cf"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Unsized pointers. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/consts/valtree.rs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe5e4072b9b6873726dfab58782dcc533526d609efdcb4635fabeda4a8cb2e87"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /// FIXME(@lcnr): this function doesn\u0027t seem right and shouldn\u0027t exist? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/traits.rs"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"66e65f9a4039af77222a276a39fd9c8a8f1a617c168f5634ad5f2ad61cb4d7a1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Remove this in favor of storing this in the tree \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/select.rs"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ffd74224a90c6673d1ee7bc9a3c776d7b356da8beab48d62332e388b43a110c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This could be a \u0060Sorts\u0060 if the term is a type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/errors.rs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f5df861bc6996f7337a888b9e6b461ef0bbf184229975285e2cf7459df9dba1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We should probably just look into overflows here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/errors.rs"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"b388b50be930abb424e71f7964ec41fb59a6e96b8f718971281294da0dd179ea"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: we use a probe here as the \u0060BestObligation\u0060 visitor does not \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/errors.rs"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0eb41a25de8aafa8a9a329e5090201c412180a5916a90f8a16db6d84270d71d"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: /// HACK: We walk the nested obligations for a well-formed arg manually, \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/errors.rs"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"91f75f7f22f3461b042c5a56553721a27d10b2c266e29206bcc177bbefbb98b4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: rustc does this, but we don\u0027t process WF obligations yet: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/errors.rs"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d3f4bb0be167ee986301ae1b277024a302d498edee92899b2bbe3d838371565"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Also, what about considering \u003E1 layer up the stack? May be necessary \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/errors.rs"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ad444022caa4e65417e325e134745547259b9678715e108bd41dbe35799ccf3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: I guess we are okay without this for now since currently r-a lacks of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/context.rs"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e9cc137c89a337cbc67f9f4c7b3412013f3488de92c5b50db175666a259070b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /// FIXME(-Znext-solver): This is public because it\u0027s used by the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/canonical/mod.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"eba98023fd53ff8c001f4c3814e564a02a40af02d32d61fa2194eb04ab93428a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /// FIXME(-Znext-solver): This or public because it is shared with the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/canonical/instantiate.rs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f03e9f685ffc33882d81967a8b6d73a82756a7991b73dbafd57c6fd5ffd3bd5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We might need cache here for perf like rustc \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/canonical/instantiate.rs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"beca6baa6ae99aefb5be069c28817c25c156d4953dc4c88748f93b496112d868"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: perf problem described in #55921."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/canonical/canonicalizer.rs"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a09556dde4492dfb6b08963a1ff90e784fb52223513bc7d100b229f8bbafc1c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: perf problem described in #55921."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/canonical/canonicalizer.rs"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"b42dc5e56773871ddd45c37aa4aa1d8a6a1551ac960832afe81ef883901decac"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(#120456) - is \u0060swap_remove\u0060 correct?"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/opaque_types/table.rs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"de2bd5bf7d3776a90034d95fe3662fb5bc3b7e7d2e25ef7f039353012e656d6e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is only necessary for \u0060fn take_and_reset_data\u0060 and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/region_constraints/mod.rs"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f8bece65b5d09adef9f542c879e6eebec0f8cdc82c681cdd4966db0d64f9501"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(#41044) -- not correct, need test"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/relate/lattice.rs"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd937a2c068716e5afb87bfe5b7e880999842c7817991a6034c028526d7e0b49"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(deferred_projection_equality): This isn\u0027t right, I think? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/relate/lattice.rs"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae6fd2e8ff2870bdb131c57bfe87e027a6b73e3454f55a0430c80142a3b754d7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: currently we do nothing to prevent placeholders with the new universe being \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/relate/higher_ranked.rs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"84776667f657d5531fe6cf301215c6814e87b9a1b4bf0b05d60324587eee65f8"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(#16847): This code is non-ideal because all these subtype"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/relate/generalize.rs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"b562b69bd6c457ea0f53ecf71aa726498d8e4f59989d84b209781c498406df3a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: ///     todo!() \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/relate/generalize.rs"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"70713e5003cb061cb7759d0ea73765d70bfaf733413212d949bcdf4ee26b40e4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(generic_const_exprs): Occurs check failures for unevaluated \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/relate/generalize.rs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"bac2cf9c92dd15748ba304fc14e39b433c9c8d2dfcbbb4cf05aeecca310ea532"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Unevaluated constants are also not rigid, so the current \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/relate/generalize.rs"},"region":{"startLine":641}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab94d34accfcf41e0bf43161cf429c60b91d6cb5040bdd69cffa1227314263f6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: remove this branch once \u0060structurally_relate_consts\u0060 is fully \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/next_solver/infer/relate/generalize.rs"},"region":{"startLine":644}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a88bcb7e10d9fcfd9e75c6227d75713382dd54d1baf80ddd015078231a37ed3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME make check_types work with other bodies \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/tests/traits.rs"},"region":{"startLine":498}}}],"partialFingerprints":{"codehealthFindingId/v1":"c607315618c1dc44e024f7a35d97212537a5b1e333b10d852f1cade52d768af0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: the last function (\u0060fn i()\u0060) is not valid Rust as of this writing because you cannot \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/tests/traits.rs"},"region":{"startLine":4258}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e03fcf31f86a0c7acc4363192d94fa25dcf73703bd2521c40d922a16a711f30"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: reconsider how to treat these invalid types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/tests/traits.rs"},"region":{"startLine":4303}}}],"partialFingerprints":{"codehealthFindingId/v1":"48d8d62f940dff70739d36eaaf19bda091e78a0abe22b4ce1b7c7e57fa6c491a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: All annotation should be resolvable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/tests/traits.rs"},"region":{"startLine":4446}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1dbdba666f957bcb91b4c1a9215209ab3c1e40ea6abe19c9e6a9ebde415bb8d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: All annotation should be resolvable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/tests/traits.rs"},"region":{"startLine":4482}}}],"partialFingerprints":{"codehealthFindingId/v1":"7753698d67d911bb34f244c42adc7b5ed51dcd5002c89d04f1ee3f41527ba638"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Remove the comments once stabilized. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/tests/traits.rs"},"region":{"startLine":4448}}}],"partialFingerprints":{"codehealthFindingId/v1":"e037a9abedc73b98e3a396a4a2a1d40910952102b438c98f87377c56332e2345"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Remove the comments once stabilized. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/tests/traits.rs"},"region":{"startLine":4484}}}],"partialFingerprints":{"codehealthFindingId/v1":"de7e4a12e4b246286f0194bcc08b4af67d757217d2ae0120a7f93ed14a14b5b6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(next-solver): Was \u0060\u003CD as Deserializer\u003C\u0027de\u003E\u003E::Error\u0060 but now getting error lifetime. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/tests/traits.rs"},"region":{"startLine":5020}}}],"partialFingerprints":{"codehealthFindingId/v1":"f84bee6545a855c5740ac31e8595581f93c0b720fe989e446e41288bcdffe070"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(next-solver): \u0060\u0026\u0027? str\u0060 in 231..262 seems suspicious. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/tests/simple.rs"},"region":{"startLine":1985}}}],"partialFingerprints":{"codehealthFindingId/v1":"ceab6ffd2e782779dfb785ea47add66ea0d830a4bc35328f8d159cb19b2d3a28"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This isn\u0027t nice, but I guess as long as we don\u0027t hang/crash that\u0027s fine? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/tests/regression.rs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"a992a00b1d51f99e7b377896dd283287c7a2be70720d35f4f37de2cf351f06ec"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(next-solver): Though \u0060Repeat: IntoIterator\u0060 does not hold here, we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/tests/regression.rs"},"region":{"startLine":819}}}],"partialFingerprints":{"codehealthFindingId/v1":"4672b40762b56cd1b31446599c94d122d30b57b611e9fc16251587543cfcb7df"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(next-solver): it would be nice to be able to hint \u0060IntoIterator::IntoIter\u003C()\u003E\u0060 instead of just \u0060{unknown}\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/tests/regression.rs"},"region":{"startLine":1281}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccbcc9cd76d139993a811156448d873dead173c215b08e439b8ee5f430b73399"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME, type mismatch should not occur \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/tests/method_resolution.rs"},"region":{"startLine":2057}}}],"partialFingerprints":{"codehealthFindingId/v1":"808208f071656207760c8c2deb0c4de2cfa01b66a93b1b0cc5ab0eb7c2283dc5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this test current now do nothing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/tests/macros.rs"},"region":{"startLine":1052}}}],"partialFingerprints":{"codehealthFindingId/v1":"44fd996df5e3275c2f56f657de939b2039b9bb3e2813edecea51036ccdc179fb"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(next-solver): does this test make sense with fast path? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/tests/incremental.rs"},"region":{"startLine":532}}}],"partialFingerprints":{"codehealthFindingId/v1":"9333c332def6491aec99e84bbcf3ad6d8a2092589a7bfd128b351e5f338645ca"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: What does this test check for now? trait_solve_shim is no longer a query \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/tests/incremental.rs"},"region":{"startLine":573}}}],"partialFingerprints":{"codehealthFindingId/v1":"63aa45c7e555b160a971c6706249c2aefeb1d86685014c0b262db81f42cf68a0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(next-solver): We could learn more from the \u0060\u0026S\u0060 -\u003E \u0060\u0026dyn Foo\u003Ci8, _\u003E\u0060 coercion if we followed the rustc model \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/tests/coercion.rs"},"region":{"startLine":612}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f2f11992d012112936e7884579211b20adca9f4506f8e2aa78a6a7f0266b828"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: rustc emits the following error here: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/tests/coercion.rs"},"region":{"startLine":681}}}],"partialFingerprints":{"codehealthFindingId/v1":"c50bfae89b9d5b41d8ddf545b4001dab746b9304b03a9c39e6d74fef1c141b7b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Deduplicate this with hir::Local::sources(). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/tests/closure_captures.rs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"87dc74e9c9580258c3240d432a8e2293f8b639435f1ee7f30b01a917bfedd6c8"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Is this correct here? Anyway that should impact mostly diagnostics, which we don\u0027t emit here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":467}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fa5a3698e6318b0684ff4d2489dbbde57a2f3450977bce4b3478a95d3e22aee"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is an approximation, perhaps we need to store a set of diverging exprs in inference? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"d10a092eded365d46e7c393805c25aeb027ada67cdb5763402ad1d1c7fc7478a"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: subst for \u0060poll()\u0060 coincides with that for \u0060Future\u0060 because \u0060poll()\u0060 itself \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":846}}}],"partialFingerprints":{"codehealthFindingId/v1":"66ba445015665cb2e53203c19635982f974cbf509044a0ce68bc77e26c3b17dc"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: subst for all methods coincides with that for their trait because the methods \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":880}}}],"partialFingerprints":{"codehealthFindingId/v1":"f82ae8777c9b3e3d6b268babec1e55766554567e739fa1cecb83e333af7a0483"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: subst for all methods coincides with that for their trait because the methods \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":907}}}],"partialFingerprints":{"codehealthFindingId/v1":"32809668c9224d8ba770ee0a4afa9e0ce23cb18c59f06dd6eac31cc15bc3523d"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: subst for \u0060index()\u0060 coincides with that for \u0060Index\u0060 because \u0060index()\u0060 itself \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":924}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d45445d514302bfd634fa005887392337b0c2a6eea9c08b5c159d0699582ff4"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: subst for \u0060branch()\u0060 coincides with that for \u0060Try\u0060 because \u0060branch()\u0060 itself \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":939}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d94b191bc4d8137e4ccd115b81255918fca90298053dea97a3de190bf03132a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: collectiong here shouldnt be necessary? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":1283}}}],"partialFingerprints":{"codehealthFindingId/v1":"afd1ee0e7c6c92ed016a00a080b6b40c6082f6aaae88764f5dc691ae8c460dab"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We do not show substitutions for parts of path, because this is really complex \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":1351}}}],"partialFingerprints":{"codehealthFindingId/v1":"b44438f99f34175cb22f2a3addbfbfb15aa9a102f4d74cf7af9930b175928dd3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Multiple derives can have the same helper \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":1383}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd55b856ae8a8c88cad8851fc9cbc39cda7a9976b952a54c8598a8531a7d5064"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME handle attribute expansion \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":1790}}}],"partialFingerprints":{"codehealthFindingId/v1":"f125b8e3d6592a21fd46e5762c0897c52fbc544f64d40b6dcb9b6fc9607086d7"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: during completion, cursor might be outside of any particular \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":1808}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef8020c845da834ad7c67d56cfeb9151d07190028307f807756470e2b4dfbf58"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: correctly handle macro expansion \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/source_analyzer.rs"},"region":{"startLine":1823}}}],"partialFingerprints":{"codehealthFindingId/v1":"0211e8f6793e2dfcf0d1909461611f0a4653fe6fdfa6ebb475adc916937a17cf"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Rethink this API \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"b19fc1541d622e1cad9a028e4beb2a5fae1f0c5de458b9317ce6ab1da9bb01d4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Rethink this API \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae7d2234d995f1f6cf80dc038905de3ce4d366bc29ce560525a67647ef6c5a1e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Rethink this API \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9040e287b5e3a3e9d120a5e75cf67d027a8eae4db82ef5c07cc553f0cad66e4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We filter our builtin derive \u0022fake\u0022 expansions, is this correct? Should we still expose them somehow? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":724}}}],"partialFingerprints":{"codehealthFindingId/v1":"706b73b4d692774757ee249bc6c39b7b4c58aa469689d65299509f9fdc29c0c1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Type the return type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":863}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8efdb5513415046204c1c3ee81f8d8c95ff9f9b94d65ec86d06ce1abef70cef"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Type the return type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":886}}}],"partialFingerprints":{"codehealthFindingId/v1":"62572f399f795a6b8b4f6fb2c5afba452fad408aaa44826be69820ac40b36706"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Remove this in favor of \u0060check_for_format_args_template_with_file\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":868}}}],"partialFingerprints":{"codehealthFindingId/v1":"78f0c10d1d9bfaa3d521f8aff38410fa0bc546e42dbacb88326d8f6bf19bcb13"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: the trivia skipping should not be necessary \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":1014}}}],"partialFingerprints":{"codehealthFindingId/v1":"e795602c20a6fddffbc9cf9249adc20701aebe57410bf0a71de3b3cbe48d3e94"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This might work incorrectly when we have a derive, followed by \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":1303}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dcbad3240772beff1b249ddc638d03bb18ff9a2fe22ef7c2cf5ff972a863922"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: here, the attribute\u0027s text range is used to strip away all \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":1326}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f8ac61812160f466db5c978c11ddcff7c6fe6f0f27d332e474d0134dce2e918"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Should cfg_attr be handled differently? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":1338}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3e10891c8b1c7cadb754e800cdc5303eba224ffdff796cd4c1e693dc011b3d4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We need to call \u0060f\u0060 for all of them as well though! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":1372}}}],"partialFingerprints":{"codehealthFindingId/v1":"833d557e1553376dbbf45411c902d8a07cdd6ab340e5428ae41a4585a0422cb4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We need to call \u0060f\u0060 for all of them as well though! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":1508}}}],"partialFingerprints":{"codehealthFindingId/v1":"24e1491448e9505f698f375e1a350a327b39d0adb09077bbaf754c1dc768dc5f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Replace with \u0060ancestors_with_macros_file\u0060 when all usages are updated. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":1614}}}],"partialFingerprints":{"codehealthFindingId/v1":"32efac9d685d017172f6c17cdf6412ae8532b0dee4088731b7df4ae0ac44310e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Should we handle unknown mutability better? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":1745}}}],"partialFingerprints":{"codehealthFindingId/v1":"4189cab875d96b6af59defe450b11c7e394544a9dcd4bda1421d5d3570a2980a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Handle lifetimes here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":1753}}}],"partialFingerprints":{"codehealthFindingId/v1":"d492d497018617016f4013d50001d9e05caec22a14cf8742dedd4bd82379857a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: better api for the trait environment \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":1822}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6f68f8181fe42b603a58bc2681063a491ee3334f81301388779463e3e9e7574"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Remove this from https://github.com/rust-lang/rust-analyzer/pull/22449#discussion_r3299763452"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":1950}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b3697b358753a3c59633351b50b9a9427aea270fa15df3c7bbd67a76adca919"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Replace this with \u0060resolve_macro_call2\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":1959}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe0bd98dbed60274f02b741bb0691469f906abb9fdd5688dd7ee2bb0ed0ed8ed"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Do we need to care about inline modules for macro expansions? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":2135}}}],"partialFingerprints":{"codehealthFindingId/v1":"f236b0abf3ae9ac9cd24783415432799f15be4f7aa2cd163d2c210c212da7b51"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: source call should go through the parse cache \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":2167}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c0c6d5410f428ee78bce2bea1b13b0507bbbd300367bac863e3dbdb49e5187d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME This can\u0027t be the best way to do this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":2607}}}],"partialFingerprints":{"codehealthFindingId/v1":"04a494411480b3c8b19ef0235283944b342035df2a2fe9917c3cdf97651bbfc0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is a weird function, we shouldn\u0027t have this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics.rs"},"region":{"startLine":2736}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6a417357615c1486b56acee7a42b2290b0569ea88d32ca16ce8ef0635eb34f2"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is here since some queries take it as input that are used \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/lib.rs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"435582d936ea87b55725e095f83e0f2751bf746de63444dc428bcf0df3a006b1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Properly encapsulate mir \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/lib.rs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"db616d628eb5f86779c5b79bf8671b1a00bd4cb5c5a825937904e9d82bb2822f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: These are needed for import assets, properly encapsulate them. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/lib.rs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5c85627c5813c8850ee5688c9ee058d4b48f9449b475fe3dded161b1610cf8a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: RawVisibility::Public doesn\u0027t need to construct a resolver \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/lib.rs"},"region":{"startLine":877}}}],"partialFingerprints":{"codehealthFindingId/v1":"76d408f91c0e4eb10736fa835cb91f5045d43e7b0632df00371f62efcf3168b4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This does not account for replacing \u0060Self\u0060. Do we really need that? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/lib.rs"},"region":{"startLine":1522}}}],"partialFingerprints":{"codehealthFindingId/v1":"499c7dada4022b4bb73368daac3a4432b3d7c8fa329e2570b29e04311fe35469"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This does not account for replacing \u0060Self\u0060. Do we really need that? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/lib.rs"},"region":{"startLine":1543}}}],"partialFingerprints":{"codehealthFindingId/v1":"da49a739fbf55346db19bf87ad86325265acad3944cb33ce49c534d5d81d7254"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This parses! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/lib.rs"},"region":{"startLine":3250}}}],"partialFingerprints":{"codehealthFindingId/v1":"92b050937d8edec8ecaadfb2148353faadcdfc6eeffb5c6e9b426c12c052bbff"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /// FIXME: this only lists trait bounds from the item defining the type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/lib.rs"},"region":{"startLine":3613}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cb494a506e18eadf973b96357255dc6dca6d7fe1a2507b6084a5ee0f12c62cb"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This shouldn\u0027t be \u0060instantiate_identity()\u0060, we shouldn\u0027t leak \u0060TyKind::Param\u0060s. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/lib.rs"},"region":{"startLine":3716}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad1ae61ccb933efefadc061cd5d726da440973690c82154247e5220b5874de0d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Figure out if this is correct wrt. match ergonomics. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/lib.rs"},"region":{"startLine":4306}}}],"partialFingerprints":{"codehealthFindingId/v1":"82bb3880b6f25ebb849c21e4e023d16d81c5e5ffeab4d6a37505a2c8bc78e65f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: What do when we unify two different crates? Currently we just randomly keep one. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/lib.rs"},"region":{"startLine":4364}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4080d50f2e9c4b4da644c1d3548385bfd7105009c57513a234dfa6d56cc7804"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Find some way with const params, maybe even lifetimes? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/lib.rs"},"region":{"startLine":4533}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd63c9f5799526504e2381741d1b9b834d114037c424391fe3d160a547397f9f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is the same as \u0060remove_ref()\u0060, remove one of these methods. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/lib.rs"},"region":{"startLine":4835}}}],"partialFingerprints":{"codehealthFindingId/v1":"94e2e837e68545e820d391243c3ccf53e7187078a42183afe1dbe490ce65f2f7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Find better API that also handles const generics \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/lib.rs"},"region":{"startLine":4960}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae58bd8707f8c3c3510cb633cff44ca1919dd317ba3ba25ed6786577272c35b9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We don\u0027t handle GATs yet. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/lib.rs"},"region":{"startLine":5013}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4af921a018c5461b1136bb499454683fc464d2cfad95678da417234cfefe94d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We should probably remove this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/lib.rs"},"region":{"startLine":5175}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f0752dd5d7986fdfdf029c4168aa85efe18dd710f943c94426d67664da4341f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Document this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/lib.rs"},"region":{"startLine":5802}}}],"partialFingerprints":{"codehealthFindingId/v1":"1611f8ff01c6f7a5ba27d578c2647497746a5c2e0be1bf8bc82f3b1dd258dbd7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: handle block expressions as modules (their parent is in a different DefMap) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/lib.rs"},"region":{"startLine":6286}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdfcdb6d0bb62e1b6b72ce0b8ba262aa728e277ef884f0bcd31d0603f67208bc"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We probably don\u0027t want to expose this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/lib.rs"},"region":{"startLine":6594}}}],"partialFingerprints":{"codehealthFindingId/v1":"35b82d6085641e2c9b0cc9f66be75cd4e6582038868a0bd8b023e9ecdca6b484"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This will show \u0060unsafe\u0060 for functions that are \u0060#[target_feature]\u0060 but not unsafe \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/display.rs"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"a998bef50d4a7ab9a35a5915785f08a81ee0cd44619f073c16c8dd6f42af2f6b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Use resolved \u0060param.ty\u0060 once we no longer discard lifetimes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/display.rs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"12e0b760e9a5e136067975034189fa4783ca454511d1c350409dc960c6e8eed0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Render repr if it\u0027s set explicitly? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/display.rs"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff280a877e8fb9e0ad3ee0150d75633267903d6e574896db32e4aa7a0dcac8e0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(trait-alias) needs special handling to print the equal sign \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/display.rs"},"region":{"startLine":901}}}],"partialFingerprints":{"codehealthFindingId/v1":"be554cba1bf21b720f2a61c5be1be988873df4dcac78c4d2794b7a4dc0a455e5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Split this off into the corresponding 4 rustc errors \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/diagnostics.rs"},"region":{"startLine":530}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ee51d9b1986c02126e6ac392a2011ec1bc7e0f495b3841833d1511daaf55eb3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: maybe we actually want slightly different ranges for the different macro diagnostics \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/diagnostics.rs"},"region":{"startLine":732}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d592518bf65262d609f8a94326541cb2d2f53dd29b55aab40c275e958dd9f07"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Once we diagnose the inputs to builtin derives, we should at least extract those diagnostics somehow \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/diagnostics.rs"},"region":{"startLine":944}}}],"partialFingerprints":{"codehealthFindingId/v1":"9423b3c3bb65d3fc286fda9749c923fe5664a96906f335be2fa508b3e0a08775"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: When specialization is enabled in the current crate, and there exists \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/diagnostics.rs"},"region":{"startLine":1072}}}],"partialFingerprints":{"codehealthFindingId/v1":"6020c03fe8423fa1550d9f6f704f6ec12dfddb272c2fa3727bc2b8b11a8c12d4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is accidentally quadratic. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/diagnostics.rs"},"region":{"startLine":1134}}}],"partialFingerprints":{"codehealthFindingId/v1":"96ace861bdb58d892dd3869e239b00e107e963643c8eaa5a08822c486a042940"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Missing unsafe and body validation should be defined for any \u0060InferBodyId\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/diagnostics.rs"},"region":{"startLine":1245}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4d65aa18f0c8d48fd0c11238771ea8c97fed0a4f23f0462bc97cef9b2c08f1b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Here and elsewhere in this file, the \u0060expr\u0060 was \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/diagnostics.rs"},"region":{"startLine":1262}}}],"partialFingerprints":{"codehealthFindingId/v1":"faf85f0d84896bad74b7aab9db2f869c22be10b458747cc52c063372cd864516"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Printing the const to string is definitely not the correct thing to do here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/diagnostics.rs"},"region":{"startLine":1814}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a0bfd554db67c01e8a943bd6598c515ac0c9081b0c200a27f8852a434b586b8"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: resolve type aliases (which are not yielded by iterate_path_candidates) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/attrs.rs"},"region":{"startLine":498}}}],"partialFingerprints":{"codehealthFindingId/v1":"a486a75b0fef1cbf46d6cbeae1f5ad3bba1776c2c91aa0048602cbe9857624e5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this is not how we should get a mod path here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/attrs.rs"},"region":{"startLine":552}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad670646a3276cc1d38d6dc85cd7074c3fb11112edebbb9409458c65564ca4aa"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: detached file \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics/source_to_def.rs"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"489f788638ee0f8a326c1cd9f5bb46b903e89877eb0d912476e01a2ccb66d8f5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Make this more fine grained! This should be a \u0060adt_has_derives\u0060! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics/source_to_def.rs"},"region":{"startLine":427}}}],"partialFingerprints":{"codehealthFindingId/v1":"4893660724800f46150ecfffd2d7fbc11a45aa4d4a0f6cd70e8223bbd7c80a5d"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: /// XXX: this might be the same def as, for example an \u0060EnumId\u0060. However, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics/source_to_def.rs"},"region":{"startLine":732}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5b673275b64297e8681a6f4632576e7542fc9f10def299b965432e9e33c705f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Is this the right crate? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir/src/semantics/child_by_source.rs"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee14e4655986a52f2a4f88263f67717800b60b8fe341a160c8d87900ed0d5b60"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Paths in nested macros are not handled well. See \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/utils.rs"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bd82cf8cf7a67cd54ef04b914806f74ea57ee4a822df795ba53b151a928f073"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Paths in nested macros are not handled well. See \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/item_list/trait_impl.rs"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"60c984496c4571a93f57c9a6bc1f245ea7f4a0ef39256893b50a1196a8af6c49"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Paths in nested macros are not handled well. See \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/item_list/trait_impl.rs"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"37e6ffa2355b3aa695099355b35f743b9b22b560703e6dd8d8a21722dc38ccea"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: change the new fn checking to a more semantic approach when that\u0027s more \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/utils.rs"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"0580fc39cd6da0adb6588ccb10ef48ed80bb18f4cd97c5d4c269f8a844601284"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this partially overlaps with \u0060find_impl_block_*\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/utils.rs"},"region":{"startLine":496}}}],"partialFingerprints":{"codehealthFindingId/v1":"909cd40bda9cee982e5981ebb457aacfdc2b35aa4c61f42bf8ad3105a3aa16a1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: handle e.g. \u0060struct S\u003CT\u003E; impl\u003CU\u003E S\u003CU\u003E {}\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/utils.rs"},"region":{"startLine":519}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ee458cc967a6d165e1db78e6e5b49ff1d55865a396de24531cf43865031a43f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: It should return a new hir::Type, but currently constructing new types is too cumbersome \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/utils.rs"},"region":{"startLine":842}}}],"partialFingerprints":{"codehealthFindingId/v1":"befcc4848170639f3c5a0e124886e1644709c74c0a9af7bc309cd0afb10cb346"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: #20460 When hir-ty can analyze the \u0060never\u0060 statement at the end of block, remove it"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/utils.rs"},"region":{"startLine":1204}}}],"partialFingerprints":{"codehealthFindingId/v1":"f968f44109c04fab393de42c57919fcd9cc278a6884c28533f0493f14f7d9117"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: instead of having a separate function here, maybe use \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/tests.rs"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"37b658ae545845f1cc8a0de936ad047af55ab965cd8ac2e226dd5f75657245e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //     todo!() \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/unwrap_type_to_generic_arg.rs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"968e2657cc73a3823de788110d50f58df347f6c2e73d33e3d36155f23d8edbc2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //     todo!() \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/unwrap_type_to_generic_arg.rs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"cccf157e60dfb1ee67fd82d369b5d59ec5341e5409f58f3b90cd65c070be8ab4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //     todo!() \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_function.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e68f0072125e50dad6cd48e1046cd0b996d36072570d3cdc4a90a550d9759b1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This ought to be a diagnostic lint. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/unnecessary_async.rs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e1de48c19e1030cb42aeecb247b4839459146abbe9fabd52cbbd948baeaf56c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This isn\u0027t true due to \u0060super::*\u0060 imports? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/replace_qualified_name_with_use.rs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"db7feb33ac3b839ed1f553c418f7577f4b4cb71032969f85a7bb6822fbf8eeac"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Check that this has the form of \u0060() -\u003E T\u0060 where T is the current type of the argument \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/replace_method_eager_lazy.rs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"bba774151a95ec1c170c44f2fe3d615ff4b5c41ed55cbf5dc63ed73670363875"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Check that the arg is of the form \u0060() -\u003E T\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/replace_method_eager_lazy.rs"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"96c0eed4a2fce26bd0c4c03c930472b064d56c34061dd073db7df98fc381db3a"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: Perhaps we can extract a let statement to improve \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/replace_if_let_with_match.rs"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"91a2625a2d6ba11cad159702cf822f8d038e1f6f530c096b77d5d38209f9d84d"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: Use descend pat for sema analysis \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/replace_if_let_with_match.rs"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"44782d5d6b68c585753b4929a903e1ffe62f444b1706778ea026f1fb6252de6d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: make this work in macro files \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/replace_derive_with_manual_impl.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7ae9979d4225b6e4aa770dc17abde9f79bf3554feb89674dd849d9bf52565d7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: non-trait assoc items completion is unsupported yet, see FIXME in the import_assets.rs for more details \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/qualify_path.rs"},"region":{"startLine":638}}}],"partialFingerprints":{"codehealthFindingId/v1":"063d0b7ec985ded0977c90ece4fdd8a3037661cf7700159a5972cb9cd2f03e73"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: How can we handle renaming any one of multiple anonymous lifetimes? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/introduce_named_lifetime.rs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"59d776c3881c9ebcad5c43943953c6540093ec6ce18cfbffd08afc3252f1304f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: should also add support for the case fun(f: \u0026Foo) -\u003E \u0026$0Foo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/introduce_named_lifetime.rs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"43c7d2131848785c0701b8a7a697e49469bd8eb959e53f8cca62e5800a61b9e4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is a bug. The macro should not expand, but it\u0027s \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/inline_macro.rs"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b5973b710bab2b841d1072d82c189a67fb2cb56fede4726c29c6aabb23078ae"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: process let-expr in macro, but this case is very rare \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/inline_local_variable.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fcf470a61f64e5bcffef759054b3488a81972f29eb80baebf924e06d5f083e8"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Add support to handle type aliases for builtin scalar types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/inline_const_as_literal.rs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"41dfca6b7a218b9af55223aa8802fb18e7291f9abdfb918ce0207bac8bf9f45d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Saving fuel when \u0060\u0026\u0060 repeating might not be a good idea if there\u0027s no TCO. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/inline_const_as_literal.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"388093c180eb112c96c7b5f0a58160af9cd53c97072f0b3159567331777447a5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Add support for nested ref slices when using \u0060render_eval\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/inline_const_as_literal.rs"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"97c170ef59d367ca27091fb4f4e56e3ead793d3e6dd587a31188dbe929a2235e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Add support for unary tuple expressions when using \u0060render_eval\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/inline_const_as_literal.rs"},"region":{"startLine":456}}}],"partialFingerprints":{"codehealthFindingId/v1":"306194ef5b7075cc81ceaadfd53519ba37fca27e29ae2f4c9bfd089fa58d67c6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: do not handle callsites in macros\u0027 parameters, because \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/inline_call.rs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d8fb1a31bee64ecba2216e4cde4843f5b1d013153769bc43abe343a28136110"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: we need to fetch all locals declared in the parameter here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/inline_call.rs"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"a95daf41c05cb7e4acf025bae6b8ff108b72ebb323b2283d6f131e812e7009be"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Generate proper \u0060index_mut\u0060 method body refer to \u0060index\u0060 method body may impossible due to the unpredictable case [#15581]."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_mut_trait_impl.rs"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"1753a0721d47abce4aa92860d0a0fbd63d7381f0fbf29161ce9af08e292ce283"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME : const and unsafe are not handled yet. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_function.rs"},"region":{"startLine":384}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e80fd09a54d08e22c1eaf96a6762f89f36d9ca684624c0ea87fd11ca82184da"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: adt may have generic params. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_function.rs"},"region":{"startLine":737}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b775be3b1313de75201ff9fa12dcf739eed52115fb6f6da4ec676449f7ab450"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: It might be a good idea to handle lifetime parameters too. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_function.rs"},"region":{"startLine":1045}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f216600777bf22dfda284ba435c92d28e13aab7116081adf4d839dc065b7394"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /// (FIXME?: The latter clause might be overstating. We may want to include the bound if the self \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_function.rs"},"region":{"startLine":1094}}}],"partialFingerprints":{"codehealthFindingId/v1":"8905eb4f854ba534f1881827cf33cb766ed9ffad0a8cf3d520cbd29d09324355"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Generic parameter \u0060T\u0060 should be part of impl, not method. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_function.rs"},"region":{"startLine":1903}}}],"partialFingerprints":{"codehealthFindingId/v1":"e55b350588fd332d5d40777e7876a2d24fb2efe3ee2e24a678140f058e35c217"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: where predicates should be on next lines. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_function.rs"},"region":{"startLine":1941}}}],"partialFingerprints":{"codehealthFindingId/v1":"70fd56b438bc8b5f6ae34c60cde6276f43111e149ac9f44c39109cf45539e600"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: where predicates should be on next lines. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_function.rs"},"region":{"startLine":1985}}}],"partialFingerprints":{"codehealthFindingId/v1":"67527acaa70feba5ff05fce8f282ef500077dd4c73b582e8161ddbed28fab345"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(next-solver): it would be nice to not be *required* to resolve the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_from_impl_for_enum.rs"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f8e69606d8e736e81fa0397e20fac9fb65b831f9f62bea7ffd41b349bdc07ca"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME :  We can omit already implemented impl_traits \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_delegate_trait.rs"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb7b2b91a98b49d2ba929eb88f0f9f25672399ac652e91aa2f72b2a41222ddd1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME : Handle MacroCall case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_delegate_trait.rs"},"region":{"startLine":737}}}],"partialFingerprints":{"codehealthFindingId/v1":"638265d6660bb10b248fbc32a96540f901f0ddb0fd5d562e75221c2ebe621a1a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME : We can\u0027t rely on \u0060make::path_qualified\u0060 for now but it would be nice to replace the following with it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_delegate_trait.rs"},"region":{"startLine":753}}}],"partialFingerprints":{"codehealthFindingId/v1":"f20de998f00e96f25313fabc37a89a89ea661fa082d431618248741e7a0d94bc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //         todo!() \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/generate_blanket_trait_impl.rs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"240bfdfff4c39499d995a0f2781d3d8c5575c8cdc0902425b436fa301038d4d5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //         todo!() \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/add_missing_impl_members.rs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b2332c4dc491d5d764814becc6b155abfde328fb594d620af1778e94e0989fa"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: broken test, this should fix visibility of the re-export \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/fix_visibility.rs"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b281381536831c66cc9d607a3cf20634e530afc58ab5a5a030f1a1b4975b933"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is not quite correct, but good enough(tm) for the sorting heuristic \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_variable.rs"},"region":{"startLine":2079}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1b6fed970b24e5713e823b48f1c5fb58fe2cf29956e833043f64535241cb056"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Extract to inside the macro instead of outside the macro \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_variable.rs"},"region":{"startLine":3079}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf718a73121ba90e7a3684c60d8c9a14e78e165fe0f05ee172f9c9c4f4334b9f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: replace with a \u0060ast::make\u0060 constructor \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"aabbb072c86cb78e9cd4c7e817800df9fbf9d521a917bf029749406f924b04b4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: wrap non-adt types \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_function.rs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"9508ddd5adb5ea9adfd32a4f0d28fc651927dd99623fdec8b423ed8548faf47c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: ControlFlow and ContainerInfo both track some function modifiers, feels like these two should \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_function.rs"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"df2bb0f0310b4345cded476b1d2c78932f95b0e46063425ad3562150a8191211"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: use lang items to determine if it is std type or user defined \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_function.rs"},"region":{"startLine":563}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2f5c0939d2872c0daf42a956ab3f9037c1db2679fbd00fddc532e8d5144f1ef"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: make trait arguments \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_function.rs"},"region":{"startLine":936}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4d49a91a1165aaf429b59b6f1f839ba2c6d3d4108fb6925dc92c1b0367c62da"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Do unsafe analysis on expression, sem highlighting knows this so we should be able \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_function.rs"},"region":{"startLine":1030}}}],"partialFingerprints":{"codehealthFindingId/v1":"40f1ce41c744a3956e9d7f025a0e0510c69e4ce21d37c92c81ac540c0c5d6108"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this quite an incorrect way to go about doing this :-) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_function.rs"},"region":{"startLine":1180}}}],"partialFingerprints":{"codehealthFindingId/v1":"b07f7331fe57914b6c2b67e15a43bee716c3c323c5f9a0a2e27e22308bdf55d6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this doesn\u0027t work well with macros \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_function.rs"},"region":{"startLine":1261}}}],"partialFingerprints":{"codehealthFindingId/v1":"68e7f3636eb47a66ffcdb74a05261828f26cddf083ff37febb0017aeaa841385"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We should emit a \u0060\u003CT: Debug\u003E\u0060 generic argument for the generated function \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_function.rs"},"region":{"startLine":5881}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d4345712c89d9d536561c521d79e6b9612a18c8c12717f94b04de9fb3f9be7f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: double semicolon \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/extract_function.rs"},"region":{"startLine":6200}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcde988b8797bbee7fa3bd9829c3f28700e282ae033fd63660d3745575119249"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: After removing ted, it may be possible to reuse destructure_struct_binding::Target \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/destructure_tuple_binding.rs"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"76cc15f0adbf5759847f6716e39dc4e253e56e8b560e2ab9009daebd3a794b57"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: macro allows no arg -\u003E is valid. But assist should result in invalid code \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/destructure_tuple_binding.rs"},"region":{"startLine":1609}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ac3dc7d2b2d208a1d377854a603c9680624a63c0004282a98f0a41406de9abf"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: doesn\u0027t need deref * parens. But \u0060ctx.sema.resolve_method_call\u0060 doesn\u0027t resolve trait implementations \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/destructure_tuple_binding.rs"},"region":{"startLine":1941}}}],"partialFingerprints":{"codehealthFindingId/v1":"d92a1bec0ab021e5281c74a6c65537eaa81cfbbf999ee13fcd7fd6a47ca9d6d1"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: SyntaxEditor cannot insert after deleted element \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"b22916ebb02155b3e381b084ba549e2fe37e3526fda334e84efefe7a7e3725d3"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: SyntaxEditor cannot insert after deleted element \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"31159034d02c42a213e16d72150efac0d35b36fffa6e212475288442bb856807"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: We don\u0027t currently provide this assist for struct definitions inside macros, but if we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_named_struct_to_tuple_struct.rs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"724669065048eff8a9b8d3a8507882edaf2ab4a86e0f8383adcdb87b59f313b4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Processing RecordPat and RecordExpr for unordered fields, and insert RestPat \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_named_struct_to_tuple_struct.rs"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2cb37a81d3444d8626786398c4cf19fac90eb1e9655da267c9a83c434720452"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Do this with \u0060SyntaxEditor\u0060 in \u0060rename_variable()\u0060, it\u0027s just difficult right now \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_match_to_let_else.rs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"20525ea7420d9934350519bc8ff92e9dc114efce134fbe9c92d75ed83bbdaf29"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this should be a diagnostic \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_into_to_from.rs"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"95733df09febfa936974dad7f95c556cb2541f701c48a2c4aedc566009db97e3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Allow configuring the replacement of \u0060self\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_closure_to_fn.rs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"c80b0b55985dd7e86ce8131724f581bf449a24be9cd7fe9b8946ffcd7011de76"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Maybe we can indent this properly, adding newlines and all, but this is hard. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_closure_to_fn.rs"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cca8c7560de1b4f2fd44baede493e347ee6376be94e8fe3d1351018ef61cbe8"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Place the cursor at \u0060fun_name\u0060, like rename does. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_closure_to_fn.rs"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f3b4b12945815f5a370dc9dd3a7b640147a4ab837ed97f6400debca79078a84"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Consider generic parameters that do not appear in params/return type/captures but \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_closure_to_fn.rs"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b57baf3d23e8794bb07cd6826245533697b68724a54bd1add11e1fde6e874df"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This text manipulation seems risky. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_closure_to_fn.rs"},"region":{"startLine":622}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3c18329da31bf14900ddc6d5243aee60d8b3e09ea192c6639c2cc8d4ced2550"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: The import is missing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_bool_to_enum.rs"},"region":{"startLine":1110}}}],"partialFingerprints":{"codehealthFindingId/v1":"33cd94b98feffcca14d948ef8179e521412148451b1f1fda6754f1b351e1cb10"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME applies to match as well \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_bool_then.rs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e7f0bd6c5aeb6d7545b0bb297154eefea37afe5988e3db69ab319e085eb9bc5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Expand this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/auto_import.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f5c5604777dbe43f4850efaaec5f158825e1ba5b1ad347078537938444a3d48"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Expand this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/auto_import.rs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d04c3debbd3912296590259f754effab18c512f70a0f36cdacfdb733ffece5f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME wrong import \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/auto_import.rs"},"region":{"startLine":1699}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed3f4a8f4b4c2b3b96763665f051df1583044d1a62bb94cc2b9587bae2da1d59"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME wrong import \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/auto_import.rs"},"region":{"startLine":1725}}}],"partialFingerprints":{"codehealthFindingId/v1":"58ca2a8aa381ed1a72cba8dcf2d909fc0dd48d70be60cbc60ffde7cf9f0f4c6f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Hack for syntax trees not having great support for macros \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/add_missing_match_arms.rs"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ca2a0409a1199fa1848d6e2d1fd9ed7cbc887e2970679bfff1a1611976880b6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // Fixme: this is still somewhat limited, use hir_ty::diagnostics::match_check? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/add_missing_match_arms.rs"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"22d6f4dcd9944616010737a6efe05d1b0042f88c9c11ea72fdd37b6760202389"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // Fixme: cannot handle deep patterns \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/add_missing_match_arms.rs"},"region":{"startLine":1454}}}],"partialFingerprints":{"codehealthFindingId/v1":"febc2f6bf3af88cff37419ac6cd5b80d756051a75b8f5bd61c9399f6a858db9e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Preserving comments is quite hard in the current transitional syntax editing model. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/add_missing_match_arms.rs"},"region":{"startLine":1675}}}],"partialFingerprints":{"codehealthFindingId/v1":"3841e0674262950b269a3ad2599720f95782b5142ef3bd00c261acab671b187c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Preserving comments is quite hard in the current transitional syntax editing model. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/add_missing_match_arms.rs"},"region":{"startLine":1706}}}],"partialFingerprints":{"codehealthFindingId/v1":"974cfbc0df6dc4bd68d4fd38b58893e58d097597d5edfdc346d03dcca79e872a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u0060T\u0060 in \u0060ty!(T)\u0060 should be replaced by \u0060PathTransform\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/add_missing_impl_members.rs"},"region":{"startLine":2130}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d5f55cb8fe538fdcc1d71e6bda42d14758b0a9157805aef3ad7eaff5fe8a4fa"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u0060T\u0060 in \u0060ty!(T)\u0060 should be replaced by \u0060PathTransform\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/item_list/trait_impl.rs"},"region":{"startLine":1484}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6193cc214d708c7ab61039d224f5289ef1581efbb78da5e6a6243f8186ac97b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: remove this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/render.rs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e3fcaf74bda8fcdc1c167e9a02026f22ac2d709dac6fd3ca5a45a02bb0f4ab3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Temporary workaround for handling aliased import. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/render.rs"},"region":{"startLine":364}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdf65ac8d371d10a3112af7414067dfbfce37e9dd77efcb5603fdbbce4b14342"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This checks types without possible coercions which some completions might want to do \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/render.rs"},"region":{"startLine":668}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5745dc9dd979a2fd7007478c5dde1ba8fbb3332e3ab60e24ca87f86b13f6a02"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This might create inconsistent completions where we show a ref match in macro inputs \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/render.rs"},"region":{"startLine":778}}}],"partialFingerprints":{"codehealthFindingId/v1":"07fb8a4acd2c3ba582b9e2971036196f0cdef26cd5a39d3f4ba008e439e944a6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: It is best to test \u0060S.in\u0060 if speculative execution is implemented \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/render.rs"},"region":{"startLine":2893}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e19cd09996ba15972e41da5a2bc37ea5bf962a5fe253c200d5bb7e9d880990a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: There are many \u0060S\u0060 here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/render.rs"},"region":{"startLine":3245}}}],"partialFingerprints":{"codehealthFindingId/v1":"433764ddaaf938d505ea09761b0cef8afd527c6dc89f744df659cb953cdfc61c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME baz() should be an exact type match \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/render.rs"},"region":{"startLine":4129}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ce82d65b3d3c3ebcbdbff52eebc65768b828a1814501c3a985dcbbbc05d6203"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //FIXME: split the following feature into fine-grained features. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/lib.rs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"6de98d61e33543b421962315d5a245567dc89eadd8285068699e3c6e07a4c4a6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Make this with \u0060\u0027db\u0060 lifetime. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/item.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf73268a7b7283341af4741102163b905a872dc1979600fcf7e6773c1f35463c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Make this with \u0060\u0027db\u0060 lifetime. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/item.rs"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c391bb21b81ab6ef7213ed686926bbf5a99f862eeec4b1ce8b408287ab295ba"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We shouldn\u0027t expose Mutability here (that is HIR types at all), its fine for now though \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/item.rs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"f99ae158eff43be0f2d4473b5c5143abf6494e52bdd7ff87656a054bef348c72"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Add try_tok and default_tok \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context.rs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae3a318e973ad5a43c932400f0f530d6410077e3e929374bf99214d9cdba3bfa"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This should probably be the crate of the current token? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context.rs"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"3dc2ee5cd43db0b751b83f62909ef8359fa6e7a98a338bf5adaf6bbdf5419b1e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This should be part of \u0060CompletionAnalysis\u0060 / \u0060expand_and_analyze\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context.rs"},"region":{"startLine":892}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cff0d4f18de196fe5fcc80a6c853e0f8205bb7ea3b7bd95222e67d27edae3c8"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Find a way to keep this up to date somehow? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context.rs"},"region":{"startLine":983}}}],"partialFingerprints":{"codehealthFindingId/v1":"90fe357c6879e0be4b4be00788fb5cac8adfd150761dde5fc2b7edd74c997598"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: For parity with Rust bug #22519, this does not complete Ty::AssocType."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/type.rs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8f855fa923bb983de1a1730297b51403b206e4202ce60360055db91a1d5b161"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: For parity with Rust bug #22519, this does not complete Ty::AssocType."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/expr.rs"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"72ca22c3b9495c6f040383d6dad666d9ce7267efe5e640c9fad669fabdc721c7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This should make use of scope_def like completions so we get all the other goodies \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/record.rs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c5c8f2a2241da08e2826145c81f5fdf6b176b2e8548e175e59d372f967b9801"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // fixme \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/postfix.rs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"b65db1287ab121993aad5be9efd3e4fd5d3f6ae222dc899a56d9d91bc7d17e99"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Why add parentheses \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/postfix.rs"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"2730fb019671a2e0bf7235d15be4b6d059c1eb0106f831695441e3d3b4c83bd3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: ideally, we should look at the type we are matching against and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/pattern.rs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"61e15853ba62a5cf914ba364cbda9c05795eb0e7d1685162ca3084800e300c6b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: we should check what kind of pattern we are in and filter accordingly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/pattern.rs"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3496bbf352faca0b2e032b6bc963597b26cb9ce08ae28282380743221d25fe3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME binary modules are not supported in tests properly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/mod_.rs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"3794376b44afd35f25f74328a5db7836720f7baa448d9406e1b332678082318a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Make this a submodule of [\u0060pattern\u0060] \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/fn_param.rs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f56be54d5690c57ed9cf083d02604e970ae72a9f3b3d0b76c0f4010eb13e920"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u0060#[attr] it: i32\u0060 -\u003E \u0060#[attr] mut it: i32\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/fn_param.rs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9286685a91d6435a78d92cd5fc1e3ed492961dbbe491045a09ba37b28880ef4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Render the assoc item with the trait qualified \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/expr.rs"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"887f4b4e38cdb87d3a0c9835cd6505d1b957e734eac33aa182cf9e1491f15107"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Append \u0060::\u0060 to the thing here, since a trait on its own won\u0027t work \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/expr.rs"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d5e8cf1d319564c1fbe589a68a1f63428d4d6e6ff6a79c11d88f1ad3047d499"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: change \u0060Lint\u0060\u0027s label to not store a path in it but split the prefix off instead? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/attribute/lint.rs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef12b0ca345127292d581fbf583d821e394e28bee95e7823570205b5fdedfc45"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Move this into context/analysis.rs \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/completions/attribute/cfg.rs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ee12ef51f3890d9187e0ed88513ce7cb9caf86b47a9caf037a28d24c1a60c36"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME make this work, currently fails due to pattern recovery eating the \u0060:\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context/tests.rs"},"region":{"startLine":595}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fdcca9d702e0cf865e8655c88e40405d48f459610beec22603fd96ada444581"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Support speculative expansion with \u0060cfg_attr\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context/analysis.rs"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea49f97598251020047d831f2f164f253fc83e607c5731350b655c7e4d4b2407"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This check can be removed once we use speculative database forking for completions \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context/analysis.rs"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb2f74288fe34df2f886691a88ec8ddc42734a52433dd4ba8a120e9db8e8a389"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This operates on the syntax tree and will produce incorrect results when \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/context/analysis.rs"},"region":{"startLine":1237}}}],"partialFingerprints":{"codehealthFindingId/v1":"68f469536f81a63e9612a3a3e8a4bd310ded7007ea263f4de2417fbe124adb90"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This should probably also suggest completions for types, at least those that have \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/tests/type_pos.rs"},"region":{"startLine":1181}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2f6a02cc4540adff0b9b532d2c7b9b8280d7b3637751fca0fd1bdbc6b39aed3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This should filter out all completions that do not have the type \u0060Foo\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/tests/record.rs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"f64d9c97c1047a5c99c748e15ea9f26d441f9440dae1cb688babdea624135023"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u0060for\u0060 kw \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/tests/predicate.rs"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8a1c381754c85123471fa8627081e33c87cfb35356062d457dd61a5db482a24"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: should only show lifetimes here, that is we shouldn\u0027t get any completions here when not typing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/tests/predicate.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"d051ee27d4c9665071dfd70a3fd74b972687d1fef5c891eb41325cce09e490a7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This shouldn\u0027t be completed here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/tests/item.rs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"55b39bc0f3348da121647c045ce4d84dddb4e456e7ba064bd6fa3f2c2d552484"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This does not work, we need to change the code. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/tests/flyimport.rs"},"region":{"startLine":1878}}}],"partialFingerprints":{"codehealthFindingId/v1":"47e5fcc530936397b4619dc2fd214f26c1b5b022d4fb6d664a2052e136a882fc"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: support else completion after ast::RecordExprField \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-completion/src/tests/expression.rs"},"region":{"startLine":2253}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f49e3fc6347c12d306e6a6dd05e0364ab4e30ef782fc52b795625e4444b4d32"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Add this variant and delete the \u0060retain_adt_literal_usages\u0060 function. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"51a44ea3ea5609bdbb982ce96da39fac93e5a89144317c361bdce4291239c968"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is just a temporary fix for not handling import aliases like \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":478}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3c8d1bf8d46c34020c7884b5990c9ea46bfee924b1b95d08e1ab28e32681fc0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Extend this to other cases, such as associated types/consts/enum variants (note those can be \u0060use\u0060d). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":600}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f9ba189a6998fc889b0e01e60653c64f27fe4f611ee13f29234b016603f4189"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u0060use\u0060s have no easy way to determine their search scope, but they are rare. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":719}}}],"partialFingerprints":{"codehealthFindingId/v1":"04fde5bb31649aef432f6e15b7bcfd6eb7df7283eb1c5b0875a147be088b5d53"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Maybe this needs to be relative to the project size, or at least to the initial search scope? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":816}}}],"partialFingerprints":{"codehealthFindingId/v1":"7820c093bec71361a56fc95cf879ac2775931960381a643e7b4ca6f1defbfbda"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: If Rust ever gains the ability to \u0060use Struct::method\u0060 we\u0027ll also need to account for free \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":887}}}],"partialFingerprints":{"codehealthFindingId/v1":"63188807128f7f84593990d4d9b635c262b98390c91643aa1424f309d93b2297"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Is the trait scope needed for trait impl assoc items? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":934}}}],"partialFingerprints":{"codehealthFindingId/v1":"5305cee80861ab5db0181a061915530de542e933a52c0d789d09706a1e5aa677"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This assumes the crate name is always equal to its display name when it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":956}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d313424934cb35d93efea9dcbb2d70417dd5435ee68c56c8d2099df14eaf33d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This should probably depend on the number of the results (specifically, the number of false results). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":987}}}],"partialFingerprints":{"codehealthFindingId/v1":"de17a679825ae27c84455534dcdcf7f08e9b3c667648b763a8b559c694add055"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: special case type aliases, we can\u0027t filter between impl and trait defs here as we lack the substitutions \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":1255}}}],"partialFingerprints":{"codehealthFindingId/v1":"f18437db84bd12520e3ff3b8e141f2e2d3e6b53771b589d270b2dd041e373a9a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: mutable patterns should have \u0060Write\u0060 access \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":1334}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e41dd97a99d1120cf92aaf85ae2c68e7ac5c72dac5b933397b612dfa8c72b22"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: only until we can resolve them correctly, see FIXME above \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":1351}}}],"partialFingerprints":{"codehealthFindingId/v1":"7453f5b7b0aafb7724097a727307af60e1d177a550c220819054ed95b3e8c95f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // (covers fields and locals). FIXME: This is not terribly accurate. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/search.rs"},"region":{"startLine":1416}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b2bbe356391858e33862b1367cbaeffabec5d1c3991319a011921b659852eea"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This should be doable in theory \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/rename.rs"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"813dbd0165f73195d1bc90de43c3920631460ba8dcba1ef77e77cdab10b4a40f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We could maybe skip ifs etc.. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/rename.rs"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"8976c8e7d4e23e984c24c80af625653f87afdd29d48a1d5fe1274dfdabb2756c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: instead of splitting the shorthand, recursively trigger a rename of the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/rename.rs"},"region":{"startLine":569}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab7e2d31af103127f65562af39deb8d0811c220f7eb80a2177f7f4a6481260d3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We should do it unconditionally if the configuration is set to default to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/prime_caches.rs"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e1e7e3e81745ead580552c8f4d6382aa20f5433e41675dfb75f3311de580125"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: expressions in curly brackets can cause ambiguity after insertion \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/path_transform.rs"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfc499af3421686fd6d4fd0776aea28492e6200b6432c64364dad0e56e61c92e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: It would probably be nicer if we could get this via HIR (i.e. get the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/path_transform.rs"},"region":{"startLine":603}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ecfa9b0ba00d9d29040ed330639baf7df0239d33873ccb33b1561ab8e154310"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Revisit this commit now that we migrated to the new salsa, given we store arcs in this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/lib.rs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"785b8b54bcb0732dda9f4b2904c9c0981434635c3d2244acb132b4f3df188b33"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(salsa-transition): bring this back; allow changing LRU settings at runtime. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/lib.rs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"3609c3b12a26965de4d39de62bef5a8bca20e4590297325cb9c942dd2604f793"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Do callbacks instead to avoid allocations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/items_locator.rs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"6771b184ecf6d466bdda347736b79f62e3e08eae9f72c2897c28a7df7e273263"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is a weird function \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/helpers.rs"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8281dbbce12a5cbef1a223f334fed52dae8a772cb0d8b995be982d38fe4d23e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is a weird function \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/static_index.rs"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e227d3ea14e9df44e4b10f7d54cd46a78b9cd6a4f3a0cb6417a4c8ae3981725"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this badly needs rename/rewrite (matklad, 2020-02-06). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/defs.rs"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e577f747daa508bf69cf1342523afc28a7da3f687cc0fcfc3e5e4c344c90629"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: a more precise name would probably be \u0060Symbol\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/defs.rs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfa74a9e5d9e164080a9fe1417a8cc8d73bf56a432b9e5a726a4c19da67b9d75"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: IdentClass as a name no longer fits \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/defs.rs"},"region":{"startLine":384}}}],"partialFingerprints":{"codehealthFindingId/v1":"7699c1c5e4eb059ecad5f4424958223cdd4955e5395771c80afb4c0144e13d76"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We don\u0027t record the resolutions for this anywhere atm \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/active_parameter.rs"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"c14205584735c41212c733b21327941e26100c60fd3819b8f6323e818ab20a2b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // or FIXME: annotate inserted imports with the same cfg \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/insert_use.rs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"73a9b12651b59b61e1577a43f8fa1f72077403e2782e654c4ea526c0abe738e1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Maybe it is possible to infer based on semantic analysis? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/insert_use.rs"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"54aaf889a59c2283d5dd0d446a9be526efd41a85edba3990c79aeb1e5dbbd797"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Distinguish between attr and derive macros. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/import_assets.rs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"88b954615d39b52a8a6e904c103fb1c594157bb4b61114434241bca074f9e04b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /// (the structure is not entirely correct, since there can be situations requiring two imports, see FIXME below for the details) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/import_assets.rs"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"bed4a27c2234f80e53c886264628e26672391d1fd1121bbd536abd40675606e6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: we could look up assoc items by the input and propose those in completion, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/import_assets.rs"},"region":{"startLine":492}}}],"partialFingerprints":{"codehealthFindingId/v1":"52b1d9cb1553c373ed6594febd95fe794772a21427059a53f88b692a7c2906ca"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This doesn\u0027t handle visibility \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/import_assets.rs"},"region":{"startLine":523}}}],"partialFingerprints":{"codehealthFindingId/v1":"47389983cfde2e0b3c8ef811ae30e51187328e38543892e4a5fd1f3cc63edddd"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This doesn\u0027t consider visibilities. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/import_assets.rs"},"region":{"startLine":618}}}],"partialFingerprints":{"codehealthFindingId/v1":"bff1d7365ee86ea6e554edc4fcbca984d8e19174f41cad9f15d8f7d9007a4497"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: A trait can have an assoc type that has a function/const, that\u0027s two segments before last. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/import_assets.rs"},"region":{"startLine":631}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aa0377c4eff412cb893d6c9f547028b6269a06d7ec1910332e95acd4a6779f0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Support extra trait imports \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/import_assets.rs"},"region":{"startLine":723}}}],"partialFingerprints":{"codehealthFindingId/v1":"29236b2bb0c3dbbc019397ccb226ac307b930dac0b394466de29c1ca1dca1e9d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is suboptimal, we want to get \u0060use std::fmt::{self, Result}\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/imports/insert_use/tests.rs"},"region":{"startLine":925}}}],"partialFingerprints":{"codehealthFindingId/v1":"48f71a1a26edf9c5e0e87062a88f6fc42b6264da620819e0f61daae5999729dd"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this is horribly inefficient. I bet there\u0027s a cool algorithm to diff trees properly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/syntax_helpers/tree_diff.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cbb1dca76008f59845340d79bd38d000f3a89b5377d730104f757383fb8e75d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Make the control flow more proper \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/syntax_helpers/node_ext.rs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb272ef028fa36a3d7008a898179b6ae2285e0e09c28a00bd1b007349ffca5c2"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME Remove this, we have this information in the HIR now \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/syntax_helpers/format_string_exprs.rs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"b22d9c8bad81aaa1d02d79ef416d832627f461342bd357a4dd77d6e31d5dad49"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This can probably be re-implemented via the HIR? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/syntax_helpers/format_string.rs"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0ecb249175cb71d5cc60b010e39143ecde50ebc3050c95fcc56aef64ac5af67"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Remove this, we can use rustc_format_parse instead \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-db/src/syntax_helpers/format_string.rs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"643de416ffc94411f27d98c56180086dd64ee868ab87d5a10595097139c72612"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We should panic on duplicates instead, but includes currently cause us to report \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/tests.rs"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7fbbb33700545a1c7c143a9c622d2edb3583691b8eeef6ae46d9991903d3eba"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Maybe we should merge copy and clone in a single flag? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/tests.rs"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba39740bdaca450c3698260c49ee48a78fa8a6c20c4bdeb9e6eed94592a85d5a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Rustc lints are not always warning, but the ones that are currently implemented are all warnings. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/lib.rs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7a97d155d5c76ef9f6126ecf617035af5fa890986909f5b70b0c8eff96f3cf9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We can make this configurable, and if the user uses \u0060cargo clippy\u0060 on flycheck, we can \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/lib.rs"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3e33c3e8832b14532634611740b97ee4f29b96ae53c42b0cd82ff3429649432"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We may want to include a whole \u0060AssistConfig\u0060 here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/lib.rs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"b20c327dbfd200c99804f49cb0e8ff9b7f8074288c3138016308725b92753985"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This iterates the entire file which is a rather expensive operation. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/lib.rs"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd0c15b6610ce996101af9ee4c0e1c06ad50df409bd457865a5db4a006829712"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Point to the correct error span here, not just the macro-call name \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/lib.rs"},"region":{"startLine":466}}}],"partialFingerprints":{"codehealthFindingId/v1":"d610a8286f634bb736caf92811fdf62d9ff90a4a7f50279671e99a4cfac58837"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Autogenerate this instead of enumerating by hand. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/lib.rs"},"region":{"startLine":654}}}],"partialFingerprints":{"codehealthFindingId/v1":"2576d70ef1441a4009d7524fb510d5a6a448699c7966f6ce59175ac3f263e6bd"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Switch this to analysis\u0027 \u0060expand_cfg_attr\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/lib.rs"},"region":{"startLine":785}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cd0a9973f0434bc2ba855d0aa3734e0c7640c0026b491698dd792f55b78308a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: add quickfix \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/unresolved_method.rs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"acb4a6f4ac8299265d70f6fd61463bc72c8938ea1f083710697fd8b4c8a7213f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: add quickfix \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/private_assoc_item.rs"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"361228b932a17c4014f9befe38c34cdf170ea9fe7a01e05813380a328c032647"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: it fails when type of \u0060b\u0060 is \u0060Box\u0060 with other generic param different from \u0060receiver\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/unresolved_method.rs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e5bfc31afd40c905f603baf621e14b976b788db7d8e4dd07b0f4c0fd8b33acc"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Add Snippet Support \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/unresolved_field.rs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"39a91ae14345fd05f4f9d9da3d9863cc2f3853d36300236d80fc246cf82ddc7d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Allow for choosing a visibility modifier see https://github.com/rust-lang/rust-analyzer/issues/11563"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/unresolved_field.rs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"e20490008247e5d7ebaa0c5d4688596d57774af4fa9a0e5b800453ee3c040aa8"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Allow for choosing a visibility modifier see https://github.com/rust-lang/rust-analyzer/issues/11563"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/unresolved_field.rs"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"b064645d61b0ab8b7cb3f0eb6e830bd82f8d47b1fe0d1d85a7684611ba4ad5c0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Add support for Tuple Structs. Tuple Structs are not sent to this diagnostic \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/unresolved_field.rs"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"1798820f6aef84dd05d9a9db1591cf27befb81192ccf757f6b34c32bebd60d1c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We should fill out the call here, move the cursor and trigger signature help \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/unresolved_field.rs"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"d21d4e1413b2684bf4631448da024d58b2c7f6f7b11eadf6b3fd993cd5a8cc38"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is a hack for the vscode extension to notice whether there is an autofix or not before having to resolve diagnostics. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/unlinked_file.rs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"d93a7639e20569d025f350704661cae8c5364ec5c09aaaf48bb62d8a15974cff"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This shouldnt need to access the crate def map directly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/unlinked_file.rs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"c61eab4966655ce68b47739d7877a988dceb6b6bb02c333c1cf71e27bd1100cc"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This should trigger an assist because \u0060main\u0060 matches via *coercion* \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/typed_hole.rs"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f93a1956f2a4fb507855debb5c9f4d0bb54eaa0abadf2a647e0ad8e8f707651"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This should trigger error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/typed_hole.rs"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"425cfdc63f7a7c93e234d3c7786d285f166fb76bf82e8465d1cfba4649ce56b4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // Do some adjustments to the node: FIXME: We should probably do that at the emitting site. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/type_must_be_known.rs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"239446e5301cfa9c78a9cb25ef90701fa4fda6bf3a4fff7809a4049da0260922"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: support inside MacroCall? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/type_mismatch.rs"},"region":{"startLine":279}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e9caf4b8242a0223e83949970d97cb565260e8d0b34fdf962499611a55ca0cf"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: support inside MacroCall? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/type_mismatch.rs"},"region":{"startLine":364}}}],"partialFingerprints":{"codehealthFindingId/v1":"331a7134594f0d76daa2d3885456862d3f6318577d2a34c59f7e607096e2759c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME do this properly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/type_mismatch.rs"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddc83cd436b33241c920371013b20adcc4cb6d2cc9003b0db4407ecf9da0b622"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: maybe should check if ctx is async \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/type_mismatch.rs"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"1824a0f6625f8607bc309e5efbb75daa04c4ee1d38e8d2b0cd9dc4e0e2b6ba2d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this should suggest making the reference mutable instead: \u0060\u0026Foo -\u003E \u0026mut Foo\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/type_mismatch.rs"},"region":{"startLine":765}}}],"partialFingerprints":{"codehealthFindingId/v1":"126c7d0e27f54777dd79f6913891623687be97c3e45cad444b4f3dacf5751bb1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: add some error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/type_mismatch.rs"},"region":{"startLine":962}}}],"partialFingerprints":{"codehealthFindingId/v1":"021ddb78d4fd95f6a090b26002dd09afc459dc2215ab04833974ffe36dd962fe"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME cannot generate generic parameter and bounds \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/trait_impl_redundant_assoc_item.rs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"308f3c582b4e5e99cbe35dbb10585401f88dca7428d63209438a3ab7fc062826"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Our infra can\u0027t handle allow from within macro expansions rn \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/remove_unnecessary_else.rs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2a3115d48b22fa0de679900bcf07fa36a69f6f2de8b80bd90b050f8ae72f894"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Our infra can\u0027t handle allow from within macro expansions rn \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/remove_trailing_return.rs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a81e445169fef5b29a57c5b6317c925623f69458467069232e9ecd7fbdcd89d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: quickfix for pattern \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/no_such_field.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2eb559ecbd8aab7aa25ca18f3deb274582a549ab59c9394c023a32dbc1fa99d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: check submodule instead of FileId \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/no_such_field.rs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ec4360ae01e3bea4741ff903293ce3777611500d9564ffaa9257f41311ebe04"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: make facilities to test this directly like \u0060tests::check_infer(..)\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/missing_match_arms.rs"},"region":{"startLine":807}}}],"partialFingerprints":{"codehealthFindingId/v1":"527c701fe0093d200a301eaed88bdfc0575cc0962b16e2a8b06c71e111aa8be2"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Ideally, should emit generic default forbidden as well \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/missing_lifetime.rs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b6764c97945b6f7f03260b190440842df485af063a357e777ea4a4bc882dea1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this also currently discards a lot of whitespace in the input... we really need a formatter here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/missing_fields.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb694a67770d24576d7b96efdc187e331d2dc07e3605334cf5388bcfc6882baa"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is a false-positive, the file is actually linked in via \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/macro_error.rs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"e43cedff661dd3492c45b0686eff13b4413e02ecc213d24b07880cf17815bbe3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: The diagnostic here is duplicated for each eager expansion \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/macro_error.rs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c7e635bf1d2430e5e13fdf065fc738a268ab05799065e7ccb7d7588f176df24"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This shouldn\u0027t be a diagnostic \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/inactive_code.rs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"87d031004f869e758d13d4ed681553cae55274677b803737b903065822cb6497"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: handle macro calls. Rough plan: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/explicit_drop_method_use.rs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"299a0df2b59efdd26a55a7e4f7ee124cb16966562204005bab2ce3bdcbdf5c8d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: make this work in macros? Might not be worth it, as this is a niche way to trigger this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-diagnostics/src/handlers/explicit_drop_method_use.rs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"db62da896cdcfb18299402d161f69206e589a63d1f25109a022b31ead92bf635"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Whitespace is not part of the matched block \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-ssr/src/tests.rs"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"b13e9e41d5b5ee72597a30b068e86687186bfdd49b38639c1b9089840fabd503"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Figure out why this doesn\u0027t work anymore \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-ssr/src/tests.rs"},"region":{"startLine":884}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb9f2238e1a2d7ba48f82977cf4917376309378bec9074191ceb033945b39a2f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We should ideally have a test that checks that we edit local roots and not library \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-ssr/src/search.rs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9aae5915894b956c1d2ae068fa45c52ec2774f6de7a24c8f8d3affa08603fab"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Properly handle use declarations. At the moment, if our search pattern is \u0060foo::bar\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-ssr/src/search.rs"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"43b2d09efd83d7a11c7e3336255485809063f3e76b946106b00f6ae333841c68"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Take the scope of the resolved path into account. e.g. if there are any paths that are \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-ssr/src/search.rs"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d4d50d07438dd0cf43894cdd4a9f1b9d589a439b675a48834796e7bc777ade3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: use a snippet completion instead of this hack here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/typing.rs"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"3565731d1e9d098e1e887373f476c09fdae8c9e35e83d7e79465d11357eec0d1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: accommodate range highlighting \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting.rs"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"54f019ada1552b88e77a792ace11445cc9048fe9ae4763e2035e798db9a08044"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: accommodate range highlighting \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting.rs"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"9680301bbd6ef0a78a37656d324078f175e3d0ca0a115944e1b329771f55e6ae"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: accommodate range highlighting \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting.rs"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"462220681a93b618f8a26e5479cb8ddbe8709204993cf1fb117d6307bd44195b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: these are not perfectly accurate, we determine them by the real file\u0027s syntax tree \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting.rs"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"2836bd4d845ea9bd3fbbb16de4b9dd926068d17bc22ec93f0368d73234aae650"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: ExpressionStore signatures and variant fields \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting.rs"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7b664e1cbca963ec5c3bf3a9549e49bd6250fbca9369f9f7b3830033f173aaa"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Consider checking ctx transparency for being opaque? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting.rs"},"region":{"startLine":545}}}],"partialFingerprints":{"codehealthFindingId/v1":"acec9dedcf4a3ce3a398fb6dec238f98f469d4b5c9c8e59778b6381885a499d4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Make this have the lifetime of the database. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/static_index.rs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cb9072f12177524407832a26e18b5c1986960e06d8d828102fcdf60774ae369"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Render docs of the concrete trait impl function \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/signature_help.rs"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"d10424a767a4b720e0643ea9fa7849d9ce510b9a4bc1dcf3238fd42a7bab7b71"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // (see FIXME in tests::impl_trait) and falling back on any unknowns. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/signature_help.rs"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"adb234f2b177b0ac8726da0c5d96dd46a9d9353049319a1e426a8c078a474286"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: The ide layer loses the calling info here so we get an ambiguous trait solve result \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/signature_help.rs"},"region":{"startLine":1616}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb0dd8ffebc0c36f79c6f79ef0c2145e310764db20f71028ce58cf19b778ee6c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Substitute type vars in impl trait (\u0060U\u0060 -\u003E \u0060i8\u0060) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/signature_help.rs"},"region":{"startLine":2009}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bbd69f2421e3db5ffdcc9a9cf76258b2bfa3f7816d353bdd0d6aa5e1941ec48"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(next-solver): There should be signature help available here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/signature_help.rs"},"region":{"startLine":2074}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef0a4c855acfc148fa1c84cccae70546a2565dc0dff4310cc6d56a12731a31f1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Should typeck report a 4-ary tuple for the expression here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/signature_help.rs"},"region":{"startLine":2310}}}],"partialFingerprints":{"codehealthFindingId/v1":"63ae3c7f0f7d54222def24d2d6c17efd602a23634b90224244e40a69b2e3d293"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is wrong, this should not mark the last as active \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/signature_help.rs"},"region":{"startLine":2418}}}],"partialFingerprints":{"codehealthFindingId/v1":"da2f099443b10d1a6925308710f7e3c1e91ad0f1c1ada6b9679daad0a47dad4d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Should typeck report a 3-ary tuple for the pattern here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/signature_help.rs"},"region":{"startLine":2510}}}],"partialFingerprints":{"codehealthFindingId/v1":"e18201ded8f6eefeb59c2695f06b9488e4b83539f9702eb2b22825ff4c3fd298"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: why is this using references::find_defs, this should use ide_db::search \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/runnables.rs"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"61c6bd7b804470cb41b07962854c499b300b5bcb08c8a081906a692c34f6c4aa"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This can use the \u0060ide_db::rename_reference\u0060 (or def.rename) method once we can \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/rename.rs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"7baf1ec0553bb7762b8c616c0a2a6950a1119260b33883c9f29617aaaef29e7c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: hack - removes the usage that triggered this rename operation. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/rename.rs"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"606b22edb77e10eaee61355a67d8090a26ff31e245dced74f4ce0870bba52fd9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Should support \u0060extern crate\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/rename.rs"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"04a6a19c68867cbfce8c303eeb4bdb22ac01ec0a98e14edf3e8f259cca91afb4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: uncomment this once we resolve to usages to extern crate declarations \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/rename.rs"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"8277087d5346f6ace2ca21c623c7804f1f08a241dec9f44bf9da5789505bb008"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: uncomment this once we resolve to usages to extern crate declarations \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/rename.rs"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"091ee7db7af0fd1d651850521ae218f5a8459ea4097d13ac964246c2df4338ee"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We always put it as \u0060Trait::function\u0060. Is it better to use \u0060Type::function\u0060 (but \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/rename.rs"},"region":{"startLine":679}}}],"partialFingerprints":{"codehealthFindingId/v1":"232b882d1f9b2a4e77a823114bcfd420bfd0f21b609a3e726e9268b30e3cec28"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: replace above check_prepare with this once we resolve to usages to extern crate declarations \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/rename.rs"},"region":{"startLine":3365}}}],"partialFingerprints":{"codehealthFindingId/v1":"214d19cf5d99930d6816221efd2227a696003666b83990cd1098eabdb83ee3e9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: replace above check_prepare with this once we resolve to usages to extern crate declarations \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/rename.rs"},"region":{"startLine":3418}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f10b1732d56597a3bb3aa31889c69084522d98156b34472f2bd8b119dacc88e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: replace above check_prepare with this once we resolve to usages to extern crate declarations \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/rename.rs"},"region":{"startLine":3443}}}],"partialFingerprints":{"codehealthFindingId/v1":"68137802f758fc1f96a9edafa51d2dfb0a307c7eed6691b4428c9dce22a50412"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: replace above check_prepare with this once we resolve to usages to extern crate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/rename.rs"},"region":{"startLine":3392}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bfcef7fe484f60cc1d81eea3b0d7f926f98ba6c43d59b8228d4cc43b30cbeac"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: The ranges here are volatile when minicore changes, that\u0027s not good. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/references.rs"},"region":{"startLine":583}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8623a031b38ed50b626fd545a4a34821113fb237a37c4f1123e56fa85e65ef5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: import is classified as function \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/references.rs"},"region":{"startLine":2239}}}],"partialFingerprints":{"codehealthFindingId/v1":"216469901b257e1586785539562738a339e1f5f50e12d459f7e884be8544942b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: import is classified as function \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/references.rs"},"region":{"startLine":2271}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfeb258213d253e8ce14763277078304ff96e57004a569b1611ad742d77165fa"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: The focus range should be set to the helper declaration \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/navigation_target.rs"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cc95d5d2279fc7b27c530502d8163d6b6653057d1f60eb98a6898e949542de8"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Handle owners of blocks correctly here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/navigation_target.rs"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"7eb683ba1cfe5db85eaa74db89d664d0dcf5bef08e3a1f9965a0221f8e5412e0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Also make use of the syntax context to determine which site we are at? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/navigation_target.rs"},"region":{"startLine":924}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b9eb741e3759e92a41b85f89d70eebe55c61ac6de1ba7643e86b814760441ca"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Do this differently, this is very inflexible the caller \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/navigation_target.rs"},"region":{"startLine":951}}}],"partialFingerprints":{"codehealthFindingId/v1":"0219ef5e44d59c5eef47b1f7559c09ed7bd59c96305c341ebb5ffe757833f3a1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This can be improved \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/navigation_target.rs"},"region":{"startLine":970}}}],"partialFingerprints":{"codehealthFindingId/v1":"86123e78ac75a697016c185b68e2e72297ac90809dc96c59ac3055070bcb9495"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u0060applySnippetTextEdits\u0060 does not support non-empty selection ranges \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/move_item.rs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff22f87fe6925cfecff581e4e37ee4075f5568cddb85ebeab3575314a5b0e979"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: ///   \u0060BuiltinLifetime\u0060, \u0060TupleField\u0060, \u0060ToolModule\u0060, and \u0060InlineAsmRegOrRegClass\u0060. TODO: it might be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/moniker.rs"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac591568564a256cb924cf3e8b74edffb2cff8a5630dcef343d1247a035882ed"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: cfg options \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/lib.rs"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"99a135f82c76d3776b6ec687bd795de56439e1239992c3c63857e87db4e64f1d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME edition \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/lib.rs"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"db734ac3de79f50e735fbe50fa2bacb9e57f5af3408f4b0fb0793a9244f6c854"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Edition \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/lib.rs"},"region":{"startLine":498}}}],"partialFingerprints":{"codehealthFindingId/v1":"b566478e99ef3e4a402b2df9d62c02136b3ee27cba54a7179d09c0fa24386b2a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This can miss some hints that require the parent of the range to calculate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints.rs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"62ff51c5cbdb0770b8832bd7cfeee55f7957bdb320da69ca0228b0549496456e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: At some point when our hir infra is fleshed out enough we should flip this and traverse the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints.rs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a84815744e2b060e7b720aab08abbc2acfb4935f08f0f7c5ac4ca685c3ae26e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: trait object type elisions \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints.rs"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"2031c2ea1d6dc0b32c59f04de4126d51841e1bb61af87f16131a55b3aa4dce1f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Limit the length and bail out on excess somehow? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints.rs"},"region":{"startLine":899}}}],"partialFingerprints":{"codehealthFindingId/v1":"15e99ddeeb7b85943b199d6a1c465bd5d9a94d892b6760e1712027812ce9d772"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We trim the start because some inlay produces leading whitespace which is not properly supported by our annotation extraction \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints.rs"},"region":{"startLine":997}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0b48e2e176e6d0315470858c941f3288ba2b4dae0e28e09a81bb6e4dfefae31"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Definition should include known lints and the like instead of having this special case here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover.rs"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a426463ded2a41c38c2089b4e645527537131b93247b137aecaa54c454d71b9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: make this work in attributes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover.rs"},"region":{"startLine":416}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfdf3fc583c9e3f61369611103c940d211d961d45b6486663f41c5294dbc8259"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Why is this pub(crate)? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover.rs"},"region":{"startLine":458}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bec59c1d033a3ec77a714bfe884c1f4e99fab0e91eacab16e72bab05e8399bc"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This needs to be more precise. Reference category makes sense only \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/highlight_related.rs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"a141c4b0ac39e96b1f14f50f96151099a1f2b3c11d283acf50ce55fbc24644f0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(next-solver): it would be nice to be able to also point to \u0060\u0026Foo\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/goto_implementation.rs"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"129a6f0415f78f641344b85c8e07851d4207e4e8a65bf57f6d29b7ccdffaf2b6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Support \u0060Poll\u003CResult\u003E\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/goto_definition.rs"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3b6f893777bc73bb9eea98da238752119831083de092add618d31dae9a4d1c0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: requires the HIR to somehow track these hrtb lifetimes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/goto_definition.rs"},"region":{"startLine":2084}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad754eba54726c3a7b5e7229c536568ddc18fbf391d9bdf33c0d76be9bc27db8"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: requires ForTypes to be implemented \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/goto_definition.rs"},"region":{"startLine":2103}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e1a7c7b6fa4a091c96e0dd9440c96998560d932be972f52c5670e7747fb5537"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: use \u0060ceil_char_boundary\u0060 from \u0060std::str\u0060 when it gets stable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/extend_selection.rs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"31230461588ebb859a84d00cd78b5ca0794f9691fcf5189cb55033b7f1ab20e5"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // hack until we get hygiene working (same character amount to preserve formatting as much as possible) \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/expand_macro.rs"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"215a4206cd14a5a5f541ebd8961454f06f473dd8ce296cf8345200b2156dbbe5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Use the toolchains channel instead of nightly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/doc_links.rs"},"region":{"startLine":583}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c0251ce2e221b0aa10311da2a7455a77e38ca4a01facaa6ae689b2c397be51c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: These should not attempt to link to docs.rs! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/doc_links.rs"},"region":{"startLine":600}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7058e3e21dcb6a9b0a8cb31e52c6edffd49cfd748f9a8d7d990da9366cc2075"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: clicking on the link should just open the file in the editor, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/doc_links.rs"},"region":{"startLine":606}}}],"partialFingerprints":{"codehealthFindingId/v1":"159ff17373dc49a8157d5d47b5e353b19a77212bcedb4215ff2ab02373fe73e2"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: clicking on the link should just open the file in the editor, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/doc_links.rs"},"region":{"startLine":622}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c7487ef2f253050e5709918942db5035e0d3963685315d85e7bd46005a825ca"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(trait-alias): url should be traitalias. for aliases \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/doc_links.rs"},"region":{"startLine":681}}}],"partialFingerprints":{"codehealthFindingId/v1":"64b0823ba2e9317d1f3fd79ecd24ab3eaf89e0fea9f6e3a76c8e3d248b0d4a65"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME fragment numbering \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/doc_links.rs"},"region":{"startLine":728}}}],"partialFingerprints":{"codehealthFindingId/v1":"98d3e9a26d07ac1b26dc78c1f3fef7c1d5aef361e964e036e6f5ddb3704292c2"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME #9694: [\u0060Struct::Type\u0060]"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/doc_links/tests.rs"},"region":{"startLine":519}}}],"partialFingerprints":{"codehealthFindingId/v1":"3639ad0c5b68630d584095d781eacd4ff704e7f1b94d6a4ff6d145e3d9709ed1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Show the data of unsized structs \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover/tests.rs"},"region":{"startLine":6379}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ff70c4ab3d29cd67983d76bb92c6c8f0be5fffde7ce28a8cea0f9e57f9f0fc9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(next-solver): this fails to normalize the const, probably due to the solver \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/hover/tests.rs"},"region":{"startLine":6463}}}],"partialFingerprints":{"codehealthFindingId/v1":"35deb0cf880dc5c8f879fa78f57fafe40f000afc2a50622ae3016d0459dfcbd9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Support general path types \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints/lifetime.rs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"a087daa846a5389832c27fa3cc0339e85555764468e1c46abdba356d089b66b5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: check path types \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/inlay_hints/lifetime.rs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6eb39b8a3fc786a79ffdb130692fdf31e69e8ba263f2465c1408b7e642ebb5d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //FIXME: like, real html escaping \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting/html.rs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"886ad128ec196069bd384ab49b7cd6d511ec420b0781b0a7f22cc56ed12b9695"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Fallback for \u0027_, as we do not resolve these yet \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting/highlight.rs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e360fd9e46780f234ca496c138ded6302b903eb82d8d380814ed6cdfa008711"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is required for helper attributes used by proc-macros, as those do not map down \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting/highlight.rs"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"d95c429508d0682d1f263fea1c4d4b8a5be172e70b21f132ebba10ae23fb3af7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Passing \u0060None\u0060 here means not-unsafe functions with \u0060#[target_feature]\u0060 will be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting/highlight.rs"},"region":{"startLine":509}}}],"partialFingerprints":{"codehealthFindingId/v1":"7192756200ad6f7a42ff213773093c3998c7d30c8de2be9db583cb9115545d27"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This should be the edition of the call. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting/highlight.rs"},"region":{"startLine":513}}}],"partialFingerprints":{"codehealthFindingId/v1":"08b43c31b56529a07595256ba7ed0e3033843846e518bc1789139e0a72d0a109"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Replace this with the HIR info we have now. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/syntax_highlighting/format.rs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"02383d229039a07a852f705afa8ad93a5410690df7442fc488d89175f0f2dcd0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: implement this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/load-cargo/src/lib.rs"},"region":{"startLine":740}}}],"partialFingerprints":{"codehealthFindingId/v1":"66224282a792a8ae0df87ec87c3bebdd2dfb308bb0ac1b1b5df059871a24bd79"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Move more of the nameres independent tests from \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/tests.rs"},"region":{"startLine":3}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a85b1832999fe35cb2fc37cb0b60e96f04b50f0fafeec62915cdf341b5ed85f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Add support for \u0060attr(..)\u0060 rules with attribute arguments, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/parser.rs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"d870cff032037076bfba9c775b397dabea8a271640da4ff2daee8749bedaab59"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Showing these errors could be nicer. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/lib.rs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb9875815962de0950b15f7a6c2a378df9a184b0b2310d21574994bd1044430b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We need to split the tree properly here, but mutating the token trees \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/lib.rs"},"region":{"startLine":422}}}],"partialFingerprints":{"codehealthFindingId/v1":"36be1fc5bf5b00750e08b1568533ff4f18d9631677d973e68c89541c4c4b7416"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Meta and Item should get proper defaults \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/expander/transcriber.rs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c0e6bcf465cabf8df24faaaf91d685243845e738767a0064cd84e74f0fee4a9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: The error gets dropped if there were any previous errors. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/expander/transcriber.rs"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0da629bc7721be2d4d60ccacf42b262b758813c13827c7b93aec815bb8ceecd"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: to be implemented \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/expander/transcriber.rs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"0befb73e655fd6560f9e3d7ed893178183c9d94937b0022f2d183db30ff61a27"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Breaking here and proceeding to \u0060count()\u0060 isn\u0027t the most \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/expander/transcriber.rs"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ca8eb3e9d70bb9748a7ea7a5f9df13838da222737f8abe2433c603b7a8d3cb9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This isn\u0027t really correct wrt. escaping, but that\u0027s what rustc does and anyway \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/expander/transcriber.rs"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad7df1b01087b5b6cf65d2db5fa7188252a51457ed873ca9dbc6f175e8923705"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Do what rustc does for repetitions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/expander/transcriber.rs"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"65903eebffa9e3c5b46876548c950e61e26ec14040993a46174942a2b0bdb8fc"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: NFC normalize the result. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/expander/transcriber.rs"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"31ba0b8795457f45049b7c4ab5e1edb0c6603b056136a988229ba40d39f88048"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is a bug here, we get here when we shouldn\u0027t, see https://github.com/rust-lang/rust-analyzer/issues/18910."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/expander/transcriber.rs"},"region":{"startLine":496}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfa84dd4cce4ca9eae74ce45fe3c6a4dac3861564135b2131c1340ab1be9a2b9"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: here we use \u0060meta_result\u0060 to pass \u0060TtIter\u0060 back to caller because \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/expander/matcher.rs"},"region":{"startLine":422}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c9279890d5668c34646d4f7d8841d9fc6dcf2088db368585fc4f93c32401473"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: here we use \u0060meta_result\u0060 to pass \u0060TtIter\u0060 back to caller because \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/expander/matcher.rs"},"region":{"startLine":567}}}],"partialFingerprints":{"codehealthFindingId/v1":"cda4c5a916363cb4424434d2c53fbe51a5718bc40383b47a5d0ef111de8380e7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: If there are multiple items, it\u0027s definitely redundant (and it\u0027s hacky! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/expander/matcher.rs"},"region":{"startLine":719}}}],"partialFingerprints":{"codehealthFindingId/v1":"7499805b47952931223b27af3b024a6c1180f48edcc6c245ef015f077a1a9f9d"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: Macro expansion should not be done using \u0022rollback and try another alternative\u0022. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mbe/src/expander/matcher.rs"},"region":{"startLine":791}}}],"partialFingerprints":{"codehealthFindingId/v1":"81c8e8f3174dfba5319fedf4ad3e926c7eb5c779539187852266d210de67ad45"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: panic!? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/parser.rs"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bb51cbb64935e4c9251a08304e1632eea4f36a327c0002e8b8a9964fc74e904"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /// FIXME: this should be much more fancy and support \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/parser.rs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d4a9af4c592216cff3ca3564b9fb2746fce16796f87770cac79206f0d512c9b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: rustc does something better for recovery. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/lexed_str.rs"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7fcef87668d0184b35dbf16966c5e7e4690821b4e8fc39e354d8b6372f94005"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Ideally this should be handled in fixup in a structured way, but our list \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/grammar.rs"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"d426fe497eee1d6cc6cdb1ae48174ed482416eb9dfc0c1e90e63692007cd7657"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: not all box patterns should be allowed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/grammar/patterns.rs"},"region":{"startLine":385}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe5e87df03b9fc91a698b55e4b070f62e6bcc33da717a651284e0af1db9edcee"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Recover on statics with generic params/where clause. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/grammar/items/consts.rs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"12001b74534113573da6ca4eafad792a7be588e6111a1b5e7bd329e436d4c946"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: //FIXME: special case \u0060(\u0060 error message \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/grammar/items/adt.rs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd4dc7ba284b9c75a9d08cb1d64143b2b52b74fb724c713f41900c62de6d598f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This shouldn\u0027t be accepted as path actually. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/tests/prefix_entries.rs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef027c49d8cb9bebb9905b08555c3f34a899fdc467354a731b9fa8b46aa58da4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This shouldn\u0027t consume the semicolon. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/parser/src/tests/prefix_entries.rs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cafad7809b91d54cdb7486e828cddcdb0104eaec5883682dfbe5d4e3ca8eb6e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Avoid \u0060AssertUnwindSafe\u0060 by making the callback \u0060UnwindSafe\u0060 once \u0060SourceDatabase\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-api/src/bidirectional_protocol.rs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"96960d4a7d05b70be7e018d139815f232242f9928bb50157adbfb82e90979145"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u0060count()\u0060 walks over the entire iterator. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-api/src/legacy_protocol/msg/flat.rs"},"region":{"startLine":584}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cfb745dc3a1174803573542864c52d4ccf2300faaf26c7ea23272edbbb8ad52"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: we iterate subtrees in reverse to guarantee \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-api/src/legacy_protocol/msg/flat.rs"},"region":{"startLine":767}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6f671a4120a51ed881375d8d886e2cd79b3fe1bd197c2ba225eb6d9bc208163"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: we iterate subtrees in reverse to guarantee \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-api/src/legacy_protocol/msg/flat.rs"},"region":{"startLine":875}}}],"partialFingerprints":{"codehealthFindingId/v1":"282f8954b02883e5bd41d8cd43bb8cb8b73bc477f803707dc59b7e131303e74c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: The protocol does not yet encode entire spans ... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-api/src/legacy_protocol/msg/flat.rs"},"region":{"startLine":967}}}],"partialFingerprints":{"codehealthFindingId/v1":"53a50a5a058f3654695da3a3b5eb14d45188df397e5033622047967692658b17"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Error on edition \u003E= 2024 ... I dont think the proc-macro server can fetch editions currently \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-srv/src/token_stream.rs"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"38de45d08ee3dbe9c1229f0bc1d4753d992b7ff47313b625a63d82d89c040771"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Once we can talk back to the client, implement a \u0022long join\u0022 request for anchors \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-srv/src/lib.rs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2d25d37bf5eab8366363d1131c5551e15c100ac508c45adf1b5b93f6950e4dc"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: nfc-normalize and validate idents \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-srv/src/server_impl/token_id.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3cc0f3a24c91e785c3cbc972ccbcfacbe2e8a748b7eee4f4d82cbfddea1d00c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: nfc-normalize and validate idents \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-srv/src/server_impl/rust_analyzer_span.rs"},"region":{"startLine":271}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae9096fb19ef7bcacee65f56f0f9c0d6842f0329fbf2ea7090e7719e5daf31c0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME handle diagnostic \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-srv/src/server_impl/rust_analyzer_span.rs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"875e5bb24ad140b5c6b5200c3e0aefc72a4c9e85d436a45b6d88e50fa3b31548"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: requires db, more importantly this requires name resolution so we would need to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-srv/src/server_impl/rust_analyzer_span.rs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"722487db467445b491507e2e7506282e398f3de1d96f6f27d289c61759892d2c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME, quote is incompatible with third-party tools \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-srv/src/server_impl/rust_analyzer_span.rs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a0759e33ba2727c613502824f75f7d0108526849c3f9bb68dfb850c89c0cdec"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME, quote is incompatible with third-party tools \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-srv/src/server_impl/rust_analyzer_span.rs"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"78c2a4d6c8d8165e4f69b5c90f2d3f2039e25ca7635eaeabad653a1d7cea533a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: make this a per-crate map, as, eg, build.rs might have a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/workspace.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4fdf383f481603a65d211e36d3abff57315730356000ac9d4f6efbf48139d0b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: The primary limitation of this approach is that the set of detached files needs to be fixed at the beginning. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/workspace.rs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4d957de2cbde0a3098b585402af48d371a301e574cc2a8e82494cdb6dbb6ff4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This looks incorrect but I don\u0027t think this matters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/workspace.rs"},"region":{"startLine":1123}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9cfc1a8a6571fdef033966428b69b7ab5ed6bfb52f1e857c07180a74b9aee27"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Remove this once rustc switched over to rust-project.json \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/workspace.rs"},"region":{"startLine":1458}}}],"partialFingerprints":{"codehealthFindingId/v1":"2806f2ff298d15054f4ad15e9d55e50e7ae304441c2f380e0260acb232be8199"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This looks incorrect but I don\u0027t think this causes problems. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/workspace.rs"},"region":{"startLine":1466}}}],"partialFingerprints":{"codehealthFindingId/v1":"92bd40b23220fb32c651e4a98a561a919ae351218c7d3a64a27313fd0aac89fb"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This looks incorrect but I don\u0027t think this causes problems. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/workspace.rs"},"region":{"startLine":1491}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ccafcf6e212f2a478bdf78d7b913a8dc49e772661f1a1b98ae9f5d62aa2e1b4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: There shouldn\u0027t really be a need for duplicating all of this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/workspace.rs"},"region":{"startLine":1533}}}],"partialFingerprints":{"codehealthFindingId/v1":"df317ca041db45c971aa3edbb88baf6f84bef4b73b427e0d263cdec776b50dd7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Passing extra_env is somewhat dubious here, for the same reason we don\u0027t pass \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/workspace.rs"},"region":{"startLine":1998}}}],"partialFingerprints":{"codehealthFindingId/v1":"1917c63c95e554ca4e1858b5af56f0ac45b86415469960ee27033a823046864d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Remove this, that will bump our project MSRV to 1.82 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/sysroot.rs"},"region":{"startLine":505}}}],"partialFingerprints":{"codehealthFindingId/v1":"e847dd2a1fbc994b655d74db0eec857c305033a4bbb3f2b240ed0e48884666da"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /// FIXME: ask Cargo to provide this data instead of re-deriving. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/env.rs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9b347bd799042f17abb52d8788cba88f8b8440f11fe1f794e1eb275edd8b4e7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Missing variables: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/env.rs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"f32f1b972ba7a761d6a4685789d578cc21ebbac9d86531ab1103e6f130b015b9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Find a better way to know if it is a dylib. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/project-model/src/build_dependencies.rs"},"region":{"startLine":571}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd4c3694b33e67ca219911ab6a8fb3d415e39ad6e0c0d329c2828ba6f72109c2"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is a mess that needs some untangling work \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/reload.rs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"c47be4a54d05c316cb12c2d221f4ec125174a1fad00ff25aa60f7de0f3c5c0c3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: can we abort the build scripts here if they are already running? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/reload.rs"},"region":{"startLine":540}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c010496b0816defb30d10dd7f1c1617001ecb841ff16255d0d5b7d5d97eb05d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Move this into load-cargo? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/reload.rs"},"region":{"startLine":981}}}],"partialFingerprints":{"codehealthFindingId/v1":"05cb8520de718943642afb10b6f019959df50b70b2566db9b709df4fb69ae465"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Remove this in favor of a more general QueuedTask, see \u0060handle_did_save_text_document\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/main_loop.rs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"908e348129153247bf84f6e2ea46f30883b543093cb1e81df662feda14c7be26"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME This feels a bit off, this should go through similar machinery as build scripts? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/main_loop.rs"},"region":{"startLine":962}}}],"partialFingerprints":{"codehealthFindingId/v1":"94dff2b164173ea305540de1910f9fa604c7793aaac89328429deae5099c8ac6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Check whether these files could be build script related \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/main_loop.rs"},"region":{"startLine":1116}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4598f30976268f64662306d6fb68947670a4e30b2cfea21b9e968de4e39d63f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Retrying can make the result of this stale? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/main_loop.rs"},"region":{"startLine":1377}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8fdc0ea842e021c8535b4a3e815705041d68ef29a1d5f6af40e2ec10158ff6a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Retrying can make the result of this stale \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/main_loop.rs"},"region":{"startLine":1379}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e0942da0840989ab15dbc708de6ed3a6bbd941996a700872720d75c3fd94355"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Some of these NO_RETRY could be retries if the file they are interested didn\u0027t change. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/main_loop.rs"},"region":{"startLine":1384}}}],"partialFingerprints":{"codehealthFindingId/v1":"463cc6e31fc54abdccf468e34afa68e66cadc79458affb3ef86677bd05961bf3"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: /// HACK: Workaround for \u003Chttps://github.com/rust-lang/rust-analyzer/issues/19709\u003E \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/global_state.rs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d8aedb1e55f2f027aaa26e103ffbd12707b4405f21dff0f60ddcb050eb4030b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This should move to the VFS once the rewrite is done. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/global_state.rs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"345c5be6469b5c280bf2e3018719ae2bf2a57e016da23fa7490076181f0f8caf"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Can we derive this from somewhere else? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/global_state.rs"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce37db2bed956290ec33bb0cd444be74af3ef9d3c5f02083abb65696f2c3f3de"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Consider doing normalization in the \u0060vfs\u0060 instead? That allows \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/global_state.rs"},"region":{"startLine":419}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dcfb9cc537e905f53f4964c0db87281bc35ae4d875df9a958885818d63567ef"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME @alibektas : This is silly. There is no reason to use VfsPaths when there is SourceRoots. But how \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/global_state.rs"},"region":{"startLine":467}}}],"partialFingerprints":{"codehealthFindingId/v1":"25c5ea450aba4a2e76a7c33d47e19583abe0923b031b3991ba35dd74419a18ef"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u0060workspace_structure_change\u0060 is computed from \u0060should_refresh_for_change\u0060 which is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/global_state.rs"},"region":{"startLine":550}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6b751529bf6d1fe10a8951f753d2e92528023494c2cbb7aca36d291f6ebafdf"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: ideally we should only trigger a workspace fetch for non-library changes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/global_state.rs"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"0401b2f1f7d71f1e23552f9c3475b6d885a43db59c67574ae797b1ebaaa401f3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We should cancel the in-progress fetch here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/global_state.rs"},"region":{"startLine":733}}}],"partialFingerprints":{"codehealthFindingId/v1":"17c7d9e8010e77412799d282f7a1ae2d4583477a7df1748db010e79fe187f7a5"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: drop order is significant \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/flycheck.rs"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"891bc1cfe89a50beaf9405bfa03f920f5c1fdeb5687bb44c281a805c2ebd7df4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: \u0026affected_workspace \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/flycheck.rs"},"region":{"startLine":979}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f0a1e5be082420af63373af9d8ab3b7559be291f516f53afe242492e5d49917"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: are we sure the extra env should be empty? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/discover.rs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dc34b543e7d00f34cd10ff288f586c0d702768a071133931250ea6355c63bff"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: should be FxHashMap\u003CFileId, Vec\u003Cra_id::Diagnostic\u003E\u003E \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/diagnostics.rs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"70e9b4fcd966f45632f3d187cccf206cc59bff3e57155743e16fe5bc91186104"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Doing the merge step of a merge sort here would be a bit more performant \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/diagnostics.rs"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c4478f2eb4fe75c4091aae5615f482f5b5fa63c03f72cf93dc4830e8b00ded5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(@poliorcetics): move to multiple targets here too, but this will need more work \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/config.rs"},"region":{"startLine":869}}}],"partialFingerprints":{"codehealthFindingId/v1":"109bc5c50723da4df3733ba82398a678ffcf3f64d8b41d35ae8ec27598668e9f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME @alibektas : Server\u0027s health uses error sink but in other places it is not used atm. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/config.rs"},"region":{"startLine":1200}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb5a27804fa686f49cbf47c326a34659a47c36108325a4be101fdc9820f2e609"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME @alibektas : This is the only config that is confusing. If it\u0027s a proper configuration \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/config.rs"},"region":{"startLine":1972}}}],"partialFingerprints":{"codehealthFindingId/v1":"7657afe26043b811b5b4adaf20a55288700c5b1c19d426fe12a41dd6d0ea031f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Also detect the proposed lsp version at caps.workspace.workspaceEdit.snippetEditSupport \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/config.rs"},"region":{"startLine":2691}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4dc1551639ee8e7d1cbfbd6c26d7b2dd8b835d7da469f47253a0caaeb472cac"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: check alias first, to work around the VS Code where it pre-fills the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/config.rs"},"region":{"startLine":3627}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e4a69ece8cc6fa888f63ad07be7477fd198cedb54d3dba056a15198f35795fa"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: check alias first, to work around the VS Code where it pre-fills the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/config.rs"},"region":{"startLine":3655}}}],"partialFingerprints":{"codehealthFindingId/v1":"584579200fc9b758936fb35ee5057f96ac93e57cab79029a5e52313a21b18314"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME @alibektas : What happens to errors without logging? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/scip.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f33e3ad5e8855103537c3306d2f0915355e3006b79398532f9d9fdfa10d5409"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: See #18772. Duplicate SymbolInformation for inherent impls is"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/scip.rs"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bb171586158559e52c79b59fdc0735bb3c8f09a94f5f352c96be91a7de1f823"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Known buggy cases are described here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/scip.rs"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2f09316f99a8151cb3ed4aafb0d36e8ca2542379e644747040ee88370b63aac"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This test represents current misbehavior. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/scip.rs"},"region":{"startLine":837}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d2aeacb1f5418942f943bd5db93993d08e49c0137c1ca32249e957bbabc1b4b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This test represents current misbehavior. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/scip.rs"},"region":{"startLine":853}}}],"partialFingerprints":{"codehealthFindingId/v1":"26116aa85a994d91cdd2b072dc7378dad28965362eb2024aed7a2fdded6ea87e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This test represents current misbehavior. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/scip.rs"},"region":{"startLine":869}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbd07abf3db5da01217c51fbc88590d0ab3db18f686864314503e91151b9ca98"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This test represents current misbehavior. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/scip.rs"},"region":{"startLine":885}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb9da8216471481b0727f931931f46b6aabacc96dfd5a6cc6a2f96ec401f2dd6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This should be a local: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/scip.rs"},"region":{"startLine":848}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc3709ab50a2df5fb952273011619514bf04b47864f84ba70d90f19cbbc8cc28"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This should be a local: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/scip.rs"},"region":{"startLine":864}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0cd13181903c0053c7fa81715e06ffa48411a07909a831246a33727c02b6f37"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This should be a local: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/scip.rs"},"region":{"startLine":880}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7d1f856a56f7e33863e001ab3716c3e3bd8270dafd3fb1a726b83635834310e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This should be a local: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/scip.rs"},"region":{"startLine":896}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c668e5242cba17e902cb968452230fc5b107d2f110f06ea062fdbeb8bbbf848"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(salsa-transition): bring back stats for ParseQuery (file size) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ec10d2eaeb54cbea7bee82501cfbb9e7c0ac3cb9d47754ffe9f9ee5eb1589c8"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: In some rare cases \u0060AssocItem::container_or_implemented_trait\u0060 returns \u0060None\u0060 for trait methods. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":637}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9ee3161596a30a22ad89d841e463b54c101ca0c819281ea61c6422ea902c0d2"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We don\u0027t have access to the necessary types here (nor we should have). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":807}}}],"partialFingerprints":{"codehealthFindingId/v1":"94e4cb2647fe9f565078cee563e9d4be89ef3b6da9492a4cdde964deba43886f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(salsa-transition): bring this back whenever we implement \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/cli/analysis_stats.rs"},"region":{"startLine":1661}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab16ba55b7d5b0b351bdeb64dac3ef84efa6833563e587b4f79a4e1c1d279d9d"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: special case for \u0060warnings\u0060 rustc lint. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/diagnostics/flycheck_to_proto.rs"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"d65d7b9c5f6a474cbd6d0de026fbcadf284e6484ba8a25e41d7dec3c05854327"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: special case for \u0060warnings\u0060 rustc lint. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/diagnostics/flycheck_to_proto.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd117fd51f13d2a20f706de93da60dcea098a5d86addf120b645f8d3e39629b4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: current rustc does not seem to emit \u0060\u003Cmacro file\u003E\u0060 files anymore? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/diagnostics/flycheck_to_proto.rs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"f76cb59c4ba919ca17abfc8bc07f5425240718206d6332835a4391cd029f4717"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: there\u0027s no good reason to use edit_map here.... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/diagnostics/flycheck_to_proto.rs"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8dfdeeb97c854f0762305d9e57e4e17c51b269b25e1bc479ae3489206782f2b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Set deprecation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/request.rs"},"region":{"startLine":764}}}],"partialFingerprints":{"codehealthFindingId/v1":"0079e8105ada914c9944a64fc910d369eff745f32a5fd85d03096c5e4f1d368c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We should fix up the position when retrying the cancelled request instead \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/request.rs"},"region":{"startLine":1174}}}],"partialFingerprints":{"codehealthFindingId/v1":"35fbbf66057b49ced22bbf6ab36a6ee38be30e54abb29fc3b8d9852175530383"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We should fix up the position when retrying the cancelled request instead \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/request.rs"},"region":{"startLine":1226}}}],"partialFingerprints":{"codehealthFindingId/v1":"782ec05e70563980c918c384b7d8f22db1ecbf6c940cb3cdc7ba4757784e6713"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this mapping is awkward and shouldn\u0027t exist. Refactor \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/request.rs"},"region":{"startLine":1568}}}],"partialFingerprints":{"codehealthFindingId/v1":"268c7740bc354e91126cd5a3aac15a0592b435524083cf99e439f9dedaa6d460"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: use \u0060rustfmt --config-path\u0060 once \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/request.rs"},"region":{"startLine":2418}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cbdd25493ee2a99548c20a6c9f70ee32cb1ec7a7071e165c0dd77e7e41a7dde"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Set RUSTUP_TOOLCHAIN \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/request.rs"},"region":{"startLine":2447}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cb9131f2ec021eecff662f86e56e90e0ea6605c637b4347d1384e4885ffd936"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We should move this check into a QueuedTask and do semantic resolution of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/notification.rs"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"addf33727e1dd78d7c99267e7bf697a51483f2e0f8c4e1d0c8d9a5a9a1f247d1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Because triomphe::Arc\u0027s auto UnwindSafe impl requires that the inner type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/handlers/notification.rs"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"f169f8d747f68ad5dddf5b8235185f0591c3ea3a8e6cd9949e7e2092d8cfc2bf"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: use the \u0060_runnable\u0060 here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/lsp/to_proto.rs"},"region":{"startLine":2013}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e72c9cd7c33b57a29675dff7f485d2d4091539fd31752808805b49a03f3fbfd"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: The cause for this is likely our request retrying. Commented out as this log is just too chatty and very easy to trigger. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/lsp/from_proto.rs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"c32b4f38a777518a8319924a0f25d105ee323caaf42b552e08d96a285922c1be"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: ideally we\u0027d put this on \u0060SnippetWorkspaceEdit.change_annotations\u0060, but that doesn\u0027t work, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/lsp/ext.rs"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"1acf02610a36e554df730149666ee6a56f26b0b7accd5c7e7d603934cdca93d5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove \u0060.with_filter(LevelFilter::OFF)\u0060 on the \u0060None\u0060 branch. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/tracing/config.rs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"4739a5747e6a54cbf655ff68d10a4d7b595c46ffc52eeb7a92021e585a06ab7b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove \u0060.with_filter(LevelFilter::OFF)\u0060 on the \u0060None\u0060 branch. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/tracing/config.rs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"318bbff0f14e94d8aeba4222e40261635e74ad2efe291521e8ed8f4ab9828c71"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: /// XXX: remove the tempdir last \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/tests/slow-tests/support.rs"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"18b336ae74168db6535fce528da9698a5c8743db8d7390d1944f539a58b09041"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /// FIXME @alibektas : This test is atm not valid. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/tests/slow-tests/ratoml.rs"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"a186c0e71a6a6cd20851abe619b53156e055a0367bcbc7832b27f9a1888705ed"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /// FIXME @alibektas : \u0022locality\u0022 is according to ra that, which is simply in the file system. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/tests/slow-tests/ratoml.rs"},"region":{"startLine":834}}}],"partialFingerprints":{"codehealthFindingId/v1":"27d7934e3f228bd505a59fad593ee39670ab70ef66118fd24e47ba7b42032779"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This test is failing too frequently (therefore we disable it on CI). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/tests/slow-tests/main.rs"},"region":{"startLine":896}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d40680dd6896dcdd63602649aeb5095768a23fda3b89f9234aab4e76904b07c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Does it make sense to have this here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/span/src/map.rs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"d68e4bd1dc11d1e500ecbd62534becd42844523267f2ca1084fb658126487032"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this might be wrong? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/span/src/map.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5e6b0eed945c33fc95cc9f6e40e7759b53f5859b58099ecf1cd8ea0144e48eb"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: SortedVec\u003C(TextSize, ErasedFileAstId)\u003E? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/span/src/map.rs"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"7543992512766069fe8c1ad56a9f2dcf233362500c8683686af4f459727eb594"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Give this a better fitting name \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/span/src/lib.rs"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"47f928f82684d97a9d1d0a80d5e94c39792e7fc30a6bd9f92c2e236d5c244e69"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: The None case needs to encode the context crate id. We can encode that as the MSB of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/span/src/hygiene.rs"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea0c0a4b5525ae77e0430025b8b9b3361c69ce2785b45e53945252699c8d177b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: If we store the final \u0060UseTree\u0060 instead of the top-level \u0060Use\u0060, we can store its name, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/span/src/ast_id.rs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dd35a7dac7449f64162e7aa5318cfdff6c04f21c541dfb52bec186fc20476a0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Is this the correct thing to do? Macro calls might actually be more incremental if \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/span/src/ast_id.rs"},"region":{"startLine":673}}}],"partialFingerprints":{"codehealthFindingId/v1":"3225aaf87d8e96796726486d8ea0ce8b1d6138e4f2d7344d1962f15455be9796"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Technically there could be an extern block inside another item, e.g.: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/span/src/ast_id.rs"},"region":{"startLine":779}}}],"partialFingerprints":{"codehealthFindingId/v1":"be719dbe6d9815f12140ce96fbf7d2e7601cc827ffe0b03ebd234e70d947964e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Windows has QoS APIs, we should use them! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/stdx/src/thread/intent.rs"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0c79e7d93c61ae0799425bdcd31032f59c578542a0962b58daee42158132fa1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this branch is for \u0060=\u003E\u0060 in macro_rules!, which is currently parsed as \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax-bridge/src/prettify_macro_expansion.rs"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"46dace1b4e75acb4d5bfe3f9e6228b19989099ad0581570cf37c35eca954a417"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: Why input included WHITESPACE? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax-bridge/src/prettify_macro_expansion.rs"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a5c90eec8a3499c306f96db67b087a8f584f04ffca6d9985f8a2cdcc67a4aea"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: we probably should re-think  \u0060token_tree_to_syntax_node\u0060 interfaces \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax-bridge/src/lib.rs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e370c6f9f8ef76c6703ece9b0811c28cc519bc1dc47c2cdb286a8974558a1ac"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: record an error somewhere if we\u0027re closing more than one tree here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax-bridge/src/lib.rs"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"402dbd1921051858ea1d28b64a9e1885adb90147aaa0ecc3c2a3cc30df9abc04"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this might still be an unmatched closing delimiter? Maybe we should assert here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax-bridge/src/lib.rs"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"1acf0eae7cb64b391647654fda817d819191ec595525b22cdb6c7ec088aaa378"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: record an error somewhere? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax-bridge/src/lib.rs"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"adc0fedb1f4ffbcc94c08ad97d46eddb9f0dd843648228e8d88a2979d26e2f27"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Span splitting \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax-bridge/src/lib.rs"},"region":{"startLine":885}}}],"partialFingerprints":{"codehealthFindingId/v1":"596a091031b84676a361fa76b42660766eca4f926d4980ca07a831e29a2c9a3b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Emitting whitespace for this is really just a hack, we should get rid of it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax-bridge/src/lib.rs"},"region":{"startLine":1014}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d285063e48700919cac423057d463311f86f39e201c8de61b78c467ad2061bc"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: move this function to outer scope (https://github.com/rust-lang/rust-analyzer/pull/2834#discussion_r366196658)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/validation.rs"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"0558636b37fd91410c3328f53a97a8b39d49d09a5600dd5836b86b09e2445488"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: lift this lambda refactor to \u0060fn\u0060 (https://github.com/rust-lang/rust-analyzer/pull/2834#discussion_r366199205)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/validation.rs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"d06b1d552092f53116394333a30cb8cdd894c67ec0f5fe6590eca209f930faf2"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Emit lexer warnings \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/validation.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"f155dfa25d2bd1f219d27e9440b6941923833222e305676c850c5847e9566519"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: disable validation if there\u0027s an attribute, since some proc macros use this syntax. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/validation.rs"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"a440e5416f754f81bfc5f8e094d9de68615827902115465d9e57258dc2aeaa38"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is not a validation error, this is a context dependent parse error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/validation.rs"},"region":{"startLine":400}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ac0e221751e4ea0dd615b203c53f6c9f942aa068da40345b9a3cfa576d759e4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is not a validation error, this is a context dependent parse error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/validation.rs"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"56dcaf05a0047503bb118951a66c4b5a4e088a1d4f7960b0cff295e8d440d525"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: validation errors are not handled here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/lib.rs"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"7429fa07ccbaad8b3803c95a2a986d21b8f08676751b37218fe3844e6e4c4c27"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(#17451) Use \u0060expected: f128\u0060 once \u0060f128\u0060 is stabilised."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/token_ext.rs"},"region":{"startLine":604}}}],"partialFingerprints":{"codehealthFindingId/v1":"82e6cd5707c63379f0fb78db6be649c0d251c95e3d5446fd7b5da0c5d2baa3a0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: remove all these methods, they belong to ast::StmtList \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/node_ext.rs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e5a2f9dba8506cab21d21d65a4e36820578f0bcb76032c54d3665ad2c0b4fd4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /// FIXME: Calling this is almost always incorrect, as \u0060cfg_attr\u0060 can contains multiple \u0060Meta\u0060s. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/node_ext.rs"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"40276193660235df73819d71b9d0a358b8cf954d5277fc9bd14a9971c08580e9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Move this over to \u0060ast::TypeAnchor\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/node_ext.rs"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"15c9f61b75325f2ddefc155c16dfd7e1f7e0896f90af01821a0499b23b2fa4cd"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Accepting floats here to reject them in validation later \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/node_ext.rs"},"region":{"startLine":815}}}],"partialFingerprints":{"codehealthFindingId/v1":"48b634f149b39a3ce3147c2e4f69fb5f8994b8ed4b7d9d6f917f3a8bd1475332"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: replace stringly-typed constructor with a family of typed ctors, a-la \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/make.rs"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"e87f24d21acba084aa9923058c976dbb43d03cfe5fbcaabf490ee1a8a9919320"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: path concatenation operation doesn\u0027t make sense as AST op. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/make.rs"},"region":{"startLine":426}}}],"partialFingerprints":{"codehealthFindingId/v1":"139082613b83484a4401e22a8da409d2d96e70a188379d88d443ea2497b9ae66"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: should not be pub \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/make.rs"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9bfdf99914598c5d14dd5c3023f449642884d6c44f0f5bfeaffc42275f54d0e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: should not be pub \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/make.rs"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"e933757ce1c6585d352bab04199ffd54746e3155607922b897aae0ecd637a5f7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /// FIXME: replace usages of this with the mutable syntax tree API \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/make.rs"},"region":{"startLine":584}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c1475c4a3a5154ba5eb62841e75d658524acd809a6cee37e937ff6313053836"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: remove when no one depends on \u0060generate_impl_text_inner\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/ast/make.rs"},"region":{"startLine":1121}}}],"partialFingerprints":{"codehealthFindingId/v1":"76b051026deeaa5de044dfc638a742845395b55acaa5012e85bded9176291c38"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: some test here actually test token reparsing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/parsing/reparsing.rs"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd7f2797ee9081b0cdddcb1949b454363e9762fb30a77f8aa30be7e310b4419d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: reparse only int literal here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/syntax/src/parsing/reparsing.rs"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"0339d8671d02608706eca70f2d6654bd06e38217c08a3cd1beb8f414f47acc6b"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX Currently replaces any literals with an empty string, but supporting \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/test-fixture/src/lib.rs"},"region":{"startLine":1029}}}],"partialFingerprints":{"codehealthFindingId/v1":"46ac1a78334cc68b27ad27aa7c39cd24a98bdb97636c07c6f1af8d50e0378f36"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //!     todo: panic \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/test-utils/src/minicore.rs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"554fe233fdbf22d257cdf7da1d17e3632badb28cf40898ec3ef25470e349d871"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // :todo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/test-utils/src/minicore.rs"},"region":{"startLine":2505}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f623afc8927d479a7f015fed5d6f222de1bedccf9ce95e18c2d69f63261234d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: The server should provide this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/toolchain.ts"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd039573b80db6d46e797b69e91c765875ac0952d8e74a1598459632d8a55df6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: The server should provide this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/tasks.ts"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc5b26865ee82e9546b94bc258810b9955539b4c3612b023b977d049b7cab4a1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(hack_recover_crate_name): We eagerly resolve every test if we got a lazy top level response (detected \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/test_explorer.ts"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"263c13beedf118e2639c9260ea4070144c8e4a4a49b0a81ae029c1c2c3928145"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: The server should provide cargo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/tasks.ts"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0cc575866dde629f565602d58f2b6a8e20a1064d630165cf8d9f9f342a2d162"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this should be non-optional \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/main.ts"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"20f3b0811394eb27811f822d5816e3e995afc919bf3b20bf811bbab0168eba0a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We should re-use the client, that is ctx.deactivate() if none of the configs have changed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/main.ts"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bcb674ddec7055f81bab825b2645ecdfc6910b313613cf55dbba250584a598c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We should re-use the client, that is ctx.deactivate() if none of the configs have changed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/ctx.ts"},"region":{"startLine":421}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d0ee373790ca28788b15f0a59079921ac4dae6ef48e23c41b94b6430abd0799"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove lldb-dap-specific post-processing once \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/debug.ts"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1696f2b1de1cba4acc5682fca2e1e8da37063da206fda6966f1f536b968a5b7"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Neither crates\\rust-analyzer\\src\\main_loop\\handlers.rs \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/debug.ts"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"80dc0d5c8f826b390eb51824b96aa2f73d08db209b3b43d8f02d9de8600d8595"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Merge this with \u0060substituteVSCodeVariables\u0060 above \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/config.ts"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb81dae981d2a00a287a160ce075d0ff8ab9f341d4475f4beb6b9b223849d19e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support for remote workspaces? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/config.ts"},"region":{"startLine":575}}}],"partialFingerprints":{"codehealthFindingId/v1":"d05dcaa4abdfefb3cb9387ed07c3ee7cc6514d6107cf13bb259846704187c242"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this is a workaround until vscode-languageclient supports doing the SnippeTextEdit conversion itself \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/commands.ts"},"region":{"startLine":1137}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6bf7938944ef8ecc056a00290a0bf8277fda280db50aabd922b408c1ea19c36"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: This is a workaround, when the client has been disposed, VSCode \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/client.ts"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4e7007c4a2a465b6b3ee391b302404e746b5f1a896a5be7481085d035b559fa"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We currently emit this diagnostic way too early, before we have \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/client.ts"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e63f48d8d267738e53df29c3e8668cb40a593dca106d27fa62ea755df389c5e"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK for const fn: math on primitives only \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"lib/text-size/src/range.rs"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"2aea6e3175af57984bb6ab0c679e587b4fd8b364f9dca7fa154aae0a7cf14adb"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK for const fn: math on primitives only \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"lib/text-size/src/range.rs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"acc40290904e75e8c4f53fc7002690efec5158c66c53f16ac5c0f659dbe491df"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: switch to \u0060--revision\u0060 here around 2035 or so \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"xtask/src/pgo.rs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"2aea1f4f64a9291b3c607920ec916d5f6af3ed98d33ab534591b8c21d419cef3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: find a way to bring this back \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"xtask/src/dist.rs"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"76fb9cdce0bf6232cfbbee6a206aa1c1966c6ae3901c97cd240e8a242f419d50"}},{"ruleId":"D20","level":"note","message":{"text":"No ADRs found: No ADRs found. No recognised ADR directory (\u0060docs/adr/\u0060, \u0060docs/decisions/\u0060, \u0060adr/\u0060, \u0060docs/rfcs/\u0060, an \u0060ADR0001/\u0060 folder, or their siblings) exists anywhere in this tree. What was searched, so you can tell an empty log from a search that missed one: every directory under the tree (build output, dependencies and VCS metadata excepted), for a document that is either any non-index page inside a recognised ADR directory, whatever its name and however deeply nested (\u0060docs/adr/use-postgres.md\u0060, \u0060docs/adr/2024/0001-x.md\u0060); or a file anywhere whose name is ADR-shaped (\u00600001-use-postgres.md\u0060, \u0060adr-012-caching.md\u0060); or, when neither turned anything up, a document carrying the decision-record signature (an \u0022Architecture Decision Record\u0022 heading, or Status / Context / Decision / Consequences as section headings). A decision log that clears none of these \u2014 unnumbered files outside any recognised directory, without those headings \u2014 is not seen by this check and this row is then wrong. If that is your case, say so rather than renaming anything; otherwise, consider recording architectural decisions in \u0060docs/adr/\u0060."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d2bea044ff79d7d275f5a91a6e2f548586178eaf480274c33960ad020c854631"}},{"ruleId":"D22","level":"warning","message":{"text":"Duplicate read operation across different types. \u0060SourceDatabase\u0060 is the primary database trait, but \u0060Files\u0060 exposes an identical \u0060file_text\u0060 method. This suggests \u0060Files\u0060 is either a redundant wrapper or a legacy alias, creating confusion about which type to use for reading file content.: Remove \u0060Files.file_text\u0060 and rely solely on \u0060SourceDatabase.file_text\u0060. If \u0060Files\u0060 is intended for bulk operations, rename it to \u0060FilesBatch\u0060 or similar to distinguish it from the single-item query interface. (signatures: SourceDatabase.file_text(file_id: FileId): FileText | Files.file_text(file_id: FileId): FileText)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f7ac644373e2b0437fa40ef5e7b9a30b02655af94843b4c2a46f9cb2c1eb7d6b"}},{"ruleId":"D22","level":"warning","message":{"text":"Duplicate write operation with inconsistent signatures. \u0060SourceDatabase\u0060 has \u0060set_file_text\u0060 as a direct method, while \u0060Files\u0060 has \u0060set_file_text\u0060 that takes the database as an explicit argument. This inconsistency in how the database context is passed (implicit receiver vs explicit parameter) is confusing.: Standardize on the \u0060SourceDatabase\u0060 trait method. Remove the \u0060Files\u0060 wrapper for this operation or rename it to \u0060Files::set_file_text_on\u0060 if it must exist, but ideally remove \u0060Files\u0060 for single-item mutations. (signatures: SourceDatabase.set_file_text(file_id: FileId, text: str) | Files.set_file_text(db: \u0026mut dyn SourceDatabase, file_id: FileId, text: str))"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0c84ab3f3e80b2d56657a5181ca03750487d099c328de1e29617ce8870415e22"}},{"ruleId":"D22","level":"warning","message":{"text":"Same duplication issue as above for the durability-aware variant. \u0060Files\u0060 duplicates the functionality of \u0060SourceDatabase\u0060 with an inconsistent signature (explicit db parameter).: Remove \u0060Files.set_file_text_with_durability\u0060 and use \u0060SourceDatabase.set_file_text_with_durability\u0060 directly. (signatures: SourceDatabase.set_file_text_with_durability(file_id: FileId, text: str, durability: Durability) | Files.set_file_text_with_durability(db: \u0026mut dyn SourceDatabase, file_id: FileId, text: str, durability: Durability))"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"128693b94ff482d9f9262d94c52e58abaca79f2b3332d618c0a88a04753a9ebb"}},{"ruleId":"D22","level":"warning","message":{"text":"Duplicate read operation. \u0060Files.source_root\u0060 duplicates \u0060SourceDatabase.source_root\u0060 with inconsistent signature (explicit db parameter in \u0060Files\u0060).: Remove \u0060Files.source_root\u0060 and rely on \u0060SourceDatabase.source_root\u0060. (signatures: SourceDatabase.source_root(id: SourceRootId): SourceRootInput | Files.source_root(source_root_id: SourceRootId): SourceRootInput)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"7d99697025da4f186547cb1ea0bacdf5ab8e78534d1a8934d2a120a4175298d5"}},{"ruleId":"D22","level":"warning","message":{"text":"Duplicate read operation. \u0060Files.file_source_root\u0060 duplicates \u0060SourceDatabase.file_source_root\u0060 with inconsistent signature.: Remove \u0060Files.file_source_root\u0060 and rely on \u0060SourceDatabase.file_source_root\u0060. (signatures: SourceDatabase.file_source_root(id: FileId): FileSourceRootInput | Files.file_source_root(db: \u0026dyn SourceDatabase, id: FileId): FileSourceRootInput)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0f62537c456ceb9e9d1a63e0c15e0c9c10a610c4304b1ac9c40593f362ac41c8"}},{"ruleId":"D22","level":"warning","message":{"text":"Duplicate write operation. \u0060Files.set_source_root_with_durability\u0060 duplicates \u0060SourceDatabase.set_source_root_with_durability\u0060 with inconsistent signature.: Remove \u0060Files.set_source_root_with_durability\u0060 and rely on \u0060SourceDatabase.set_source_root_with_durability\u0060. (signatures: SourceDatabase.set_source_root_with_durability(source_root_id: SourceRootId, source_root: SourceRoot, durability: Durability) | Files.set_source_root_with_durability(db: \u0026mut dyn SourceDatabase, source_root_id: SourceRootId, source_root: SourceRoot, durability: Durability))"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f40b970eda3136dc993a24380eaa609ddc8613f8271b97659ab0ab056d2dbee8"}},{"ruleId":"D22","level":"warning","message":{"text":"Duplicate write operation. \u0060Files.set_file_source_root_with_durability\u0060 duplicates \u0060SourceDatabase.set_file_source_root_with_durability\u0060 with inconsistent signature.: Remove \u0060Files.set_file_source_root_with_durability\u0060 and rely on \u0060SourceDatabase.set_file_source_root_with_durability\u0060. (signatures: SourceDatabase.set_file_source_root_with_durability(id: FileId, source_root_id: SourceRootId, durability: Durability) | Files.set_file_source_root_with_durability(db: \u0026mut dyn SourceDatabase, id: FileId, source_root_id: SourceRootId, durability: Durability))"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"78454f91a297f76803bccc9d52bc1313cece47165b7105f47da66af48f71d67f"}},{"ruleId":"D26","level":"note","message":{"text":"Split crates/hir-def: Large at 372k LoC across seventeen namespaces, clearly sprawling. Suggested: split into hir/semantics, hir/expr_store, and hir/ty/lower"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"51a14e49247616e2617576e147285138f9be3f7a1522f7906e9064a05155f571"}},{"ruleId":"D26","level":"note","message":{"text":"Split crates/hir-ty: Large at 70k LoC across seventeen namespaces, sprawling. Suggested: split into hir-ty/infer/closure, hir-ty/infer/region_constraints, and hir-ty/layout"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"82b2ef565ea5248a2348c7784015b7cf1aa7d2eee90ecc79328f36fd1e17c113"}},{"ruleId":"D26","level":"note","message":{"text":"Split crates/rust-analyzer: Large at 25k LoC across nine namespaces; sprawling analyzer. Suggested: split into lsp/handlers, tracing/bin, and diagnostics"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2f40e46be907ab5b6a2de7639f100de3a6b9072fba23db590d51a4a5d7e01d1f"}},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a68f7c053600ad47d174961d322130f9e3930c11152af1a17855272a895df00a"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9f295cdd70bcdd19c7a49c1d939018e53645f529bd45a44f8d567ebb4045a934"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"87da052d17b57dae6aa16d94a7d5660c7b10fb951c7ea9722490b815832825ef"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3de7c4816942fe67132778395327950533c18dd105f888762cd5104dd5eac575"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"30b0e25b950ae9697b53ec516a2f02cae21b78ee07c8e859f9a143cc2cab0872"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"fa3fddcea1d2732b54ff791dc4bb9f60b20485828915b0343ef458ac82b388cc"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"547baf48584b9bf45d4e2ec2c2db185feb1d35fd8e90f0658fbe1266b08d57ed"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"45c8adfe3d4148d99f783724dc3f54b51682dc26166fbbf63856ed4d7c829d6b"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"30672beea0d04630a7047fa552ea4bf65f8e33e1f7e2c21323d251e7c823d78d"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f18b460b5631fd722cde2ba2d35ba3a534248174a72b6407d73517cc4ba88596"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3e374edc34be40655bd7ca35e3bc443b8afc6310c370309e3db81fa4a698a367"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"59aa0afafe936baacd63e19d197152bd24a14921b673f02d0ba0fc937410d368"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"38dc9c3409715a04272d60fb99dc8b51e126b1346f287563f767c110b9ece233"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3e484ba6ffe888a640620836bdfd06cf3d58746ecef4daa43fa70ba4d45f098d"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d25dfe4ab6bfff423b077f8d78622533d21d7af388ca0c078111f748aa4662c4"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"70c9c95c72d4165943c0044849b5a9a0e1940454398f288328411fb2bf2ec0db"},"taxa":[{"id":"CWE-214","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-532","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"cb8d7c5e07d90e5dbe59564ef8872e798cdcf4070282fc150b04c2d25b4e0976"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"15fdcf788dd144b1b85691c08c4aea9e07cf382cadcba71d4229829944289daa"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5f350b67bf0d40180e451695bba8edf731ac7759b96a267ad9cda06383597d3d"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b18558527c2982f8d3799d838e91db9a7d73e941b22196448549ac37dcc7cd43"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4a91d3774746cff798305e04a251863e156474679daad416aa216c7e61717bba"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"375264a947bb1199ee1568488dc730ef04d428f2aeba8907b708154ce5c04944"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"313d928b4e811716c32e50779cf7c1bdce9563d7ad76ed54477190995ea45ba0"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"49ef918e74da7be94daaa1b1d7ace9c4e052ae9feb7ebb9c7f0a530e5366e7c7"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"86b1659200da1da0342e01ed90a35f0ee74358c7772fc3da1283433d89e6c265"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3d8dd4594eb403f9dc50645d1ad94bcb5be6fb0e00b03b7ca33b419c0fd3c324"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"dd06cf27d07d40bbd16ac9820639eb54ed20777935bda2c7f1c0f202b1e0a861"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b79e71c11b77500da5c4d328dc836df7a01e093a9317661d3d8134ae75d1e409"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"786a3881f4fc47b27016611c1c5a41a2d24fdde6b68e5ec9ed1ca6cc4a2163ca"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f97b076c3a030157ad370fbfa70adb03494cc75cd28b23ebfec678a1b9b99536"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4944bf55b146033253bad570aaaea28396cb5f1d971ca13a5365e79d500c5d11"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"add0e5ad88e9cac575fdd7b3f3a4c039058bc2c0d538043da9898568597f1dea"},"taxa":[{"id":"CWE-214","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-532","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ef4b8ac2ff3f5d8ded64fe4f6ab74d2a4ac5b4ad56e0a1423bcf6d1bbb644bc7"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2fdb979cd55f81eb8232f97527f457cde0ccd2bed16bee9e0a6b6d5dd6e92118"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"821c42554e6170189db42292383f8f4dfb8c0e086b6a24c24d2b29819abef9b9"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8653cf8b92e4ad6a1586d060dc9092bdd3bc70138df06f665b0d6ecdb9bbb5da"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"23e8a595ee6cb621af2ba897f2639226eac2000f6a87a772b4ae7c64cf880844"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"30f943e0980035c7cf403de654eb7781be970f67d36f613ae38281d56b4be317"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"75e835082ff21751bda452bed7bb730cd396408d8e06cc2fa223524d43592c98"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7ab4931653683d2078f16b34c4188be2b43a3802441788c5b5078b349233b1fb"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"21399569df803ffb1a1ac380453b9ae6c4337811abd38b76a6d948969765c029"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"42a62a710e4602578030d7f02aa4ac2866a9b5679f8c725adf155db2288bce41"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"37d7ff3e5bc02e36034ca4ec88ca217e32aec75a70b49f0265f846348b08ede8"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"707bc056dcfbf846eb0b4ce292050d04690b506421760784a8fbd9f802cadf70"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"bebd3474be705582d7c29a1e2a4eb2120c18536f3eb53e0149029b43be641fb5"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"58b25c2a710c58659b1d454c48f30079fec2cd6135aa071e9b6e5be5b35c27a3"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5f766855299b8bbb3c683e4ca2d5c3c8db046fa93be0833b98cb5d6e84bd7598"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"32a5cc96706822256c694c4329154983fdb529e76287beae59804602236dfbca"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"22a3ca2396b97f83accdb219b82284d7dc8c538d6d4d68d40cf89175e25cb9d2"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"31f2804be2bc64303988587487968d79e7a2a87d3f8be498220a6b9772bed72c"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e01b7a00f31eb51609dde539975995b7035b3a0e681c08a5da340de1ba9ba97a"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d6c6726605f14e1e72d7033fe118a18d5a91752f85e9009908e56f89cdbca31c"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"663a26175767415865fbdd4f4b1094a877fa4593d2c83e380fceddb6301b6a01"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e736fb5128fa4d0c0cbb487f6ec6ecebe7adc321e14773b5f1362e3263c0e385"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a2971409063169b79b153ef76f99d84f8c940c13532f534c4f624183c0ada93e"},"properties":{"dependency":{"package":"linkify-it","version":"5.0.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2136ce1aa6ed36ee6e770a0e7094c09d15f2fcd52567ce21ed413adabd3ce0c8"},"properties":{"dependency":{"package":"js-yaml","version":"3.14.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"aa4f1e544933a8884f386a1f32c95d5064b0ed43f1fee203563a80258fdc9672"},"properties":{"dependency":{"package":"js-yaml","version":"4.1.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"43e8ed7ea4b4d5b4fb21215157510a4b3ea8924be09ef0e12b0b443ccbf1249a"},"properties":{"dependency":{"package":"brace-expansion","version":"1.1.13","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8abf3cd554d6e1c51c0af79c04a70edf50d203b10a109463c23c4704415d9b64"},"properties":{"dependency":{"package":"brace-expansion","version":"2.0.3","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4cb74c794ad51f2c1e493c4c91d2bba3f69ed509c0b30eaecd2f1b922f901ab3"},"properties":{"dependency":{"package":"brace-expansion","version":"5.0.5","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"59a3df5473a95494e43472ba5905e681fa5e3ebad74d99ef72e66e73302035d1"},"properties":{"dependency":{"package":"fast-uri","version":"3.0.6","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e45c588904fca9aa34aac872d452e46f7574c93ae86160891c436cb22441817f"},"properties":{"dependency":{"package":"form-data","version":"4.0.4","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3c03886bfebf45530c53b42c5b5a7cb29190b03d62b7ae66641d8c88f98114ec"},"properties":{"dependency":{"package":"tmp","version":"0.2.4","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"270c6767f6496ad9e092c5784d68e6f7eca17555d8f1cfb81a010ca1991ccb5c"},"properties":{"dependency":{"package":"underscore","version":"1.13.7","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"28d932484e00915479e36e10a2e345b9384e87d05c20d94e5f391aa2543070b3"},"properties":{"dependency":{"package":"undici","version":"6.24.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5922a5beeab5ac077ffb485a783ad545036e79b56239f83da38f3fb84336b113"},"properties":{"dependency":{"package":"paste","version":"1.0.15","advisory":"RUSTSEC-2024-0436","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"759d36a63e8483c4a467399ff199fa57fa2e02d89ef311720974588edb9516d4"},"properties":{"dependency":{"package":"anyhow","version":"1.0.102","advisory":"RUSTSEC-2026-0190","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c4a0c58aca13bc848c37d4c3d5bcb90f8e046f8df5b386f5a3743d0625ad8dae"},"properties":{"dependency":{"package":"crossbeam-epoch","version":"0.9.18","advisory":"RUSTSEC-2026-0204","reachability":{"kind":"unknown"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8f69824d994e384c1870da06da881121ad41510dce714fad254b25463d2d731c"},"properties":{"dependency":{"package":"ajv","version":"8.17.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f7d76a71ef4d3db1cd0e658762ef1b7b43750d192d59f668c4a9eb8ae81bf9ce"},"properties":{"dependency":{"package":"markdown-it","version":"14.1.0","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"efeb6323d501749d3ef5f260f2f4e48d3b945290a8c72a21cd58e4dfc8a3432f"},"properties":{"dependency":{"package":"qs","version":"6.14.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ef2c5b6eb7d032585c8efd1d6736d60496228f8638d99d60236cb57e3292cec7"},"properties":{"dependency":{"package":"uuid","version":"8.3.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]"],"reachability":{"kind":"not-imported"}}}},{"ruleId":"D30","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"faa89982d9338e41521508ea06d48b1c096aa237c33fcd5484f32b1529c7bf7c"},"properties":{"dependency":{"package":"@humanfs/node","version":"0.16.6","advisory":"[GHSA redacted]","reachability":{"kind":"not-imported"}}}},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c559457c14fd3d95f3a62d83a0f2dcb9885f76cb17840c2b6c8902d477335640"}},{"ruleId":"D31","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"74adbfb7bde6a26e838391d0a0cabd75b1448b3f1392ada89a31ecfbf0463c5d"},"taxa":[{"id":"CWE-527","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-538","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away, so if it breaks, no one currently understands it. It does carry its own tests, so the behaviour is pinned even though the understanding is gone: schedule a read-through, using those tests as the specification, before the next change lands here."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide/src/view_syntax_tree.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3f61fa82c1155fa9e6f98fb6e25ec93ff4bc236c9eba66d863a3a5d5c9b32f2"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away, so if it breaks, no one currently understands it. It does carry its own tests, so the behaviour is pinned even though the understanding is gone: schedule a read-through, using those tests as the specification, before the next change lands here."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"xtask/src/publish/notes.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfc150cb7e3d52c96cb86866d8a8c847cc8e6f803e3a389f4fd5ab50d3a9eb35"}},{"ruleId":"D34","level":"note","message":{"text":"Further orphaned files (smaller): 15 smaller file(s) also have no living knowledge \u2014 folded into the freshness score and metrics rather than raised one row each \u2014 most significant first: editors/code/src/syntax_tree_provider.ts, crates/ide-assists/src/handlers/remove_unused_param.rs, crates/ide/src/inlay_hints/generic_param.rs, crates/ide-assists/src/handlers/unnecessary_async.rs, crates/ide-assists/src/handlers/generate_constant.rs, crates/hir-ty/src/next_solver/infer/snapshot/undo_log.rs, crates/hir-ty/src/next_solver/infer/opaque_types/table.rs, xtask/src/publish.rs (and 7 more) (17 orphaned of 747 analysed files in total, counted over production source files of roughly 2,400 bytes or more, excluding vendored, generated and example/demo trees and test files identified by path convention, largest first; 747 of the 1426 production source files in this repository met that bar). Attach the read to the next change that touches one of them: have a second person review that change, and leave behind a short comment or test recording what the file is for, so the knowledge comes back at the cost of a change you were making anyway."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ce861fd78f6935114d3a342cb90ad25870f984e1042954fcbbe27c0e23be3658"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: rust_analyzer_span.rs \u2194 token_id.rs: \u0060crates/proc-macro-srv/src/server_impl/rust_analyzer_span.rs\u0060 and \u0060crates/proc-macro-srv/src/server_impl/token_id.rs\u0060 change together 84% of the time (21 of the 25 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency between them. They sit in the same directory, but in this ecosystem each file is its own module \u2014 a sibling reference still needs an import \u2014 so the missing import edge is real: the coupling runs through shared behaviour, not a declared dependency. If they duplicate structure, extract the common part into one unit; otherwise the coupling is hidden and worth breaking. You can check this without leaving the row: of the 21 shared commits counted here, the most recent 3 are \u0060250f6fca\u0060 Remove experimental \u0060--env-set\u0060 option; \u00606d2fbc00\u0060 Cleanup bidirection proc-macro-srv protocol a bit; \u006035aec104\u0060 reduce the amount of panics in \u0060{TokenStream, Literal}::from_str\u0060 calls \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/proc-macro-srv/src/server_impl/rust_analyzer_span.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"650faed7562a14cd8d0344faa8eccf71310f0cf901698617fb55fba5d44ae7e7"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: builtin_fn_macro.rs \u2194 fn_macro.rs: \u0060crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs\u0060 and \u0060crates/hir-expand/src/builtin/fn_macro.rs\u0060 change together 82% of the time (9 of the 11 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency \u2014 the edge is real but nothing declares it. Read the pair before acting: if one registers itself into the other through a hook or an initialiser, the missing dependency is DELIBERATE \u2014 the registration is the link, and it is meant not to be an import \u2014 and the thing to add is a comment on each side naming the other, not a merge; if they simply belong together, co-locate them; if neither holds, the coupling is hidden and worth breaking. You can check this without leaving the row: of the 9 shared commits counted here, the most recent 3 are \u00601282829c\u0060 Add a flag do not parse rest arguments; \u00605fed4ac8\u0060 fix: don\u0027t error on tail comma for some macro; \u0060c47f4e03\u0060 fix: cfg_select supports non token-tree tokens \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c0a32f79a261b1714422e4064d4bd04d0a134d0f230814747be764a3b62f1f0"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: test_db.rs \u2194 lib.rs: \u0060crates/hir-ty/src/test_db.rs\u0060 and \u0060crates/ide-db/src/lib.rs\u0060 change together 75% of the time (9 of the 12 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency \u2014 the edge is real but nothing declares it. Read the pair before acting: if one registers itself into the other through a hook or an initialiser, the missing dependency is DELIBERATE \u2014 the registration is the link, and it is meant not to be an import \u2014 and the thing to add is a comment on each side naming the other, not a merge; if they simply belong together, co-locate them; if neither holds, the coupling is hidden and worth breaking. You can check this without leaving the row: of the 9 shared commits counted here, the most recent 3 are \u006089eaee22\u0060 internal: refer to salsa macros using \u0060salsa::\u0060; \u006057632bea\u0060 move \u0060DefDatabase::expand_proc_attr_macros\u0060 out of the query group; \u0060273abbb6\u0060 internal: Improve panic message when FileSourceRootInput is missing \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/test_db.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f98b5cd247ae0bd54c205e57e840b383c8eabce1fe009ec3fbad6027aab8e3d"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: lower.rs \u2194 pretty.rs: \u0060crates/hir-def/src/item_tree/lower.rs\u0060 and \u0060crates/hir-def/src/item_tree/pretty.rs\u0060 change together 74% of the time (14 of the 19 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency between them. They sit in the same directory, but in this ecosystem each file is its own module \u2014 a sibling reference still needs an import \u2014 so the missing import edge is real: the coupling runs through shared behaviour, not a declared dependency. If they duplicate structure, extract the common part into one unit; otherwise the coupling is hidden and worth breaking. You can check this without leaving the row: of the 14 shared commits counted here, the most recent 3 are \u00600c8f6494\u0060 Do not declare the value NS constructor for structs/enum variants if \u2026; \u0060d59f559d\u0060 Optimize memory usage of the item tree; \u0060439c0952\u0060 Reduce \u0060impl_signature\u0060 query dependencies in method resolution \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/item_tree/lower.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc78670b7e7c193579b55f17e412c0223560138e0f258c2115c997a67f75a25b"}},{"ruleId":"D35","level":"warning","message":{"text":"Change-coupling hub: mutability.rs \u2192 expr_store.rs, pretty.rs, expr.rs: \u0060crates/hir-ty/src/infer/mutability.rs\u0060 changes together with 3 other files \u2014 \u0060crates/hir-def/src/expr_store.rs\u0060, \u0060crates/hir-def/src/expr_store/pretty.rs\u0060, \u0060crates/hir-ty/src/diagnostics/expr.rs\u0060 \u2014 none of which declares a dependency on it: one file is the hub of 3 separate couplings, not 3 unrelated pairs. Read the hub first: if the others each duplicate a part of what it does, the shared concern belongs in ONE unit and extracting it clears every edge at once; if the hub is a registry, dispatcher or barrel that must name each of them, the coupling is structural and the question is whether that list can be discovered instead of enumerated. Fixing the hub is one change; breaking the couplings one pair at a time is 3."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/mutability.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9515b4e8236364a088ce63fc1bc382f84ec1089358ae073f8ffda324feafdfe"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: mod_path.rs \u2194 symbols.rs: \u0060crates/hir-expand/src/mod_path.rs\u0060 and \u0060crates/intern/src/symbol/symbols.rs\u0060 change together 60% of the time (6 of the 10 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency \u2014 the edge is real but nothing declares it. Read the pair before acting: if one registers itself into the other through a hook or an initialiser, the missing dependency is DELIBERATE \u2014 the registration is the link, and it is meant not to be an import \u2014 and the thing to add is a comment on each side naming the other, not a merge; if they simply belong together, co-locate them; if neither holds, the coupling is hidden and worth breaking. You can check this without leaving the row: of the 6 shared commits counted here, the most recent 3 are \u0060c7662ba9\u0060 fix; \u006075b41dc5\u0060 feat: Implement support for \u0060feature(new_range)\u0060; \u006072a6823f\u0060 rust-analyzer: Also use \u0060semiopaque\u0060 instead of \u0060semitransparent\u0060 \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-expand/src/mod_path.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"37f4eb511c086481c33535cf46c430f0c5164dccdbb7ce49055411f6728a22f0"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: expander.rs \u2194 collector.rs: \u0060crates/hir-def/src/expr_store/expander.rs\u0060 and \u0060crates/hir-def/src/nameres/collector.rs\u0060 change together 58% of the time (7 of the 12 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency \u2014 the edge is real but nothing declares it. Read the pair before acting: if one registers itself into the other through a hook or an initialiser, the missing dependency is DELIBERATE \u2014 the registration is the link, and it is meant not to be an import \u2014 and the thing to add is a comment on each side naming the other, not a merge; if they simply belong together, co-locate them; if neither holds, the coupling is hidden and worth breaking. You can check this without leaving the row: of the 7 shared commits counted here, the most recent 3 are \u00609fb66968\u0060 Stop at eager macro recursion overflow; \u0060ddbe6aca\u0060 Store the macro depth inside \u0060MacroCallId\u0060; \u006020f6d47a\u0060 Optimised the depth calculation to be cached instead of calculating O\u2026 \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/expander.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ac92e35f734548ddc556e099e2fe6aeed0e94ec7711510df341652e9d6e1546"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: lower.rs \u2194 scope.rs: \u0060crates/hir-def/src/expr_store/lower.rs\u0060 and \u0060crates/hir-def/src/expr_store/scope.rs\u0060 change together 55% of the time (12 of the 22 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency between them. They sit in the same directory, but in this ecosystem each file is its own module \u2014 a sibling reference still needs an import \u2014 so the missing import edge is real: the coupling runs through shared behaviour, not a declared dependency. If they duplicate structure, extract the common part into one unit; otherwise the coupling is hidden and worth breaking. You can check this without leaving the row: of the 12 shared commits counted here, the most recent 3 are \u00609d3d1f9e\u0060 fix: Don\u0027t support const blocks in patterns; \u006036ac7e21\u0060 merge \u0060hir_def::hir::Expr::Unsafe\u0060 into \u0060Expr::Block\u0060; \u006088887b09\u0060 Fix handling of params of coroutine fns \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"09df18120d1c3f5b593588a16523abfee25210ece6a328909f062ec09dbf8e4b"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: lower.rs \u2194 tests.rs: \u0060crates/hir-def/src/expr_store/lower.rs\u0060 and \u0060crates/hir-def/src/expr_store/tests.rs\u0060 change together 54% of the time (7 of the 13 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency between them. They sit in the same directory, but in this ecosystem each file is its own module \u2014 a sibling reference still needs an import \u2014 so the missing import edge is real: the coupling runs through shared behaviour, not a declared dependency. If they duplicate structure, extract the common part into one unit; otherwise the coupling is hidden and worth breaking. You can check this without leaving the row: of the 7 shared commits counted here, the most recent 3 are \u00609a5a11fb\u0060 fix: Fix \u0060format_args\u0060 lowering using wrong integer suffix; \u0060419231c7\u0060 Remove fixme and add a missing test attribute; \u00608956b1e1\u0060 Lower ast::Ident to hir::Path when lowering RangePats \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/lower.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2584c4b956d02f81f59221aab734aceb26c27bca3cb3260a14f2765f7c4e27a"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: test_db.rs \u2194 lib.rs: \u0060crates/hir-def/src/test_db.rs\u0060 and \u0060crates/ide-db/src/lib.rs\u0060 change together 50% of the time (8 of the 16 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency \u2014 the edge is real but nothing declares it. Read the pair before acting: if one registers itself into the other through a hook or an initialiser, the missing dependency is DELIBERATE \u2014 the registration is the link, and it is meant not to be an import \u2014 and the thing to add is a comment on each side naming the other, not a merge; if they simply belong together, co-locate them; if neither holds, the coupling is hidden and worth breaking. You can check this without leaving the row: of the 8 shared commits counted here, the most recent 3 are \u006089eaee22\u0060 internal: refer to salsa macros using \u0060salsa::\u0060; \u006057632bea\u0060 move \u0060DefDatabase::expand_proc_attr_macros\u0060 out of the query group; \u0060273abbb6\u0060 internal: Improve panic message when FileSourceRootInput is missing \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/test_db.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d35a11a0e2c7e19aa9e40af170667d49744ee720634c7fb42d4760503795c6a3"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: cast.rs \u2194 unify.rs: \u0060crates/hir-ty/src/infer/cast.rs\u0060 and \u0060crates/hir-ty/src/infer/unify.rs\u0060 change together 50% of the time (7 of the 14 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency between them. They sit in the same directory, but in this ecosystem each file is its own module \u2014 a sibling reference still needs an import \u2014 so the missing import edge is real: the coupling runs through shared behaviour, not a declared dependency. If they duplicate structure, extract the common part into one unit; otherwise the coupling is hidden and worth breaking. You can check this without leaving the row: of the 7 shared commits counted here, the most recent 3 are \u00601286db8b\u0060 Remove methods that do not have a correspondence in rustc; \u006002d8caa3\u0060 fix: Sync cast checks to rustc again; \u0060d5ea170a\u0060 fix: Remove some deep normalizations from infer \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/cast.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ceae10a969ed00c3723136c2aabe0e7d6c80c8e5a3b77a6abd20650303f56a69"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: diagnostics.rs \u2194 expr.rs: \u0060crates/hir-ty/src/infer/diagnostics.rs\u0060 and \u0060crates/hir-ty/src/infer/expr.rs\u0060 change together 50% of the time (6 of the 12 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency between them. They sit in the same directory, but in this ecosystem each file is its own module \u2014 a sibling reference still needs an import \u2014 so the missing import edge is real: the coupling runs through shared behaviour, not a declared dependency. If they duplicate structure, extract the common part into one unit; otherwise the coupling is hidden and worth breaking. You can check this without leaving the row: of the 6 shared commits counted here, the most recent 3 are \u0060e7fd8809\u0060 Do not relower the signature again in inference, instead fetch it fro\u2026; \u0060dd7b4a47\u0060 internal: Pack \u0060ExprOrPatId\u0060 when stored; \u0060bc3e7e1d\u0060 perf: Shrink \u0060InferenceResult\u0060 by ~40 bytes \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-ty/src/infer/diagnostics.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8aa716f9c46f840c6743fef3038741300320e44bfa817dc5754e2c6c7dfd0105"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: expander.rs \u2194 assoc.rs: \u0060crates/hir-def/src/expr_store/expander.rs\u0060 and \u0060crates/hir-def/src/nameres/assoc.rs\u0060 change together 50% of the time (6 of the 12 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency \u2014 the edge is real but nothing declares it. Read the pair before acting: if one registers itself into the other through a hook or an initialiser, the missing dependency is DELIBERATE \u2014 the registration is the link, and it is meant not to be an import \u2014 and the thing to add is a comment on each side naming the other, not a merge; if they simply belong together, co-locate them; if neither holds, the coupling is hidden and worth breaking. You can check this without leaving the row: of the 6 shared commits counted here, the most recent 3 are \u00609fb66968\u0060 Stop at eager macro recursion overflow; \u0060ddbe6aca\u0060 Store the macro depth inside \u0060MacroCallId\u0060; \u0060b361c979\u0060 migrate \u0060DefDatabase::macro_def\u0060 \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/hir-def/src/expr_store/expander.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"176ebb889f72692f43a4b4b0b8590ca62e93fccc1dea2cb8d11d8eca84871396"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: convert_bool_then.rs \u2194 convert_to_guarded_return.rs: \u0060crates/ide-assists/src/handlers/convert_bool_then.rs\u0060 and \u0060crates/ide-assists/src/handlers/convert_to_guarded_return.rs\u0060 change together 50% of the time (5 of the 10 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency between them. They sit in the same directory, but in this ecosystem each file is its own module \u2014 a sibling reference still needs an import \u2014 so the missing import edge is real: the coupling runs through shared behaviour, not a declared dependency. If they duplicate structure, extract the common part into one unit; otherwise the coupling is hidden and worth breaking. You can check this without leaving the row: of the 5 shared commits counted here, the most recent 3 are \u00601e885f5b\u0060 rename from new_typed to with_ast_node; \u0060bf3643f4\u0060 start using typed syntaxEditor constructor; \u006071035466\u0060 update all assist with new constructor semantics \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/ide-assists/src/handlers/convert_bool_then.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5235ed6fbfce061a195ce38f98206ab83e4eaf11989b324d31e87e37ec7cfd70"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: discover.rs \u2194 test_runner.rs: \u0060crates/rust-analyzer/src/discover.rs\u0060 and \u0060crates/rust-analyzer/src/test_runner.rs\u0060 change together 50% of the time (5 of the 10 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency between them. They sit in the same directory, but in this ecosystem each file is its own module \u2014 a sibling reference still needs an import \u2014 so the missing import edge is real: the coupling runs through shared behaviour, not a declared dependency. If they duplicate structure, extract the common part into one unit; otherwise the coupling is hidden and worth breaking. You can check this without leaving the row: of the 5 shared commits counted here, the most recent 3 are \u00603bbccf6f\u0060 fix: Only parse stdout in discover protocol; \u0060ead5cd93\u0060 internal: Make stdout/stderr explicit in JsonLinesParser; \u0060b28aeeb8\u0060 fix: Do not panic if rust-analyzer fails to spawn the discover command \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/rust-analyzer/src/discover.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d426d32cd8bbc78d087d2876557f6a6580b9ec62abb860f0000012a962641894"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1b213f6eedd4b140d0bc37bdf1496f72811a643f34064f12518b32e9e83bcfc7"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0e17f71490e4d120a48b2b2881ab866c93b272bef2febb673a3e8e42b2c288ab"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"eb00976a698a5d68999b7ee6d27206fd374e916853e7ff1ead5eed42386f043f"}},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"90f83b4fa27db32740afe9540c905f3c0499caed87f61049a8a903ecc95b41c3"}},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0752d0df7434000fcabf1048e2de30a7a1a8b982b3db9a19898c4dec199856b4"}},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d068c977b62d9a977df1bb6f53e8b00b586c3abee955f91d715f92b8e019d624"}},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d657599f6f99da1927d3377533dfc0888b34c4d84aa7d5579841fd72d0e39bce"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4f1e7684f8281bd255ddef97105c7055c2ebae06964c8745716b83e174debe83"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ace515990e7ee0f17b5c17e44dd168a5bdecf90804a3a3dd845cf05540978013"}},{"ruleId":"M1","level":"warning","message":{"text":"README may be stale: 741 code files changed in the last 6 months but the README was not touched \u2014 it may no longer reflect the system."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"e973e7a8d5d866995cbf78b120250fe7f132bf928812d48ca62e69aba11b9910"}},{"ruleId":"M2","level":"note","message":{"text":"No ADRs: No Architecture Decision Records found \u2014 no conventional ADR directory, no numbered \u0060NNNN-title\u0060 documents in any markup this check reads, and nothing ADR-shaped by content. Design rationale recorded elsewhere (a design-notes tree, a mailing list, pull-request discussion) is not visible to this check and is not re-findable per decision, so a future maintainer cannot ask why one choice was made and get an answer."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"670b3d6e36a756d63097d0dfbf90afd5fc761308800b9354894a07c3f4e4aa14"}},{"ruleId":"P12","level":"warning","message":{"text":"Coverage collected but not gated: CI collects a coverage report but no step enforces a minimum \u2014 coverage could halve and CI stays green. Add a step that fails the build when coverage drops below a floor (your coverage tool\u0027s minimum-threshold flag, or a coverage-gate action) so the number guards something. What was searched, so you can tell an absence from a miss: this repository\u0027s CI files AND its coverage configuration \u2014 the well-known coverage and test-runner config files, read at the repository root and inside workspace package directories two levels down, so a floor declared beside the tests rather than in the pipeline is credited \u2014 matched against the threshold settings this check knows by name. A floor set in your coverage service\u0027s web UI rather than in a committed file, or under a setting whose name is not one of those, is not seen here."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"7f63c06044cf998d9a0698692df30d8873e29bc9b0c98ee829255017c1193d33"}},{"ruleId":"P2","level":"note","message":{"text":"Logging is not universal: Only 23/29 runnable modules use logging (modules with no entry point or server are excluded \u2014 they are libraries a runnable module hosts). Silent: \u0060crates/mbe\u0060, \u0060crates/proc-macro-srv-cli\u0060, \u0060crates/syntax-bridge\u0060, \u0060crates/test-utils\u0060, \u0060lib/ungrammar/ungrammar2json\u0060 and 1 more."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"91a94e21d6d4d0e6a2003f94505b0b02b157176f0b24c4820f3f82b4447a97fe"}},{"ruleId":"PF3","level":"warning","message":{"text":"Sync-over-async blocking: \u0060main\u0060 is async and calls readFileSync \u2014 a blocking call inside async code stalls the event loop \u2014 every other request waits for as long as it runs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/tests/runTests.ts"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b7c05cec693ec075aef11871d177b4673fa7d1ed1ec7d8567840e6d365eed6f"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (36 lines \u00D7 2 locations): editors/code/src/commands.ts:210 \u00B7 editors/code/src/commands.ts:247 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/commands.ts"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cbfad7f9b4f2d7bf5efffcacc63373dd232c296609bc52c74ebfbec39eeef63"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (34 lines \u00D7 2 locations): editors/code/src/commands.ts:722 \u00B7 editors/code/src/commands.ts:786 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/commands.ts"},"region":{"startLine":722}}}],"partialFingerprints":{"codehealthFindingId/v1":"a540af7b862feb04cff62c2f4c239ae3945b6ee219b8aa9bda2b211887dbe197"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 3 locations): editors/code/src/commands.ts:622 \u00B7 editors/code/src/commands.ts:727 \u00B7 editors/code/src/commands.ts:791 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/commands.ts"},"region":{"startLine":622}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bdb9495161cecf75db9f57330ae1772f0b7ee856acefdc66d5d1d2e8e15d6c7"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2 locations): editors/code/src/commands.ts:648 \u00B7 editors/code/src/commands.ts:817 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/commands.ts"},"region":{"startLine":648}}}],"partialFingerprints":{"codehealthFindingId/v1":"42074785ddd907e095d244e5fdaf8d1842c56565a08b9c19bd9beba4907d837d"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2 locations): editors/code/src/commands.ts:1032 \u00B7 editors/code/src/commands.ts:1067 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/commands.ts"},"region":{"startLine":1032}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8ecbb25a5cb64cc88cf1370fd89c3c51ba95683a554ce78b515f29ca2779d11"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2 locations): editors/code/src/commands.ts:1058 \u00B7 editors/code/src/commands.ts:1083 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/commands.ts"},"region":{"startLine":1058}}}],"partialFingerprints":{"codehealthFindingId/v1":"25cc9bc971baa743e6bd54787983780c6b6f010d4cb4d5aa0fd5e7d5c826118e"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2 locations): editors/code/src/commands.ts:102 \u00B7 editors/code/src/commands.ts:279 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/commands.ts"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0e1b9dd74fc9d8241b2c4796c9d22d78ffbba3a8eb160404a4b0ef5f0b2c369"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (10 matched lines \u00D7 2 locations): editors/code/src/bootstrap.ts:203 \u00B7 editors/code/src/ctx.ts:223 \u2014 the two spans are one implementation copied and then locally edited \u2014 58 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/bootstrap.ts"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb32fd4c4f7cef7db30a5fc2b2f8dd5bacd7470dc030e17bad5fc529eea25af7"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4 locations): editors/code/src/commands.ts:55 \u00B7 editors/code/src/commands.ts:770 \u00B7 editors/code/src/commands.ts:836 \u00B7 editors/code/src/commands.ts:966 \u2014 all 4 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/commands.ts"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b40b2107a47a5230aed143150f528da26106b5bd3b1aae23260b13a6201de40"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2 locations): editors/code/src/commands.ts:767 \u00B7 editors/code/src/commands.ts:833 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/commands.ts"},"region":{"startLine":767}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d2258e92be3e186dd749066c9c436442382e42a149bf537b02741a11202d7be"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:third-party-deep-import]: editors/code/src/client.ts:5 imports vscode-languageclient/lib/common/utils/is, reaching past a declared dependency\u0027s public entry into its build output \u2014 that path is the package\u0027s toolchain layout, not its API, and a minor version bump can relocate it with no semver signal. Import from the package\u0027s documented entry point instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/client.ts"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed3e1092c787fb359a353025072a9c1ce64e11eadf3d051a03fd8344257c1d3f"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:third-party-deep-import]: editors/code/src/config.ts:1 imports vscode-languageclient/lib/common/utils/is, reaching past a declared dependency\u0027s public entry into its build output \u2014 that path is the package\u0027s toolchain layout, not its API, and a minor version bump can relocate it with no semver signal. Import from the package\u0027s documented entry point instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/config.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce266cf4ed4de08d9dfcfd657afa184480d4598eb84d633b619a7cd6c8253b8f"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function getDebugConfiguration (cyclomatic 20, cognitive 28): getDebugConfiguration has cyclomatic complexity 20 and cognitive complexity 28; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/debug.ts"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"62a5351a57c0148b117967e1d94cb36e70447997c0a07226dea21a2ebb249962"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function toggleCheckOnSave (cyclomatic 16, cognitive 15): toggleCheckOnSave has cyclomatic complexity 16 and cognitive complexity 15; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive sits below cyclomatic here, so much of the count is breadth \u2014 arms side by side rather than stacked \u2014 and splitting per arm would leave a function per arm; group the work between the checks into named steps instead. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/config.ts"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4988b2d3495849d6d9e1f39d6b68e221b3e1af07653e062f1e7816cdaed5330"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function getServer (cyclomatic 15, cognitive 25): getServer has cyclomatic complexity 15 and cognitive complexity 25; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/bootstrap.ts"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee11c700dd7dab03345d6c1c150a2e378eea5413d22205d5ccb82a94acd94f71"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function (anonymous) (cyclomatic 15, cognitive 21): (anonymous) has cyclomatic complexity 15 and cognitive complexity 21; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/client.ts"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"f17d905b10550d783f34249226381326973c6c6a307c2997eccff2ff82225110"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function substituteVariablesInEnv (cyclomatic 13, cognitive 20): substituteVariablesInEnv has cyclomatic complexity 13 and cognitive complexity 20; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/config.ts"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"a39f8982136c493961efbb61b693bf00bf298a9d4ac48e9c344ef45a6b54f64e"}},{"ruleId":"R3","level":"warning","message":{"text":"Large Files: 3 file(s) over 400 lines (counted as significant lines \u2014 blank lines excluded \u2014 over production source only, tests excluded), largest first: editors/code/src/commands.ts (1416), editors/code/src/ctx.ts (572), editors/code/src/config.ts (546)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"cecee31b569df4f07e06db732f1ca037af27b5afef9023da51f9673d931a142f"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027fetchDependencyGraph\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/lsp_ext.ts"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"7699eb2c1399b92dc37e210461eee89fd9863f114e376ca1157e47fdeb58be1a"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027unwrapNullable\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/util.ts"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"0578c0b5ba3c007f1fa748ef3b0f31c12eabac90c15322d47ae4acd7e0e30d12"}},{"ruleId":"R8","level":"error","message":{"text":"Unlisted import \u0027lodash\u0027: Imported but not declared in any reachable package.json \u2014 installs work only by hoisting accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/config.ts"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"740f9cae6336781e7def2e35032115ff1a81bb4823fdb569d66a3d7c282335c0"}},{"ruleId":"R8","level":"warning","message":{"text":"Unused dependency \u0027@hpcc-js/wasm\u0027: Declared in editors/code/package.json but never imported anywhere in that package or its workspace members \u2014 no static import reaches it. Usually that is dead weight and attack surface, but two shapes are indistinguishable from source and are NOT dead: an optional or native peer that another dependency loads dynamically at runtime, and a package a build, docs or test step installs and invokes separately. Confirm which of the three this is before removing it."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"4bd21e15fcb162910ed81406b8fc57a70339074eaf635a0df17b0db06274afab"}},{"ruleId":"R8","level":"warning","message":{"text":"Unused dependency \u0027d3\u0027: Declared in editors/code/package.json but never imported anywhere in that package or its workspace members \u2014 no static import reaches it. Usually that is dead weight and attack surface, but two shapes are indistinguishable from source and are NOT dead: an optional or native peer that another dependency loads dynamically at runtime, and a package a build, docs or test step installs and invokes separately. Confirm which of the three this is before removing it."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"52810b1726ab092cf1266738f3092e03217feee8e959388bade7fc5b05f48e11"}},{"ruleId":"R8","level":"warning","message":{"text":"Unused dependency \u0027d3-graphviz\u0027: Declared in editors/code/package.json but never imported anywhere in that package or its workspace members \u2014 no static import reaches it. Usually that is dead weight and attack surface, but two shapes are indistinguishable from source and are NOT dead: an optional or native peer that another dependency loads dynamically at runtime, and a package a build, docs or test step installs and invokes separately. Confirm which of the three this is before removing it."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"a039d2c03d4786c24081de4d6f636425ad430f97a79680835256c665fb2812dc"}},{"ruleId":"R9","level":"error","message":{"text":"Import cycle (2 files): editors/code/src/debug.ts \u2192 editors/code/src/run.ts \u2192 editors/code/src/debug.ts"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"editors/code/src/debug.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9676467ae9276129f7c87654da3c18ccb4664bdca1a6a2bacf68e41f86a408f5"}}],"taxonomies":[{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d","organization":"MITRE","informationUri":"https://cwe.mitre.org/","isComprehensive":false,"shortDescription":{"text":"The MITRE Common Weakness Enumeration (CWE)."},"taxa":[{"id":"CWE-1032","guid":"5f21e517-68aa-a650-9a25-5771ef024637","name":"OWASP Top Ten \u2014 Security Misconfiguration category","shortDescription":{"text":"OWASP Top Ten \u2014 Security Misconfiguration category"},"helpUri":"https://cwe.mitre.org/data/definitions/1032.html"},{"id":"CWE-1357","guid":"e4d2e772-757e-0a5c-bd7d-77052949d866","name":"Reliance on Insufficiently Trustworthy Component","shortDescription":{"text":"Reliance on Insufficiently Trustworthy Component"},"helpUri":"https://cwe.mitre.org/data/definitions/1357.html"},{"id":"CWE-1395","guid":"800e09e7-c11a-8654-9fa6-86f398995fed","name":"Dependency on Vulnerable Third-Party Component","shortDescription":{"text":"Dependency on Vulnerable Third-Party Component"},"helpUri":"https://cwe.mitre.org/data/definitions/1395.html"},{"id":"CWE-16","guid":"659db3ea-affc-8453-8add-c1218fbfcb92","name":"Configuration","shortDescription":{"text":"Configuration"},"helpUri":"https://cwe.mitre.org/data/definitions/16.html"},{"id":"CWE-214","guid":"b10ad120-fb22-1351-9348-aa23b453e815","name":"CWE-214","shortDescription":{"text":"CWE-214"},"helpUri":"https://cwe.mitre.org/data/definitions/214.html"},{"id":"CWE-259","guid":"ae9ad959-fbb6-9d5e-892d-3dca66da0b69","name":"Use of Hard-coded Password","shortDescription":{"text":"Use of Hard-coded Password"},"helpUri":"https://cwe.mitre.org/data/definitions/259.html"},{"id":"CWE-353","guid":"09d7e902-d4ee-f05d-ae6c-0a1554d0c18f","name":"CWE-353","shortDescription":{"text":"CWE-353"},"helpUri":"https://cwe.mitre.org/data/definitions/353.html"},{"id":"CWE-494","guid":"b8a65e0d-e459-4a55-a931-fc1136482375","name":"Download of Code Without Integrity Check","shortDescription":{"text":"Download of Code Without Integrity Check"},"helpUri":"https://cwe.mitre.org/data/definitions/494.html"},{"id":"CWE-506","guid":"401d6455-56e3-0552-9a39-f77461673e3f","name":"CWE-506","shortDescription":{"text":"CWE-506"},"helpUri":"https://cwe.mitre.org/data/definitions/506.html"},{"id":"CWE-527","guid":"79b27cde-9d04-1a54-b64b-d5bb9b4a8ee7","name":"CWE-527","shortDescription":{"text":"CWE-527"},"helpUri":"https://cwe.mitre.org/data/definitions/527.html"},{"id":"CWE-532","guid":"1cd8877a-76e8-ce54-b40b-779af23364a0","name":"CWE-532","shortDescription":{"text":"CWE-532"},"helpUri":"https://cwe.mitre.org/data/definitions/532.html"},{"id":"CWE-538","guid":"3baa1f05-df1b-ae58-9ee0-1d790ff4a989","name":"CWE-538","shortDescription":{"text":"CWE-538"},"helpUri":"https://cwe.mitre.org/data/definitions/538.html"},{"id":"CWE-732","guid":"1da27e8f-b330-7650-ab63-bd61953eae5d","name":"Incorrect Permission Assignment for Critical Resource","shortDescription":{"text":"Incorrect Permission Assignment for Critical Resource"},"helpUri":"https://cwe.mitre.org/data/definitions/732.html"},{"id":"CWE-77","guid":"332c8ade-6612-9f56-a06b-d8d90b1a8750","name":"Command Injection","shortDescription":{"text":"Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/77.html"},{"id":"CWE-78","guid":"2e31ceaf-c7ae-2e5e-9661-cfb1362789cf","name":"OS Command Injection","shortDescription":{"text":"OS Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/78.html"},{"id":"CWE-79","guid":"fd45580b-e8c4-fc5e-8c2f-aa8fab0b4dbf","name":"Cross-site Scripting (XSS)","shortDescription":{"text":"Cross-site Scripting (XSS)"},"helpUri":"https://cwe.mitre.org/data/definitions/79.html"},{"id":"CWE-798","guid":"5e8f057d-fee3-995a-a0cb-9fc5b0d174d1","name":"Use of Hard-coded Credentials","shortDescription":{"text":"Use of Hard-coded Credentials"},"helpUri":"https://cwe.mitre.org/data/definitions/798.html"},{"id":"CWE-829","guid":"13c33925-97fb-5a5e-b40c-56d328b8a4d7","name":"CWE-829","shortDescription":{"text":"CWE-829"},"helpUri":"https://cwe.mitre.org/data/definitions/829.html"},{"id":"CWE-89","guid":"6d08fdad-37eb-c150-bbf0-d7d946863407","name":"SQL Injection","shortDescription":{"text":"SQL Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/89.html"},{"id":"CWE-937","guid":"16f316ae-415c-b354-a59b-1f7905f756e9","name":"Using Components with Known Vulnerabilities","shortDescription":{"text":"Using Components with Known Vulnerabilities"},"helpUri":"https://cwe.mitre.org/data/definitions/937.html"},{"id":"CWE-94","guid":"75e7f50c-6c2f-dd52-bf40-bf6c52b861fd","name":"Code Injection","shortDescription":{"text":"Code Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/94.html"}]}],"properties":{"codehealthPublication":{"public":true,"notice":"This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings \u2014 which rule fired, in which file, on which line, and how to fix it \u2014 are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.","securityFindingsRedacted":84,"secretScannerRunsExcluded":0}},"redactionTokens":["A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."]}]}