{"$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":"D6","name":"Cohesion (LCOM4)","shortDescription":{"text":"Cohesion (LCOM4)"},"helpUri":"https://codehealth.canine.dev/dimensions/D6"},{"id":"D8","name":"Code Coverage","shortDescription":{"text":"Code Coverage"},"helpUri":"https://codehealth.canine.dev/dimensions/D8"},{"id":"D9","name":"Test Distribution","shortDescription":{"text":"Test Distribution"},"helpUri":"https://codehealth.canine.dev/dimensions/D9"},{"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":"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":"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":"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":"AX5","name":"Architecture \u0026 structure","shortDescription":{"text":"Architecture \u0026 structure"},"helpUri":"https://codehealth.canine.dev/dimensions/AX5"},{"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":"ED5","name":"Idempotency","shortDescription":{"text":"Idempotency"},"helpUri":"https://codehealth.canine.dev/dimensions/ED5"},{"id":"ES1","name":"Fold determinism","shortDescription":{"text":"Fold determinism"},"helpUri":"https://codehealth.canine.dev/dimensions/ES1"},{"id":"ES2","name":"Immutable events","shortDescription":{"text":"Immutable events"},"helpUri":"https://codehealth.canine.dev/dimensions/ES2"},{"id":"GD1","name":"Unfinished \u0026 placeholder code","shortDescription":{"text":"Unfinished \u0026 placeholder code"},"helpUri":"https://codehealth.canine.dev/dimensions/GD1"},{"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":"P10","name":"Library API \u0026 versioning","shortDescription":{"text":"Library API \u0026 versioning"},"helpUri":"https://codehealth.canine.dev/dimensions/P10"},{"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":"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":"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":"R7","name":"Dead Code","shortDescription":{"text":"Dead Code"},"helpUri":"https://codehealth.canine.dev/dimensions/R7"},{"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":"X1","name":"Async correctness","shortDescription":{"text":"Async correctness"},"helpUri":"https://codehealth.canine.dev/dimensions/X1"},{"id":"X10","name":"Duplicated predicate","shortDescription":{"text":"Duplicated predicate"},"helpUri":"https://codehealth.canine.dev/dimensions/X10"},{"id":"X12","name":"Unreachable branch","shortDescription":{"text":"Unreachable branch"},"helpUri":"https://codehealth.canine.dev/dimensions/X12"},{"id":"X13","name":"Undrained process stream","shortDescription":{"text":"Undrained process stream"},"helpUri":"https://codehealth.canine.dev/dimensions/X13"},{"id":"X14","name":"Bypassable address classification","shortDescription":{"text":"Bypassable address classification"},"helpUri":"https://codehealth.canine.dev/dimensions/X14"},{"id":"X15","name":"Unvalidated length from an untrusted reader","shortDescription":{"text":"Unvalidated length from an untrusted reader"},"helpUri":"https://codehealth.canine.dev/dimensions/X15"},{"id":"X16","name":"Unfloored truncation loop","shortDescription":{"text":"Unfloored truncation loop"},"helpUri":"https://codehealth.canine.dev/dimensions/X16"},{"id":"X17","name":"Uncapped recursion over a caller-supplied document","shortDescription":{"text":"Uncapped recursion over a caller-supplied document"},"helpUri":"https://codehealth.canine.dev/dimensions/X17"},{"id":"X18","name":"Disposal-pattern correctness","shortDescription":{"text":"Disposal-pattern correctness"},"helpUri":"https://codehealth.canine.dev/dimensions/X18"},{"id":"X19","name":"Unrestored process-global state","shortDescription":{"text":"Unrestored process-global state"},"helpUri":"https://codehealth.canine.dev/dimensions/X19"},{"id":"X20","name":"Mistyped argument guard","shortDescription":{"text":"Mistyped argument guard"},"helpUri":"https://codehealth.canine.dev/dimensions/X20"},{"id":"X21","name":"Side-effecting pattern guard","shortDescription":{"text":"Side-effecting pattern guard"},"helpUri":"https://codehealth.canine.dev/dimensions/X21"},{"id":"X22","name":"Contradicted release guard","shortDescription":{"text":"Contradicted release guard"},"helpUri":"https://codehealth.canine.dev/dimensions/X22"},{"id":"X23","name":"Unguarded diagnostic materialisation","shortDescription":{"text":"Unguarded diagnostic materialisation"},"helpUri":"https://codehealth.canine.dev/dimensions/X23"},{"id":"X24","name":"Document value interpolated into markup unescaped","shortDescription":{"text":"Document value interpolated into markup unescaped"},"helpUri":"https://codehealth.canine.dev/dimensions/X24"},{"id":"X25","name":"Inert configuration knob","shortDescription":{"text":"Inert configuration knob"},"helpUri":"https://codehealth.canine.dev/dimensions/X25"},{"id":"X26","name":"Unsynchronised callback handoff","shortDescription":{"text":"Unsynchronised callback handoff"},"helpUri":"https://codehealth.canine.dev/dimensions/X26"},{"id":"X27","name":"Collection changed while being enumerated","shortDescription":{"text":"Collection changed while being enumerated"},"helpUri":"https://codehealth.canine.dev/dimensions/X27"},{"id":"X28","name":"Index access outside its own emptiness guard","shortDescription":{"text":"Index access outside its own emptiness guard"},"helpUri":"https://codehealth.canine.dev/dimensions/X28"},{"id":"X29","name":"Per-element action decided by a fixed element","shortDescription":{"text":"Per-element action decided by a fixed element"},"helpUri":"https://codehealth.canine.dev/dimensions/X29"},{"id":"X3","name":"Exception handling","shortDescription":{"text":"Exception handling"},"helpUri":"https://codehealth.canine.dev/dimensions/X3"},{"id":"X30","name":"Support guard that admits what it rejects","shortDescription":{"text":"Support guard that admits what it rejects"},"helpUri":"https://codehealth.canine.dev/dimensions/X30"},{"id":"X32","name":"Type resolved by simple name across every loaded assembly","shortDescription":{"text":"Type resolved by simple name across every loaded assembly"},"helpUri":"https://codehealth.canine.dev/dimensions/X32"},{"id":"X4","name":"Structured logging","shortDescription":{"text":"Structured logging"},"helpUri":"https://codehealth.canine.dev/dimensions/X4"},{"id":"X5","name":"Nullable reference types","shortDescription":{"text":"Nullable reference types"},"helpUri":"https://codehealth.canine.dev/dimensions/X5"},{"id":"X6","name":"Hand-rolled structured-format parsing","shortDescription":{"text":"Hand-rolled structured-format parsing"},"helpUri":"https://codehealth.canine.dev/dimensions/X6"},{"id":"X7","name":"Silent fallback defaults","shortDescription":{"text":"Silent fallback defaults"},"helpUri":"https://codehealth.canine.dev/dimensions/X7"},{"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":"PlatformWindow::apply_user_change (cyclomatic 315): PlatformWindow::apply_user_change has cyclomatic complexity 315 (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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":4824}}}],"partialFingerprints":{"codehealthFindingId/v1":"96bb155c7dbacb6482259ae0bb19148c4c5a0040aca120fd20f13e74cde96dc9"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::main (cyclomatic 266): azul_doc::main has cyclomatic complexity 266 (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":"doc/src/main.rs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"12e9905d538d21d0d092b16224e9d36c44f5d990f8e553172d1743901e4a1fcc"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::windows::window_proc (cyclomatic 205): azul_dll::desktop::shell2::windows::window_proc has cyclomatic complexity 205 (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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":4025}}}],"partialFingerprints":{"codehealthFindingId/v1":"26633c9b045babd69ffa0df4d4052758ef15d2237ec4fae6f631fb9380a7b85f"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_core::compact::apply_css_property_to_compact (cyclomatic 190): azul_core::compact::apply_css_property_to_compact has cyclomatic complexity 190 (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":"core/src/compact.rs"},"region":{"startLine":1305}}}],"partialFingerprints":{"codehealthFindingId/v1":"8864c16b2c35a0314a3181ea38274ff7471594a16afa1b9e8fe24375b677086f"}},{"ruleId":"D1","level":"warning","message":{"text":"PlatformWindow::process_window_events_inner (cyclomatic 188): PlatformWindow::process_window_events_inner has cyclomatic complexity 188 (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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":10294}}}],"partialFingerprints":{"codehealthFindingId/v1":"73170c30fb5a38ee1244616bf0bee71fd2824d1980b4da2160924177b4bed089"}},{"ruleId":"D1","level":"warning","message":{"text":"PlatformWindow::apply_system_change (cyclomatic 178): PlatformWindow::apply_system_change has cyclomatic complexity 178 (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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":7142}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ed1d0a4b68ecb7a6e970383fd2afdc4537554b8ed06e3f0edb4d8c9ec50c25e"}},{"ruleId":"D1","level":"warning","message":{"text":"RenderTask::new_svg_filter_graph (cyclomatic 134): RenderTask::new_svg_filter_graph has cyclomatic complexity 134 (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":"webrender/core/src/render_task.rs"},"region":{"startLine":1643}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b74be2f601a192a4f4c4e429f8fa18da086e8f236dad30aeae692f06a097c9d"}},{"ruleId":"D1","level":"warning","message":{"text":"BatchBuilder::add_prim_to_batch (cyclomatic 131): BatchBuilder::add_prim_to_batch 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":"webrender/core/src/batch.rs"},"region":{"startLine":815}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e7fc8adaf67ce263601ff637e268794a7ef68dcb2ee79f7ddeb3a53fa7607ea"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::fc::layout_bfc (cyclomatic 123): azul_layout::solver3::fc::layout_bfc has cyclomatic complexity 123 (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":"layout/src/solver3/fc.rs"},"region":{"startLine":1214}}}],"partialFingerprints":{"codehealthFindingId/v1":"f483e510ac1d6883bb1710b3a916784668410bb23ed95812e2fcb2dccfd4c832"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::fc::translate_to_text3_constraints (cyclomatic 119): azul_layout::solver3::fc::translate_to_text3_constraints has cyclomatic complexity 119 (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":"layout/src/solver3/fc.rs"},"region":{"startLine":4623}}}],"partialFingerprints":{"codehealthFindingId/v1":"f53190edae54e0f0d9cbf8389b3cdbdc905d6502e60a222bf998535ae271b5f1"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::check_ffi_safety (cyclomatic 117): azul_doc::autofix::check_ffi_safety 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":"doc/src/autofix/mod.rs"},"region":{"startLine":1828}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0b5bbb97bb762318cb18dfbfe66319ac50c6d89bec0004669e51e23cdcf58ef"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::event_determination::determine_all_events (cyclomatic 114): azul_layout::event_determination::determine_all_events has cyclomatic complexity 114 (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":"layout/src/event_determination.rs"},"region":{"startLine":599}}}],"partialFingerprints":{"codehealthFindingId/v1":"3db1bb5b5748cae4deaafd6b8e27ef6421ae8ae85e5da16c82a4582bdae015b5"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::scroll_timer::scroll_physics_timer_callback (cyclomatic 109): azul_layout::scroll_timer::scroll_physics_timer_callback has cyclomatic complexity 109 (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":"layout/src/scroll_timer.rs"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d3a61019e0d437cd92d3b54158621e25dd22476f0b1023fbce0178b2c1de7eb"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::compositor2::translate_displaylist_to_wr (cyclomatic 107): azul_dll::desktop::compositor2::translate_displaylist_to_wr has cyclomatic complexity 107 (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":"dll/src/desktop/compositor2.rs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"97ed7fc40c9d054d6ad5daa754e5b59522c97edec4cdad020de492d4e7d6fa5b"}},{"ruleId":"D1","level":"warning","message":{"text":"WaylandWindow::generate_frame_if_needed (cyclomatic 104): WaylandWindow::generate_frame_if_needed has cyclomatic complexity 104 (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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":7011}}}],"partialFingerprints":{"codehealthFindingId/v1":"e89584f05e0cdcb8da3b9b92e78bf03a86bd4493d5e3c8f66b1e52eeae889e13"}},{"ruleId":"D1","level":"warning","message":{"text":"webrender::render_target::add_svg_filter_node_instances (cyclomatic 101): webrender::render_target::add_svg_filter_node_instances has cyclomatic complexity 101 (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":"webrender/core/src/render_target.rs"},"region":{"startLine":1009}}}],"partialFingerprints":{"codehealthFindingId/v1":"65571a4bbd374ab3e80bc408960d466aaf0497e2e8af5357c0e0f27fb91b5d66"}},{"ruleId":"D1","level":"warning","message":{"text":"CssPropertyCache::build_compact_cache_with_inheritance_debug (cyclomatic 98): CssPropertyCache::build_compact_cache_with_inheritance_debug has cyclomatic complexity 98 (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":"core/src/compact.rs"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"19d15b7737f9588eed5eb59bcea8264cf7f6fe010e562ca2b85cadf3f7c2d8e1"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::layout_document (cyclomatic 96): azul_layout::solver3::layout_document has cyclomatic complexity 96 (threshold 15). Of this number, 93 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":"layout/src/solver3/mod.rs"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"deb5380dc4a03f41e225c83a22d5e2e00579d7f324131801051484557a868f4d"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::web::symbol_table::classify_for_name (cyclomatic 94): azul_dll::web::symbol_table::classify_for_name has cyclomatic complexity 94 (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":"dll/src/web/symbol_table.rs"},"region":{"startLine":2437}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee84cea1d4b0668bcb844459149d7c52172927a2810aef5ccb187091da1157df"}},{"ruleId":"D1","level":"warning","message":{"text":"HeadlessWindow::run (cyclomatic 92): HeadlessWindow::run has cyclomatic complexity 92 (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":"dll/src/desktop/shell2/headless/mod.rs"},"region":{"startLine":2258}}}],"partialFingerprints":{"codehealthFindingId/v1":"8329db59e4b4589d8d9218db47db36caca4dcd4b56b84907d15304a5a46d071d"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::xml::parse_xml_to_fast_dom_with_css (cyclomatic 91): azul_layout::xml::parse_xml_to_fast_dom_with_css has cyclomatic complexity 91 (threshold 15). Of this number, 89 points are the body\u0027s own statements and 2 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":"layout/src/xml/mod.rs"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dbef018c091d8a90c043a0b59bd6fba5cb9e7dc17aad3b6dd4f851aa60b333e"}},{"ruleId":"D1","level":"warning","message":{"text":"LayoutWindow::layout_dom_recursive_impl (cyclomatic 89): LayoutWindow::layout_dom_recursive_impl 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":"layout/src/window.rs"},"region":{"startLine":5543}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cf2b5fa09b2ec0fba2e8ba30e6a722ec1aafd23e3e5fcff58ae6fa4fb830a0f"}},{"ruleId":"D1","level":"warning","message":{"text":"CpuBackend::render_frame (cyclomatic 88): CpuBackend::render_frame has cyclomatic complexity 88 (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":"dll/src/desktop/shell2/headless/mod.rs"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8ba6bb84b1b2169b0423b6f9402587ecaa8e2335a6c72fc8c23dc8df6af9fa8"}},{"ruleId":"D1","level":"warning","message":{"text":"Emitter::plan_method (cyclomatic 88): Emitter::plan_method has cyclomatic complexity 88 (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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":1710}}}],"partialFingerprints":{"codehealthFindingId/v1":"bafbe852c67c695fc44fe936953d44cd7af79a6a601f40bda51372a7885712c6"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::positioning::position_out_of_flow_elements (cyclomatic 88): azul_layout::solver3::positioning::position_out_of_flow_elements has cyclomatic complexity 88 (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":"layout/src/solver3/positioning.rs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"099bbe47116ed71e3f8183354f9e575aef07065b727c3f394162d8186afc025a"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_css::props::property::parse_combined_css_property (cyclomatic 87): azul_css::props::property::parse_combined_css_property has cyclomatic complexity 87 (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: azul_css::props::property::parse_css_property (cyclomatic 195) 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":"css/src/props/property.rs"},"region":{"startLine":3689}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e5ae4682e9c66fcb4fdf36c56aa9d3ce73d80c79d19f32292327c53031e3bcb"}},{"ruleId":"D1","level":"warning","message":{"text":"RemillTranspiler::lift_with_transitive_deps_sequential (cyclomatic 86): RemillTranspiler::lift_with_transitive_deps_sequential has cyclomatic complexity 86 (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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":2167}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3127ed41b4aec5f61fcde02c1d4f4b495d2e65b6a6fdc8ea2ca9c322b4033e1"}},{"ruleId":"D1","level":"warning","message":{"text":"CssPropertyCache::get_computed_css_style_string (cyclomatic 85): CssPropertyCache::get_computed_css_style_string has cyclomatic complexity 85 (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":"core/src/prop_cache.rs"},"region":{"startLine":2149}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ebdf4607252dd365da6503bb0d1193660ab8314e1fb9db1a491244929bcffab"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::reftest::apply_midlevel::run (cyclomatic 85): azul_doc::reftest::apply_midlevel::run has cyclomatic complexity 85 (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":"doc/src/reftest/apply_midlevel.rs"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"adc881b7673333d7f7d6e7b6d6775789dd8b94167c823a91a5e674204344efb4"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::cpurender::raster::render_single_item (cyclomatic 85): azul_layout::cpurender::raster::render_single_item has cyclomatic complexity 85 (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":"layout/src/cpurender/raster.rs"},"region":{"startLine":1830}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f8ff93d1f2e7e0064ed574eea7d2a1bbe1abbdd9deaa17499185d2ff18b0c4e"}},{"ruleId":"D1","level":"warning","message":{"text":"azul-search.mount (cyclomatic 85): azul-search.mount has cyclomatic complexity 85 (threshold 15). Of this number, 55 points are the body\u0027s own statements and 30 belong to 10 function literals inside it that branch. 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":"doc/templates/azul-search.js"},"region":{"startLine":559}}}],"partialFingerprints":{"codehealthFindingId/v1":"c72d2d194d73db819bc1080ac8e45829df7e77c37a669fbff6dcc8c22492b017"}},{"ruleId":"D1","level":"warning","message":{"text":"PicturePrimitive::take_context (cyclomatic 84): PicturePrimitive::take_context has cyclomatic complexity 84 (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":"webrender/core/src/picture.rs"},"region":{"startLine":5302}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5298d93d30cce9ddd6a85b17449a7151304ac2298e5e71c130df25a47f87b5e"}},{"ruleId":"D1","level":"warning","message":{"text":"Emitter::plan_method (cyclomatic 82): Emitter::plan_method has cyclomatic complexity 82 (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":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":1727}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3ee70e86f3deeb51ba7e9772199d0f25b21c1e395c9074005e54735377b03cd"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::autofix_api (cyclomatic 81): azul_doc::autofix::autofix_api has cyclomatic complexity 81 (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":"doc/src/autofix/mod.rs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"480c804ae45d98e3a50c5a849cebc681ae1cc6158b20e3115e6c95321cec5aa7"}},{"ruleId":"D1","level":"warning","message":{"text":"TileCacheInstance::update_prim_dependencies (cyclomatic 80): TileCacheInstance::update_prim_dependencies has cyclomatic complexity 80 (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":"webrender/core/src/picture.rs"},"region":{"startLine":3038}}}],"partialFingerprints":{"codehealthFindingId/v1":"f66790a2f21809c52d058fdf7b938c6470946f7be34688e9247961cffa23b46e"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::common::layout::regenerate_layout (cyclomatic 79): azul_dll::desktop::shell2::common::layout::regenerate_layout has cyclomatic complexity 79 (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":"dll/src/desktop/shell2/common/layout.rs"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"f04b6f19ef13bb58e619f3d7d8d3cbe60a286c8235619bbe79e9a05a145956d6"}},{"ruleId":"D1","level":"warning","message":{"text":"CssPropertyCache::restyle (cyclomatic 77): CssPropertyCache::restyle has cyclomatic complexity 77 (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":"core/src/prop_cache.rs"},"region":{"startLine":1570}}}],"partialFingerprints":{"codehealthFindingId/v1":"69200bf8b5addb9188eb3b6be38b318b00b42676e30206f5efe67decc0cdb72e"}},{"ruleId":"D1","level":"warning","message":{"text":"PlatformWindow::dispatch_events_propagated (cyclomatic 75): PlatformWindow::dispatch_events_propagated has cyclomatic complexity 75 (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: azul_dll::desktop::shell2::common::event::win32_vkey_to_virtual_key (cyclomatic 135) 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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":8536}}}],"partialFingerprints":{"codehealthFindingId/v1":"39e475e59ef0ddef39804fbfb84f8b370032af15c4379972f2bb85000535982f"}},{"ruleId":"D1","level":"warning","message":{"text":"Win32Window::render_and_present (cyclomatic 74): Win32Window::render_and_present 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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":1139}}}],"partialFingerprints":{"codehealthFindingId/v1":"52dfb13294d81d13dc9fa4b473fade6535b015984c8e812e9a0b30dd9aa19599"}},{"ruleId":"D1","level":"warning","message":{"text":"TaffyBridge::translate_style_to_taffy (cyclomatic 74): TaffyBridge::translate_style_to_taffy 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":"layout/src/solver3/taffy_bridge.rs"},"region":{"startLine":734}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8dbd855a45b29507618f96bdf849315ade21b11e4f93a10965efa4db4b215a2"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::workspace::generate_patches (cyclomatic 73): azul_doc::autofix::workspace::generate_patches 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":"doc/src/autofix/workspace.rs"},"region":{"startLine":432}}}],"partialFingerprints":{"codehealthFindingId/v1":"55ab8217038030573fae763857a19a2c328587dd6226b03f881f4242d04b4044"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_css::parser2::new_from_str_inner (cyclomatic 72): azul_css::parser2::new_from_str_inner has cyclomatic complexity 72 (threshold 15). Of this number, 69 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":"css/src/parser2.rs"},"region":{"startLine":1465}}}],"partialFingerprints":{"codehealthFindingId/v1":"c09f8dca78ad81f22f73a5994d96cba13ea774668bb4b689b7b92b1f5973d738"}},{"ruleId":"D1","level":"warning","message":{"text":"X11Window::handle_event (cyclomatic 72): X11Window::handle_event has cyclomatic complexity 72 (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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":4836}}}],"partialFingerprints":{"codehealthFindingId/v1":"81cd7baf1f9d3d9b018fd2b1399b9964dcdaa894a0184b51ad8688e70b7a371a"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::text3::cache::position_one_line (cyclomatic 72): azul_layout::text3::cache::position_one_line has cyclomatic complexity 72 (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":"layout/src/text3/cache.rs"},"region":{"startLine":11839}}}],"partialFingerprints":{"codehealthFindingId/v1":"b291a164e653e54876769d107ec0bbe90421a0be92d4232abcfa8cf013c6c89a"}},{"ruleId":"D1","level":"warning","message":{"text":"RemillTranspiler::produce_object_from_lifted_ir (cyclomatic 70): RemillTranspiler::produce_object_from_lifted_ir has cyclomatic complexity 70 (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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":1272}}}],"partialFingerprints":{"codehealthFindingId/v1":"75ac589f0faab0a932317d76cced44c213c3073eb5dd21031f7cfde96de1dcd5"}},{"ruleId":"D1","level":"warning","message":{"text":"PythonGenerator::generate_pymethod (cyclomatic 70): PythonGenerator::generate_pymethod has cyclomatic complexity 70 (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":"doc/src/codegen/v2/lang_python.rs"},"region":{"startLine":2467}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef7462b6f6675fe8d49b3eb8864f3b06cff88f0d4416a05d3bc857abc8899469"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::android::drain_input (cyclomatic 68): azul_dll::desktop::shell2::android::drain_input has cyclomatic complexity 68 (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":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":1262}}}],"partialFingerprints":{"codehealthFindingId/v1":"92b335f6cde7a04419a3a5a2501b7a3f68ee470115422e2211914fb7cc38c875"}},{"ruleId":"D1","level":"warning","message":{"text":"RenderTaskKind::write_gpu_blocks (cyclomatic 67): RenderTaskKind::write_gpu_blocks has cyclomatic complexity 67 (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":"webrender/core/src/render_task.rs"},"region":{"startLine":761}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e72c21a15dbd6e67ba20b3854d7ecd45da694ad6acfe114d875c558861915e0"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::sizing::calculate_used_size_for_node (cyclomatic 66): azul_layout::solver3::sizing::calculate_used_size_for_node has cyclomatic complexity 66 (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":"layout/src/solver3/sizing.rs"},"region":{"startLine":1730}}}],"partialFingerprints":{"codehealthFindingId/v1":"04a2707b84d034fdc69a22c44ee4533756c2a54ba47a8573b2e7a507840dd82f"}},{"ruleId":"D1","level":"warning","message":{"text":"LayoutWindow::apply_text_tweens (cyclomatic 64): LayoutWindow::apply_text_tweens 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":"layout/src/window.rs"},"region":{"startLine":8915}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fc5c844dff6307044d651426dab448a049d75482ace6a262e9efbb218a9d79d"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::text3::cache::perform_fragment_layout (cyclomatic 64): azul_layout::text3::cache::perform_fragment_layout 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":"layout/src/text3/cache.rs"},"region":{"startLine":10761}}}],"partialFingerprints":{"codehealthFindingId/v1":"99e600fb0b0a1f1e638ea06e2d68f855e99cdbfa53e1248268cc3ef9784c0659"}},{"ruleId":"D1","level":"warning","message":{"text":"webrender::prepare::prepare_interned_prim_for_render (cyclomatic 64): webrender::prepare::prepare_interned_prim_for_render 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":"webrender/core/src/prepare.rs"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"edb808c8f87571bc26ccad552ac506faedfaddae03bcb53b243921400f3cb6ff"}},{"ruleId":"D1","level":"warning","message":{"text":"CssPropertyCache::build_compact_cache (cyclomatic 63): CssPropertyCache::build_compact_cache has cyclomatic complexity 63 (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":"core/src/compact.rs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc9cdb3dde236073799ed69d1489bf444dbf74b927ebfa250a2d1f83dd8f61bd"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::debug::analyze_function_dependencies (cyclomatic 63): azul_doc::autofix::debug::analyze_function_dependencies has cyclomatic complexity 63 (threshold 15). Of this number, 53 points are the body\u0027s own statements and 10 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":"doc/src/autofix/debug.rs"},"region":{"startLine":1010}}}],"partialFingerprints":{"codehealthFindingId/v1":"97939b627855199917b5f05ec378b58814c88fdb399b7ce452341403592f9cff"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::patch::apply_class_patch (cyclomatic 63): azul_doc::patch::apply_class_patch has cyclomatic complexity 63 (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":"doc/src/patch/mod.rs"},"region":{"startLine":1100}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed7535e47e0ce45f4863472e82d7dd44f7b9bb6f3ac71256b33683086924be97"}},{"ruleId":"D1","level":"warning","message":{"text":"Emitter::emit_method (cyclomatic 62): Emitter::emit_method has cyclomatic complexity 62 (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":"doc/src/codegen/v2/lang_crystal/wrappers.rs"},"region":{"startLine":1030}}}],"partialFingerprints":{"codehealthFindingId/v1":"06829905b6ab859d52e1ef08dac795f84094ffd048bb24d937d064cb265dbcf2"}},{"ruleId":"D1","level":"warning","message":{"text":"A11yManager::build_node (cyclomatic 62): A11yManager::build_node has cyclomatic complexity 62 (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: A11yManager::node_type_to_role (cyclomatic 74) 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":"layout/src/managers/a11y.rs"},"region":{"startLine":851}}}],"partialFingerprints":{"codehealthFindingId/v1":"618e025888bfcd4082bb0785e7562ee212ea9e5dd4cf2ebffddee9d5c340178c"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_csharp::wrappers::emit_wrapper_method (cyclomatic 61): azul_doc::codegen::v2::lang_csharp::wrappers::emit_wrapper_method has cyclomatic complexity 61 (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":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":1419}}}],"partialFingerprints":{"codehealthFindingId/v1":"53ef906c72456ab26793fa904682146147e9cb13aa91f6a5227b5b7033d86ce4"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::icu::plural_for (cyclomatic 61): azul_layout::icu::plural_for has cyclomatic complexity 61 (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":"layout/src/icu.rs"},"region":{"startLine":242}}}],"partialFingerprints":{"codehealthFindingId/v1":"b11238db1ea768dada330bc10cd19c19ea35e0350de8f35685eb57065e8c5b7f"}},{"ruleId":"D1","level":"warning","message":{"text":"X11Window::render_and_present (cyclomatic 60): X11Window::render_and_present has cyclomatic complexity 60 (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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":6380}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bd5f243ba74047d95fb30a9d93d7207ed84d59521c2d06fce6fc2ff92fed425"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::x11::init_xinput2 (cyclomatic 60): azul_dll::desktop::shell2::linux::x11::init_xinput2 has cyclomatic complexity 60 (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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":866}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc93ee74c4504dca9e4028b2d7159af1367f5ff3a5bc18378ca8791faf887d64"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::cache::reconcile_recursive (cyclomatic 60): azul_layout::solver3::cache::reconcile_recursive has cyclomatic complexity 60 (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":"layout/src/solver3/cache.rs"},"region":{"startLine":1540}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c1ec1c93227a88d4305267d1fa0ce8ccb2ddaac5f1bd4f988d9039c6147b306"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::api::find_unused_types_simulating_removal (cyclomatic 59): azul_doc::api::find_unused_types_simulating_removal 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":"doc/src/api.rs"},"region":{"startLine":2278}}}],"partialFingerprints":{"codehealthFindingId/v1":"01bafee1a2ddc278f60335279b97c0737323c0eda7162f6b44cfa52d1deb22d9"}},{"ruleId":"D1","level":"warning","message":{"text":"LayoutWindow::reshape_text_node (cyclomatic 59): LayoutWindow::reshape_text_node 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":"layout/src/window.rs"},"region":{"startLine":17383}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddbbf212af8c4d9b09c766ff1f9d5195c187d7a9c9ba8d3f2560a8313fcddb00"}},{"ruleId":"D1","level":"warning","message":{"text":"PictureCompositeMode::get_coverage_target_svgfe (cyclomatic 59): PictureCompositeMode::get_coverage_target_svgfe 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":"webrender/core/src/picture.rs"},"region":{"startLine":4634}}}],"partialFingerprints":{"codehealthFindingId/v1":"2833f6a25b0dcdb4fd61957197b3485c9a53a087657fe1475429f3ff0ce20205"}},{"ruleId":"D1","level":"warning","message":{"text":"FilterGraphOpKey::from (cyclomatic 58): FilterGraphOpKey::from has cyclomatic complexity 58 (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":"webrender/core/src/prim_store/picture.rs"},"region":{"startLine":619}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd7f05aa9c44fa286160ddb87829c47d4dbe97c1bd921cf3082479839f8a69b3"}},{"ruleId":"D1","level":"warning","message":{"text":"MacOSWindow::render_and_present_in_draw_rect (cyclomatic 56): MacOSWindow::render_and_present_in_draw_rect has cyclomatic complexity 56 (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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":7700}}}],"partialFingerprints":{"codehealthFindingId/v1":"046a73cea593d328d7257beaa828c5367deaf928140b94d68e8e1206fd6e2f48"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::api::find_unused_types (cyclomatic 56): azul_doc::api::find_unused_types has cyclomatic complexity 56 (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":"doc/src/api.rs"},"region":{"startLine":2009}}}],"partialFingerprints":{"codehealthFindingId/v1":"038c37f8a6bf279509590d1ab95a43cf555159107d6c00e9711187991912561a"}},{"ruleId":"D1","level":"warning","message":{"text":"CssPropertyCache::get_property_slow (cyclomatic 55): CssPropertyCache::get_property_slow has cyclomatic complexity 55 (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":"core/src/prop_cache.rs"},"region":{"startLine":2783}}}],"partialFingerprints":{"codehealthFindingId/v1":"ead8fa087ec6d5a3e67480f323d99c11181e02bff76a8d3d35b2db1689717acc"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_core::xml::apply_xml_node_attributes (cyclomatic 55): azul_core::xml::apply_xml_node_attributes has cyclomatic complexity 55 (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: azul_core::xml::tag_to_node_type (cyclomatic 170) 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":"core/src/xml.rs"},"region":{"startLine":5774}}}],"partialFingerprints":{"codehealthFindingId/v1":"0166383f6e7eccc509e2788d3a4bebad35d45d18bc82566759891a03ef4ccb0d"}},{"ruleId":"D1","level":"warning","message":{"text":"WaylandWindow::set_cursor_for (cyclomatic 55): WaylandWindow::set_cursor_for has cyclomatic complexity 55 (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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":8284}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bd1867e1049cbd58d3220cb5feb985ce926671cf4226903baeca82090d506aa"}},{"ruleId":"D1","level":"warning","message":{"text":"RemillTranspiler::lift_with_transitive_deps_batched (cyclomatic 55): RemillTranspiler::lift_with_transitive_deps_batched has cyclomatic complexity 55 (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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":3387}}}],"partialFingerprints":{"codehealthFindingId/v1":"331d58ced40d22009f785118ecfcb5613ce344d66dd459c8af15eb508f8bc71f"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::transmute_helpers::generate_transmuted_fn_body (cyclomatic 55): azul_doc::codegen::v2::transmute_helpers::generate_transmuted_fn_body has cyclomatic complexity 55 (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":"doc/src/codegen/v2/transmute_helpers.rs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"a47cf4c44a6fe8ba0310fb7f1dde79e943186323e34de35feb2f9f1c141333b3"}},{"ruleId":"D1","level":"warning","message":{"text":"DisplayListItem::is_visually_equal (cyclomatic 55): DisplayListItem::is_visually_equal has cyclomatic complexity 55 (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":"layout/src/solver3/display_list.rs"},"region":{"startLine":1883}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac08145160940c8152f78f2658e8f6ff561bb92a95f4a0e80bf658f5bc79194b"}},{"ruleId":"D1","level":"warning","message":{"text":"Device::new (cyclomatic 55): Device::new has cyclomatic complexity 55 (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":"webrender/core/src/device/gl.rs"},"region":{"startLine":1440}}}],"partialFingerprints":{"codehealthFindingId/v1":"cafa3d9525924d32d9c829001e4e5c3a5fcceac4f2610f2c34a1ccff63d1998c"}},{"ruleId":"D1","level":"warning","message":{"text":"IRBuilder::validate_api_json (cyclomatic 54): IRBuilder::validate_api_json has cyclomatic complexity 54 (threshold 15). Of this number, 47 points are the body\u0027s own statements and 7 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":"doc/src/codegen/v2/ir_builder.rs"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"00cfecb1994c58d091872438d4a8bc45576c4315c77961b5331ba3ddf3548e2d"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::fc::layout_ifc (cyclomatic 54): azul_layout::solver3::fc::layout_ifc has cyclomatic complexity 54 (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":"layout/src/solver3/fc.rs"},"region":{"startLine":3570}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f31f65a3aeef65ba90a24c963255ba2f70d0365b50595c0cec40ea66e553a94"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::run::run (cyclomatic 53): azul_dll::desktop::shell2::run::run 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":"dll/src/desktop/shell2/run.rs"},"region":{"startLine":1963}}}],"partialFingerprints":{"codehealthFindingId/v1":"67b4d3f1e85e857c8082fe671ef2c8b06e4b8a1c6508fc44155f1c4142bb7d81"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::reftest::autodebug::discover_failing_tests (cyclomatic 53): azul_doc::reftest::autodebug::discover_failing_tests 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":"doc/src/reftest/autodebug.rs"},"region":{"startLine":987}}}],"partialFingerprints":{"codehealthFindingId/v1":"26e1a78cc1d3f949821f48b2c9f4602b919245e1239057709578eafaac9ee4de"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::function_diff::generate_add_type_patches (cyclomatic 52): azul_doc::autofix::function_diff::generate_add_type_patches has cyclomatic complexity 52 (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":"doc/src/autofix/function_diff.rs"},"region":{"startLine":1192}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc6457ea81bde136b99adb5a106d8c56a44aa63a220abf64597e37bbe2c8088b"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::fc::collect_and_measure_inline_content_impl (cyclomatic 52): azul_layout::solver3::fc::collect_and_measure_inline_content_impl has cyclomatic complexity 52 (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":"layout/src/solver3/fc.rs"},"region":{"startLine":8628}}}],"partialFingerprints":{"codehealthFindingId/v1":"19b8127ad2faf76cee71716ccf50cdb2b5592afb66486dfbddde0f0193e4655d"}},{"ruleId":"D1","level":"warning","message":{"text":"webrender::quad::prepare_quad (cyclomatic 52): webrender::quad::prepare_quad has cyclomatic complexity 52 (threshold 15). Of this number, 50 points are the body\u0027s own statements and 2 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":"webrender/core/src/quad.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4f9caff43afcbcc2607ab32dbf069fc8920f32f731bd3c2d19a2fc113f5c6bb"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::display_list::paginate_pages_impl (cyclomatic 51): azul_layout::solver3::display_list::paginate_pages_impl has cyclomatic complexity 51 (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":"layout/src/solver3/display_list.rs"},"region":{"startLine":9684}}}],"partialFingerprints":{"codehealthFindingId/v1":"a62e44cf950ae6e51c9d36dee271a8d1e5b99fc12a4be3786476a08291230d8f"}},{"ruleId":"D1","level":"warning","message":{"text":"CssProperty::interpolate (cyclomatic 50): CssProperty::interpolate 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_css::props::property::parse_css_property (cyclomatic 195) 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":"css/src/props/property.rs"},"region":{"startLine":4900}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7568be8b459d3afe90fc7d67a40072c0a38dad40312f4e8b127ee65906c4dc9"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::macos::system_style::discover (cyclomatic 50): azul_dll::desktop::shell2::macos::system_style::discover has cyclomatic complexity 50 (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":"dll/src/desktop/shell2/macos/system_style.rs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c8243a2412707b03621359809adb68f6924543a7b5b273b50fb68d69b3c8095"}},{"ruleId":"D1","level":"warning","message":{"text":"DisplayListGenerator::paint_inline_content (cyclomatic 50): DisplayListGenerator::paint_inline_content has cyclomatic complexity 50 (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":"layout/src/solver3/display_list.rs"},"region":{"startLine":7603}}}],"partialFingerprints":{"codehealthFindingId/v1":"d65b36c204ca64e15df1487113568fb53b53f1f4c6a43e6b39898abc8717e785"}},{"ruleId":"D1","level":"warning","message":{"text":"PictureCompositeKey::from (cyclomatic 50): PictureCompositeKey::from 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":"webrender/core/src/prim_store/picture.rs"},"region":{"startLine":1086}}}],"partialFingerprints":{"codehealthFindingId/v1":"85f2d2f3462db04e8dbc2e4ddcc4d75f07ee141f37520ad9ccc8477ade03b83b"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::system_style::discover_kde_style (cyclomatic 49): azul_dll::desktop::shell2::linux::system_style::discover_kde_style has cyclomatic complexity 49 (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":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":1642}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff1a11fb1bbdd3b1aa803f48d1fd5693b73b924ec16fe780bf661b566fa3e982"}},{"ruleId":"D1","level":"warning","message":{"text":"IRBuilder::sort_types_by_dependencies (cyclomatic 49): IRBuilder::sort_types_by_dependencies 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":"doc/src/codegen/v2/ir_builder.rs"},"region":{"startLine":528}}}],"partialFingerprints":{"codehealthFindingId/v1":"6956e95c93c516f616bc49a06cd041a4bfd868cce4677255d4751e51cafcbf8f"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_haskell::wrappers::emit_function (cyclomatic 49): azul_doc::codegen::v2::lang_haskell::wrappers::emit_function has cyclomatic complexity 49 (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":"doc/src/codegen/v2/lang_haskell/wrappers.rs"},"region":{"startLine":2049}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4b532416d915aefb5f4405095f36472553d63edc49e4764e500e2fee5a4c854"}},{"ruleId":"D1","level":"warning","message":{"text":"SceneBuilder::wrap_prim_with_filters (cyclomatic 49): SceneBuilder::wrap_prim_with_filters has cyclomatic complexity 49 (threshold 15). Of this number, 45 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":"webrender/core/src/scene_building.rs"},"region":{"startLine":3599}}}],"partialFingerprints":{"codehealthFindingId/v1":"37c717ba0af7ec0c2607d75471265974044f9bea3ead9cdbfb1a34f0ab9a4def"}},{"ruleId":"D1","level":"warning","message":{"text":"WaylandWindow::new (cyclomatic 48): WaylandWindow::new has cyclomatic complexity 48 (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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":1972}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c7c7975428c3deba2686c9e082a5370936baa1eec9e2117037477b06f13fffe"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::text3::cache::shape_visual_items (cyclomatic 48): azul_layout::text3::cache::shape_visual_items has cyclomatic complexity 48 (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":"layout/src/text3/cache.rs"},"region":{"startLine":9473}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac34f2af03af99161630a406c7cfcabfd68ec9d232c1dbae64405ef087bd028c"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_core::diff::reconcile_dom (cyclomatic 47): azul_core::diff::reconcile_dom has cyclomatic complexity 47 (threshold 15). Of this number, 45 points are the body\u0027s own statements and 2 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":"core/src/diff.rs"},"region":{"startLine":569}}}],"partialFingerprints":{"codehealthFindingId/v1":"2696802864e4c6078156efc54a6e2f5e76d657111fce544c9e7fa15835f0e70b"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_core::compact::update_dom_declared_flags (cyclomatic 47): azul_core::compact::update_dom_declared_flags 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":"core/src/compact.rs"},"region":{"startLine":1937}}}],"partialFingerprints":{"codehealthFindingId/v1":"201be3a893002c2b8a57a84e490ad0915c51719a139d63b881a35a790135e814"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::reftest::autodoc::build_autodoc_prompt (cyclomatic 47): azul_doc::reftest::autodoc::build_autodoc_prompt 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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"305f89f21e19ff7448f0db05db2bf1edf692cb7f154cfd28f15c69247d5cd561"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::default_actions::determine_keyboard_default_action_with_editing (cyclomatic 47): azul_layout::default_actions::determine_keyboard_default_action_with_editing 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":"layout/src/default_actions.rs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"caa4fc73d46aaa6d97173f2122f6e8a6edf825ccb7663ad87cdf5c11e8ecf8d2"}},{"ruleId":"D1","level":"warning","message":{"text":"TileCacheInstance::pre_update (cyclomatic 47): TileCacheInstance::pre_update 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":"webrender/core/src/picture.rs"},"region":{"startLine":2047}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b56ac4a14d53fb976bd6e93fc65ddfef526fca0da994974b375f852975ce271"}},{"ruleId":"D1","level":"warning","message":{"text":"LayoutWindow::process_accessibility_action (cyclomatic 46): LayoutWindow::process_accessibility_action 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":"layout/src/window.rs"},"region":{"startLine":15882}}}],"partialFingerprints":{"codehealthFindingId/v1":"1891a4a8576e5be1b925fbcf11a5ddcfd6e57f23492665dde5e0942cb675e8c6"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::cache::calculate_layout_for_subtree_fragment (cyclomatic 45): azul_layout::solver3::cache::calculate_layout_for_subtree_fragment 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":"layout/src/solver3/cache.rs"},"region":{"startLine":3020}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfff8efbbf581c2c99e2fa32111ff52576686f35a96db1bd841eea4a221afd2a"}},{"ruleId":"D1","level":"warning","message":{"text":"X11Window::new_with_resources (cyclomatic 44): X11Window::new_with_resources has cyclomatic complexity 44 (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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":3227}}}],"partialFingerprints":{"codehealthFindingId/v1":"258e69005560aea06011474fb9f090925d02defca6464e658bb09590a8fe0991"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::web::server::handle_connection (cyclomatic 44): azul_dll::web::server::handle_connection has cyclomatic complexity 44 (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":"dll/src/web/server.rs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"a960d3196dbda9be1aff61fe464c9d2722474e92a3ce250295a9f58f5a9594c1"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::extra::video_codec::stream::decode_stream (cyclomatic 44): azul_dll::desktop::extra::video_codec::stream::decode_stream has cyclomatic complexity 44 (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":"dll/src/desktop/extra/video_codec/stream.rs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"511a596fcfab272ed5d6c8d42dbddbf4393f72549662f08650a1f92e3f3e5945"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::collect_synth_data_pages (cyclomatic 44): azul_dll::web::transpiler_remill::collect_synth_data_pages has cyclomatic complexity 44 (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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":4742}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9864ac50883856c17f966628ebc2d39d70e4363d5e77844f948e916901d3c9b"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::web::symbol_table::compute_hashbrown_empty_group_ranges (cyclomatic 44): azul_dll::web::symbol_table::compute_hashbrown_empty_group_ranges has cyclomatic complexity 44 (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":"dll/src/web/symbol_table.rs"},"region":{"startLine":3247}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cb176754d9dd37dd09f3b1f638dbb9d998d79f37d519b932909f754c968a847"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::ios::handle_touch (cyclomatic 44): azul_dll::desktop::shell2::ios::handle_touch has cyclomatic complexity 44 (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":"dll/src/desktop/shell2/ios/mod.rs"},"region":{"startLine":331}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b5f81d2d3aba648e61b8a84b3aa733c48782ee292c36999b9fbdc32f1edca5f"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::fc::position_table_cells (cyclomatic 44): azul_layout::solver3::fc::position_table_cells has cyclomatic complexity 44 (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":"layout/src/solver3/fc.rs"},"region":{"startLine":7936}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc74d70f41eb143f8334243c62b696f9273725adecabb85352847cd5d01ec292"}},{"ruleId":"D1","level":"warning","message":{"text":"X11Window::handle_mouse_button (cyclomatic 43): X11Window::handle_mouse_button has cyclomatic complexity 43 (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: azul_dll::desktop::shell2::linux::x11::events::keysym_to_virtual_keycode (cyclomatic 131) 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":"dll/src/desktop/shell2/linux/x11/events.rs"},"region":{"startLine":476}}}],"partialFingerprints":{"codehealthFindingId/v1":"e55c1f0a8ed92ce3a72a8560fc434d17ffe77270014368ec7a38597a23d61007"}},{"ruleId":"D1","level":"warning","message":{"text":"AutofixPatch::modify_to_class_patch (cyclomatic 43): AutofixPatch::modify_to_class_patch has cyclomatic complexity 43 (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":"doc/src/autofix/patch_format.rs"},"region":{"startLine":951}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7a1b95dc4b09e15fbac4ab26fd145b249dd5530054d12c8e2ad6be9ac4ce4aa"}},{"ruleId":"D1","level":"warning","message":{"text":"CompositorState::allocate_layers_from_display_list (cyclomatic 43): CompositorState::allocate_layers_from_display_list has cyclomatic complexity 43 (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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"188e9779e48ac93ea4a6348f8df96d7bbdc80d1d729544be5927b76100049807"}},{"ruleId":"D1","level":"warning","message":{"text":"LayoutWindow::process_mouse_click_for_selection (cyclomatic 43): LayoutWindow::process_mouse_click_for_selection has cyclomatic complexity 43 (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":"layout/src/window.rs"},"region":{"startLine":19366}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b9dd1c2892c5643026a7e5b04ca32e5e319bc8a3a6f38793267e977df9e1a82"}},{"ruleId":"D1","level":"warning","message":{"text":"lockfile_guard.main (cyclomatic 43): lockfile_guard.main has cyclomatic complexity 43 (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":"scripts/supply-chain/lockfile_guard.py"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"451d9b40b3e54d2bea5fe8244a270ed338c025d4f3c19db3638f1da94e506eb7"}},{"ruleId":"D1","level":"warning","message":{"text":"MacOSWindow::new_with_options_internal (cyclomatic 42): MacOSWindow::new_with_options_internal has cyclomatic complexity 42 (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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":4965}}}],"partialFingerprints":{"codehealthFindingId/v1":"45337df0230d99e15c0398adc8873cd535a42d568e639f1c5937c84d9fc6e1da"}},{"ruleId":"D1","level":"warning","message":{"text":"Emitter::emit_string_ext (cyclomatic 42): Emitter::emit_string_ext has cyclomatic complexity 42 (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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":3259}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c371f8507552c074bec9e97bff1ec9d37eef77e31d902ce35fbe8ba6691d866"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::module_map::module_from_external_path (cyclomatic 42): azul_doc::autofix::module_map::module_from_external_path has cyclomatic complexity 42 (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":"doc/src/autofix/module_map.rs"},"region":{"startLine":802}}}],"partialFingerprints":{"codehealthFindingId/v1":"785cb3be49eacb46f1860daeefc37b2c0fad8f2dbf29dad2f2269b60b166e28b"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::x11::handle_xi_device_event (cyclomatic 41): azul_dll::desktop::shell2::linux::x11::handle_xi_device_event 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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":2048}}}],"partialFingerprints":{"codehealthFindingId/v1":"38aa2aa5cb015586fd3fcb2740ad624cc8e4e105d0a3523b4688a4254a35e70f"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::patch::normalize_az_prefixes (cyclomatic 41): azul_doc::patch::normalize_az_prefixes 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":"doc/src/patch/mod.rs"},"region":{"startLine":760}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6f456f583750d8a8fd2f4d6011a6a338df78556a3d0c628596bd7283d1d8351"}},{"ruleId":"D1","level":"warning","message":{"text":"LayoutTreeBuilder::process_node (cyclomatic 41): LayoutTreeBuilder::process_node 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":"layout/src/solver3/layout_tree.rs"},"region":{"startLine":2062}}}],"partialFingerprints":{"codehealthFindingId/v1":"b57ba3c3c8924cc35cb42f5404ce26dea9592fdf55cabde90e8937db3fa0d1fe"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::getters::get_style_properties_for_state (cyclomatic 41): azul_layout::solver3::getters::get_style_properties_for_state 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":"layout/src/solver3/getters.rs"},"region":{"startLine":3042}}}],"partialFingerprints":{"codehealthFindingId/v1":"121ea7b951bd4aed9ae739f5d312414ffc654732a2f0b1b0e5b7537c28d03e9b"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::cpurender::compositor::compute_display_list_damage_impl (cyclomatic 41): azul_layout::cpurender::compositor::compute_display_list_damage_impl 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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":2982}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ed55172d6257c3d96ee052d700f48783c6760baa532e897dee6841db0103b10"}},{"ruleId":"D1","level":"warning","message":{"text":"RenderTaskGraphBuilder::end_frame (cyclomatic 41): RenderTaskGraphBuilder::end_frame 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":"webrender/core/src/render_task_graph.rs"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"343fcd4030310934dd10c65a3a6dec77d80e5b5aef5912579eb36bb007fa9200"}},{"ruleId":"D1","level":"warning","message":{"text":"MacOSWindow::sync_window_state (cyclomatic 40): MacOSWindow::sync_window_state 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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":6307}}}],"partialFingerprints":{"codehealthFindingId/v1":"712eb168d80f2bdadc0ee5f61c692404dffa93ef6c74705f34e954f3515caceb"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::tray::linux::menu_message (cyclomatic 40): azul_dll::desktop::tray::linux::menu_message 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":"dll/src/desktop/tray/linux.rs"},"region":{"startLine":778}}}],"partialFingerprints":{"codehealthFindingId/v1":"54bd64b221bf292169e36b80a96d9238c4ead8389334a750d69b67572d9c58ce"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::scan_arm64_adrp_accesses (cyclomatic 40): azul_dll::web::transpiler_remill::scan_arm64_adrp_accesses 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":11061}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea7c2486a706b6f4ee0b14e4da80117d9da80b6ab559f2e271ddb0aa8210b162"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::diff::find_dead_type_clusters (cyclomatic 40): azul_doc::autofix::diff::find_dead_type_clusters 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":"doc/src/autofix/diff.rs"},"region":{"startLine":1491}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7703f39dcb92d86b787a0bb1cb9277d4b8fbc80d8c7027c6c88afb17659fae0"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::display_list::compute_patch_move_summary (cyclomatic 40): azul_layout::solver3::display_list::compute_patch_move_summary 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_layout::solver3::display_list::offset_display_item_y (cyclomatic 41) 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":"layout/src/solver3/display_list.rs"},"region":{"startLine":3577}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d99da275b48b1b4de70ce8df4e7c97399f6a826064bedf81cb1e5757fc0268a"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_core::path_parser::parse_svg_path_d (cyclomatic 39): azul_core::path_parser::parse_svg_path_d has cyclomatic complexity 39 (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":"core/src/path_parser.rs"},"region":{"startLine":423}}}],"partialFingerprints":{"codehealthFindingId/v1":"1764c76931adb0c2dfbe39183cc8c3bd9e0907a5b42b5f84a6009cfd6d0ef610"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::inject_user_binary_data_segments (cyclomatic 39): azul_dll::web::transpiler_remill::inject_user_binary_data_segments has cyclomatic complexity 39 (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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":4024}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d927bc4664972ab83187d9d88b2a9d189e2a56102bde892b2e7c7c1bd6d626f"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::api::collect_all_referenced_types_from_api_with_chains (cyclomatic 39): azul_doc::api::collect_all_referenced_types_from_api_with_chains has cyclomatic complexity 39 (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":"doc/src/api.rs"},"region":{"startLine":1837}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e230f74fb23358fb3e3633433d301858ec3c0afc0c7dce71cd122b808bb96f6"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::gene2e::parse_schema (cyclomatic 39): azul_doc::gene2e::parse_schema has cyclomatic complexity 39 (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":"doc/src/gene2e.rs"},"region":{"startLine":641}}}],"partialFingerprints":{"codehealthFindingId/v1":"09b546012dae1e68ac87f51b34fa12d93a80e6347314398331fef3b22d557d3d"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_lua::cdef::strip_preprocessor (cyclomatic 39): azul_doc::codegen::v2::lang_lua::cdef::strip_preprocessor has cyclomatic complexity 39 (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":"doc/src/codegen/v2/lang_lua/cdef.rs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"f503f8ef891f31ee3cd0a894e32e22e5be901310b39ec6e8b86e134445f960ba"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::xml::svg::render_node_clipmask_cpu::agg_translate_node (cyclomatic 39): azul_layout::xml::svg::render_node_clipmask_cpu::agg_translate_node 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":"layout/src/xml/svg.rs"},"region":{"startLine":1794}}}],"partialFingerprints":{"codehealthFindingId/v1":"d63aa39f9fc12d47b1e96bf3367182391c179dd9f1079871971717da28e13f7e"}},{"ruleId":"D1","level":"warning","message":{"text":"PythonGenerator::generate_callback_trampoline (cyclomatic 38): PythonGenerator::generate_callback_trampoline has cyclomatic complexity 38 (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":"doc/src/codegen/v2/lang_python.rs"},"region":{"startLine":1075}}}],"partialFingerprints":{"codehealthFindingId/v1":"588f72d3aec23bf16fedd5a1977a1dd3a00928b0830542c16eea7edcee36f0be"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::diff::generate_diff_v2 (cyclomatic 38): azul_doc::autofix::diff::generate_diff_v2 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":"doc/src/autofix/diff.rs"},"region":{"startLine":1111}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b6d5342b3eb7414a18db0f33c03b5429c8aed63f061a1b5d7ed571079132f58"}},{"ruleId":"D1","level":"warning","message":{"text":"Xml::scan_node (cyclomatic 37): Xml::scan_node has cyclomatic complexity 37 (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: azul_core::xml::tag_to_node_type (cyclomatic 170) 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":"core/src/xml.rs"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee9d7dd766e891715f37ddd3ff22824a74b9d425b88be129f241af1acbe7b125"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::web::run_web (cyclomatic 37): azul_dll::web::run_web has cyclomatic complexity 37 (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. This is NOT this file\u0027s highest cyclomatic complexity: azul_dll::web::eventloop_symbol_addr (cyclomatic 38) 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":"dll/src/web/mod.rs"},"region":{"startLine":1007}}}],"partialFingerprints":{"codehealthFindingId/v1":"515444dac42b9a0c61d373c0aeb63636088470c2c0b265675ba2f086c7c37711"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::native_screenshot::take_native_screenshot_xlib_bytes (cyclomatic 37): azul_dll::desktop::native_screenshot::take_native_screenshot_xlib_bytes has cyclomatic complexity 37 (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":"dll/src/desktop/native_screenshot.rs"},"region":{"startLine":770}}}],"partialFingerprints":{"codehealthFindingId/v1":"d31580f3edbb684570c7f0b92f491dcf324acd2a16bdbc7889662bb9c63d3529"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::widgets::node_graph::nodegraph_drag_graph_or_nodes (cyclomatic 37): azul_layout::widgets::node_graph::nodegraph_drag_graph_or_nodes has cyclomatic complexity 37 (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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":3109}}}],"partialFingerprints":{"codehealthFindingId/v1":"b106b49e10c75b7cab7bfb8329fbf59ad19142ba8635e81f34cc31a8c2074e4f"}},{"ruleId":"D1","level":"warning","message":{"text":"LazilyCompiledShader::get_internal (cyclomatic 37): LazilyCompiledShader::get_internal 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":"webrender/core/src/renderer/shade.rs"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"339c95827e87191825be1abd0917385edca11b40518f35846c044c8dd38cf6c8"}},{"ruleId":"D1","level":"warning","message":{"text":"WaylandWindow::handle_pointer_button (cyclomatic 36): WaylandWindow::handle_pointer_button 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":4438}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ae2e12852ccca627bf96f1c8a43b16f8145d94866b40eb11830738e91341210"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::lint_examples::check_line (cyclomatic 36): azul_doc::lint_examples::check_line 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":"doc/src/lint_examples.rs"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"1045c70b0862d8768a2894f63b33c015cb7a1c07df5afd2b12f2e77a0abeaccd"}},{"ruleId":"D1","level":"warning","message":{"text":"TaffyBridge::compute_non_flex_layout (cyclomatic 36): TaffyBridge::compute_non_flex_layout 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":"layout/src/solver3/taffy_bridge.rs"},"region":{"startLine":1990}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a067f64a1b7fd0b99634f82068ecfef8cd22cc3bdeac20b96f5a21527321a93"}},{"ruleId":"D1","level":"warning","message":{"text":"UnifiedLayout::get_selection_rects (cyclomatic 36): UnifiedLayout::get_selection_rects 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":"layout/src/text3/cache.rs"},"region":{"startLine":5767}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cf29d195d79a52b3bb83be44bc76d2fa101b15320a24a34cc70ac5b0f56cc28"}},{"ruleId":"D1","level":"warning","message":{"text":"LayoutWindow::begin_reconciliation (cyclomatic 36): LayoutWindow::begin_reconciliation 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":"layout/src/window.rs"},"region":{"startLine":10861}}}],"partialFingerprints":{"codehealthFindingId/v1":"e28b5ed40c659ff2c67c788ab2b86ff9a78a2135ca1ef2479f4cf8075732142b"}},{"ruleId":"D1","level":"warning","message":{"text":"WaylandWindow::wait_for_events (cyclomatic 35): WaylandWindow::wait_for_events 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":2971}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b081becb950a4683bdc7d0e332ec4fe34c41eb2a2d32019e3547b1b545dc7b0"}},{"ruleId":"D1","level":"warning","message":{"text":"Win32Window::sync_window_state (cyclomatic 35): Win32Window::sync_window_state 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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":2724}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bb135a5b59f4fe69664c13ffc117c4a966a6a28aeab773088fc8d28fb62d4dc"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::system_style::discover_gnome_style (cyclomatic 35): azul_dll::desktop::shell2::linux::system_style::discover_gnome_style has cyclomatic complexity 35 (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":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":1475}}}],"partialFingerprints":{"codehealthFindingId/v1":"9778f56af52ccfd3f373346c56796af136221251fa37c2214dd4475a8467481e"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::reloc_canonicalize (cyclomatic 35): azul_dll::web::transpiler_remill::reloc_canonicalize 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":7689}}}],"partialFingerprints":{"codehealthFindingId/v1":"c74f54257a6a7be3bbdc75ac9038d7e6f6e41332e6137eb8905800a54a815734"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::run::run (cyclomatic 35): azul_dll::desktop::shell2::run::run 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":"dll/src/desktop/shell2/run.rs"},"region":{"startLine":1477}}}],"partialFingerprints":{"codehealthFindingId/v1":"649c51cdac67a0c595d5d89ab98f07189ffd20394a4c117dce1263a5f3dd0ea1"}},{"ruleId":"D1","level":"warning","message":{"text":"PythonGenerator::field_type_needs_unsendable (cyclomatic 35): PythonGenerator::field_type_needs_unsendable 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":"doc/src/codegen/v2/lang_python.rs"},"region":{"startLine":3564}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfefe9a4a3b6e99919f5c007758f9c6a05a74dee29aec264a865ecbd8cf4f2b9"}},{"ruleId":"D1","level":"warning","message":{"text":"PythonGenerator::function_has_unsupported_args (cyclomatic 35): PythonGenerator::function_has_unsupported_args 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":"doc/src/codegen/v2/lang_python.rs"},"region":{"startLine":3771}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f344eca91e9a92e2b7453a7f380fcce52eff15e8acf486266b64528fd485951"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::generate_combined_patch (cyclomatic 35): azul_doc::autofix::generate_combined_patch has cyclomatic complexity 35 (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":"doc/src/autofix/mod.rs"},"region":{"startLine":839}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4915e4872b5f644e31e8a2b1e7829efd10d370fbf128412dd0d82a4b7829c1d"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::dllgen::deploy::verify_examples (cyclomatic 35): azul_doc::dllgen::deploy::verify_examples 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":"doc/src/dllgen/deploy.rs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ea95296e76de0216b9c8844d7a1cd215d1c50f96dccefcafdb9149df532cb17"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_java::wrappers::emit_wrapper_method (cyclomatic 35): azul_doc::codegen::v2::lang_java::wrappers::emit_wrapper_method has cyclomatic complexity 35 (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":"doc/src/codegen/v2/lang_java/wrappers.rs"},"region":{"startLine":1336}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3c88073f44519a58994a8f423866f6294ab7c6adbe7dbda7e17cb87a64ea2c0"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::debug::debug_type_in_index (cyclomatic 35): azul_doc::autofix::debug::debug_type_in_index 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":"doc/src/autofix/debug.rs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"174f7d0ee14bbd71b11c5c7f55754ed96d3a73e834bde150677cc06da30df1f2"}},{"ruleId":"D1","level":"warning","message":{"text":"LayoutWindow::tick_animations (cyclomatic 35): LayoutWindow::tick_animations 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":"layout/src/window.rs"},"region":{"startLine":11609}}}],"partialFingerprints":{"codehealthFindingId/v1":"51f24f041de7413a72b332f1ae1f5a1028966324e8189fb5d016de616233991c"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::display_list::clip_and_offset_display_item (cyclomatic 35): azul_layout::solver3::display_list::clip_and_offset_display_item 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_layout::solver3::display_list::offset_display_item_y (cyclomatic 41) 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":"layout/src/solver3/display_list.rs"},"region":{"startLine":8598}}}],"partialFingerprints":{"codehealthFindingId/v1":"27cf32914c1089d260e2650518bc31dc23a696cc9a8eb76b6f1b77ad923a2213"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::text3::cache::create_logical_items (cyclomatic 35): azul_layout::text3::cache::create_logical_items 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":"layout/src/text3/cache.rs"},"region":{"startLine":8352}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc0e08f72edb95e5eb6e1bfa902ac620301fb2c4a9e305e2c01f5c419811bbd8"}},{"ruleId":"D1","level":"warning","message":{"text":"CssPropertyWithConditionsVec::parse_at_rule (cyclomatic 34): CssPropertyWithConditionsVec::parse_at_rule 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":"css/src/dynamic_selector.rs"},"region":{"startLine":2260}}}],"partialFingerprints":{"codehealthFindingId/v1":"a97f2a92b836f3c99b01cc3dfac935f3601dc56bb44c08133864f16fac92717f"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::parse_reg_store (cyclomatic 34): azul_dll::web::transpiler_remill::parse_reg_store has cyclomatic complexity 34 (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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":9133}}}],"partialFingerprints":{"codehealthFindingId/v1":"b199c0ad0dd9836080e6349948ff5a866a5e5c37ea2b42eff9326e6fc5c3a6ac"}},{"ruleId":"D1","level":"warning","message":{"text":"Emitter::emit_traits (cyclomatic 34): Emitter::emit_traits has cyclomatic complexity 34 (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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":1288}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d4f875b460111e212c138188173c15c549d925afdeaca5c2fa1ff4fcfc69d49"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::print_single_warning (cyclomatic 34): azul_doc::autofix::print_single_warning 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":"doc/src/autofix/mod.rs"},"region":{"startLine":2599}}}],"partialFingerprints":{"codehealthFindingId/v1":"e24b7c6b646353d59b907f4f888108d6eb693106cf39f50a1bae1afca144477e"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_lisp::map_type_to_cffi (cyclomatic 34): azul_doc::codegen::v2::lang_lisp::map_type_to_cffi 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":"doc/src/codegen/v2/lang_lisp/mod.rs"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"31198e58985aa10400af67f5d4e7e92b8d7194ca9de6036b89d1431297b67583"}},{"ruleId":"D1","level":"warning","message":{"text":"A11yManager::update_tree (cyclomatic 34): A11yManager::update_tree 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. This is NOT this file\u0027s highest cyclomatic complexity: A11yManager::node_type_to_role (cyclomatic 74) 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":"layout/src/managers/a11y.rs"},"region":{"startLine":470}}}],"partialFingerprints":{"codehealthFindingId/v1":"f02c2c6a2b533edb458a33a436da5510a333c27c977f29e2729f2d2e472f931a"}},{"ruleId":"D1","level":"warning","message":{"text":"Renderer::render_impl (cyclomatic 34): Renderer::render_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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":1417}}}],"partialFingerprints":{"codehealthFindingId/v1":"d238c35b6667b3d604ab03255910568c4f3546ce2cbf39619b8e385545933a7a"}},{"ruleId":"D1","level":"warning","message":{"text":"SceneBuilder::build_item (cyclomatic 34): SceneBuilder::build_item 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":"webrender/core/src/scene_building.rs"},"region":{"startLine":1332}}}],"partialFingerprints":{"codehealthFindingId/v1":"acd844e813f285395b781551956dc42aff7c0eeb9c4f68e6721a45ce8fb7f6ed"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_core::xml::analyze_node_ctor (cyclomatic 33): azul_core::xml::analyze_node_ctor has cyclomatic complexity 33 (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: azul_core::xml::tag_to_node_type (cyclomatic 170) 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":"core/src/xml.rs"},"region":{"startLine":7947}}}],"partialFingerprints":{"codehealthFindingId/v1":"b51a7dbb610f4f68bdc2fe2ada2eeef46007a66df2ffda89daa6236b741a4c94"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::android::android_main (cyclomatic 33): azul_dll::desktop::shell2::android::android_main has cyclomatic complexity 33 (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":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":670}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b982ca7083b931d652496bf6665cc93b827cb54188f98f7da34571e76ecd5e0"}},{"ruleId":"D1","level":"warning","message":{"text":"ModulePlan::build (cyclomatic 33): ModulePlan::build has cyclomatic complexity 33 (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":"doc/src/codegen/v2/module_plan.rs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"75bfe82adf5a687e37cf0f51f75f06b66dcb21824453ce971ebd6e06e861e104"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::type_index::extract_macro_generated_types (cyclomatic 33): azul_doc::autofix::type_index::extract_macro_generated_types has cyclomatic complexity 33 (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":"doc/src/autofix/type_index.rs"},"region":{"startLine":1990}}}],"partialFingerprints":{"codehealthFindingId/v1":"2acd542a131becb99753cd20837f9607288d6f8897bd53b84233b0042c34019f"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::patch_format::explain_change (cyclomatic 33): azul_doc::autofix::patch_format::explain_change 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":"doc/src/autofix/patch_format.rs"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"63bbb2ae60c185f98525d880096c61e51e13f0f4abac55baedfa55f17123033f"}},{"ruleId":"D1","level":"warning","message":{"text":"A11ySnapshot::build (cyclomatic 33): A11ySnapshot::build has cyclomatic complexity 33 (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":"layout/src/managers/a11y_snapshot.rs"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"57d60fbc9a1793908920f128b7a72b917bfe90c29c3837cf90551f538b5ec739"}},{"ruleId":"D1","level":"warning","message":{"text":"webrender::prim_store::gradient::linear::optimize_linear_gradient (cyclomatic 33): webrender::prim_store::gradient::linear::optimize_linear_gradient has cyclomatic complexity 33 (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":"webrender/core/src/prim_store/gradient/linear.rs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"abb8c6d91238c41b9fbf6af40b495abe422098778cc415b2b4d611fac87d7e83"}},{"ruleId":"D1","level":"warning","message":{"text":"AttribLocations::get_loc (cyclomatic 33): AttribLocations::get_loc has cyclomatic complexity 33 (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":"webrender/swgl/src/shaders/cs_clip_rectangle.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"1915ba565cbf380f2f62382fdb36930a249a38cc61e6c177938750b025b47485"}},{"ruleId":"D1","level":"warning","message":{"text":"showComponentDetail (cyclomatic 33): showComponentDetail has cyclomatic complexity 33 (threshold 15). Of this number, 26 points are the body\u0027s own statements and 7 belong to 18 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":2265}}}],"partialFingerprints":{"codehealthFindingId/v1":"12c0c70bf395158b608548b01fe92957478803920e7e3a5f48468481db52f446"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_css::props::style::transform::parse_style_transform (cyclomatic 32): azul_css::props::style::transform::parse_style_transform has cyclomatic complexity 32 (threshold 15). Of this number, 31 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":"css/src/props/style/transform.rs"},"region":{"startLine":766}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc1a0b0550968ba0e5fd5949d26bb41e497e794fea653272d1d649eb8f4310d3"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::extra::screencap::macos::open (cyclomatic 32): azul_dll::desktop::extra::screencap::macos::open 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":"dll/src/desktop/extra/screencap/macos.rs"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c33aa2571ed9602049b69edd3cd392ff8f5e556d549c2013a9bec9143a61615"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::extra::gamepad::apple::poll (cyclomatic 32): azul_dll::desktop::extra::gamepad::apple::poll 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":"dll/src/desktop/extra/gamepad/apple.rs"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"156f1894b3822b2d4afb35b326550a44987f6d2a0f49ab1641d5c2183bfda4fc"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::patch::parser::organize_symbols (cyclomatic 32): azul_doc::patch::parser::organize_symbols 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":"doc/src/patch/parser.rs"},"region":{"startLine":932}}}],"partialFingerprints":{"codehealthFindingId/v1":"375067b7a046350ebd6c798ac0101f774e568030fa16f61aa3458c3351d7c045"}},{"ruleId":"D1","level":"warning","message":{"text":"DisplayListGenerator::generate_for_stacking_context (cyclomatic 32): DisplayListGenerator::generate_for_stacking_context 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_layout::solver3::display_list::offset_display_item_y (cyclomatic 41) 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":"layout/src/solver3/display_list.rs"},"region":{"startLine":4690}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4fe7a45045bbb6dc594563fdbc93f45ef482cb5f78e43324eae47a8a8f83886"}},{"ruleId":"D1","level":"warning","message":{"text":"LayoutWindow::layout_and_generate_display_list_impl (cyclomatic 32): LayoutWindow::layout_and_generate_display_list_impl 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":"layout/src/window.rs"},"region":{"startLine":2306}}}],"partialFingerprints":{"codehealthFindingId/v1":"12e9f31c22c803e1e952f7d99a59da661dbbdd9862da516ec7733e89bbab2e62"}},{"ruleId":"D1","level":"warning","message":{"text":"PlatformWindow::process_window_events (cyclomatic 31): PlatformWindow::process_window_events 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_dll::desktop::shell2::common::event::win32_vkey_to_virtual_key (cyclomatic 135) 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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":9942}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4da77b7fe3fc596bf33d9a77b0b2b96cdb1f03226da02d50279d34bc0ea1edb"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::common::transient::sync_parent (cyclomatic 31): azul_dll::desktop::shell2::common::transient::sync_parent 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":"dll/src/desktop/shell2/common/transient.rs"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"e92c29302b335b44d935cc96c8eb37b0903d89c8b38f32f28ac27c6d1cdb755e"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::run::run (cyclomatic 31): azul_dll::desktop::shell2::run::run has cyclomatic complexity 31 (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":"dll/src/desktop/shell2/run.rs"},"region":{"startLine":620}}}],"partialFingerprints":{"codehealthFindingId/v1":"c21448fdce2804ffe7ba606bf3b48ac5008ec3b8cc153435f2b3e3b05da7609a"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::extra::sensors::windows::poll (cyclomatic 31): azul_dll::desktop::extra::sensors::windows::poll 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":"dll/src/desktop/extra/sensors/windows.rs"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"076ec792eba3433088d7bcc5ca69e76af197ab527169aad075eb1f03f9f73364"}},{"ruleId":"D1","level":"warning","message":{"text":"Emitter::emit_methods (cyclomatic 31): Emitter::emit_methods 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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":1552}}}],"partialFingerprints":{"codehealthFindingId/v1":"a64f437afe9fbc71d1438f40b3037586559864e4bbbeff5209aca0340799b9d5"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ocaml::map_type_to_ocaml_typ (cyclomatic 31): azul_doc::codegen::v2::lang_ocaml::map_type_to_ocaml_typ 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":"doc/src/codegen/v2/lang_ocaml/mod.rs"},"region":{"startLine":762}}}],"partialFingerprints":{"codehealthFindingId/v1":"c062c034595eabb9a27455d5412425c1a38807966ac6ee965043bac8ff06ffaa"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::patch::index::extract_types_from_file (cyclomatic 31): azul_doc::patch::index::extract_types_from_file 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":"doc/src/patch/index.rs"},"region":{"startLine":1196}}}],"partialFingerprints":{"codehealthFindingId/v1":"7db64087305778b191535d631a7012db2abc3f35e332709ee209b552a2db6e7b"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::patch::update_type_references (cyclomatic 31): azul_doc::patch::update_type_references 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":"doc/src/patch/mod.rs"},"region":{"startLine":1906}}}],"partialFingerprints":{"codehealthFindingId/v1":"c35b54c9a213c55e179f67c0f747e165c0a010f7b107ae5850ae3abab550a509"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::xml::parse_xml_string (cyclomatic 31): azul_layout::xml::parse_xml_string 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":"layout/src/xml/mod.rs"},"region":{"startLine":849}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f531f1f9a13606f8b858ce54b8601095840bc6a0ce23897c314c46f511b2f50"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::text3::cache::break_one_line (cyclomatic 31): azul_layout::text3::cache::break_one_line 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":"layout/src/text3/cache.rs"},"region":{"startLine":11352}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7bf93a5fedc1202150939c1aef0b04ac24a4a4a8c612d4d160a5f160b1a248f"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_css::parser2::parse_media_feature (cyclomatic 30): azul_css::parser2::parse_media_feature 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":"css/src/parser2.rs"},"region":{"startLine":1186}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b9d725a7ae4056ce22eace7192725ecded02b1d76aef5dc0eddc0cac456747b"}},{"ruleId":"D1","level":"warning","message":{"text":"X11Window::wait_for_events (cyclomatic 30): X11Window::wait_for_events 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. This is NOT this file\u0027s highest cyclomatic complexity: X11Window::set_cursor (cyclomatic 34) 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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":4486}}}],"partialFingerprints":{"codehealthFindingId/v1":"081a9b5553e8aeac2080d746b3e5f88fbe9cc3ba713b064c2c1c993538e5dcd9"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::wayland::events::registry_global_handler (cyclomatic 30): azul_dll::desktop::shell2::linux::wayland::events::registry_global_handler 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":"dll/src/desktop/shell2/linux/wayland/events.rs"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f72d348ef1dc258a953769842a42d31de916637e8faaa60ebfc8cbf5b0a7e8d"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::web::symbol_table::ingest_macho (cyclomatic 30): azul_dll::web::symbol_table::ingest_macho 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":"dll/src/web/symbol_table.rs"},"region":{"startLine":1745}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0632b3fd283dd581a63b56ee28992778c30766ed8ed2010561cb979fa257580"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::debug::analyze_ffi_difficulty (cyclomatic 30): azul_doc::autofix::debug::analyze_ffi_difficulty 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":"doc/src/autofix/debug.rs"},"region":{"startLine":706}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6b038c29bbeb4124bd057838b67bacf59924c34267075d0ef1e55fadc02c782"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::gene2e::run (cyclomatic 30): azul_doc::gene2e::run 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":"doc/src/gene2e.rs"},"region":{"startLine":1812}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c140780f1b2356675dd22f2091d64a8ba5eb227309d416aa26d834213d732cf"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_racket::map_type_to_racket (cyclomatic 30): azul_doc::codegen::v2::lang_racket::map_type_to_racket 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":"doc/src/codegen/v2/lang_racket/mod.rs"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"16cc4e3bd96a9d6d901d4e67c1bf878d390dc14aaf568dcb89258245ec52e9cb"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::display_list::split_text_for_glides (cyclomatic 30): azul_layout::solver3::display_list::split_text_for_glides has cyclomatic complexity 30 (threshold 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, 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: azul_layout::solver3::display_list::offset_display_item_y (cyclomatic 41) 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":"layout/src/solver3/display_list.rs"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa51655ed65ca433c587f5439681bbe00293ef1d1a5d6bef309d5f11f1722978"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::text3::cache::justify_kashida_and_rebuild (cyclomatic 30): azul_layout::text3::cache::justify_kashida_and_rebuild 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":"layout/src/text3/cache.rs"},"region":{"startLine":12524}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7ab4ae386ee8115cc6a794f7def718c0fb41d9a645e2d2e2fcc91dd01a3388f"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::fc::calculate_column_widths_fixed (cyclomatic 30): azul_layout::solver3::fc::calculate_column_widths_fixed 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":"layout/src/solver3/fc.rs"},"region":{"startLine":6913}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c31253d74c67c98aa7a7fb6f3af589e4d10134de748713eda41e42f5d6444be"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::fc::split_text_for_whitespace (cyclomatic 30): azul_layout::solver3::fc::split_text_for_whitespace 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":"layout/src/solver3/fc.rs"},"region":{"startLine":10820}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d3b28aeab7a9d563a0425db518eca357f89d61d3a06db44c50bc2c89a1cc83c"}},{"ruleId":"D1","level":"warning","message":{"text":"_renderTreeNode (cyclomatic 30): _renderTreeNode has cyclomatic complexity 30 (threshold 15). Of this number, 29 points are the body\u0027s own statements and 1 belongs to 5 function literals inside it that branch. 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":656}}}],"partialFingerprints":{"codehealthFindingId/v1":"32d0ddb8eae6b6d8dda81ca94e3214bf0e488234bb5e18fed2642d432bb8c7df"}},{"ruleId":"D1","level":"warning","message":{"text":"render (cyclomatic 30): render has cyclomatic complexity 30 (threshold 15). Most of this is not in the body itself: 4 of the 30 points are its own statements and the rest belongs to 16 function items inside it that branch (buildNode, buildNode::(anonymous), buildNode::(anonymous), \u2026). 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":4113}}}],"partialFingerprints":{"codehealthFindingId/v1":"715d94a940024e0addb865c36e07fa94697a3830756a9c83009c08d7017f2c21"}},{"ruleId":"D1","level":"warning","message":{"text":"Win32Window::new (cyclomatic 29): Win32Window::new 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_dll::desktop::shell2::windows::win32_msg_name (cyclomatic 30) 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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"93d455f2d6d7bb2e9a7b7ec8c8704dafb1fb423113bb74ab0e6d6c2efedc57cc"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_csharp::map_type_to_csharp (cyclomatic 29): azul_doc::codegen::v2::lang_csharp::map_type_to_csharp 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":"doc/src/codegen/v2/lang_csharp/mod.rs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"66c21bcbf31f707ec015054ed9c1593d572af97baadf3e5403621910b29770a6"}},{"ruleId":"D1","level":"warning","message":{"text":"IntrinsicSizeCalculator::calculate_node_intrinsic_sizes (cyclomatic 29): IntrinsicSizeCalculator::calculate_node_intrinsic_sizes 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":"layout/src/solver3/sizing.rs"},"region":{"startLine":512}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6f7e378839882a344af29eb6adb9e30818fc16a4e8e0990333b4902dba4dec2"}},{"ruleId":"D1","level":"warning","message":{"text":"LayoutWindow::run_track_frames (cyclomatic 29): LayoutWindow::run_track_frames 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":"layout/src/window.rs"},"region":{"startLine":13918}}}],"partialFingerprints":{"codehealthFindingId/v1":"13a548cc3bd987debd26e8a54b113abb58a7d399ed16a1b81d153c8608b386e3"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::cpurender::raster::render_box_shadow (cyclomatic 29): azul_layout::cpurender::raster::render_box_shadow has cyclomatic complexity 29 (threshold 15). Of this number, 20 points are the body\u0027s own statements and 9 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_layout::cpurender::raster::probe_label_for_item (cyclomatic 38) 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":"layout/src/cpurender/raster.rs"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"6553131e8f6d6824f06c244a170f527c73e92b025875fea811a74b7f5bf7d7cb"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::managers::a11y::map_accesskit_action (cyclomatic 29): azul_layout::managers::a11y::map_accesskit_action has cyclomatic complexity 29 (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: A11yManager::node_type_to_role (cyclomatic 74) 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":"layout/src/managers/a11y.rs"},"region":{"startLine":1349}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfa5dcc5340d9c06bf9c512e7557a1e2eaf1b9e491d78d0edbf4d6ef40f6c36c"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::fc::layout_flex_grid (cyclomatic 29): azul_layout::solver3::fc::layout_flex_grid 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":"layout/src/solver3/fc.rs"},"region":{"startLine":646}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5315f35cccfe5b885b193989bf81d7c771f6daff13543637368724b96ec14a1"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::fc::calculate_row_heights (cyclomatic 29): azul_layout::solver3::fc::calculate_row_heights 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":"layout/src/solver3/fc.rs"},"region":{"startLine":7730}}}],"partialFingerprints":{"codehealthFindingId/v1":"e11b98a4aebf159d8f11f95f02f082cd0bbf3e0a76bf0acc9ecf9eb31717d32d"}},{"ruleId":"D1","level":"warning","message":{"text":"azinput-portal.main (cyclomatic 29): azinput-portal.main 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":"scripts/debugging/azinput-portal.py"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfd7436ba9d5e59acd050b1e7dd5100db98773afbf5d48dba1632f0ef2ca04b1"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_css::system::detect_linux_desktop_env (cyclomatic 28): azul_css::system::detect_linux_desktop_env has cyclomatic complexity 28 (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":"css/src/system.rs"},"region":{"startLine":1920}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2df7c143298f5b9ecad9e19af97a20e8ae6e5cbd89272fa972ae9fbae17e488"}},{"ruleId":"D1","level":"warning","message":{"text":"WaylandWindow::handle_key (cyclomatic 28): WaylandWindow::handle_key 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":3450}}}],"partialFingerprints":{"codehealthFindingId/v1":"c624c9853888abe276c9fac874553e60e244b8f113cbb877491d0e2308018201"}},{"ruleId":"D1","level":"warning","message":{"text":"WaylandPopup::render_if_ready (cyclomatic 28): WaylandPopup::render_if_ready 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":9622}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9b5becc8fccbffcf000a925c8c3e58b9945b06e6a3c5b7b47a82c0c8d88f32b"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::wr_translate2::merge_overlay_env (cyclomatic 28): azul_dll::desktop::wr_translate2::merge_overlay_env has cyclomatic complexity 28 (threshold 15). 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":"dll/src/desktop/wr_translate2.rs"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"19ad48954c57fa39d6566fd33efb105fe8181c8eb612e5f7c17735de46407970"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::web::lift_audit::audit_wasm (cyclomatic 28): azul_dll::web::lift_audit::audit_wasm 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":"dll/src/web/lift_audit.rs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"11f2b33e687d5d1f3230b4b533c1d33bad56836d826fdc7842a851fefca1e5e8"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::type_index::extract_custom_impls_from_items (cyclomatic 28): azul_doc::autofix::type_index::extract_custom_impls_from_items 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":"doc/src/autofix/type_index.rs"},"region":{"startLine":2890}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf6610b85647164bdb89ab1b51415f4efc2deaf2e078224d498e0bbfa6bca7e9"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::mobile::handle_mobile_command (cyclomatic 28): azul_doc::mobile::handle_mobile_command 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":"doc/src/mobile/mod.rs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"2aec4c0cf1462a45c9f0f8a85a4de8e16853780247ca45b0968a50cfefc03168"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::gene2e::validate (cyclomatic 28): azul_doc::gene2e::validate 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":"doc/src/gene2e.rs"},"region":{"startLine":1383}}}],"partialFingerprints":{"codehealthFindingId/v1":"68c22633d0ac986a5e428cf0af079d2d145538c0b0a463be1eb95d2bdd32336e"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::patch::explain_patches (cyclomatic 28): azul_doc::patch::explain_patches 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":"doc/src/patch/mod.rs"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"877a8e3cd0b2e01ea0857ab42dae62e086742c77801a9e8c95a2cd20027a2c87"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::telemetry::sharedconfig::within_maintenance_window (cyclomatic 28): azul_layout::telemetry::sharedconfig::within_maintenance_window 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":"layout/src/telemetry/sharedconfig.rs"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c82fb826131c7015fab3cc7be2e8f94569df89157d09519987395e214d8706e"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::text3::script::detect_latin_language (cyclomatic 28): azul_layout::text3::script::detect_latin_language has cyclomatic complexity 28 (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":"layout/src/text3/script.rs"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5ed6501f3f71cffc82cf1a54928360072a254ea6af0bc1b453a656da1abbf63"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::page_breaks::compute_page_breaks_impl (cyclomatic 28): azul_layout::solver3::page_breaks::compute_page_breaks_impl 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":"layout/src/solver3/page_breaks.rs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"04bae635ae1cc900ae3d0d8e8bda1a271cc21293454bdbc573353c214ddef9dd"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::updater::parse_release_document (cyclomatic 28): azul_layout::updater::parse_release_document 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":"layout/src/updater.rs"},"region":{"startLine":1001}}}],"partialFingerprints":{"codehealthFindingId/v1":"78c846b6283fd546c1d1576901130e266c74d8b64c3684146b17885a9570c768"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::text3::knuth_plass::find_optimal_breakpoints (cyclomatic 28): azul_layout::text3::knuth_plass::find_optimal_breakpoints 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":"layout/src/text3/knuth_plass.rs"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"463dfc23d07c5bcd93eef9e80a891b1c5b62da095767e75da22b47c0ccc16a4a"}},{"ruleId":"D1","level":"warning","message":{"text":"RenderBackend::process_api_msg (cyclomatic 28): RenderBackend::process_api_msg has cyclomatic complexity 28 (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":"webrender/core/src/render_backend.rs"},"region":{"startLine":953}}}],"partialFingerprints":{"codehealthFindingId/v1":"9706d8d53376d637edc02c2112c6cd826212cca1b6720224b86b5340710c939d"}},{"ruleId":"D1","level":"warning","message":{"text":"SurfaceBuilder::pop_surface (cyclomatic 28): SurfaceBuilder::pop_surface 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":"webrender/core/src/surface.rs"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"67c739e015dfd1ea93a26d009ccd10a46ec82ba00e971c9668493cd5a4f928cb"}},{"ruleId":"D1","level":"warning","message":{"text":"webrender::renderer::upload::upload_to_texture_cache (cyclomatic 28): webrender::renderer::upload::upload_to_texture_cache has cyclomatic complexity 28 (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":"webrender/core/src/renderer/upload.rs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"aff8037c8602aef22edacaba781a14b5b67532086d4b77d15ce7093f57c07f98"}},{"ruleId":"D1","level":"warning","message":{"text":"CsSvgFilterNodeFrag::main (cyclomatic 28): CsSvgFilterNodeFrag::main 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":"webrender/swgl/src/shaders/cs_svg_filter_node.rs"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"31486c7be9149db9a0bfd56245efede22ed6a70331912870a094766031d0c2a7"}},{"ruleId":"D1","level":"warning","message":{"text":"check_dep_justifications.main (cyclomatic 28): check_dep_justifications.main 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":"scripts/check_dep_justifications.py"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0bf776778140bfe2ae03ce0e60fc158e672891f8bca8fc26cc163df4a8de10a"}},{"ruleId":"D1","level":"warning","message":{"text":"env_guard.main (cyclomatic 28): env_guard.main 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":"scripts/supply-chain/env_guard.py"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"92922e0d3115b6500b332090b7c2e0b1ded8618aa14d49ea29e0a0c78ae39bde"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_core::diff::compute_node_changes (cyclomatic 27): azul_core::diff::compute_node_changes has cyclomatic complexity 27 (threshold 15). Of this number, 26 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":"core/src/diff.rs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"72215356e644c0124d27dfe8a7be634910e082801670400e15a075aede404d32"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::wayland::screencopy::capture_toplevel (cyclomatic 27): azul_dll::desktop::shell2::linux::wayland::screencopy::capture_toplevel 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":"dll/src/desktop/shell2/linux/wayland/screencopy.rs"},"region":{"startLine":684}}}],"partialFingerprints":{"codehealthFindingId/v1":"73106a4aa03462969d027b261825b66feb1fbfe6c9ad0ec70ae4e0dd2c80a286"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeResolver::check_type_c_compatibility_with_index (cyclomatic 27): TypeResolver::check_type_c_compatibility_with_index 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":"doc/src/autofix/type_resolver.rs"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e44dd73749cdff58daaeaa9efc7d4cc3c664de1637e13214ca39bb854cc19a6"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::workspace::generate_synthetic_vec_types (cyclomatic 27): azul_doc::autofix::workspace::generate_synthetic_vec_types 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":"doc/src/autofix/workspace.rs"},"region":{"startLine":1390}}}],"partialFingerprints":{"codehealthFindingId/v1":"27e7f692f73254a54c54d6db8dbd44bc4a12ba93c07137694768432b8bc061d9"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_haskell::wrappers::reexports (cyclomatic 27): azul_doc::codegen::v2::lang_haskell::wrappers::reexports 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":"doc/src/codegen/v2/lang_haskell/wrappers.rs"},"region":{"startLine":684}}}],"partialFingerprints":{"codehealthFindingId/v1":"97d09bfeb2093a7b9e3a28a0bc56f65f507d18a75d3298e9cec45388bf4e9538"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::docgen::apidocs::render_class (cyclomatic 27): azul_doc::docgen::apidocs::render_class 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":"doc/src/docgen/apidocs.rs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"db0fe9e4b71006c9cee7871aadd3833f1797582b492c3638f2ce8a955f4389d0"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_nim::map_type_to_nim (cyclomatic 27): azul_doc::codegen::v2::lang_nim::map_type_to_nim 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":"doc/src/codegen/v2/lang_nim/mod.rs"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"a556b4593ebb6a9896f0a1fafa840a40cfd2979ca56ec9884a6a66ae65844978"}},{"ruleId":"D1","level":"warning","message":{"text":"DisplayListGenerator::paint_in_flow_descendants (cyclomatic 27): DisplayListGenerator::paint_in_flow_descendants 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_layout::solver3::display_list::offset_display_item_y (cyclomatic 41) 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":"layout/src/solver3/display_list.rs"},"region":{"startLine":4993}}}],"partialFingerprints":{"codehealthFindingId/v1":"699717110679b78819dcc71c4c1c01a8a8cade7faacc08b3606d1fe3f2f85559"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::event_determination::pointer_seat_events (cyclomatic 27): azul_layout::event_determination::pointer_seat_events 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":"layout/src/event_determination.rs"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ebdea6ead0f2658f777de6df9cc53c6ace2dc8f6d25a373d2d696173e65ad74"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::cpurender::compositor::gpu_value_damage (cyclomatic 27): azul_layout::cpurender::compositor::gpu_value_damage has cyclomatic complexity 27 (threshold 15). Of this number, 24 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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":1934}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe85549a59ef5c4bd8c03fe7451a2bcf55ca158af560d7d842a10ac0751dfd01"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::text3::knuth_plass::position_lines_from_breaks (cyclomatic 27): azul_layout::text3::knuth_plass::position_lines_from_breaks 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":"layout/src/text3/knuth_plass.rs"},"region":{"startLine":570}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f5716b8e42839476aae0d21245c515cc4cd5007c4203bdaf70a014392181942"}},{"ruleId":"D1","level":"warning","message":{"text":"webrender::prim_store::gradient::radial::optimize_radial_gradient (cyclomatic 27): webrender::prim_store::gradient::radial::optimize_radial_gradient 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":"webrender/core/src/prim_store/gradient/radial.rs"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca2ca733294b5747d0c61a9f3990fd9e9d5fd4748cd58e052cd7ebf0d52ce82f"}},{"ruleId":"D1","level":"warning","message":{"text":"chrome_layout_extractor.allElements.forEach() (cyclomatic 27): chrome_layout_extractor.allElements.forEach() has cyclomatic complexity 27 (threshold 15). Of this number, 23 points are the body\u0027s own statements and 4 belong to one function literal inside it that branches. 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":"doc/src/reftest/chrome_layout_extractor.js"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd1828d8aaf19cccc3c114e7cb40344129093db1f46ac5330d30b45c2fdf744e"}},{"ruleId":"D1","level":"warning","message":{"text":"azul-search.scoreEntry (cyclomatic 27): azul-search.scoreEntry 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":"doc/templates/azul-search.js"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ae1385eb4820084affa2cca7c142c8c9cfa79e5569a9777f5d3c770f6f7ac31"}},{"ruleId":"D1","level":"warning","message":{"text":"_loop (cyclomatic 27): _loop 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":4572}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6dcbc74932fbd6d0e50c72c9a5462c701c0819864c7576c44c77cf5512d08e1"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::type_resolver::check_type_c_compatibility (cyclomatic 26): azul_doc::autofix::type_resolver::check_type_c_compatibility 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":"doc/src/autofix/type_resolver.rs"},"region":{"startLine":739}}}],"partialFingerprints":{"codehealthFindingId/v1":"e33f77a1ac91debbe8ab6ce0f25403938edfe0cd44e3202fcd6f6c1076053ed0"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_julia::types::generate_types (cyclomatic 26): azul_doc::codegen::v2::lang_julia::types::generate_types 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":"doc/src/codegen/v2/lang_julia/types.rs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"42c241b3eba718911f45b15c2138d73f41a627a62d2fb34a93af974c5fe3bb1b"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_fortran::map_type_to_fortran (cyclomatic 26): azul_doc::codegen::v2::lang_fortran::map_type_to_fortran 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":"doc/src/codegen/v2/lang_fortran/mod.rs"},"region":{"startLine":664}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5e7a90361f0ffa1feee411c31a575ce5b57d6df08446c790c6a9303c9ecad36"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_pascal::map_type_to_pascal (cyclomatic 26): azul_doc::codegen::v2::lang_pascal::map_type_to_pascal 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":"doc/src/codegen/v2/lang_pascal/mod.rs"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"9281a12c409105154761400ba47f19bc6804f1a55c01b7543be300938c50fc4f"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::diff::generate_diff (cyclomatic 26): azul_doc::autofix::diff::generate_diff 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":"doc/src/autofix/diff.rs"},"region":{"startLine":550}}}],"partialFingerprints":{"codehealthFindingId/v1":"e68c42521199e899674c5c2a4080dd98f44e64412d75e2020b7cd3611e9d7d96"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_freebasic::map_type_to_fb (cyclomatic 26): azul_doc::codegen::v2::lang_freebasic::map_type_to_fb 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":"doc/src/codegen/v2/lang_freebasic/mod.rs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"901ef26e97dc0ae38f10b52181859495e23281dd142879acbc12dbce31ef23d2"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_node::map_type_to_koffi (cyclomatic 26): azul_doc::codegen::v2::lang_node::map_type_to_koffi 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":"doc/src/codegen/v2/lang_node/mod.rs"},"region":{"startLine":957}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fee83e81fe7b943cdb3beac5d7c3b3295028e87c4c6211dfab7303d55d0a2c8"}},{"ruleId":"D1","level":"warning","message":{"text":"DisplayListGenerator::paint_cursor (cyclomatic 26): DisplayListGenerator::paint_cursor 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_layout::solver3::display_list::offset_display_item_y (cyclomatic 41) 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":"layout/src/solver3/display_list.rs"},"region":{"startLine":4375}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa10be982ce27d57d687d3c2f515c2fcee639e698c9c4fe0dedf5029a30d5dd6"}},{"ruleId":"D1","level":"warning","message":{"text":"DisplayListGenerator::maybe_paint_placeholder_prompt (cyclomatic 26): DisplayListGenerator::maybe_paint_placeholder_prompt 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_layout::solver3::display_list::offset_display_item_y (cyclomatic 41) 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":"layout/src/solver3/display_list.rs"},"region":{"startLine":6892}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee2fb78cfe0c233254215bc438d9b8c03d97320f9746333b7d20c36734348105"}},{"ruleId":"D1","level":"warning","message":{"text":"LayoutWindow::composite_zombies_cpu (cyclomatic 26): LayoutWindow::composite_zombies_cpu 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":"layout/src/window.rs"},"region":{"startLine":25345}}}],"partialFingerprints":{"codehealthFindingId/v1":"f391fb343ff672398388a398130976bea9d0be52b96bd37c399225b045f9cb23"}},{"ruleId":"D1","level":"warning","message":{"text":"Renderer::update (cyclomatic 26): Renderer::update 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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":984}}}],"partialFingerprints":{"codehealthFindingId/v1":"daca20f508c9565fe8bb4b09498e6ac1dabf6f56894a68e10d9a0309c3a8b3ab"}},{"ruleId":"D1","level":"warning","message":{"text":"SceneBuilderThread::run (cyclomatic 26): SceneBuilderThread::run 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":"webrender/core/src/scene_builder_thread.rs"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0e975f36d1f476f8266a6afe5b40b8e59c2ad565b6bacfd64fae09c6bd8f449"}},{"ruleId":"D1","level":"warning","message":{"text":"webrender::renderer::init::create_webrender_instance (cyclomatic 26): webrender::renderer::init::create_webrender_instance has cyclomatic complexity 26 (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":"webrender/core/src/renderer/init.rs"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"88edb8076e85c8b4f0a58adabace3f2da901e031aa397300f499c1b6ca82a03d"}},{"ruleId":"D1","level":"warning","message":{"text":"BrushImageAdvancedBlendAlphaPassAntialiasingRepetitionTexture2DVert::brush_vs (cyclomatic 26): BrushImageAdvancedBlendAlphaPassAntialiasingRepetitionTexture2DVert::brush_vs 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":"webrender/swgl/src/shaders/brush_image_advanced_blend_alpha_pass_antialiasing_repetition_texture_2d.rs"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"982b33994e48d99d6e278b4a653f68d8cef65ecaa78fa6ea27706119d811c5d3"}},{"ruleId":"D1","level":"warning","message":{"text":"BrushImageAdvancedBlendAlphaPassAntialiasingRepetitionTextureRectVert::brush_vs (cyclomatic 26): BrushImageAdvancedBlendAlphaPassAntialiasingRepetitionTextureRectVert::brush_vs 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":"webrender/swgl/src/shaders/brush_image_advanced_blend_alpha_pass_antialiasing_repetition_texture_rect.rs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"71c5d44058b2301fd2ccafb1dba0a23fe47ec4da0068bef7dede4252f2cc3688"}},{"ruleId":"D1","level":"warning","message":{"text":"BrushImageAdvancedBlendAlphaPassTexture2DVert::brush_vs (cyclomatic 26): BrushImageAdvancedBlendAlphaPassTexture2DVert::brush_vs 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":"webrender/swgl/src/shaders/brush_image_advanced_blend_alpha_pass_texture_2d.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a90402f274e8a1b32ec5849923700eef248f8602e52a1809f82ac5afc013368"}},{"ruleId":"D1","level":"warning","message":{"text":"Vert::brush_vs (cyclomatic 26): Vert::brush_vs 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":"webrender/swgl/src/shaders/brush_image_alpha_pass_antialiasing_dual_source_blending_repetition_texture_2d.rs"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"7de10ee0c6668ff241e2179405fec6761b67bd208f0b48ebc173d2dd01e3bd9d"}},{"ruleId":"D1","level":"warning","message":{"text":"BrushImageAlphaPassAntialiasingDualSourceBlendingRepetitionTextureRectVert::brush_vs (cyclomatic 26): BrushImageAlphaPassAntialiasingDualSourceBlendingRepetitionTextureRectVert::brush_vs 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":"webrender/swgl/src/shaders/brush_image_alpha_pass_antialiasing_dual_source_blending_repetition_texture_rect.rs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"47c1561c96579a1dc06efe98f473de9b3b429d74c5635bdc20772ddf35510680"}},{"ruleId":"D1","level":"warning","message":{"text":"run_install_steps.run_route (cyclomatic 26): run_install_steps.run_route 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":"scripts/run_install_steps.py"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"d08b39b543629db2aa634a6f63878f2e0e8386c7df8b550710c2ae835e1738c1"}},{"ruleId":"D1","level":"warning","message":{"text":"strip_coff_lib.main (cyclomatic 26): strip_coff_lib.main 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":"scripts/strip_coff_lib.py"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"460ba1a5ac5b8de13354eb5ee5af0f5702ea9d45497d4d189608d5d8a954e864"}},{"ruleId":"D1","level":"warning","message":{"text":"render (cyclomatic 26): render 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":3449}}}],"partialFingerprints":{"codehealthFindingId/v1":"da8ec1681d71a214b949374bfc47a0adb4f4d0a2721872a97959d89008b1f513"}},{"ruleId":"D1","level":"warning","message":{"text":"SvgNodeData::eq (cyclomatic 25): SvgNodeData::eq 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: NodeType::to_library_owned_nodetype (cyclomatic 184) 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":"core/src/dom.rs"},"region":{"startLine":1946}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e28752d3a7701bd49c977d285658802955db1310ec762b79a3bf42356158075"}},{"ruleId":"D1","level":"warning","message":{"text":"WaylandWindow::drop (cyclomatic 25): WaylandWindow::drop has cyclomatic complexity 25 (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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":8509}}}],"partialFingerprints":{"codehealthFindingId/v1":"cff0002706e3ea6c96ede40a91041a2348f98a1b3be4ab7d62e69b69e995d31a"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::android::render_frame (cyclomatic 25): azul_dll::desktop::shell2::android::render_frame 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":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":2009}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2ed1ab3ce14f55d5d237fe0b464d88a333afa628ca03634ffa9b5933c17ad49"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::x11::handle_xi_event (cyclomatic 25): azul_dll::desktop::shell2::linux::x11::handle_xi_event 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: X11Window::set_cursor (cyclomatic 34) 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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":1583}}}],"partialFingerprints":{"codehealthFindingId/v1":"192f9dbf4161df4b0a233656487abdf4eeab70a00892a810097b4d81c27cd369"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::web::symbol_table::read_pdb_function_symbols (cyclomatic 25): azul_dll::web::symbol_table::read_pdb_function_symbols 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":"dll/src/web/symbol_table.rs"},"region":{"startLine":1538}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d8b700218fc5cbfe94f0bb98e1b797244bdb8926482910f8b450f969d91b9b1"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::type_index::extract_method_def (cyclomatic 25): azul_doc::autofix::type_index::extract_method_def 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":"doc/src/autofix/type_index.rs"},"region":{"startLine":3240}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee391f5a94435f5ceca362dba5d6c8be9a9528e6f2a25abe643351af727ec052"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::reftest::regression::generate_html_report (cyclomatic 25): azul_doc::reftest::regression::generate_html_report 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":"doc/src/reftest/regression.rs"},"region":{"startLine":632}}}],"partialFingerprints":{"codehealthFindingId/v1":"5db560b63791cd62880a164fb0c00e7f3c13e496220977f3ba73218842246958"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::reftest::regression::generate_visual_html_report (cyclomatic 25): azul_doc::reftest::regression::generate_visual_html_report 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":"doc/src/reftest/regression.rs"},"region":{"startLine":2056}}}],"partialFingerprints":{"codehealthFindingId/v1":"830bbac08a6098f02d43596ca95c98c61868300abc7806c54e0fb4f7c152a213"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::workspace::has_field_changes (cyclomatic 25): azul_doc::autofix::workspace::has_field_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":"doc/src/autofix/workspace.rs"},"region":{"startLine":2058}}}],"partialFingerprints":{"codehealthFindingId/v1":"d10f98cd2944cfff1be83a93ac56fd02f9528da2cd3c2f6795ceaab7bd104c4f"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_smalltalk::wrappers::emit_wrapper_method (cyclomatic 25): azul_doc::codegen::v2::lang_smalltalk::wrappers::emit_wrapper_method 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":"doc/src/codegen/v2/lang_smalltalk/wrappers.rs"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dac872292e82342d473d62ef6646c486494263f970c1692cf22649e0de13a05"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autotest::categorize::classify (cyclomatic 25): azul_doc::autotest::categorize::classify has cyclomatic complexity 25 (threshold 15). 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":"doc/src/autotest/categorize.rs"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c5770cb84e8278dd720f5d645f2bf29de98d1a821ee801947fe236c927f2db2"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::diff::resolve_api_functions_with_workspace_index (cyclomatic 25): azul_doc::autofix::diff::resolve_api_functions_with_workspace_index has cyclomatic complexity 25 (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":"doc/src/autofix/diff.rs"},"region":{"startLine":781}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef5f1f1539553b4f13bd7ad30df3c6406a6bf86430d8ec825db2fb3020cc0c15"}},{"ruleId":"D1","level":"warning","message":{"text":"DisplayListGenerator::paint_collapsed_table_borders (cyclomatic 25): DisplayListGenerator::paint_collapsed_table_borders 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_layout::solver3::display_list::offset_display_item_y (cyclomatic 41) 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":"layout/src/solver3/display_list.rs"},"region":{"startLine":6372}}}],"partialFingerprints":{"codehealthFindingId/v1":"e588c0964b8aecba3c77f19a6ceb736534371dd9027e587538806ebc2157b080"}},{"ruleId":"D1","level":"warning","message":{"text":"IntrinsicSizeCalculator::calculate_intrinsic_recursive (cyclomatic 25): IntrinsicSizeCalculator::calculate_intrinsic_recursive 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":"layout/src/solver3/sizing.rs"},"region":{"startLine":279}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3f25a1c98fcded5dcdb7243a3a883c8a30825aed46a7a2469a11c5a1d879393"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::cpurender::raster::render_text_prerendered_lcd (cyclomatic 25): azul_layout::cpurender::raster::render_text_prerendered_lcd 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: azul_layout::cpurender::raster::probe_label_for_item (cyclomatic 38) 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":"layout/src/cpurender/raster.rs"},"region":{"startLine":3486}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bc6de0b8c0deb1c862a83ad07576314904536cb335ddb0ad81aa8d71c8553fb"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::getters::get_scrollbar_style (cyclomatic 25): azul_layout::solver3::getters::get_scrollbar_style 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":"layout/src/solver3/getters.rs"},"region":{"startLine":5616}}}],"partialFingerprints":{"codehealthFindingId/v1":"72637cbbf620942088571e88dd50682316229f6d1baa787843e8e3d933f2a413"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::cpurender::pixmap::blit_pixmap_projective_clipped (cyclomatic 25): azul_layout::cpurender::pixmap::blit_pixmap_projective_clipped 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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"4975dab4845a4283bb55ccbb6e63f2cbe814f7449ed2c5579e34d096d77d70cd"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::cache::compute_counters_recursive (cyclomatic 25): azul_layout::solver3::cache::compute_counters_recursive 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":"layout/src/solver3/cache.rs"},"region":{"startLine":3713}}}],"partialFingerprints":{"codehealthFindingId/v1":"7eec7c9b6a58b9b9fd89e69ad124af19f4c8aa990aae827795dfa29aa6adf390"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::text3::knuth_plass::convert_items_to_nodes (cyclomatic 25): azul_layout::text3::knuth_plass::convert_items_to_nodes 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":"layout/src/text3/knuth_plass.rs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"f75ce77a3f378c9110e7f2134cc87b1dc796442efadad3ec8952a991fe4b321b"}},{"ruleId":"D1","level":"warning","message":{"text":"webrender_build::shader_features::get_shader_features (cyclomatic 25): webrender_build::shader_features::get_shader_features 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":"webrender/build/src/shader_features.rs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d3b3a96bc56b6b83b5f9b4518cc4898de07ae946d5e020475b1ec13b550f75d"}},{"ruleId":"D1","level":"warning","message":{"text":"RenderBackend::update_document (cyclomatic 25): RenderBackend::update_document 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":"webrender/core/src/render_backend.rs"},"region":{"startLine":1327}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffc9b11558c18036eeb6c36582c94f6bf523bd7ab53c51a860bb6329575cbc58"}},{"ruleId":"D1","level":"warning","message":{"text":"Renderer::draw_alpha_batch_container (cyclomatic 25): Renderer::draw_alpha_batch_container 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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":2837}}}],"partialFingerprints":{"codehealthFindingId/v1":"87052ffe9e433d0597146c1fd02e46a815f4b3a29240a7287173605cccd0276b"}},{"ruleId":"D1","level":"warning","message":{"text":"Renderer::draw_frame (cyclomatic 25): Renderer::draw_frame 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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":4534}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ea6169df551b183280674dd7374b1d1d85ad1d34f25ff61a279834ae5b8393b"}},{"ruleId":"D1","level":"warning","message":{"text":"ComponentFieldType::parse_depth (cyclomatic 24): ComponentFieldType::parse_depth 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_core::xml::tag_to_node_type (cyclomatic 170) 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":"core/src/xml.rs"},"region":{"startLine":1511}}}],"partialFingerprints":{"codehealthFindingId/v1":"64ef7d6b82f5b045f1e39373002a941154bd133929c6de09a25970de1005d608"}},{"ruleId":"D1","level":"warning","message":{"text":"X11Window::sync_window_state (cyclomatic 24): X11Window::sync_window_state 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. This is NOT this file\u0027s highest cyclomatic complexity: X11Window::set_cursor (cyclomatic 34) 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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":7443}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4b92ce845cc369eb9279d3b19440d591884f9b6a3ca396e98dcfe4152752708"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::web::eventloop::AzStartup_dispatchEvent (cyclomatic 24): azul_dll::web::eventloop::AzStartup_dispatchEvent 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":"dll/src/web/eventloop.rs"},"region":{"startLine":1843}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4438bc6505e3fd6c74bfb17085533f83cedff395b5a77a19572cbb0f1114c5a"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::web::symbol_table::ingest_macho_stubs (cyclomatic 24): azul_dll::web::symbol_table::ingest_macho_stubs 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":"dll/src/web/symbol_table.rs"},"region":{"startLine":2026}}}],"partialFingerprints":{"codehealthFindingId/v1":"76780cf0854f84da72c015d336122ec19102c96f9ea024cb0c9c85106d808bf7"}},{"ruleId":"D1","level":"warning","message":{"text":"Model::new (cyclomatic 24): Model::new 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":"doc/src/codegen/v2/lang_d/model.rs"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4a2370ea347bffe80e39ec357c5a12ee94d506ae2ffe60cc0e6fbf3fde4e8b7"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::reftest::regression::generate_diff_report (cyclomatic 24): azul_doc::reftest::regression::generate_diff_report 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. This shape REPEATS in the file: one other method here (azul_doc::reftest::regression::generate_diff_report_string) 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":"doc/src/reftest/regression.rs"},"region":{"startLine":958}}}],"partialFingerprints":{"codehealthFindingId/v1":"8caff27f63339ed4f278b673f2ad8f5d87b57c86504218ec43e469cdb87766a8"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::reftest::regression::generate_diff_report_string (cyclomatic 24): azul_doc::reftest::regression::generate_diff_report_string 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. This shape REPEATS in the file: one other method here (azul_doc::reftest::regression::generate_diff_report) 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":"doc/src/reftest/regression.rs"},"region":{"startLine":1748}}}],"partialFingerprints":{"codehealthFindingId/v1":"a094fa1998d12ded182a98227800bccde8279f3133d18be0fa73beb37629ff20"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_java::map_jvm_type (cyclomatic 24): azul_doc::codegen::v2::lang_java::map_jvm_type 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":"doc/src/codegen/v2/lang_java/mod.rs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"59c162e1e9c83323f7ca3011a6f9809446b115407f6a2fe7caf973107439f1ef"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_odin::map_type_to_odin (cyclomatic 24): azul_doc::codegen::v2::lang_odin::map_type_to_odin 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":"doc/src/codegen/v2/lang_odin/mod.rs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ef511e2ed993b9d75e618a3d63b75cce5fff7ce5bbfd2ef130adf82f147b07b"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_v::map_type_to_v (cyclomatic 24): azul_doc::codegen::v2::lang_v::map_type_to_v 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":"doc/src/codegen/v2/lang_v/mod.rs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6aed56fdc91fe6804aa5feefa87e5f155a5e00a4627de4d721cdf5968aa963d"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::dllgen::bundles::create_bindings_bundles (cyclomatic 24): azul_doc::dllgen::bundles::create_bindings_bundles 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":"doc/src/dllgen/bundles.rs"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca27b09bcea3f3b95445ff3febf6307e3b8f6f0a4e13df462b796cd43ab1d23c"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ocaml::map_type_to_ocaml (cyclomatic 24): azul_doc::codegen::v2::lang_ocaml::map_type_to_ocaml 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":"doc/src/codegen/v2/lang_ocaml/mod.rs"},"region":{"startLine":891}}}],"partialFingerprints":{"codehealthFindingId/v1":"758a1ddab13165fe8dc97adec63ec8a5729863aa634b88b19ed7f9bc0db85e04"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_julia::map_type_to_julia (cyclomatic 24): azul_doc::codegen::v2::lang_julia::map_type_to_julia 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":"doc/src/codegen/v2/lang_julia/mod.rs"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9cce8b1d43722b56f41f79c3930d986ec7426e0ddee016c816ae7a4206a1932"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_crystal::map_type_to_crystal (cyclomatic 24): azul_doc::codegen::v2::lang_crystal::map_type_to_crystal 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":"doc/src/codegen/v2/lang_crystal/mod.rs"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"f97b59abeb9c5b0db8f32e4dba4b98e4aa5bf3eba29962131586b1108cdd2e23"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_kotlin::wrappers::emit_wrapper (cyclomatic 24): azul_doc::codegen::v2::lang_kotlin::wrappers::emit_wrapper has cyclomatic complexity 24 (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":"doc/src/codegen/v2/lang_kotlin/wrappers.rs"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"31a10cd1713e1fe08ea691820f0d0a6c8af4361598fde909494941d0bd99343e"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_kotlin::wrappers::emit_instance_method (cyclomatic 24): azul_doc::codegen::v2::lang_kotlin::wrappers::emit_instance_method 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":"doc/src/codegen/v2/lang_kotlin/wrappers.rs"},"region":{"startLine":1735}}}],"partialFingerprints":{"codehealthFindingId/v1":"7736082faa5246f08f132c9542f6d88c490a77ce64b6f59a7a76580f3c720a41"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::doc_coverage::run (cyclomatic 24): azul_doc::doc_coverage::run has cyclomatic complexity 24 (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":"doc/src/doc_coverage/mod.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"84f63e3aba9503d4e90548e3e814de5d47bcfbd0171ee19470e1f226bbb85264"}},{"ruleId":"D1","level":"warning","message":{"text":"DisplayListGenerator::paint_node_background_and_border_inner (cyclomatic 24): DisplayListGenerator::paint_node_background_and_border_inner 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_layout::solver3::display_list::offset_display_item_y (cyclomatic 41) 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":"layout/src/solver3/display_list.rs"},"region":{"startLine":5889}}}],"partialFingerprints":{"codehealthFindingId/v1":"0eb1e1be1fffcb96a742082c9d322e8d335403c5211d4d5c25c2dbe310ab6877"}},{"ruleId":"D1","level":"warning","message":{"text":"DisplayListGenerator::paint_node_content_inner (cyclomatic 24): DisplayListGenerator::paint_node_content_inner 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_layout::solver3::display_list::offset_display_item_y (cyclomatic 41) 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":"layout/src/solver3/display_list.rs"},"region":{"startLine":6665}}}],"partialFingerprints":{"codehealthFindingId/v1":"c76d118e8969ad8e17f4f50415d6ffaa6bb43c2433e4920c92a8640ced5ee270"}},{"ruleId":"D1","level":"warning","message":{"text":"Ribbon::build_chrome (cyclomatic 24): Ribbon::build_chrome 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":"layout/src/widgets/ribbon.rs"},"region":{"startLine":3210}}}],"partialFingerprints":{"codehealthFindingId/v1":"69ae39dfe64a9547ce74584caf863b4e8e35675895878ed84b0eb0689f4509f8"}},{"ruleId":"D1","level":"warning","message":{"text":"LayoutWindow::select_next_occurrence (cyclomatic 24): LayoutWindow::select_next_occurrence 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":"layout/src/window.rs"},"region":{"startLine":13202}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4e826c48eddfedc6221ddaa20acb19912f417eb3ebd589da4ba6c323df99153"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::cpurender::raster::blit_sampled_image (cyclomatic 24): azul_layout::cpurender::raster::blit_sampled_image 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_layout::cpurender::raster::probe_label_for_item (cyclomatic 38) 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":"layout/src/cpurender/raster.rs"},"region":{"startLine":4727}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bfc42fca33c42dca0b4ae56edff858016f553a71e4d539ef6099d645ce03c2c"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::calc::evaluate_calc_ast (cyclomatic 24): azul_layout::solver3::calc::evaluate_calc_ast 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":"layout/src/solver3/calc.rs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cb68810410cb1d55d93ee0cf6d4b4258258e271942a24532e77446c4c5608b1"}},{"ruleId":"D1","level":"warning","message":{"text":"TileCacheInstance::post_update (cyclomatic 24): TileCacheInstance::post_update has cyclomatic complexity 24 (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":"webrender/core/src/picture.rs"},"region":{"startLine":3850}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b0424faae23d57a34668bf99c287011065da40ab3711843ac63798ad48af99c"}},{"ruleId":"D1","level":"warning","message":{"text":"TileNode::maybe_merge_or_split (cyclomatic 24): TileNode::maybe_merge_or_split has cyclomatic complexity 24 (threshold 15). Of this number, 23 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":"webrender/core/src/picture.rs"},"region":{"startLine":7714}}}],"partialFingerprints":{"codehealthFindingId/v1":"e97378c8f31602383d9781b502fd2a2950d5292bac4efa8311ed1d63251fd342"}},{"ruleId":"D1","level":"warning","message":{"text":"webrender::border::add_corner_segment (cyclomatic 24): webrender::border::add_corner_segment 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":"webrender/core/src/border.rs"},"region":{"startLine":1007}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a2cbdcc7bf55cb459ea76bdb6c93bf227c7f43521c9a3b46febd537501bfdc3"}},{"ruleId":"D1","level":"warning","message":{"text":"ctxCreateComponentFromSubtree (cyclomatic 24): ctxCreateComponentFromSubtree has cyclomatic complexity 24 (threshold 15). Of this number, 16 points are the body\u0027s own statements and 8 belong to 8 function items inside it that branch. 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":1943}}}],"partialFingerprints":{"codehealthFindingId/v1":"929b484e69bc5e03942a29cabea07d079bdc0c00b8a2f40e540811144ce8d906"}},{"ruleId":"D1","level":"warning","message":{"text":"CssPropertyCache::generate_tag_ids (cyclomatic 23): CssPropertyCache::generate_tag_ids 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. This is NOT this file\u0027s highest cyclomatic complexity: CssPropertyCache::resolve_property_dependency (cyclomatic 45) 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":"core/src/prop_cache.rs"},"region":{"startLine":1960}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ff7dc0410e0d2d5cbe31d9f6bad6f85c1f904eb205c172166d8370e54f4291e"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::tray::linux::sni_message (cyclomatic 23): azul_dll::desktop::tray::linux::sni_message 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":"dll/src/desktop/tray/linux.rs"},"region":{"startLine":418}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d0df629bd5abed578c801511f04870b54b2a602c7fddd1ab71e90a0536517c8"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::web::lift_audit::run (cyclomatic 23): azul_dll::web::lift_audit::run 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":"dll/src/web/lift_audit.rs"},"region":{"startLine":409}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d9c38529dbca170cb6596caa62adfae79490c13a4028975bf89cf1200c89427"}},{"ruleId":"D1","level":"warning","message":{"text":"AutofixPatch::to_api_patch_with_context (cyclomatic 23): AutofixPatch::to_api_patch_with_context 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":"doc/src/autofix/patch_format.rs"},"region":{"startLine":675}}}],"partialFingerprints":{"codehealthFindingId/v1":"7745db7115c89eef483d26cbb14a0a1c9f62670b75cafd52ec8cf45867c094eb"}},{"ruleId":"D1","level":"warning","message":{"text":"ConformancePlan::build (cyclomatic 23): ConformancePlan::build 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":"doc/src/codegen/v2/conformance/mod.rs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bf7891890a56b13f7d5bc8e9c679a72eab087af4ac37ace17ad875a2cedf79a"}},{"ruleId":"D1","level":"warning","message":{"text":"Cpp17Generator::generate_method_implementations (cyclomatic 23): Cpp17Generator::generate_method_implementations 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":"doc/src/codegen/v2/lang_cpp/cpp17.rs"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"db96426510237f410cf3105c424de19daf24aa6dd13626b3fa65d803ac06f537"}},{"ruleId":"D1","level":"warning","message":{"text":"Emitter::emit_accessor (cyclomatic 23): Emitter::emit_accessor 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":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":1300}}}],"partialFingerprints":{"codehealthFindingId/v1":"68a55232f8b090080a2f5e2b067d9b3db2745571454256f49792ba0fe324d760"}},{"ruleId":"D1","level":"warning","message":{"text":"RustGenerator::generate_transmute_trait_impls_enum (cyclomatic 23): RustGenerator::generate_transmute_trait_impls_enum 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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2963}}}],"partialFingerprints":{"codehealthFindingId/v1":"df23a2255a7c221664d5074d877c9f903fea1647a1a6082406656ea1883df423"}},{"ruleId":"D1","level":"warning","message":{"text":"Emitter::emit_option_traits (cyclomatic 23): Emitter::emit_option_traits 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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":2857}}}],"partialFingerprints":{"codehealthFindingId/v1":"d586af5da5f25b451bc3a0a066c0ae75c5d46d05c61298abf3115f7bb4371bd2"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::check_doc_characters (cyclomatic 23): azul_doc::autofix::check_doc_characters has cyclomatic complexity 23 (threshold 15). Of this number, 21 points are the body\u0027s own statements and 2 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. This is NOT this file\u0027s highest cyclomatic complexity: FfiSafetyWarningKind::is_critical (cyclomatic 27) 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":"doc/src/autofix/mod.rs"},"region":{"startLine":3093}}}],"partialFingerprints":{"codehealthFindingId/v1":"82c1d4fd69ed98784db8f2f8563b952bf25cef98569923b25a88a0557d2ea022"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ada::map_type_to_ada (cyclomatic 23): azul_doc::codegen::v2::lang_ada::map_type_to_ada 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":"doc/src/codegen/v2/lang_ada/mod.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ea1633af83ae51ea7a55bcc57c2359a4dadea998d4699f6343537fdc4519f94"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_haskell::wrappers::emit_class_functions (cyclomatic 23): azul_doc::codegen::v2::lang_haskell::wrappers::emit_class_functions 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":"doc/src/codegen/v2/lang_haskell/wrappers.rs"},"region":{"startLine":1932}}}],"partialFingerprints":{"codehealthFindingId/v1":"98bf90b022e6075b452ca1191642ad91d1342b2b0e1a8138719270bcd882e880"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_cpp::common::generate_freefn_trait_helpers (cyclomatic 23): azul_doc::codegen::v2::lang_cpp::common::generate_freefn_trait_helpers 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_doc::codegen::v2::lang_cpp::common::primitive_to_c (cyclomatic 27) 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":"doc/src/codegen/v2/lang_cpp/common.rs"},"region":{"startLine":2965}}}],"partialFingerprints":{"codehealthFindingId/v1":"13901903a6d22e6bc9dadcc2e8f3596f9246b02272eebc1f87f2003ede96d41d"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_go::wrappers::emit_instance_method (cyclomatic 23): azul_doc::codegen::v2::lang_go::wrappers::emit_instance_method 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":"doc/src/codegen/v2/lang_go/wrappers.rs"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"700ed10580fcc17b65923642d327dd0547d4dbbf614f5a8a144874703da2642f"}},{"ruleId":"D1","level":"warning","message":{"text":"ParsedFont::from_provider (cyclomatic 23): ParsedFont::from_provider has cyclomatic complexity 23 (threshold 15). Of this number, 21 points are the body\u0027s own statements and 2 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":"layout/src/font.rs"},"region":{"startLine":1011}}}],"partialFingerprints":{"codehealthFindingId/v1":"47eb8d64e798566cb18c886ce25084bd0699773701ad5e2a6903d5f50f463bfc"}},{"ruleId":"D1","level":"warning","message":{"text":"DenseText::from_unified_with_content (cyclomatic 23): DenseText::from_unified_with_content 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":"layout/src/text3/dense.rs"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"1656c824de34b08391f7693feeb34a56943e8d11e303d59e0e2c0a8c3e8a5271"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::dom_lint::collect_findings (cyclomatic 23): azul_layout::dom_lint::collect_findings 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":"layout/src/dom_lint.rs"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d60b8ae55a012195806659000c74acccffdbbfbada2a2ff6477ab39d324caa7"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::fc::calculate_column_widths_auto_with_width (cyclomatic 23): azul_layout::solver3::fc::calculate_column_widths_auto_with_width 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":"layout/src/solver3/fc.rs"},"region":{"startLine":7238}}}],"partialFingerprints":{"codehealthFindingId/v1":"9654f2aca2195c93314ee3e7e9ebdc2d3e305493dc4413f339015e5689e759dd"}},{"ruleId":"D1","level":"warning","message":{"text":"Tile::post_update (cyclomatic 23): Tile::post_update 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. This is NOT this file\u0027s highest cyclomatic complexity: PictureCompositeMode::kind (cyclomatic 24) 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":"webrender/core/src/picture.rs"},"region":{"startLine":1117}}}],"partialFingerprints":{"codehealthFindingId/v1":"78d30d4efd346197e2c871e5695edb68e17ce3b8b2949f6e14170d1fc64e02b1"}},{"ruleId":"D1","level":"warning","message":{"text":"debugger._parseSlashCommand (cyclomatic 23): debugger._parseSlashCommand 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":4753}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9a457c30e244a71536bab3d267d5434d9c93f45897311512f89da2bc85dd63b"}},{"ruleId":"D1","level":"warning","message":{"text":"azul-search.renderResults (cyclomatic 23): azul-search.renderResults 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":"doc/templates/azul-search.js"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6cb2375918bae2985d64ed93bed826b8c411c04ebe358d182bdcd433d03a6a8"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_core::prop_cache::clone_inheritable_property (cyclomatic 22): azul_core::prop_cache::clone_inheritable_property has cyclomatic complexity 22 (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: CssPropertyCache::resolve_property_dependency (cyclomatic 45) 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":"core/src/prop_cache.rs"},"region":{"startLine":1493}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f8f348f7f576822261145dae4441af0674841a7be73f1ebed7b5d2e2b856447"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::extra::video_codec::videotoolbox::enc_output (cyclomatic 22): azul_dll::desktop::extra::video_codec::videotoolbox::enc_output 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":"dll/src/desktop/extra/video_codec/videotoolbox.rs"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"1236b98aa6b23d5e1ec2c85738534e5d48db9777ce3c5951ee12ccc9c5d3e064"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::common::capability_pump::pump (cyclomatic 22): azul_dll::desktop::shell2::common::capability_pump::pump has cyclomatic complexity 22 (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":"dll/src/desktop/shell2/common/capability_pump.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"00c2f1dfdaeecb9075098031703e06137124b9905fedd0f76de0c06fb2fddcf0"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::extra::camera::v4l2::open (cyclomatic 22): azul_dll::desktop::extra::camera::v4l2::open has cyclomatic complexity 22 (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":"dll/src/desktop/extra/camera/v4l2.rs"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"728fa787f44898fa87e9661829b62cce9b1dd6476f0f0ad83851010657d72944"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::common::layout::apply_runtime_states_before_layout (cyclomatic 22): azul_dll::desktop::shell2::common::layout::apply_runtime_states_before_layout 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":"dll/src/desktop/shell2/common/layout.rs"},"region":{"startLine":1760}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb42995957ce142a4f329b45ec7cbb62984b99aa7a4040c6c6be2801324fe481"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::reloc_templateize (cyclomatic 22): azul_dll::web::transpiler_remill::reloc_templateize 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_dll::web::transpiler_remill::signature_for_eventloop_fn (cyclomatic 24) 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":7935}}}],"partialFingerprints":{"codehealthFindingId/v1":"596d04050695d34ef5cbe4b81640a44abbf7a04ec6c154b6ac5116db0cac8bd6"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::emit_helper_ir (cyclomatic 22): azul_dll::web::transpiler_remill::emit_helper_ir 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_dll::web::transpiler_remill::signature_for_eventloop_fn (cyclomatic 24) 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":9373}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0c04599244b6fa6a5c2b9e5c9569fb216e3247d6f75ed6b1a3fd8c616d086d5"}},{"ruleId":"D1","level":"warning","message":{"text":"PythonGenerator::is_python_compatible_type (cyclomatic 22): PythonGenerator::is_python_compatible_type has cyclomatic complexity 22 (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":"doc/src/codegen/v2/lang_python.rs"},"region":{"startLine":4009}}}],"partialFingerprints":{"codehealthFindingId/v1":"29d5f497047632d94c3818523970ce8e37be2ef78a2a2bfe0f92e1eb4bf10f67"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_powershell::cmdlets::pick_verb (cyclomatic 22): azul_doc::codegen::v2::lang_powershell::cmdlets::pick_verb has cyclomatic complexity 22 (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":"doc/src/codegen/v2/lang_powershell/cmdlets.rs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"f46a62c0c5921beb3ee2b3d4bda0315e17f610d5216bf10556f563436f13dfea"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::type_resolver::extract_functions_from_items (cyclomatic 22): azul_doc::autofix::type_resolver::extract_functions_from_items 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":"doc/src/autofix/type_resolver.rs"},"region":{"startLine":601}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b50121d9a5d7453e98cbbba9b6cf70de093a00a982ddbdbb864f92616280f93"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::estimate_type_size_align_by_name (cyclomatic 22): azul_doc::autofix::estimate_type_size_align_by_name 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. This is NOT this file\u0027s highest cyclomatic complexity: FfiSafetyWarningKind::is_critical (cyclomatic 27) 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":"doc/src/autofix/mod.rs"},"region":{"startLine":1604}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cf11b6ad4fb9b3cdbe18acb4747445b8b81978b9969cbecea8cc6563dc99462"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_lua::wrappers::emit_instance_method (cyclomatic 22): azul_doc::codegen::v2::lang_lua::wrappers::emit_instance_method has cyclomatic complexity 22 (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":"doc/src/codegen/v2/lang_lua/wrappers.rs"},"region":{"startLine":785}}}],"partialFingerprints":{"codehealthFindingId/v1":"710c7d0cc2f1cfd754d5bee8d0f18943cf96cd4ac12574930eef4d92fd73b824"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_cobol::types::pic_for_type (cyclomatic 22): azul_doc::codegen::v2::lang_cobol::types::pic_for_type 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":"doc/src/codegen/v2/lang_cobol/types.rs"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"e25b51db8cfeff49916f8d572fcb6695663ebbb7b6161997f63528e71aff0f77"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ruby::types::emit_tagged_union (cyclomatic 22): azul_doc::codegen::v2::lang_ruby::types::emit_tagged_union 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_doc::codegen::v2::lang_ruby::types::primitive_to_ffi_symbol (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":"doc/src/codegen/v2/lang_ruby/types.rs"},"region":{"startLine":564}}}],"partialFingerprints":{"codehealthFindingId/v1":"980a9e4d1071b4bdcf725a18d0a2332984fc596ec1d7143f549d1a07d7c31cd3"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::utils::analyze::has_recursive_destructor_inner (cyclomatic 22): azul_doc::utils::analyze::has_recursive_destructor_inner 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":"doc/src/utils/analyze.rs"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"dac58c939887fa4606a3c09dff89053a4cf7257220b712237470e95792060416"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::reftest::apply_midlevel::process_stream_events (cyclomatic 22): azul_doc::reftest::apply_midlevel::process_stream_events 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":"doc/src/reftest/apply_midlevel.rs"},"region":{"startLine":2454}}}],"partialFingerprints":{"codehealthFindingId/v1":"71a4ad5b714926c1b756c53256a377379fdc5523ae66734912cf899ea9cee456"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_haskell::types::map_owned_type (cyclomatic 22): azul_doc::codegen::v2::lang_haskell::types::map_owned_type 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":"doc/src/codegen/v2/lang_haskell/types.rs"},"region":{"startLine":1082}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b3f6dfd61b24692e8af5e264a394b06cef277d8be5d3219a4d85b0608b30a86"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_csharp::types::generate_tagged_union (cyclomatic 22): azul_doc::codegen::v2::lang_csharp::types::generate_tagged_union 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":"doc/src/codegen/v2/lang_csharp/types.rs"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"65870bf415a8f1c79c436e79549abcd1f0aeb8a93fcc296c042e387b34e82ca8"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_csharp::types::emit_vec_to_list_cs (cyclomatic 22): azul_doc::codegen::v2::lang_csharp::types::emit_vec_to_list_cs 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":"doc/src/codegen/v2/lang_csharp/types.rs"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"06c3414939c42d7b5ec2cc8edb1fe4c2e56d690e3c2a9853582f95551b7a0d74"}},{"ruleId":"D1","level":"warning","message":{"text":"LayoutWindow::apply_one_text_changeset (cyclomatic 22): LayoutWindow::apply_one_text_changeset has cyclomatic complexity 22 (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":"layout/src/window.rs"},"region":{"startLine":16478}}}],"partialFingerprints":{"codehealthFindingId/v1":"62d30c2f7f1fcb85d86267a07597fff0a93e24940e29a75b2e985eb4af41c8e2"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::window::compile_keyframes_track (cyclomatic 22): azul_layout::window::compile_keyframes_track 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":"layout/src/window.rs"},"region":{"startLine":25066}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb1df67c7c3446b2881b12fc52a386ae01c13bcde51e49cdd0ea1a59d8ad7465"}},{"ruleId":"D1","level":"warning","message":{"text":"SwCompositor::occlude_surfaces (cyclomatic 22): SwCompositor::occlude_surfaces has cyclomatic complexity 22 (threshold 15). Of this number, 16 points are the body\u0027s own statements and 6 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":"webrender/core/src/compositor/sw_compositor.rs"},"region":{"startLine":840}}}],"partialFingerprints":{"codehealthFindingId/v1":"6536c0941db5ba886a107d582a1a2e922544624ce95fdd06c860d1dbc91d02d5"}},{"ruleId":"D1","level":"warning","message":{"text":"Shaders::new (cyclomatic 22): Shaders::new 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":"webrender/core/src/renderer/shade.rs"},"region":{"startLine":630}}}],"partialFingerprints":{"codehealthFindingId/v1":"61206d2a82aff1aea63f85f52f20828f857b9cc53a09c742f06286ff754af9a3"}},{"ruleId":"D1","level":"warning","message":{"text":"SegmentBuilder::build (cyclomatic 22): SegmentBuilder::build 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":"webrender/core/src/segment.rs"},"region":{"startLine":458}}}],"partialFingerprints":{"codehealthFindingId/v1":"006a026742a0c8db1fdbd64baaefe89d314d52519f8d255dad3408e39d27886c"}},{"ruleId":"D1","level":"warning","message":{"text":"renderNodeDetail (cyclomatic 22): renderNodeDetail has cyclomatic complexity 22 (threshold 15). Of this number, 21 points are the body\u0027s own statements and 1 belongs to 2 function literals 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":795}}}],"partialFingerprints":{"codehealthFindingId/v1":"0279e0c550ca56586dbb2eaae2b755bb4f6af76c193ef74fbe09df5eab1011d6"}},{"ruleId":"D1","level":"warning","message":{"text":"_loadComponentPreview (cyclomatic 22): _loadComponentPreview has cyclomatic complexity 22 (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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":2590}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0e891a67ddb4a9596752975df78fcc5ebebb2547e8d4691c97fc57dbac2fcc9"}},{"ruleId":"D1","level":"warning","message":{"text":"open (cyclomatic 22): open has cyclomatic complexity 22 (threshold 15). Most of this is not in the body itself: 8 of the 22 points are its own statements and the rest belongs to 8 function literals inside it that branch (lines 4452, 4507, 4417, \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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":4400}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d0f1578af22a279ad7a101d1c44ef90818c5a86abaf694732b2fe40cd637223"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_core::events::handle_key_down (cyclomatic 21): azul_core::events::handle_key_down 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: azul_core::events::matches_window_filter (cyclomatic 86) 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":"core/src/events.rs"},"region":{"startLine":5081}}}],"partialFingerprints":{"codehealthFindingId/v1":"e862c9b28c24a78b029e0e4e2d56b3e2e68eba3e40f41309033d44bbb41043de"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_core::xml::user_defined_render_fn (cyclomatic 21): azul_core::xml::user_defined_render_fn 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: azul_core::xml::tag_to_node_type (cyclomatic 170) 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":"core/src/xml.rs"},"region":{"startLine":2993}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c0ed5bb065ce2fb622f507b9091a6e5390fca0616bc92e8b5dfd5473998ee99"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_core::xml::group_matches (cyclomatic 21): azul_core::xml::group_matches 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: azul_core::xml::tag_to_node_type (cyclomatic 170) 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":"core/src/xml.rs"},"region":{"startLine":7140}}}],"partialFingerprints":{"codehealthFindingId/v1":"82b6a7023e76bac50ec1289cab7c9519d39f5274a1e9a9d32e244faa6d44bd66"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_core::xml::serde_impl::string_to_field_type (cyclomatic 21): azul_core::xml::serde_impl::string_to_field_type 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: azul_core::xml::tag_to_node_type (cyclomatic 170) 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":"core/src/xml.rs"},"region":{"startLine":2093}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e6bc0b48d2987e6bbd0a3df0a1573695d47f688c2a622e686d5b1317574b633"}},{"ruleId":"D1","level":"warning","message":{"text":"PixelValue::resolve_with_context (cyclomatic 21): PixelValue::resolve_with_context 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":"css/src/props/basic/pixel.rs"},"region":{"startLine":609}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc5351431bc9d5d2adb72100972a0a9967874dcffc3b0e314843be5391bbc7eb"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_css::props::basic::animation::parse_style_animation (cyclomatic 21): azul_css::props::basic::animation::parse_style_animation 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":"css/src/props/basic/animation.rs"},"region":{"startLine":2720}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6e18d68200ff59896080e04705ff284728db432855b5a5e711e11f162a30073"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_css::props::style::filter::parser::parse_style_filter (cyclomatic 21): azul_css::props::style::filter::parser::parse_style_filter 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":"css/src/props/style/filter.rs"},"region":{"startLine":707}}}],"partialFingerprints":{"codehealthFindingId/v1":"5060ce335a537893497270954e0adf6f54d2d8dfec8f8b4d68d204f05e895b43"}},{"ruleId":"D1","level":"warning","message":{"text":"MacOSWindow::apply_background_material (cyclomatic 21): MacOSWindow::apply_background_material 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: azul_dll::desktop::shell2::macos::macos_event_name (cyclomatic 24) 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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":6875}}}],"partialFingerprints":{"codehealthFindingId/v1":"d56ef9048511a5ebdc1825d8cd191774c68240594ecf5075640734cead992ad1"}},{"ruleId":"D1","level":"warning","message":{"text":"SymbolTable::assign_synthetic_addresses (cyclomatic 21): SymbolTable::assign_synthetic_addresses has cyclomatic complexity 21 (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":"dll/src/web/symbol_table.rs"},"region":{"startLine":756}}}],"partialFingerprints":{"codehealthFindingId/v1":"82c93d6e3ab012ed1ca13de0a940659a352c36e2b7c36babcba8e28e1fa759de"}},{"ruleId":"D1","level":"warning","message":{"text":"RemillTranspiler::lift_fn (cyclomatic 21): RemillTranspiler::lift_fn 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: azul_dll::web::transpiler_remill::signature_for_eventloop_fn (cyclomatic 24) 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":1013}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c4099667fa2b71f09220c1ae7f65894af7c7352cd1b458833727a2dadbdadef"}},{"ruleId":"D1","level":"warning","message":{"text":"RemillTranspiler::emit_indirect_dispatcher_obj (cyclomatic 21): RemillTranspiler::emit_indirect_dispatcher_obj 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: azul_dll::web::transpiler_remill::signature_for_eventloop_fn (cyclomatic 24) 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":3039}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbcb4954bf810b7c2f242b75027f7319cb267809497924dc5223f78ab1acede5"}},{"ruleId":"D1","level":"warning","message":{"text":"CPUView::update_framebuffer (cyclomatic 21): CPUView::update_framebuffer has cyclomatic complexity 21 (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. This is NOT this file\u0027s highest cyclomatic complexity: azul_dll::desktop::shell2::macos::macos_event_name (cyclomatic 24) 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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":2650}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b86dfc5ca54132dfdb6758c0c3e404bf62b27aa059d8cccd5b5972a62148a64"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::build_link::link_shared (cyclomatic 21): azul_dll::build_link::link_shared has cyclomatic complexity 21 (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":"dll/build_link.rs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcf5c80b8a2afcfd37e84ee24d3c6d031f69b8ce23182ca071b91db569c5aea4"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::display::linux::wayland::try_wlr_randr (cyclomatic 21): azul_dll::desktop::display::linux::wayland::try_wlr_randr 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":"dll/src/desktop/display.rs"},"region":{"startLine":1298}}}],"partialFingerprints":{"codehealthFindingId/v1":"53f28e3222e064ed80642d106797b62b57f1b3f3db4bdc6318b444ca4f8b750c"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::native_screenshot::take_native_screenshot_kwin_bytes (cyclomatic 21): azul_dll::desktop::native_screenshot::take_native_screenshot_kwin_bytes 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":"dll/src/desktop/native_screenshot.rs"},"region":{"startLine":528}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf1a18008ff3a47fe35074f2e15a9758583207c112939a6efcf02c68ff7c67f9"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::wayland::events::seat_capabilities_handler (cyclomatic 21): azul_dll::desktop::shell2::linux::wayland::events::seat_capabilities_handler 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":"dll/src/desktop/shell2/linux/wayland/events.rs"},"region":{"startLine":3073}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc64a8e950161ebd61dfe8689c2c564cdc9ce8ab2335b1a074ee473f6168f58a"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::wayland::events::xdg_toplevel_configure_handler (cyclomatic 21): azul_dll::desktop::shell2::linux::wayland::events::xdg_toplevel_configure_handler 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":"dll/src/desktop/shell2/linux/wayland/events.rs"},"region":{"startLine":3504}}}],"partialFingerprints":{"codehealthFindingId/v1":"384d2072067a5324f4bc9e7143b77c1074f94b7409c94eef21ad4bfd26830d6d"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::web::config::parse_web_config (cyclomatic 21): azul_dll::web::config::parse_web_config 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":"dll/src/web/config.rs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2ca6177890ef86f5a9644230625098d25104ea81797dea0e001fce28697eba0"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::extra::sqlite::sync::run (cyclomatic 21): azul_dll::desktop::extra::sqlite::sync::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":"dll/src/desktop/extra/sqlite/mod.rs"},"region":{"startLine":1664}}}],"partialFingerprints":{"codehealthFindingId/v1":"63586835dae2e0f3dca7585b5db7b5e05af4ae0a54cdb8b83edc3db2a9188b91"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::windows::wcreate::create_gl_context (cyclomatic 21): azul_dll::desktop::shell2::windows::wcreate::create_gl_context 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":"dll/src/desktop/shell2/windows/wcreate.rs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"baaec10ede40b73a64dd089e0c779b76f3b3f4f202d4d943f60c41837377636c"}},{"ruleId":"D1","level":"warning","message":{"text":"RustGenerator::generate_transmute_trait_impls (cyclomatic 21): RustGenerator::generate_transmute_trait_impls has cyclomatic complexity 21 (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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2733}}}],"partialFingerprints":{"codehealthFindingId/v1":"6989c01bc1aec546404fc05a88050824a6285aa0226672f707dc20dbc01a8635"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::type_index::extract_type_name (cyclomatic 21): azul_doc::autofix::type_index::extract_type_name 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":"doc/src/autofix/type_index.rs"},"region":{"startLine":1446}}}],"partialFingerprints":{"codehealthFindingId/v1":"53c41e73513f5cd0c423eb7cb249ac98074749c182d89e9a22a81fd66c0357e0"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::generate_release_pages (cyclomatic 21): azul_doc::generate_release_pages 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":"doc/src/main.rs"},"region":{"startLine":2354}}}],"partialFingerprints":{"codehealthFindingId/v1":"75b290281c515281f126f6e45b1d4aef98844d1cb887f2295a8736643090fa8f"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_smalltalk::map_type_to_uffi (cyclomatic 21): azul_doc::codegen::v2::lang_smalltalk::map_type_to_uffi 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":"doc/src/codegen/v2/lang_smalltalk/mod.rs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"c00a6bfcac687ac4a07f5f2099508fde25cf8643f3d47bc263e2ce6cf6aa3ce0"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_lisp::types::emit_monomorphized_alias (cyclomatic 21): azul_doc::codegen::v2::lang_lisp::types::emit_monomorphized_alias has cyclomatic complexity 21 (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":"doc/src/codegen/v2/lang_lisp/types.rs"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"e943fd805acdc26631f515fc0b3de9a5639004da3244aa5fe7ab709fb4368bdc"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::reftest::autodebug::analyze_pixel_diff (cyclomatic 21): azul_doc::reftest::autodebug::analyze_pixel_diff 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":"doc/src/reftest/autodebug.rs"},"region":{"startLine":601}}}],"partialFingerprints":{"codehealthFindingId/v1":"2502210182dbc9bbf02003bf32c985e1356fe2b414089306b9c41417e295f59f"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::reftest::autodebug::parse_autodebug_args (cyclomatic 21): azul_doc::reftest::autodebug::parse_autodebug_args 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":"doc/src/reftest/autodebug.rs"},"region":{"startLine":1907}}}],"partialFingerprints":{"codehealthFindingId/v1":"f16da270cf15e24223b1c8d105c38b2ce0b783965bf92c3cf3db35fdbb2daed4"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_kotlin::managed::emit_kt_data_typed_invoker_sam (cyclomatic 21): azul_doc::codegen::v2::lang_kotlin::managed::emit_kt_data_typed_invoker_sam has cyclomatic complexity 21 (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":"doc/src/codegen/v2/lang_kotlin/managed.rs"},"region":{"startLine":726}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7238da31cc8d8fbe44f8e0092f2ae597c30e7259f5cdf8a99ebb59ddf2a28c4"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::reftest::autodoc::run_autodoc_check (cyclomatic 21): azul_doc::reftest::autodoc::run_autodoc_check 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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":1190}}}],"partialFingerprints":{"codehealthFindingId/v1":"79c5734071a85391a089c25278c0eacf3f980b86363e53cc65b600681ca088b8"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::reftest::autodoc::expand_azul_render_blocks (cyclomatic 21): azul_doc::reftest::autodoc::expand_azul_render_blocks has cyclomatic complexity 21 (threshold 15). Of this number, 20 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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":1864}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb377764bd5061ed61ba3da9cbdd128d48d3f354a25073f2ecf59e1e362b75ee"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_cpp::cpp20::generate_method_implementations_shared (cyclomatic 21): azul_doc::codegen::v2::lang_cpp::cpp20::generate_method_implementations_shared 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":"doc/src/codegen/v2/lang_cpp/cpp20.rs"},"region":{"startLine":990}}}],"partialFingerprints":{"codehealthFindingId/v1":"43f0b428d880bff49aa9698748dd931adc346db76f5b596c423bcf44fd7f597e"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_fortran::types::generate_types_for (cyclomatic 21): azul_doc::codegen::v2::lang_fortran::types::generate_types_for 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":"doc/src/codegen/v2/lang_fortran/types.rs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd44b873feb117cbdc8124442cc4a6a696fc7861bd78e206216a33dc086cc716"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::function_diff::find_function_differences (cyclomatic 21): azul_doc::autofix::function_diff::find_function_differences 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":"doc/src/autofix/function_diff.rs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"97f92d3ff01f5d2abd6912df0b22ed93c607f6a24370d8d71e1daed65df61e6b"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::reftest::apply_midlevel::parse_args (cyclomatic 21): azul_doc::reftest::apply_midlevel::parse_args has cyclomatic complexity 21 (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":"doc/src/reftest/apply_midlevel.rs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"0892614dbcc545ce0109fb7fd4e586a58b0f6e449c0031bacbbee37053068f0a"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::diff::check_vec_functions (cyclomatic 21): azul_doc::autofix::diff::check_vec_functions has cyclomatic complexity 21 (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":"doc/src/autofix/diff.rs"},"region":{"startLine":2627}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c63499e81fdd3fe1c1c4439ccf2431bc2e021bc5f34f235325d78f8e917a2d0"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::patch::apply_version_patch (cyclomatic 21): azul_doc::patch::apply_version_patch 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":"doc/src/patch/mod.rs"},"region":{"startLine":906}}}],"partialFingerprints":{"codehealthFindingId/v1":"445aecec4c2c2b675dbc12686783fed3de35df14eb86a1bbd565a622fbf6a065"}},{"ruleId":"D1","level":"warning","message":{"text":"DisplayListGenerator::paint_scrollbars (cyclomatic 21): DisplayListGenerator::paint_scrollbars 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: azul_layout::solver3::display_list::offset_display_item_y (cyclomatic 41) 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":"layout/src/solver3/display_list.rs"},"region":{"startLine":7128}}}],"partialFingerprints":{"codehealthFindingId/v1":"248d32eab7e6c31ed2ad6641eb7c6106ced2b048e323224e040f267ecc95a666"}},{"ruleId":"D1","level":"warning","message":{"text":"LayoutWindow::get_selected_content_for_clipboard (cyclomatic 21): LayoutWindow::get_selected_content_for_clipboard 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":"layout/src/window.rs"},"region":{"startLine":20281}}}],"partialFingerprints":{"codehealthFindingId/v1":"02699f0d2b23cfecf15c292439442537f4602739f2188ac67a023563fca47b1f"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::cpurender::raster::render_display_list_damaged (cyclomatic 21): azul_layout::cpurender::raster::render_display_list_damaged 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: azul_layout::cpurender::raster::probe_label_for_item (cyclomatic 38) 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":"layout/src/cpurender/raster.rs"},"region":{"startLine":1559}}}],"partialFingerprints":{"codehealthFindingId/v1":"8245996fae66893205e51f7961653f720289c51bd2819301bf5a8e187a915f68"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::form::validate_form (cyclomatic 21): azul_layout::form::validate_form 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":"layout/src/form.rs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"b43b709b76bfebada3693f9f4a542b312257e3bce7ecf15804a291551e4d751f"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::cpurender::compositor::scroll_shift_region_impl (cyclomatic 21): azul_layout::cpurender::compositor::scroll_shift_region_impl 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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":1500}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa8b902f5f9e3872abeeafb26f7246b7a8fefaf72d8a20aba913ca1c76848a5e"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::cpurender::compositor::windowed_structural_damage (cyclomatic 21): azul_layout::cpurender::compositor::windowed_structural_damage 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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":2811}}}],"partialFingerprints":{"codehealthFindingId/v1":"28c38041c5e9c3df21e666f2e5afbe3fe7e418c112e33af6fa04033551d7d058"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::positioning::adjust_sticky_positions (cyclomatic 21): azul_layout::solver3::positioning::adjust_sticky_positions 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":"layout/src/solver3/positioning.rs"},"region":{"startLine":1171}}}],"partialFingerprints":{"codehealthFindingId/v1":"cea2febdbe6bb09df04e69d65c37bbad4cfda5c98e11ed3afd556d34977c40a9"}},{"ruleId":"D1","level":"warning","message":{"text":"TileCacheInstance::setup_compositor_surfaces_impl (cyclomatic 21): TileCacheInstance::setup_compositor_surfaces_impl 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: PictureCompositeMode::kind (cyclomatic 24) 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":"webrender/core/src/picture.rs"},"region":{"startLine":2710}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7e7dd8711ede781546078e6e4c619a3545b0913c98fd2fe66a9096843fe5fd8"}},{"ruleId":"D1","level":"warning","message":{"text":"Renderer::update_texture_cache (cyclomatic 21): Renderer::update_texture_cache 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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":1796}}}],"partialFingerprints":{"codehealthFindingId/v1":"7056a25faf8025b247c1d127a0b860f8f80ca58bebbafe9559f7f3fac26219c7"}},{"ruleId":"D1","level":"warning","message":{"text":"Renderer::draw_color_target (cyclomatic 21): Renderer::draw_color_target has cyclomatic complexity 21 (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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":3568}}}],"partialFingerprints":{"codehealthFindingId/v1":"51591f1f56789f349187f32c9f1fd7055346ec5451cb250ff382d529e4fe657e"}},{"ruleId":"D1","level":"warning","message":{"text":"Shaders::get (cyclomatic 21): Shaders::get 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":"webrender/core/src/renderer/shade.rs"},"region":{"startLine":1182}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8bcecaccce665554f18c6279b23bf86f7abc08187f011f7be3ca15d47e990e4"}},{"ruleId":"D1","level":"warning","message":{"text":"ResourceCache::save_capture (cyclomatic 21): ResourceCache::save_capture 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":"webrender/core/src/resource_cache.rs"},"region":{"startLine":1931}}}],"partialFingerprints":{"codehealthFindingId/v1":"52586ca52bd6f4fdad6fcdc946f1264ee2b1148e2ca927612332a6d2abf63911"}},{"ruleId":"D1","level":"warning","message":{"text":"SceneBuilder::push_stacking_context (cyclomatic 21): SceneBuilder::push_stacking_context has cyclomatic complexity 21 (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":"webrender/core/src/scene_building.rs"},"region":{"startLine":1972}}}],"partialFingerprints":{"codehealthFindingId/v1":"bab31ea3e2e37b9a89b10cacbff77187a151372a4250ec809c22babf7661d989"}},{"ruleId":"D1","level":"warning","message":{"text":"SpatialNode::calculate_sticky_offset (cyclomatic 21): SpatialNode::calculate_sticky_offset 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":"webrender/core/src/spatial_node.rs"},"region":{"startLine":607}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7e93b17d1c5560a4b099593197b435e557a09e22867b49c6f4e10f618da03e4"}},{"ruleId":"D1","level":"warning","message":{"text":"AttribLocations::get_loc (cyclomatic 21): AttribLocations::get_loc has cyclomatic complexity 21 (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":"webrender/swgl/src/shaders/cs_border_segment.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"40672f70f2347633f4463fe19891a5ba61e1f50e05eb51440e3dacf20ba940f6"}},{"ruleId":"D1","level":"warning","message":{"text":"AttribLocations::get_loc (cyclomatic 21): AttribLocations::get_loc has cyclomatic complexity 21 (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":"webrender/swgl/src/shaders/cs_border_solid.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb7088842fa5a545863d722019c16da1255b9e1c471588530a3bc39315b139da"}},{"ruleId":"D1","level":"warning","message":{"text":"AttribLocations::get_loc (cyclomatic 21): AttribLocations::get_loc has cyclomatic complexity 21 (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":"webrender/swgl/src/shaders/cs_clip_box_shadow_texture_2d.rs"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"62030db2bda67de1e54b58e77c5c5660c983b5110a9f2c6d74581b594d2347a2"}},{"ruleId":"D1","level":"warning","message":{"text":"analyze_coverage.main (cyclomatic 21): analyze_coverage.main has cyclomatic complexity 21 (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":"scripts/analyze_coverage.py"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1db2a13ba745122f7b62b87ba4751ff53b8f90885ef3f9469324a737e7f5a0b"}},{"ruleId":"D1","level":"warning","message":{"text":"init (cyclomatic 21): init 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"88489ef223a57ec033239378ce0b117d8d9cc71f7d36ece794942cd22b6ce0e9"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_core::styled_dom::is_layout_equivalent (cyclomatic 20): azul_core::styled_dom::is_layout_equivalent 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":"core/src/styled_dom.rs"},"region":{"startLine":3281}}}],"partialFingerprints":{"codehealthFindingId/v1":"edc926a6fa03626235dad5b7b686821f7e69f6105c0432107fb14e0cd6e67e80"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_core::resources::build_add_font_resource_updates (cyclomatic 20): azul_core::resources::build_add_font_resource_updates 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":"core/src/resources.rs"},"region":{"startLine":3669}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0e6de04366a27261373bd7a546b4572ca786a9dc0119f6f983fb96048b8a3cc"}},{"ruleId":"D1","level":"warning","message":{"text":"WaylandWindow::handle_tablet_frame (cyclomatic 20): WaylandWindow::handle_tablet_frame 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":4259}}}],"partialFingerprints":{"codehealthFindingId/v1":"50934dc03cbc76189933580a63aa6f2a05be695a506ed824c91193bd2787f690"}},{"ruleId":"D1","level":"warning","message":{"text":"WaylandWindow::handle_seat_pointer_button (cyclomatic 20): WaylandWindow::handle_seat_pointer_button 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":6124}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6fbbf7161043578d8b03ce63b9e550ad51a339384ca99fd70c89ce905076ec1"}},{"ruleId":"D1","level":"warning","message":{"text":"WaylandWindow::sync_window_state (cyclomatic 20): WaylandWindow::sync_window_state 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":6656}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d4f697019360dee569cc4b32dc6fcbc14690a9c81e208daba89ea69ba3b6fee"}},{"ruleId":"D1","level":"warning","message":{"text":"X11Window::handle_keyboard (cyclomatic 20): X11Window::handle_keyboard 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: azul_dll::desktop::shell2::linux::x11::events::keysym_to_virtual_keycode (cyclomatic 131) 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":"dll/src/desktop/shell2/linux/x11/events.rs"},"region":{"startLine":1002}}}],"partialFingerprints":{"codehealthFindingId/v1":"4db8901e4062d67bacbf2a949fe3c60c8a469fa94f63246b76fe6f7163bee947"}},{"ruleId":"D1","level":"warning","message":{"text":"MacOSWindow::handle_scroll_wheel (cyclomatic 20): MacOSWindow::handle_scroll_wheel 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":"dll/src/desktop/shell2/macos/events.rs"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d156c3f6cf04e8dfba6a397b65d640b6eda6c6534d97d97d53367c8124d2f57"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::macos::system_style::discover_macos_cli_extras (cyclomatic 20): azul_dll::desktop::shell2::macos::system_style::discover_macos_cli_extras 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":"dll/src/desktop/shell2/macos/system_style.rs"},"region":{"startLine":591}}}],"partialFingerprints":{"codehealthFindingId/v1":"86efbf436259efc6b54808d67cb5e970bc82f82ec4aad38d5baa1049d736276f"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::build_link::configure_dynamic_linking (cyclomatic 20): azul_dll::build_link::configure_dynamic_linking has cyclomatic complexity 20 (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":"dll/build_link.rs"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1420a5322b46ea492727059db7334bfeffb7177f7dc6132527651028e633d6d"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::common::debug_server::platform::handle_http_connection (cyclomatic 20): azul_dll::desktop::shell2::common::debug_server::platform::handle_http_connection has cyclomatic complexity 20 (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":"dll/src/desktop/shell2/common/debug_server/platform.rs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6e4a48feaf4e169ad21882d86f365323e105fbb6842980d524f8a15c111fbfe"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::x11::handle_xi_gesture_event (cyclomatic 20): azul_dll::desktop::shell2::linux::x11::handle_xi_gesture_event 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: X11Window::set_cursor (cyclomatic 34) 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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":9360}}}],"partialFingerprints":{"codehealthFindingId/v1":"01fde25f1aa52f411cfedf63775985d336f1d2ece49ae4376b7b25df58d6d601"}},{"ruleId":"D1","level":"warning","message":{"text":"Cpp03Generator::generate_method_implementations (cyclomatic 20): Cpp03Generator::generate_method_implementations 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"92bcfb9c25c60d7a093fd05759740fca4b0e2e10d74be8dcf29650562a583fc9"}},{"ruleId":"D1","level":"warning","message":{"text":"RustGenerator::generate_method (cyclomatic 20): RustGenerator::generate_method 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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2116}}}],"partialFingerprints":{"codehealthFindingId/v1":"549fb7445795054ad5ece1e96e74d86f410338c102d1a72f5bb003d743446f44"}},{"ruleId":"D1","level":"warning","message":{"text":"SymbolCollector::visit_item_fn (cyclomatic 20): SymbolCollector::visit_item_fn 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":"doc/src/patch/parser.rs"},"region":{"startLine":279}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0c2e04e0c0726a7b74c7897c8c3b7d501d89e9090504237d90888bfc9ea6c13"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::type_index::parse_file_for_types (cyclomatic 20): azul_doc::autofix::type_index::parse_file_for_types 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":"doc/src/autofix/type_index.rs"},"region":{"startLine":1116}}}],"partialFingerprints":{"codehealthFindingId/v1":"c49010c6019ce2a26f38bd435548a6c77d82856dc363b5c0de3202c8a97f40aa"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_kotlin::emit_tagged_union (cyclomatic 20): azul_doc::codegen::v2::lang_kotlin::emit_tagged_union 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":"doc/src/codegen/v2/lang_kotlin/mod.rs"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"56cfefc63a4c98ad4cbfb2a98e710663d48b05d6fac7a9a75fa37b23dcdbabd1"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_lua::wrappers::emit_static_method (cyclomatic 20): azul_doc::codegen::v2::lang_lua::wrappers::emit_static_method has cyclomatic complexity 20 (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":"doc/src/codegen/v2/lang_lua/wrappers.rs"},"region":{"startLine":1256}}}],"partialFingerprints":{"codehealthFindingId/v1":"2114a10cb14a5fbcc54eed0a1fbea0c400d56f01ce2a142b447a407da1054e1f"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::module_plan::type_refs (cyclomatic 20): azul_doc::codegen::v2::module_plan::type_refs has cyclomatic complexity 20 (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":"doc/src/codegen/v2/module_plan.rs"},"region":{"startLine":438}}}],"partialFingerprints":{"codehealthFindingId/v1":"dafb828bf518d7e5e6b1c792d08bbb4ea984da22069deba3326474c7896133d9"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_haskell::cshim::emit_inbound_trampoline (cyclomatic 20): azul_doc::codegen::v2::lang_haskell::cshim::emit_inbound_trampoline has cyclomatic complexity 20 (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: azul_doc::codegen::v2::lang_haskell::cshim::c_typename (cyclomatic 31) 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":"doc/src/codegen/v2/lang_haskell/cshim.rs"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e40c2152ffe259fe3d659e854f9fe9e074fa30bc80f5f6c3375812146b397bd"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_fortran::managed::emit_invoker (cyclomatic 20): azul_doc::codegen::v2::lang_fortran::managed::emit_invoker has cyclomatic complexity 20 (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":"doc/src/codegen/v2/lang_fortran/managed.rs"},"region":{"startLine":965}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb866054621f8c1b8a9bbd67ef2109bf095b731b0479006556de7d6f2ca4d6b9"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::reftest::apply_midlevel::prompt_user (cyclomatic 20): azul_doc::reftest::apply_midlevel::prompt_user 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":"doc/src/reftest/apply_midlevel.rs"},"region":{"startLine":1914}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bad030c28a7e9a1de115c3a11af009278778611235a91f0da2f04c4a0e46270"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_java::types::emit_monomorphized_alias_files (cyclomatic 20): azul_doc::codegen::v2::lang_java::types::emit_monomorphized_alias_files 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":"doc/src/codegen/v2/lang_java/types.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"bce3e3c715337e6045388c095fd3225c26b28ba2ed7ccdae3c62e4bdff1b6b8d"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_java::types::emit_tagged_union_files (cyclomatic 20): azul_doc::codegen::v2::lang_java::types::emit_tagged_union_files 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":"doc/src/codegen/v2/lang_java/types.rs"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c22f0285df3e4b7fc0683ae1c35f11b321b5228075c9932164d2a9fd821820b"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autotest::extract::extract_from_items (cyclomatic 20): azul_doc::autotest::extract::extract_from_items 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":"doc/src/autotest/extract.rs"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b3db5b749f7b7aaba51d8300eca57de3197306b2151fde3ee9efcfed071e06e"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_go::wrappers::emit_enum_trait_methods (cyclomatic 20): azul_doc::codegen::v2::lang_go::wrappers::emit_enum_trait_methods 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":"doc/src/codegen/v2/lang_go/wrappers.rs"},"region":{"startLine":778}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3d71245dbb47dae748dcbe30b0dc7220946bf4cf04c9bc6e428b8d79515941e"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_kotlin::wrappers::emit_static_factory (cyclomatic 20): azul_doc::codegen::v2::lang_kotlin::wrappers::emit_static_factory has cyclomatic complexity 20 (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":"doc/src/codegen/v2/lang_kotlin/wrappers.rs"},"region":{"startLine":1532}}}],"partialFingerprints":{"codehealthFindingId/v1":"975661d29ad8178fad51b6dba22cd7487313fa8af6edbc9b23b0034662fb333e"}},{"ruleId":"D1","level":"warning","message":{"text":"TaffyBridge::compute_child_layout (cyclomatic 20): TaffyBridge::compute_child_layout 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":"layout/src/solver3/taffy_bridge.rs"},"region":{"startLine":1832}}}],"partialFingerprints":{"codehealthFindingId/v1":"24d23fbbd0ffc704633c48bb450b6c4e74de7993dc05d92e19772792efa27ff8"}},{"ruleId":"D1","level":"warning","message":{"text":"TextShapingCache::measure_intrinsic_widths (cyclomatic 20): TextShapingCache::measure_intrinsic_widths 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":"layout/src/text3/cache.rs"},"region":{"startLine":8146}}}],"partialFingerprints":{"codehealthFindingId/v1":"951da69251fbc769920f1641d072baf61be1b30b54444ed943edb810148e265b"}},{"ruleId":"D1","level":"warning","message":{"text":"LayoutWindow::finalize_pending_focus_changes (cyclomatic 20): LayoutWindow::finalize_pending_focus_changes has cyclomatic complexity 20 (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":"layout/src/window.rs"},"region":{"startLine":9890}}}],"partialFingerprints":{"codehealthFindingId/v1":"88c8cdcaaecb67e3942c2f3c343961e0415dfc18f4a724fd3708da2c0ded8089"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::sizing::apply_constraint_violation_table (cyclomatic 20): azul_layout::solver3::sizing::apply_constraint_violation_table 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":"layout/src/solver3/sizing.rs"},"region":{"startLine":2515}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ff6e389b40c0f9fe1e9ab8bfa2c2ff480ff3203d34f41e6be2cfe3e75d061f4"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::cpurender::raster::extract_gpu_values (cyclomatic 20): azul_layout::cpurender::raster::extract_gpu_values 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: azul_layout::cpurender::raster::probe_label_for_item (cyclomatic 38) 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":"layout/src/cpurender/raster.rs"},"region":{"startLine":1303}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0dcabb6816ee2cc991cc0e1dbc8a182b257b4e865d70fd7bac89ec6e96e7f2b"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::xml::decode_xml_entities_slow (cyclomatic 20): azul_layout::xml::decode_xml_entities_slow 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: azul_layout::xml::translate_roxmltree_error (cyclomatic 31) 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":"layout/src/xml/mod.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee76f1e0c7d1671920ddfb8e5873ed1d1f0f98aef4b232141a81827909042303"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::xml::svg::svg_path_offset (cyclomatic 20): azul_layout::xml::svg::svg_path_offset 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":"layout/src/xml/svg.rs"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd4354f62e9f1c4846006809756a06d7e689bf5d0b044e4b906374e7c6d58b8e"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::cpurender::compositor::apply_layer_filters (cyclomatic 20): azul_layout::cpurender::compositor::apply_layer_filters has cyclomatic complexity 20 (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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":2357}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6b1ab2ccd1509d43482202fa4c161160b119d91591b4d82f21c612cc2ca36b8"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::positioning::adjust_relative_positions (cyclomatic 20): azul_layout::solver3::positioning::adjust_relative_positions 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":"layout/src/solver3/positioning.rs"},"region":{"startLine":844}}}],"partialFingerprints":{"codehealthFindingId/v1":"27a7ec2ea661ee1daa4753077f5de332d1caf5120acb6bf56e7eade2a336f0df"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::paged_layout::layout_document_tokenized_from (cyclomatic 20): azul_layout::solver3::paged_layout::layout_document_tokenized_from 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":"layout/src/solver3/paged_layout.rs"},"region":{"startLine":2492}}}],"partialFingerprints":{"codehealthFindingId/v1":"8036b8068fb2bc1d681cbc682a630a3ab642c46555af66a7004e30bd0824910c"}},{"ruleId":"D1","level":"warning","message":{"text":"SceneBuilder::finalize_picture (cyclomatic 20): SceneBuilder::finalize_picture 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":"webrender/core/src/scene_building.rs"},"region":{"startLine":670}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dc3243e9d9119b3d2e87cc8764957463ae06f2707ecc07911b9edf59a3bdd3a"}},{"ruleId":"D1","level":"warning","message":{"text":"BrushImageAntialiasingRepetitionTexture2DVert::brush_vs (cyclomatic 20): BrushImageAntialiasingRepetitionTexture2DVert::brush_vs 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":"webrender/swgl/src/shaders/brush_image_antialiasing_repetition_texture_2d.rs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"a908e231b1902677cab2c2e32abebac060bc6dd44c238688e3641d287133b52a"}},{"ruleId":"D1","level":"warning","message":{"text":"BrushImageAntialiasingRepetitionTextureRectVert::brush_vs (cyclomatic 20): BrushImageAntialiasingRepetitionTextureRectVert::brush_vs 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":"webrender/swgl/src/shaders/brush_image_antialiasing_repetition_texture_rect.rs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"23ef7e06768bd20d6d6c80d9bebab18c9d8be03934bdf927c1e8938a374964c1"}},{"ruleId":"D1","level":"warning","message":{"text":"azul-search.resolveDefaults (cyclomatic 20): azul-search.resolveDefaults has cyclomatic complexity 20 (threshold 15). Of this number, 18 points are the body\u0027s own statements and 2 belong to one function literal 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":"doc/templates/azul-search.js"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"902a82167057d5fe8bef626a583fb0a28a46b67a8737dcdefa75789b13b30096"}},{"ruleId":"D1","level":"warning","message":{"text":"_loadNodeClipInfo (cyclomatic 20): _loadNodeClipInfo has cyclomatic complexity 20 (threshold 15). Of this number, 19 points are the body\u0027s own statements and 1 belongs to one function literal inside it that branches. 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":1313}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc5d39658b49afde01ab21c1b0705219f2e865c81249e9aa98f31ebdf7fdf0c9"}},{"ruleId":"D1","level":"warning","message":{"text":"_addCollapsible (cyclomatic 20): _addCollapsible has cyclomatic complexity 20 (threshold 15). Of this number, 18 points are the body\u0027s own statements and 2 belong to 3 function literals 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":3335}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb005ff754d0636cca9f085d33db05cf390d61d7a8a3bef7dedf63aacad0d831"}},{"ruleId":"D1","level":"warning","message":{"text":"GlShader::draw (cyclomatic 19): GlShader::draw 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":"core/src/gl.rs"},"region":{"startLine":4236}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9b64165f3ef32c3fd949e436c80460e997e922c3e2d1d7e5471043d968a4cc1"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_core::diff::fingerprint_dom (cyclomatic 19): azul_core::diff::fingerprint_dom has cyclomatic complexity 19 (threshold 15). Most of this is not in the body itself: 3 of the 19 points are its own statements and the rest belongs to 3 function items inside it that branch (node_structure_hash, node_style_hash, walk). 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":"core/src/diff.rs"},"region":{"startLine":2325}}}],"partialFingerprints":{"codehealthFindingId/v1":"499c54321dd48e71165b9cc02ba2c26bd93250856a2ad6f52ebc3d509c3d5b4b"}},{"ruleId":"D1","level":"warning","message":{"text":"Win32Window::feed_pointer (cyclomatic 19): Win32Window::feed_pointer 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_dll::desktop::shell2::windows::win32_msg_name (cyclomatic 30) 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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":3591}}}],"partialFingerprints":{"codehealthFindingId/v1":"a73eb12ada968f9cba274fb283d03f8f01715d21eaac1d6e59686696ef28fbac"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::preflight_scan (cyclomatic 19): azul_dll::web::transpiler_remill::preflight_scan 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_dll::web::transpiler_remill::signature_for_eventloop_fn (cyclomatic 24) 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":7371}}}],"partialFingerprints":{"codehealthFindingId/v1":"94d20bd42262f9317b02c986d247ab12694f9fe2a3044d389cf5311bd8b5d3aa"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::inject_selfloop_value_log (cyclomatic 19): azul_dll::web::transpiler_remill::inject_selfloop_value_log 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_dll::web::transpiler_remill::signature_for_eventloop_fn (cyclomatic 24) 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":8279}}}],"partialFingerprints":{"codehealthFindingId/v1":"c33f126bb535932c866d9c74f8b00a7b7967fba7ab63251fca2b984e9752fc60"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::web::symbol_table::ingest_pe (cyclomatic 19): azul_dll::web::symbol_table::ingest_pe 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":"dll/src/web/symbol_table.rs"},"region":{"startLine":1380}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a89e938a71c90eb3d98db76d28119cacc474d914e25c26fc6441b18c1b082f6"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::ios::play_haptic (cyclomatic 19): azul_dll::desktop::shell2::ios::play_haptic 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: azul_dll::desktop::shell2::ios::ios_hid_keycode_to_virtual (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":"dll/src/desktop/shell2/ios/mod.rs"},"region":{"startLine":2199}}}],"partialFingerprints":{"codehealthFindingId/v1":"f272b1e886da5eb7c0a83f9e638b7db9a7c7dc50ef00bb32f87a8bc551c59bee"}},{"ruleId":"D1","level":"warning","message":{"text":"RustGenerator::generate_trait_impls (cyclomatic 19): RustGenerator::generate_trait_impls 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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"85db3345138fee042dad9f4d400d566a13b7588158f7df345a6afdf3f16f7e6f"}},{"ruleId":"D1","level":"warning","message":{"text":"Model::new (cyclomatic 19): Model::new 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":"doc/src/codegen/v2/lang_swift/model.rs"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"a24a7d77debc4a1376994aa802ef3c5dea82ffb0f8df629eedcb6d0ed98179ee"}},{"ruleId":"D1","level":"warning","message":{"text":"GenE2eOptions::parse (cyclomatic 19): GenE2eOptions::parse 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":"doc/src/gene2e.rs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fd36269df9f6f5bd3fbdd7c9feae0392951456169fd1c6679d73ba6cd6f0d7b"}},{"ruleId":"D1","level":"warning","message":{"text":"SymbolCollector::visit_impl_item_fn (cyclomatic 19): SymbolCollector::visit_impl_item_fn 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":"doc/src/patch/parser.rs"},"region":{"startLine":401}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e71d0080169a839b6a2807160d40c47666ed860f57225051fe3706cb6a79cb9"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ruby::wrappers::emit_method_body_instance (cyclomatic 19): azul_doc::codegen::v2::lang_ruby::wrappers::emit_method_body_instance 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":"doc/src/codegen/v2/lang_ruby/wrappers.rs"},"region":{"startLine":1247}}}],"partialFingerprints":{"codehealthFindingId/v1":"89e23fc4cc5e06c4d3f8c436def42401fc6b44be8168e60620ed00c1c9d90037"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ocaml::types::emit_forward_struct_decls (cyclomatic 19): azul_doc::codegen::v2::lang_ocaml::types::emit_forward_struct_decls 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":"doc/src/codegen/v2/lang_ocaml/types.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2705b35b482617bf6b27f26aeebd3552282bbc1053471f7c906b7476d268e7f"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_fortran::wrappers::emit_procedure (cyclomatic 19): azul_doc::codegen::v2::lang_fortran::wrappers::emit_procedure 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":"doc/src/codegen/v2/lang_fortran/wrappers.rs"},"region":{"startLine":1291}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ba428aa03813381ee4a30c64ac636e86fdb6c841d77dc151cf867f0552daf11"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_pascal::managed::flatten_options (cyclomatic 19): azul_doc::codegen::v2::lang_pascal::managed::flatten_options 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":"doc/src/codegen/v2/lang_pascal/managed.rs"},"region":{"startLine":631}}}],"partialFingerprints":{"codehealthFindingId/v1":"87496c81d9da47762ba031dc16bbabba3e9d3023e841e0257955f020f73975c8"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::dllgen::deploy::generate_nfpm_yaml_content (cyclomatic 19): azul_doc::dllgen::deploy::generate_nfpm_yaml_content 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":"doc/src/dllgen/deploy.rs"},"region":{"startLine":2974}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b16c685c58f1b24eaf8baa4b1751d77fdd39387f175036aaf5ec2c515234e0e"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_java::wrappers::emit_wrapper_class (cyclomatic 19): azul_doc::codegen::v2::lang_java::wrappers::emit_wrapper_class 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":"doc/src/codegen/v2/lang_java/wrappers.rs"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"4da44eacb428b0b3af4470a3834efb447d939de41e8320f03bfc184c105998c1"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_red::map_owned_type (cyclomatic 19): azul_doc::codegen::v2::lang_red::map_owned_type 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":"doc/src/codegen/v2/lang_red/mod.rs"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"7064e4093a7eca6c97e9f8affb7cf45a3f9299b038613bbd393e45af347e431e"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::lint_links::check_link (cyclomatic 19): azul_doc::lint_links::check_link 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":"doc/src/lint_links.rs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"97a28cdba8da6d478796fa3ebde34c3e7c84386a6f64433c0f80c2f9fd9697b7"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::patch::apply_path_only_patches (cyclomatic 19): azul_doc::patch::apply_path_only_patches 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":"doc/src/patch/mod.rs"},"region":{"startLine":609}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9040ced1bc4fb5629d2ab5597c9d6d3ce11ff4596db32ed73870522a9a15bf1"}},{"ruleId":"D1","level":"warning","message":{"text":"StyleProperties::apply_override (cyclomatic 19): StyleProperties::apply_override 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":"layout/src/text3/cache.rs"},"region":{"startLine":4979}}}],"partialFingerprints":{"codehealthFindingId/v1":"a64237f190c1ffe104eef88266fcf889d8cca365552e557ad83984e74d36f4f3"}},{"ruleId":"D1","level":"warning","message":{"text":"LayoutWindow::update_a11y_tree_incremental (cyclomatic 19): LayoutWindow::update_a11y_tree_incremental 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":"layout/src/window.rs"},"region":{"startLine":12332}}}],"partialFingerprints":{"codehealthFindingId/v1":"70eb3d838cd4c6070971fa00d7bc15bbb5ea1e04697999a13f68770d1c5d7265"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::text3::dense::get_glyph_runs_pdf_dense (cyclomatic 19): azul_layout::text3::dense::get_glyph_runs_pdf_dense 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":"layout/src/text3/dense.rs"},"region":{"startLine":1451}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cbbac3fbd18539e4d5b92cb7e6a09fa5256ed15b6f74795bba23b19ac27721d"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::getters::collect_font_stacks_from_styled_dom (cyclomatic 19): azul_layout::solver3::getters::collect_font_stacks_from_styled_dom 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":"layout/src/solver3/getters.rs"},"region":{"startLine":4130}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d7686a6acf3f9d4d87c6e15cc11e5e2b2b6b8efd9b3b2fd9ddcd66c4709320b"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::widgets::pagination::on_page_click (cyclomatic 19): azul_layout::widgets::pagination::on_page_click 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":"layout/src/widgets/pagination.rs"},"region":{"startLine":500}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f713c3d7ae3e9986eb0b221dadeed4e3bf2e95e96b6bdeddfe404c31bee0127"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::cpurender::pixmap::blit_pixmap_affine_clipped (cyclomatic 19): azul_layout::cpurender::pixmap::blit_pixmap_affine_clipped 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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"26fdf0ec635a56c350a248cd5394765b99a5bf56b25eafce2f37cf74ef8e2a52"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::widgets::number_input::is_float_prefix (cyclomatic 19): azul_layout::widgets::number_input::is_float_prefix has cyclomatic complexity 19 (threshold 15). 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":"layout/src/widgets/number_input.rs"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dd6157000d93630376547ba30e67a27ef74ffe51715dbb483e1cfe45653c3f8"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::cpurender::compositor::scroll_fast_path_eligible (cyclomatic 19): azul_layout::cpurender::compositor::scroll_fast_path_eligible 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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":1789}}}],"partialFingerprints":{"codehealthFindingId/v1":"91805af2fe9b5313ababbe62fe07703d7bf151381d576b6036f09c1e0750bd87"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::updater::select_github_asset (cyclomatic 19): azul_layout::updater::select_github_asset 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":"layout/src/updater.rs"},"region":{"startLine":1299}}}],"partialFingerprints":{"codehealthFindingId/v1":"b12300da63268f065970d7c650c8fd01de786d31b03bc95044f5e8d2cc4fc475"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::widgets::map::map_widget_render (cyclomatic 19): azul_layout::widgets::map::map_widget_render 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":"layout/src/widgets/map.rs"},"region":{"startLine":2590}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea922e270f49596da3252b0a082577cabc4d6ea021d7f907763980da2131be44"}},{"ruleId":"D1","level":"warning","message":{"text":"PicturePrimitive::prepare_for_render (cyclomatic 19): PicturePrimitive::prepare_for_render 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. This is NOT this file\u0027s highest cyclomatic complexity: PictureCompositeMode::kind (cyclomatic 24) 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":"webrender/core/src/picture.rs"},"region":{"startLine":7265}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ec740e65a606f98b63e79df1515fe9a9a685fb09f2cbae85ed8dbac03477d97"}},{"ruleId":"D1","level":"warning","message":{"text":"ImageData::update (cyclomatic 19): ImageData::update 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":"webrender/core/src/prim_store/image.rs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f716e81793f75a8283a87ed56938957fc53f7a0a6cb8e0dfbb2c72b4ca0125d"}},{"ruleId":"D1","level":"warning","message":{"text":"RenderBackend::process_scene_builder_result (cyclomatic 19): RenderBackend::process_scene_builder_result 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":"webrender/core/src/render_backend.rs"},"region":{"startLine":1139}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d5ee652629f323b77acdf9b111d5ff819890aee52c7c25a45ffffddadffc86f"}},{"ruleId":"D1","level":"warning","message":{"text":"ResourceCache::post_scene_building_update (cyclomatic 19): ResourceCache::post_scene_building_update 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":"webrender/core/src/resource_cache.rs"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"96421e1d4d4d6fb256f9be65a827acfd0312d3da0fc72561f293d9fce2a0bffb"}},{"ruleId":"D1","level":"warning","message":{"text":"SpatialNode::update_transform (cyclomatic 19): SpatialNode::update_transform 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":"webrender/core/src/spatial_node.rs"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"388abc5c71dfab2f4d5ea7d2ccb94e6850b8a62a63f07ccd1bc248658e24da55"}},{"ruleId":"D1","level":"warning","message":{"text":"webrender::prepare::update_clip_task_for_brush (cyclomatic 19): webrender::prepare::update_clip_task_for_brush 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":"webrender/core/src/prepare.rs"},"region":{"startLine":1313}}}],"partialFingerprints":{"codehealthFindingId/v1":"970e613e37bf705dd1d24829e0d527de53bd7c81395a0b1c51def3f1ecfe37bd"}},{"ruleId":"D1","level":"warning","message":{"text":"AttribLocations::get_loc (cyclomatic 19): AttribLocations::get_loc 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":"webrender/swgl/src/shaders/cs_conic_gradient.rs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"714f90d59bdd60d260cf9cd50012b479f3fd443f9d0e6b01301e82d9cc1d051b"}},{"ruleId":"D1","level":"warning","message":{"text":"AttribLocations::get_loc (cyclomatic 19): AttribLocations::get_loc 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":"webrender/swgl/src/shaders/cs_radial_gradient.rs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fd03bce1cd0918f0a04a6b176d22c7bfe7200326dcc6f79e35ae1e1a25a7e3a"}},{"ruleId":"D1","level":"warning","message":{"text":"AttribLocations::get_loc (cyclomatic 19): AttribLocations::get_loc 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":"webrender/swgl/src/shaders/cs_svg_filter_node.rs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b78788869014bdf0994731699187eeca96ca55435c4165dbf2fb4ccdf7a60c9"}},{"ruleId":"D1","level":"warning","message":{"text":"check_links.check_live (cyclomatic 19): check_links.check_live 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":"scripts/check_links.py"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"386a852c621e4dba1190fb1df29646546f05197c04b74547e06b55daed8d7fd0"}},{"ruleId":"D1","level":"warning","message":{"text":"env_guard.scan_crate (cyclomatic 19): env_guard.scan_crate 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":"scripts/supply-chain/env_guard.py"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e9dd0427255560169495d51352f7d7b6f6939434356caef31d20d1d8fa4ff0f"}},{"ruleId":"D1","level":"warning","message":{"text":"sc_common._skip_to_item_body (cyclomatic 19): sc_common._skip_to_item_body 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":"scripts/supply-chain/sc_common.py"},"region":{"startLine":470}}}],"partialFingerprints":{"codehealthFindingId/v1":"628a3b95c87ae51cee812eb96b5dd789cf931d378d283402fd157db8f5d886de"}},{"ruleId":"D1","level":"warning","message":{"text":"scan_build_scripts.main (cyclomatic 19): scan_build_scripts.main 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":"scripts/supply-chain/scan_build_scripts.py"},"region":{"startLine":412}}}],"partialFingerprints":{"codehealthFindingId/v1":"fadae26bd1dc1fd26c85bc135985d61ebef81159412f91721028174c4c80f732"}},{"ruleId":"D1","level":"warning","message":{"text":"exportCode (cyclomatic 19): exportCode 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":1588}}}],"partialFingerprints":{"codehealthFindingId/v1":"8872be65e654606c16c746e2735e92b8f585173fd5588ea1615bdaac909e941b"}},{"ruleId":"D1","level":"warning","message":{"text":"PathParser::parse_number (cyclomatic 18): PathParser::parse_number 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":"core/src/path_parser.rs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"3df736ce5efc4960d30553337ad9310cdb8a5cb77a816de7c4d487b705672bfb"}},{"ruleId":"D1","level":"warning","message":{"text":"TransientWindowConfig::apply_attr (cyclomatic 18): TransientWindowConfig::apply_attr 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":"core/src/transient.rs"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"6efd66746de4aae3534f76bcfb0ed97544e551b477ca732f5f2c5cfcdd0dbf08"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_css::props::style::effects::parse_style_object_position (cyclomatic 18): azul_css::props::style::effects::parse_style_object_position 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: azul_css::props::style::effects::parsers::parse_style_cursor (cyclomatic 31) 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":"css/src/props/style/effects.rs"},"region":{"startLine":944}}}],"partialFingerprints":{"codehealthFindingId/v1":"19de25bc76626361b4dab34e6d7fccb743bd107e2af230883c761c9e387df7e9"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_css::props::style::background::parser::get_normalized_linear_stops (cyclomatic 18): azul_css::props::style::background::parser::get_normalized_linear_stops 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. This shape REPEATS in the file: one other method here (azul_css::props::style::background::parser::get_normalized_radial_stops) 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":"css/src/props/style/background.rs"},"region":{"startLine":1729}}}],"partialFingerprints":{"codehealthFindingId/v1":"77b2957ada8cbf849887dc0ce5186a68b53f72d117038eec39adda9bf0457d0f"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_css::props::style::background::parser::get_normalized_radial_stops (cyclomatic 18): azul_css::props::style::background::parser::get_normalized_radial_stops 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. This shape REPEATS in the file: one other method here (azul_css::props::style::background::parser::get_normalized_linear_stops) 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":"css/src/props/style/background.rs"},"region":{"startLine":1739}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8f78f5f7ace32945ec60de3d36d3dbee7757008b5984b867e78d6bac1a3ff46"}},{"ruleId":"D1","level":"warning","message":{"text":"WaylandWindow::set_prevent_system_sleep (cyclomatic 18): WaylandWindow::set_prevent_system_sleep 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":10845}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d277717000597caf98f1379de530fd6fb1608aaeb481158b732119a493b9f93"}},{"ruleId":"D1","level":"warning","message":{"text":"X11Window::set_prevent_system_sleep (cyclomatic 18): X11Window::set_prevent_system_sleep 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. This is NOT this file\u0027s highest cyclomatic complexity: X11Window::set_cursor (cyclomatic 34) 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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":8606}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b24199cbf958b55d3194707440387bd13dff2ff0f0eb5719a2509545d09b23b"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::native_screenshot::add_synthetic_shadow (cyclomatic 18): azul_dll::desktop::native_screenshot::add_synthetic_shadow has cyclomatic complexity 18 (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":"dll/src/desktop/native_screenshot.rs"},"region":{"startLine":1137}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0d1b65255935b93c2bc9df50274aa30cd80044ef09d1c74503908b34385dd75"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::extra::screencap::linux::on_process (cyclomatic 18): azul_dll::desktop::extra::screencap::linux::on_process 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":"dll/src/desktop/extra/screencap/linux.rs"},"region":{"startLine":858}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e260617a9741c708208e01fe2de3c2f0564f0f02583556c778a05299d3426a2"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::run::setup_e2e_runner (cyclomatic 18): azul_dll::desktop::shell2::run::setup_e2e_runner 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":"dll/src/desktop/shell2/run.rs"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6e57ad87f843e1b9cce29d440bb4aab19cbb378306d51a3278b77050fd0e588"}},{"ruleId":"D1","level":"warning","message":{"text":"CGenerator::generate_types (cyclomatic 18): CGenerator::generate_types 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. This is NOT this file\u0027s highest cyclomatic complexity: CGenerator::rust_type_to_c (cyclomatic 31) 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":"doc/src/codegen/v2/lang_c.rs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f2eb37c71464c0eb14942b0c1056c101314ab0882961670bd3b0ef9dc2239a1"}},{"ruleId":"D1","level":"warning","message":{"text":"CGenerator::generate_function_declaration (cyclomatic 18): CGenerator::generate_function_declaration 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: CGenerator::rust_type_to_c (cyclomatic 31) 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":"doc/src/codegen/v2/lang_c.rs"},"region":{"startLine":869}}}],"partialFingerprints":{"codehealthFindingId/v1":"65215b280f6c9a14360d3c3e925fed1dcb2941cc646eb2a41d0ff630c43eccc5"}},{"ruleId":"D1","level":"warning","message":{"text":"Cpp11Generator::generate_method_implementations (cyclomatic 18): Cpp11Generator::generate_method_implementations 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":"doc/src/codegen/v2/lang_cpp/cpp11.rs"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"84b8373f513da0c028cbad547eb8e1eb528dedc148e804af2ff72f0040d5d334"}},{"ruleId":"D1","level":"warning","message":{"text":"Model::new (cyclomatic 18): Model::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":"doc/src/codegen/v2/lang_crystal/model.rs"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"45963002a800efe5b223b7a67a1f2d950a795b361e2299ee2140844f611da81c"}},{"ruleId":"D1","level":"warning","message":{"text":"WorkspaceIndex::build_with_verbosity (cyclomatic 18): WorkspaceIndex::build_with_verbosity has cyclomatic complexity 18 (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":"doc/src/patch/index.rs"},"region":{"startLine":519}}}],"partialFingerprints":{"codehealthFindingId/v1":"76849e4758721f2e3122487252a8c1f40b0b9fb2542d747a34a010395ff0ed13"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ruby::wrappers::emit_rb_each_if_vec (cyclomatic 18): azul_doc::codegen::v2::lang_ruby::wrappers::emit_rb_each_if_vec 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":"doc/src/codegen/v2/lang_ruby/wrappers.rs"},"region":{"startLine":539}}}],"partialFingerprints":{"codehealthFindingId/v1":"791647ec37c8968587738d19b69d0faa48c8a29c7f292efb0671bf2010e451e2"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::type_index::extract_types_from_items (cyclomatic 18): azul_doc::autofix::type_index::extract_types_from_items 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":"doc/src/autofix/type_index.rs"},"region":{"startLine":1301}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4e3a987a118379daced0ae49a2ad45581ae25a63e0bde4193e9ea238c42bc23"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_go::managed::emit_register_fns (cyclomatic 18): azul_doc::codegen::v2::lang_go::managed::emit_register_fns 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":"doc/src/codegen/v2/lang_go/managed.rs"},"region":{"startLine":713}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc49376c7a7b42b62b7b3cacd7c27daee134270cb0df86e31866da2df41b6af6"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::reftest::regression::diff_render_warnings (cyclomatic 18): azul_doc::reftest::regression::diff_render_warnings has cyclomatic complexity 18 (threshold 15). Of this number, 15 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":"doc/src/reftest/regression.rs"},"region":{"startLine":1414}}}],"partialFingerprints":{"codehealthFindingId/v1":"e724cde32439281b38c79a785e52c2a30f2dd4f40989d5594a72a617088b55d7"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::check_reserved_keywords (cyclomatic 18): azul_doc::autofix::check_reserved_keywords 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. This is NOT this file\u0027s highest cyclomatic complexity: FfiSafetyWarningKind::is_critical (cyclomatic 27) 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":"doc/src/autofix/mod.rs"},"region":{"startLine":4880}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb8c5d917ce611b623f9281ef3f1ddda78c9dd621410a630739577fa0e2d4d4f"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_lua::wrappers::emit_struct_wrapper (cyclomatic 18): azul_doc::codegen::v2::lang_lua::wrappers::emit_struct_wrapper has cyclomatic complexity 18 (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":"doc/src/codegen/v2/lang_lua/wrappers.rs"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"81f2fb4ed3b4dfb94686a1e099d14664a434b5d8f92e21866a32124bad9fa862"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_perl::types::type_with_ref_to_perl (cyclomatic 18): azul_doc::codegen::v2::lang_perl::types::type_with_ref_to_perl 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_doc::codegen::v2::lang_perl::types::primitive_to_ffi_name (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":"doc/src/codegen/v2/lang_perl/types.rs"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3b332f2055291b754b696ea52120dd0dc8d6bc35a157bc966033ed4a95fe1f5"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ruby::types::type_with_ref_to_ruby (cyclomatic 18): azul_doc::codegen::v2::lang_ruby::types::type_with_ref_to_ruby 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_doc::codegen::v2::lang_ruby::types::primitive_to_ffi_symbol (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":"doc/src/codegen/v2/lang_ruby/types.rs"},"region":{"startLine":771}}}],"partialFingerprints":{"codehealthFindingId/v1":"c24ac62762a8556b4fd0e9f47867e16476389bfe88c5d97797533a2a12fba45d"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_java::wrappers::classify_return (cyclomatic 18): azul_doc::codegen::v2::lang_java::wrappers::classify_return 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":"doc/src/codegen/v2/lang_java/wrappers.rs"},"region":{"startLine":1228}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f4ed41de3e3323270e24fc090bbd374ff70c87666f23b76ab9daf330f2be0e1"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_d::types::generate_types (cyclomatic 18): azul_doc::codegen::v2::lang_d::types::generate_types 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":"doc/src/codegen/v2/lang_d/types.rs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"e24073660052190d14ab38ac48054db9868b2ec879166554e339e48f20953a06"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::workspace::virtual_patch_application (cyclomatic 18): azul_doc::autofix::workspace::virtual_patch_application 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_doc::autofix::workspace::generate_synthetic_option_type (cyclomatic 21) 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":"doc/src/autofix/workspace.rs"},"region":{"startLine":1930}}}],"partialFingerprints":{"codehealthFindingId/v1":"efc9661f0f7aeb88406a1bfaa066fead22f0664bf3255501522e52011ad85ee6"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_csharp::wrappers::classify_return (cyclomatic 18): azul_doc::codegen::v2::lang_csharp::wrappers::classify_return 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":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"f51647a29d6d8b7c2b20276e3298f547b225254122077ae9bc3b54ef029fecaa"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_kotlin::wrappers::classify_return (cyclomatic 18): azul_doc::codegen::v2::lang_kotlin::wrappers::classify_return 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":"doc/src/codegen/v2/lang_kotlin/wrappers.rs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"3176253f02265fb4573d849911b5941507d0fdb15f62db2973f32791c91e0add"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::diff::get_type_kind_with_fields (cyclomatic 18): azul_doc::autofix::diff::get_type_kind_with_fields 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":"doc/src/autofix/diff.rs"},"region":{"startLine":2202}}}],"partialFingerprints":{"codehealthFindingId/v1":"14eb28969cc78699eba8db60aaff81322a461a0c49f1c1f22e862294ec06ab86"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_crystal::types::generate_types (cyclomatic 18): azul_doc::codegen::v2::lang_crystal::types::generate_types 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":"doc/src/codegen/v2/lang_crystal/types.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cbde5d83ede2b3f73e1b1ce83c6b72941f5648b4c4360e05ab922e97d1df9cf"}},{"ruleId":"D1","level":"warning","message":{"text":"FluentLocaleBundle::format (cyclomatic 18): FluentLocaleBundle::format 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":"layout/src/fluent.rs"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c2fe2592f92db1f8ce85da6e2de550b7006d713f2e596daf6e7a0dcdbfa4305"}},{"ruleId":"D1","level":"warning","message":{"text":"LayoutWindow::apply_node_css_change (cyclomatic 18): LayoutWindow::apply_node_css_change has cyclomatic complexity 18 (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":"layout/src/window.rs"},"region":{"startLine":7327}}}],"partialFingerprints":{"codehealthFindingId/v1":"789b35b2a78b33c65af350aa62f56d4679534c6cd9b6a9335adea1a395ec71bf"}},{"ruleId":"D1","level":"warning","message":{"text":"LayoutWindow::synchronize_scrollbar_opacity (cyclomatic 18): LayoutWindow::synchronize_scrollbar_opacity 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":"layout/src/window.rs"},"region":{"startLine":11883}}}],"partialFingerprints":{"codehealthFindingId/v1":"01c0544022d2259e8fbf9d3d012491e2f77b2e09c0ccd17a591959c83ef5f32d"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::cpurender::raster::rounded_clip_corners (cyclomatic 18): azul_layout::cpurender::raster::rounded_clip_corners 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_layout::cpurender::raster::probe_label_for_item (cyclomatic 38) 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":"layout/src/cpurender/raster.rs"},"region":{"startLine":837}}}],"partialFingerprints":{"codehealthFindingId/v1":"da2bb89f275a64cb7f7656adbd5d95b9d0f9f4d3bb0b0c47ea3beda3d495c2ee"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::headless::resolve_virtual_view_placements (cyclomatic 18): azul_layout::headless::resolve_virtual_view_placements 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":"layout/src/headless.rs"},"region":{"startLine":575}}}],"partialFingerprints":{"codehealthFindingId/v1":"23002da633c0868a9a9f1aa8ddaf562c34382fd6c6991e29f41d6b365523b7f7"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::text3::cache::reorder_logical_items (cyclomatic 18): azul_layout::text3::cache::reorder_logical_items has cyclomatic complexity 18 (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":"layout/src/text3/cache.rs"},"region":{"startLine":8697}}}],"partialFingerprints":{"codehealthFindingId/v1":"465edee35f2d641f815e25d94e115c25eded1c8ed7745f89dd245e4b2459d207"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::text3::cache::shape_with_font_fallback (cyclomatic 18): azul_layout::text3::cache::shape_with_font_fallback 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":"layout/src/text3/cache.rs"},"region":{"startLine":9313}}}],"partialFingerprints":{"codehealthFindingId/v1":"11deef6b3721d4141a421bd4d970890c2232e9544734c6272351e171f793427c"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::text3::cache::get_line_constraints (cyclomatic 18): azul_layout::text3::cache::get_line_constraints 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":"layout/src/text3/cache.rs"},"region":{"startLine":13031}}}],"partialFingerprints":{"codehealthFindingId/v1":"19b5aad3f5e63edd239ded97c7eeda25c4692b6cbe879dfa3cf16269216dc3a6"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::dom_lint::warn_a11y_shape (cyclomatic 18): azul_layout::dom_lint::warn_a11y_shape 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":"layout/src/dom_lint.rs"},"region":{"startLine":1160}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c758c14560b509ef3a38d35d7b392c1db3637cc795b2b39339185612d0a2013"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::page_breaks::snap_break_up (cyclomatic 18): azul_layout::solver3::page_breaks::snap_break_up 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":"layout/src/solver3/page_breaks.rs"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"24753a561f2f036438171699ecef0cbbd133f7682504097cd1983eb5b2dd75bd"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::telemetry::config::apply_env (cyclomatic 18): azul_layout::telemetry::config::apply_env 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":"layout/src/telemetry/config.rs"},"region":{"startLine":505}}}],"partialFingerprints":{"codehealthFindingId/v1":"e45e8e0d2841e4f0d3c2552ae0589b57a1456d4be3877638bfe6b90720baa158"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::widgets::map::spawn_pending_tile_fetches (cyclomatic 18): azul_layout::widgets::map::spawn_pending_tile_fetches 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":"layout/src/widgets/map.rs"},"region":{"startLine":2045}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0ed721255bff465a755b66f5de58e8eeb6ebcf5e18057b100d0022b22213dd0"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::fc::apply_text_box_trim (cyclomatic 18): azul_layout::solver3::fc::apply_text_box_trim 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":"layout/src/solver3/fc.rs"},"region":{"startLine":3432}}}],"partialFingerprints":{"codehealthFindingId/v1":"2104940a610f6d9151cb97d104b80ab7609fcf905731a2bb576e78951aee11a7"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::layout_tree::collect_box_props (cyclomatic 18): azul_layout::solver3::layout_tree::collect_box_props has cyclomatic complexity 18 (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: azul_layout::solver3::layout_tree::determine_formatting_context_for_display (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":"layout/src/solver3/layout_tree.rs"},"region":{"startLine":3814}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf6a819b801f0a529cf1e8dc21fb386e4229fda8698e167ab0386e956802a6a0"}},{"ruleId":"D1","level":"warning","message":{"text":"Device::link_program (cyclomatic 18): Device::link_program 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":"webrender/core/src/device/gl.rs"},"region":{"startLine":2444}}}],"partialFingerprints":{"codehealthFindingId/v1":"94c275d7f43dd660a0f74bd31e6d34955fc1d4778bc0bdd6d0b63f6597d05059"}},{"ruleId":"D1","level":"warning","message":{"text":"PictureCompositeMode::get_rect (cyclomatic 18): PictureCompositeMode::get_rect 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 shape REPEATS in the file: one other method here (PictureCompositeMode::get_coverage) 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. This is NOT this file\u0027s highest cyclomatic complexity: PictureCompositeMode::kind (cyclomatic 24) 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":"webrender/core/src/picture.rs"},"region":{"startLine":4315}}}],"partialFingerprints":{"codehealthFindingId/v1":"58c5a6c0a047e8f6e2258593799c2525c4036ce418fcf0cec2412e2def27f83d"}},{"ruleId":"D1","level":"warning","message":{"text":"PictureCompositeMode::get_coverage (cyclomatic 18): PictureCompositeMode::get_coverage 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 shape REPEATS in the file: one other method here (PictureCompositeMode::get_rect) 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. This is NOT this file\u0027s highest cyclomatic complexity: PictureCompositeMode::kind (cyclomatic 24) 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":"webrender/core/src/picture.rs"},"region":{"startLine":4450}}}],"partialFingerprints":{"codehealthFindingId/v1":"d60307ea40c03e0df891006c7ffbdb0766682fb91b419e95c3ecf66b7a9f2437"}},{"ruleId":"D1","level":"warning","message":{"text":"PrimitiveComparer::compare_prim (cyclomatic 18): PrimitiveComparer::compare_prim 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. This is NOT this file\u0027s highest cyclomatic complexity: PictureCompositeMode::kind (cyclomatic 24) 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":"webrender/core/src/picture.rs"},"region":{"startLine":7450}}}],"partialFingerprints":{"codehealthFindingId/v1":"3106af01386a7d0107df9a8013ad297dcbe0569fc1cb4779f74d54251efcac32"}},{"ruleId":"D1","level":"warning","message":{"text":"Profiler::append_to_ui (cyclomatic 18): Profiler::append_to_ui 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, 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":"webrender/core/src/profiler.rs"},"region":{"startLine":1341}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f6c20c35c972de20da9236126bf90ddddfa99f02ab28f4f0c58c33d845bb2e3"}},{"ruleId":"D1","level":"warning","message":{"text":"Renderer::draw_texture_cache_target (cyclomatic 18): Renderer::draw_texture_cache_target 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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":3949}}}],"partialFingerprints":{"codehealthFindingId/v1":"125594c159c8473cecdc6e92f1282d3060d273fd46065f84221e473e4f47cc06"}},{"ruleId":"D1","level":"warning","message":{"text":"AttribLocations::get_loc (cyclomatic 18): AttribLocations::get_loc has cyclomatic complexity 18 (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":"webrender/swgl/src/shaders/cs_clip_rectangle_fast_path.rs"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ca62c1e5b257cb2f3945c3665722afd6c6e7613f9250368242f577b919a315e"}},{"ruleId":"D1","level":"warning","message":{"text":"AzulGamepad.onCapturedPointer (cyclomatic 18): AzulGamepad.onCapturedPointer 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":"scripts/android/AzulGamepad.java"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6dcabf66b031eba59880113e2d5da60e644e6d52eb4194c875273970b3eb626"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo_bin_path.main (cyclomatic 18): cargo_bin_path.main 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":"scripts/cargo_bin_path.py"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f06ccb6d5ae7526a9bae7a7783031ebebebd3629a41904146e502624b6fb10b"}},{"ruleId":"D1","level":"warning","message":{"text":"_loadNodeBoxModel (cyclomatic 18): _loadNodeBoxModel has cyclomatic complexity 18 (threshold 15). 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. This is NOT this file\u0027s highest cyclomatic complexity: render (cyclomatic 19) 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 method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":1204}}}],"partialFingerprints":{"codehealthFindingId/v1":"6beb46492292d50bff1692ae8cbef1423c8fc9359b661e6247317eebc782b328"}},{"ruleId":"D1","level":"warning","message":{"text":"SystemStyleDependencies::dom_depends_on_change (cyclomatic 17): SystemStyleDependencies::dom_depends_on_change has cyclomatic complexity 17 (threshold 15). 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":"core/src/callbacks.rs"},"region":{"startLine":1217}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b9dbc48b0a46e72cbdc9cad31ad08899c266d9b54b21c0b3fd40cc5bf50fd5f"}},{"ruleId":"D1","level":"warning","message":{"text":"SvgNodeData::hash (cyclomatic 17): SvgNodeData::hash 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: NodeType::to_library_owned_nodetype (cyclomatic 184) 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":"core/src/dom.rs"},"region":{"startLine":2143}}}],"partialFingerprints":{"codehealthFindingId/v1":"affd9fb2f9fb6b4e26ca7a4d1da4a7683a8311f8fc64e29c13f29f591611f3e6"}},{"ruleId":"D1","level":"warning","message":{"text":"StyledDom::restyle_on_state_change (cyclomatic 17): StyledDom::restyle_on_state_change 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":"core/src/styled_dom.rs"},"region":{"startLine":2153}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e34274e3c0e6c77c9beebf1bf164fb9fc6502a22fc3a9c54a32fb49ebeb8ab7"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_core::style::matches_html_element (cyclomatic 17): azul_core::style::matches_html_element 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":"core/src/style.rs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"89ac12b0e325193b027916f6790ae25dfd3519893a7b62bb3621c12154a776f7"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_core::style::match_attribute_selector (cyclomatic 17): azul_core::style::match_attribute_selector has cyclomatic complexity 17 (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":"core/src/style.rs"},"region":{"startLine":563}}}],"partialFingerprints":{"codehealthFindingId/v1":"7176d374bb27a4b957f9bb78e1e8dc17ee2e7119e08a546f0a2a4870d2a464c3"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_core::xml::user_defined_compile_fn (cyclomatic 17): azul_core::xml::user_defined_compile_fn 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: azul_core::xml::tag_to_node_type (cyclomatic 170) 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":"core/src/xml.rs"},"region":{"startLine":3180}}}],"partialFingerprints":{"codehealthFindingId/v1":"12238460cbaacbd6d69850d70c448a9a9e4ff2482c5b099eab8c5989e3218bb3"}},{"ruleId":"D1","level":"warning","message":{"text":"VecContents::insert_from_css_property (cyclomatic 17): VecContents::insert_from_css_property 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: azul_css::codegen::format::format_style_filter (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":"css/src/codegen/format.rs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"eaf9a689751c06aa88f988005270219512490dfa70cfe352576eb74602783c31"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_css::props::style::background::parser::parse_gradient (cyclomatic 17): azul_css::props::style::background::parser::parse_gradient 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":"css/src/props/style/background.rs"},"region":{"startLine":1361}}}],"partialFingerprints":{"codehealthFindingId/v1":"1534a8f7ab31eb7fa93b554328ea2570a46d4f31696edcdf092ce0e6e1f1f813"}},{"ruleId":"D1","level":"warning","message":{"text":"AndroidAccessibilityAdapter::describe_node (cyclomatic 17): AndroidAccessibilityAdapter::describe_node has cyclomatic complexity 17 (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":"dll/src/desktop/shell2/android/accessibility.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6c329ec34e93ad5c28fffe38eba163567b5ddb0951022ccfedc24c018ec05fa"}},{"ruleId":"D1","level":"warning","message":{"text":"PlatformWindow::feed_seat_gesture_sessions (cyclomatic 17): PlatformWindow::feed_seat_gesture_sessions has cyclomatic complexity 17 (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: azul_dll::desktop::shell2::common::event::win32_vkey_to_virtual_key (cyclomatic 135) 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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":9182}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ffacccf7d962142b2a2026867c56541129b72b04b9e4afe8501494aee098cc9"}},{"ruleId":"D1","level":"warning","message":{"text":"PlatformWindow::handle_scrollbar_drag (cyclomatic 17): PlatformWindow::handle_scrollbar_drag has cyclomatic complexity 17 (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: azul_dll::desktop::shell2::common::event::win32_vkey_to_virtual_key (cyclomatic 135) 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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":13166}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c8ea4e874ad1379cd640b2b48b100654f864639c5eee3b2a5d836c906b1be78"}},{"ruleId":"D1","level":"warning","message":{"text":"MacOSWindow::initialize_display_link (cyclomatic 17): MacOSWindow::initialize_display_link has cyclomatic complexity 17 (threshold 15). Most of this is not in the body itself: 7 of the 17 points are its own statements and the rest belongs to 2 function items inside it that branch (mark_views_dirty_on_main, display_link_callback). 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: azul_dll::desktop::shell2::macos::macos_event_name (cyclomatic 24) 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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":4724}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f64811ba880558aabf20003bf1d49041ec62e5ad9193451cdc0c656564daa94"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::common::event::auto_scroll_timer_callback (cyclomatic 17): azul_dll::desktop::shell2::common::event::auto_scroll_timer_callback has cyclomatic complexity 17 (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. This is NOT this file\u0027s highest cyclomatic complexity: azul_dll::desktop::shell2::common::event::win32_vkey_to_virtual_key (cyclomatic 135) 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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7479f01b67456a916ddb05b0d8ada9a5fb20b36aee478522da8a0ab50a96a11"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::reloc_next_token (cyclomatic 17): azul_dll::web::transpiler_remill::reloc_next_token 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: azul_dll::web::transpiler_remill::signature_for_eventloop_fn (cyclomatic 24) 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":7878}}}],"partialFingerprints":{"codehealthFindingId/v1":"97e7e1b469841080f09420e006c403e6f40aefb9615bc6e30bc291dd69fc2a34"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::extra::screencap::linux::read (cyclomatic 17): azul_dll::desktop::extra::screencap::linux::read has cyclomatic complexity 17 (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":"dll/src/desktop/extra/screencap/linux.rs"},"region":{"startLine":1182}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1814dd1b7fc99e2b3e198b79a920d9a1ce6ccd988840e1dc2b02713a30812fe"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeDefinition::expand_macro_generated (cyclomatic 17): TypeDefinition::expand_macro_generated 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":"doc/src/autofix/type_index.rs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbae2284d33298a016fd154f6ce0f4ae92810ebeea95c1541875df3d886bc781"}},{"ruleId":"D1","level":"warning","message":{"text":"Emitter::method_name (cyclomatic 17): Emitter::method_name has cyclomatic complexity 17 (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":"doc/src/codegen/v2/lang_crystal/wrappers.rs"},"region":{"startLine":963}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac41a59fbb8937ab637ba03aa0cf13da5f9d67579735d7e2901648e6040d6c85"}},{"ruleId":"D1","level":"warning","message":{"text":"PythonGenerator::generate_enum_pymethods (cyclomatic 17): PythonGenerator::generate_enum_pymethods 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":"doc/src/codegen/v2/lang_python.rs"},"region":{"startLine":2316}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f4879769178a141ee286590f8a47e77cff33815d9a3547bda40d1d092b6a70a"}},{"ruleId":"D1","level":"warning","message":{"text":"RustGenerator::generate_abi_derived_trait_impls (cyclomatic 17): RustGenerator::generate_abi_derived_trait_impls has cyclomatic complexity 17 (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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":3586}}}],"partialFingerprints":{"codehealthFindingId/v1":"871050822a75839c4079f141a7e24ece379bc84cf1b946190419c09316a21b93"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ruby::wrappers::emit_class_wrapper (cyclomatic 17): azul_doc::codegen::v2::lang_ruby::wrappers::emit_class_wrapper has cyclomatic complexity 17 (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":"doc/src/codegen/v2/lang_ruby/wrappers.rs"},"region":{"startLine":263}}}],"partialFingerprints":{"codehealthFindingId/v1":"e713bec4a34261def951b46fe182576ad809876f2873f278d6b15225634a0f5f"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_haskell::functions::emit_one_register_helper (cyclomatic 17): azul_doc::codegen::v2::lang_haskell::functions::emit_one_register_helper 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":"doc/src/codegen/v2/lang_haskell/functions.rs"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"91f9c184a194a073076f9e559ee28ce9bc8ede9b93b31bb1213306dcf4d3df3b"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::api::normalize_type_aliases (cyclomatic 17): azul_doc::api::normalize_type_aliases 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":"doc/src/api.rs"},"region":{"startLine":2646}}}],"partialFingerprints":{"codehealthFindingId/v1":"207a66c0c1148f9ab47897cde6f639947ae7ceb8723d27100e79d0437297591e"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ada::types::emit_types (cyclomatic 17): azul_doc::codegen::v2::lang_ada::types::emit_types 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":"doc/src/codegen/v2/lang_ada/types.rs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc671fef4e40a99180cefae54f9309fbbcda3082b74da31bfaee75b832b7f9ab"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_node::wrappers::classify_option_result_node (cyclomatic 17): azul_doc::codegen::v2::lang_node::wrappers::classify_option_result_node 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":"doc/src/codegen/v2/lang_node/wrappers.rs"},"region":{"startLine":1286}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ed3aea91ddfadef9ca7c0d019ab5a5623e0a85a0e45d0b9a71e7279205beb2d"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_algol68::types::emit_tagged_union (cyclomatic 17): azul_doc::codegen::v2::lang_algol68::types::emit_tagged_union 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":"doc/src/codegen/v2/lang_algol68/types.rs"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ec44a6650650714fb9c14e34ad56458ecf7be973c827d21eac84591f905c4b9"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_go::types::generate (cyclomatic 17): azul_doc::codegen::v2::lang_go::types::generate 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":"doc/src/codegen/v2/lang_go/types.rs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fb3b3600369ec3de67a987cebd07b320fbef3dae1e08979e90fb3b52fe8b8d8"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_pascal::wrappers::emit_wrapper_class_decl (cyclomatic 17): azul_doc::codegen::v2::lang_pascal::wrappers::emit_wrapper_class_decl 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":"doc/src/codegen/v2/lang_pascal/wrappers.rs"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c85d61e5e5781bb18a1de3b003025754d8c34fb65a059f96c767e4c2afa20b6"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::module_map::determine_module (cyclomatic 17): azul_doc::autofix::module_map::determine_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":"doc/src/autofix/module_map.rs"},"region":{"startLine":627}}}],"partialFingerprints":{"codehealthFindingId/v1":"371298ec6648cf70891c495b33a72404622eca3c9ea67384f9261282831ccfd6"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::docgen::search::generate_search_index (cyclomatic 17): azul_doc::docgen::search::generate_search_index has cyclomatic complexity 17 (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":"doc/src/docgen/search.rs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"eea4c200c359ff2732e69b90656997c2f74843a77e474f1c0cf2d097be5ed874"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::gene2e::review_batch (cyclomatic 17): azul_doc::gene2e::review_batch 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":"doc/src/gene2e.rs"},"region":{"startLine":2783}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f4067d436a07dd6ab3b25bdddaefd6a9876c833b3c9a5b2162aa67edf331132"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_zig::wrappers::classify_arg (cyclomatic 17): azul_doc::codegen::v2::lang_zig::wrappers::classify_arg 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":"doc/src/codegen/v2/lang_zig/wrappers.rs"},"region":{"startLine":1268}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab4cd0b772ce16f6627ef3a481304afae358ea11055737a65c822aa8ef67764f"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_csharp::wrappers::emit_wrapper_class (cyclomatic 17): azul_doc::codegen::v2::lang_csharp::wrappers::emit_wrapper_class 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":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":621}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb6f6fc87b4da310b5f6eaf117298f73ad2c7698f2083b76eaf34fc0f7563c84"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::reftest::apply_midlevel::run_apply_agent (cyclomatic 17): azul_doc::reftest::apply_midlevel::run_apply_agent has cyclomatic complexity 17 (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":"doc/src/reftest/apply_midlevel.rs"},"region":{"startLine":2842}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c92be669cfeda7ab0fd508013ad28ec27ec3b0a43ffc1dde7fea4a6eba7aff8"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_java::managed::data_typed_sam_info (cyclomatic 17): azul_doc::codegen::v2::lang_java::managed::data_typed_sam_info has cyclomatic complexity 17 (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":"doc/src/codegen/v2/lang_java/managed.rs"},"region":{"startLine":611}}}],"partialFingerprints":{"codehealthFindingId/v1":"57205a3fcf18211e3e96d859c1c4f15cf9d1ce9b55b7b7f1beffed6f526c058b"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_java::managed::emit_data_typed_invoker_sam (cyclomatic 17): azul_doc::codegen::v2::lang_java::managed::emit_data_typed_invoker_sam 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":"doc/src/codegen/v2/lang_java/managed.rs"},"region":{"startLine":703}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd62a218ba87299c9b207d880dcfb96f41b422ede7de645ab592577d045eed8a"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::mobile::install::android_plan (cyclomatic 17): azul_doc::mobile::install::android_plan has cyclomatic complexity 17 (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":"doc/src/mobile/install.rs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cd646b5a6001d63774fec8f1764d1300453b9eb822300a50c094e218a4981f6"}},{"ruleId":"D1","level":"warning","message":{"text":"CompositorState::composite_layer_recursive (cyclomatic 17): CompositorState::composite_layer_recursive has cyclomatic complexity 17 (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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":937}}}],"partialFingerprints":{"codehealthFindingId/v1":"38a7e78040ca4ef0f57943d8f754b8d96c6937d3a3c4897cc3e6d7793b7d32c3"}},{"ruleId":"D1","level":"warning","message":{"text":"A11yTreeMirror::apply (cyclomatic 17): A11yTreeMirror::apply 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: A11yManager::node_type_to_role (cyclomatic 74) 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":"layout/src/managers/a11y.rs"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f6e97dfb6aa639bfbae6d3342d4942d06e06c19dfa7996307a8e405bb02b7ea"}},{"ruleId":"D1","level":"warning","message":{"text":"TransientWindowManager::reconcile (cyclomatic 17): TransientWindowManager::reconcile 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":"layout/src/transient.rs"},"region":{"startLine":836}}}],"partialFingerprints":{"codehealthFindingId/v1":"b83b6be1bb65324030eb773b10c501f237405da8f7398468727b16e47e90471a"}},{"ruleId":"D1","level":"warning","message":{"text":"LayoutWindow::finish_reconciliation (cyclomatic 17): LayoutWindow::finish_reconciliation 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":"layout/src/window.rs"},"region":{"startLine":11286}}}],"partialFingerprints":{"codehealthFindingId/v1":"e17704b1a9144b1594e77fd110abddacfca12e44bec4fba7cbd2a2be107de289"}},{"ruleId":"D1","level":"warning","message":{"text":"LayoutWindow::scroll_selection_into_view (cyclomatic 17): LayoutWindow::scroll_selection_into_view has cyclomatic complexity 17 (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":"layout/src/window.rs"},"region":{"startLine":13589}}}],"partialFingerprints":{"codehealthFindingId/v1":"b958782f4d81b5e9fc96f4253681860926b76c818f441d28aa2acaeb8b4bdb8a"}},{"ruleId":"D1","level":"warning","message":{"text":"LayoutWindow::remap_node_ids (cyclomatic 17): LayoutWindow::remap_node_ids 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":"layout/src/window.rs"},"region":{"startLine":20900}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba41715d17389da4489a7fca17d541f1e1e1aea63570a6b43c731d077a253ef3"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::cpurender::raster::render_text (cyclomatic 17): azul_layout::cpurender::raster::render_text has cyclomatic complexity 17 (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: azul_layout::cpurender::raster::probe_label_for_item (cyclomatic 38) 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":"layout/src/cpurender/raster.rs"},"region":{"startLine":3730}}}],"partialFingerprints":{"codehealthFindingId/v1":"66a6091b90a83b7fb75405a21d449bd2be95abafda14fdbbf6f4b717f97fa73c"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::getters::compute_all_font_sizes_px (cyclomatic 17): azul_layout::solver3::getters::compute_all_font_sizes_px 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":"layout/src/solver3/getters.rs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1c7f8dad741ea3ae8f019857fd6cd37a14160820cffb868b88095c02e8591c1"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::cpurender::pixmap::blit_pixmap_clipped (cyclomatic 17): azul_layout::cpurender::pixmap::blit_pixmap_clipped 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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"1174b5319e3fb6dcf316e5ed20f2bcf57a069045d6674188271396a3a2afeaf9"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::widgets::capture_common::run_capture_loop (cyclomatic 17): azul_layout::widgets::capture_common::run_capture_loop 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":"layout/src/widgets/capture_common.rs"},"region":{"startLine":683}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ee08b190eb5713818767727b93f92aafa025204b3f76d71437b062420890258"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::cpurender::compositor::find_matching_pop (cyclomatic 17): azul_layout::cpurender::compositor::find_matching_pop 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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":1262}}}],"partialFingerprints":{"codehealthFindingId/v1":"e349f118e9f6c190202e60ad28046523dd92a9a48de0566996f6471757281dca"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::widgets::ribbon::on_ribbon_mobile_group_click (cyclomatic 17): azul_layout::widgets::ribbon::on_ribbon_mobile_group_click 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":"layout/src/widgets/ribbon.rs"},"region":{"startLine":3940}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8b9155a134e26defba72994ac9c08ee33a0c35845567572caa51e18b575484e"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::widgets::stepper::on_step_click (cyclomatic 17): azul_layout::widgets::stepper::on_step_click 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":"layout/src/widgets/stepper.rs"},"region":{"startLine":567}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bf71c45493208227ced1de5cfdf6f8b81c4eeb7b3b2ba8454b39d70e4963897"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::fc::apply_segment_break_transform (cyclomatic 17): azul_layout::solver3::fc::apply_segment_break_transform 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":"layout/src/solver3/fc.rs"},"region":{"startLine":10700}}}],"partialFingerprints":{"codehealthFindingId/v1":"18241cbf129eccdcddb43e64206fecb819b0909096eace8ccaa341c07b795c09"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::paged_layout::layout_document_paged_impl (cyclomatic 17): azul_layout::solver3::paged_layout::layout_document_paged_impl 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":"layout/src/solver3/paged_layout.rs"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f76227d964b9eb26de8555ef7dc9403bee49a2a8e48869945194992d54a21f6"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::widgets::themes::flora::button (cyclomatic 17): azul_layout::widgets::themes::flora::button has cyclomatic complexity 17 (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":"layout/src/widgets/themes/flora.rs"},"region":{"startLine":789}}}],"partialFingerprints":{"codehealthFindingId/v1":"161c7cf30554eba3efd28a36f158f8e0efa4ade136b31de185cb85a9d1ebe1c2"}},{"ruleId":"D1","level":"warning","message":{"text":"SwCompositor::flush_composites (cyclomatic 17): SwCompositor::flush_composites 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":"webrender/core/src/compositor/sw_compositor.rs"},"region":{"startLine":1130}}}],"partialFingerprints":{"codehealthFindingId/v1":"d87b67c37dff1391e14692140a71347472404983c2d22321a5df3abc3f548684"}},{"ruleId":"D1","level":"warning","message":{"text":"RenderTask::new_svg_filter (cyclomatic 17): RenderTask::new_svg_filter 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: RenderTaskKind::as_str (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":"webrender/core/src/render_task.rs"},"region":{"startLine":1297}}}],"partialFingerprints":{"codehealthFindingId/v1":"b230abcdfd29354866bd52e9eb5173c3bdc3c69362f220c218b3c766aafee230"}},{"ruleId":"D1","level":"warning","message":{"text":"ResourceCache::request_image (cyclomatic 17): ResourceCache::request_image 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":"webrender/core/src/resource_cache.rs"},"region":{"startLine":954}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3aa08cfae32fd1788ad89a991b37797fd11af51b6f9e0ef229caa3e0fe4b353"}},{"ruleId":"D1","level":"warning","message":{"text":"SceneBuilder::build_all (cyclomatic 17): SceneBuilder::build_all has cyclomatic complexity 17 (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":"webrender/core/src/scene_building.rs"},"region":{"startLine":856}}}],"partialFingerprints":{"codehealthFindingId/v1":"31cd2565fdd25eb7619523373fe1d3e88974ee05e85f48f40772590e490502ac"}},{"ruleId":"D1","level":"warning","message":{"text":"webrender::prepare::prepare_prim_for_render (cyclomatic 17): webrender::prepare::prepare_prim_for_render has cyclomatic complexity 17 (threshold 15). Of this number, 16 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":"webrender/core/src/prepare.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee52ed62f96c3e040b913c127693b66399017360045037893d792a828104c436"}},{"ruleId":"D1","level":"warning","message":{"text":"AttribLocations::get_loc (cyclomatic 17): AttribLocations::get_loc has cyclomatic complexity 17 (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":"webrender/swgl/src/shaders/composite_texture_2d_yuv.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"05bb9b095aa2f1fe652ae7a0b31219542168ebb00c8038f3c3f2d2a283ceb61c"}},{"ruleId":"D1","level":"warning","message":{"text":"AttribLocations::get_loc (cyclomatic 17): AttribLocations::get_loc has cyclomatic complexity 17 (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":"webrender/swgl/src/shaders/composite_texture_rect_yuv.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"970fa66ac25aeed919fe3f4f9d36c4188227635e8bb79dece894444030f56d9f"}},{"ruleId":"D1","level":"warning","message":{"text":"AttribLocations::bind_loc (cyclomatic 17): AttribLocations::bind_loc has cyclomatic complexity 17 (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":"webrender/swgl/src/shaders/cs_clip_rectangle.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c4021507fffbde74713993b510680122841393bf6f8d9cf327ed1abaf8957f5"}},{"ruleId":"D1","level":"warning","message":{"text":"AttribLocations::bind_loc (cyclomatic 17): AttribLocations::bind_loc has cyclomatic complexity 17 (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":"webrender/swgl/src/shaders/cs_clip_rectangle_fast_path.rs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"697088cc81519f3dca7556ef565be6f2eb1f4d41e226b59367473183a55f1b1f"}},{"ruleId":"D1","level":"warning","message":{"text":"update (cyclomatic 17): update 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: render (cyclomatic 19) 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 method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":4004}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cfdf501849f1ee249d64b107d673baa1458ba3022870d3b7ecd227dc28fc15d"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_core::diff::calculate_reconciliation_key (cyclomatic 16): azul_core::diff::calculate_reconciliation_key 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":"core/src/diff.rs"},"region":{"startLine":361}}}],"partialFingerprints":{"codehealthFindingId/v1":"4695f7fd0bafa24696be552ff42198b046609ce9c50dc86bf9093f3a7620a74c"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_core::diff::calculate_contenteditable_key (cyclomatic 16): azul_core::diff::calculate_contenteditable_key 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":"core/src/diff.rs"},"region":{"startLine":1426}}}],"partialFingerprints":{"codehealthFindingId/v1":"f223f35ccfe1d98c91a97ebd7a72005c0913ef5f976afad03d1cc571d6f29e43"}},{"ruleId":"D1","level":"warning","message":{"text":"CssPropertyWithConditionsVec::parse_media_query (cyclomatic 16): CssPropertyWithConditionsVec::parse_media_query 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: azul_css::dynamic_selector::parse_android_version (cyclomatic 24) 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":"css/src/dynamic_selector.rs"},"region":{"startLine":2419}}}],"partialFingerprints":{"codehealthFindingId/v1":"c12bbfd8ad22e1b583f76d9581e4f6b24a91f7569cbfd9e9c0d8540becfcfcbb"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_css::props::layout::grid::parse_grid_template_areas (cyclomatic 16): azul_css::props::layout::grid::parse_grid_template_areas 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":"css/src/props/layout/grid.rs"},"region":{"startLine":1393}}}],"partialFingerprints":{"codehealthFindingId/v1":"f35f575113b011f62e2387f468c4af3a9a843ec8b639b7801684124b12f9a65c"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_css::dynamic_selector::parse_os_at_rule_content (cyclomatic 16): azul_css::dynamic_selector::parse_os_at_rule_content 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_css::dynamic_selector::parse_android_version (cyclomatic 24) 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":"css/src/dynamic_selector.rs"},"region":{"startLine":1453}}}],"partialFingerprints":{"codehealthFindingId/v1":"126c9e4c4702de02efa15f8be8ab7e793c6939fb5578088ffc42c21839c233ba"}},{"ruleId":"D1","level":"warning","message":{"text":"DxgiCapture::read (cyclomatic 16): DxgiCapture::read 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":"dll/src/desktop/extra/screencap/windows.rs"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"53686b130e3c031fc493c2ee19461d7f87495bbfddccd2adea7faa397835bf7c"}},{"ruleId":"D1","level":"warning","message":{"text":"VtDecoder::decode (cyclomatic 16): VtDecoder::decode 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":"dll/src/desktop/extra/video_codec/videotoolbox.rs"},"region":{"startLine":903}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2b4d17caa86d1348f981629041e22827175c03ef30136775f50dcff5180d4c1"}},{"ruleId":"D1","level":"warning","message":{"text":"PlatformWindow::process_timers_and_threads (cyclomatic 16): PlatformWindow::process_timers_and_threads 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_dll::desktop::shell2::common::event::win32_vkey_to_virtual_key (cyclomatic 135) 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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":12369}}}],"partialFingerprints":{"codehealthFindingId/v1":"2da36f00ebec7815dcda6f1536a06d86e7d50f78ea9a53b73950236909e9c3b5"}},{"ruleId":"D1","level":"warning","message":{"text":"PlatformWindow::handle_track_click (cyclomatic 16): PlatformWindow::handle_track_click 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. This is NOT this file\u0027s highest cyclomatic complexity: azul_dll::desktop::shell2::common::event::win32_vkey_to_virtual_key (cyclomatic 135) 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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":12688}}}],"partialFingerprints":{"codehealthFindingId/v1":"b63bdfee216a0a7b456d8df0c0378c37be358778cb2f594c375f34490b5ece87"}},{"ruleId":"D1","level":"warning","message":{"text":"PlatformWindow::invoke_expired_timers (cyclomatic 16): PlatformWindow::invoke_expired_timers 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: azul_dll::desktop::shell2::common::event::win32_vkey_to_virtual_key (cyclomatic 135) 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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":12843}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a8a031d81cc0415b0d6979e2f4be0afe95e887a348c217971378f75d22c56d0"}},{"ruleId":"D1","level":"warning","message":{"text":"WaylandWindow::handle_seat_key (cyclomatic 16): WaylandWindow::handle_seat_key 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":5312}}}],"partialFingerprints":{"codehealthFindingId/v1":"8aa8463f70ea41fe61d3000173cc67f733c266e4974549cf31b9334f2a3aacee"}},{"ruleId":"D1","level":"warning","message":{"text":"X11Window::process_pending_menu_callbacks (cyclomatic 16): X11Window::process_pending_menu_callbacks 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: X11Window::set_cursor (cyclomatic 34) 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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":4340}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc936cd76f7b5edeab72180404b0627785451b2a1c0403e5fa49a6f6b2559f77"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::extra::permission::linux::portal_access_blocking (cyclomatic 16): azul_dll::desktop::extra::permission::linux::portal_access_blocking 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":"dll/src/desktop/extra/permission/linux.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef98bd779f245695ee6be9936aca074a8db0e2ac772a8005d3712089f300ee0d"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::extra::geolocation::windows::imp::location_poll_loop (cyclomatic 16): azul_dll::desktop::extra::geolocation::windows::imp::location_poll_loop 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":"dll/src/desktop/extra/geolocation/windows.rs"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e799b08dfd6c42e7f44f7e245a7ecba1c666341b954ad7c365cfb8682df710c"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::wr_translate2::synchronize_gpu_values (cyclomatic 16): azul_dll::desktop::wr_translate2::synchronize_gpu_values 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":"dll/src/desktop/wr_translate2.rs"},"region":{"startLine":1744}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e33f942886dd2f1135ad6ad04fbd2000bc56749cb48c8fd48f2e8916fb51f5b"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::shell2::ios::clipboard::read_payload (cyclomatic 16): azul_dll::desktop::shell2::ios::clipboard::read_payload 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":"dll/src/desktop/shell2/ios/clipboard.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"b37b746cecfa8af021d01096fc9c548a0e70ec66691966c7085722ec0c3ab999"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::reloc_translate (cyclomatic 16): azul_dll::web::transpiler_remill::reloc_translate 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: azul_dll::web::transpiler_remill::signature_for_eventloop_fn (cyclomatic 24) 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":8081}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c7c1566a1df00f7665f6805fb28effc4e4af9c633b00fb44a6810ef9cce44e2"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::extra::geolocation::linux::imp::geoclue_loop (cyclomatic 16): azul_dll::desktop::extra::geolocation::linux::imp::geoclue_loop 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":"dll/src/desktop/extra/geolocation/linux.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"da166e6b2573fa5ccef786972dffdb3acae7177634e09e1b3587ce58038b48e5"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::extra::haptics::windows::play_pen (cyclomatic 16): azul_dll::desktop::extra::haptics::windows::play_pen 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":"dll/src/desktop/extra/haptics/windows.rs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"a627092c6bc6fec49a090452c0de2633d18f0454976dbca6af66fca8a650b1b5"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_dll::desktop::extra::media_keys::apple::publish (cyclomatic 16): azul_dll::desktop::extra::media_keys::apple::publish 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":"dll/src/desktop/extra/media_keys/apple.rs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"1eb34990d50a19830a92e900a5eeb80d5a3262e0083aab94ef8b24b0659634de"}},{"ruleId":"D1","level":"warning","message":{"text":"AutofixPatch::explain (cyclomatic 16): AutofixPatch::explain 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":"doc/src/autofix/patch_format.rs"},"region":{"startLine":407}}}],"partialFingerprints":{"codehealthFindingId/v1":"248a5c123a45e5311879560070c58f64e7d5a61d86c3436933224d06a062d14e"}},{"ruleId":"D1","level":"warning","message":{"text":"IRBuilder::build_monomorphized_def (cyclomatic 16): IRBuilder::build_monomorphized_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":"doc/src/codegen/v2/ir_builder.rs"},"region":{"startLine":1389}}}],"partialFingerprints":{"codehealthFindingId/v1":"f84c6f8b7067a3300b604799e16a137b7482f9f07789b281b2808ffd28e603a6"}},{"ruleId":"D1","level":"warning","message":{"text":"Emitter::emit_class (cyclomatic 16): Emitter::emit_class 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":"doc/src/codegen/v2/lang_crystal/wrappers.rs"},"region":{"startLine":479}}}],"partialFingerprints":{"codehealthFindingId/v1":"a81e0c902f6644f9f5be76a3ba1557e32769b696cdfddf760b3b5bcf2fe3a169"}},{"ruleId":"D1","level":"warning","message":{"text":"Emitter::emit_fields (cyclomatic 16): Emitter::emit_fields 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":"doc/src/codegen/v2/lang_crystal/wrappers.rs"},"region":{"startLine":762}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cb378e15dae49acee1d3214e3a23716f3a6ae4f094dcd6fa52c9e6c92adfe4b"}},{"ruleId":"D1","level":"warning","message":{"text":"RustGenerator::generate_result_convenience_methods (cyclomatic 16): RustGenerator::generate_result_convenience_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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":1387}}}],"partialFingerprints":{"codehealthFindingId/v1":"687f290b66e1a7d682fa13b97643268fee39b22349a67a882b156df5794ff73b"}},{"ruleId":"D1","level":"warning","message":{"text":"EnhancedXmlParser::extract_head_metadata (cyclomatic 16): EnhancedXmlParser::extract_head_metadata 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":"doc/src/reftest/mod.rs"},"region":{"startLine":1219}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa0a7059f14c86d63ab7f57d2c452df1bcbe5aa619c2468f55cf6f00a0c9f8dd"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ruby::wrappers::emit_wrappers (cyclomatic 16): azul_doc::codegen::v2::lang_ruby::wrappers::emit_wrappers 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":"doc/src/codegen/v2/lang_ruby/wrappers.rs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"25f4d3fd31443e2473708e0547437b2889c57d56b79d252ee2faf5f7225f33af"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ruby::wrappers::emit_method (cyclomatic 16): azul_doc::codegen::v2::lang_ruby::wrappers::emit_method 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":"doc/src/codegen/v2/lang_ruby/wrappers.rs"},"region":{"startLine":980}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9baa3df13d26907d996261012314de59efd25474a008ebb54ba907b55549003"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::type_index::parse_impl_option_args (cyclomatic 16): azul_doc::autofix::type_index::parse_impl_option_args 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":"doc/src/autofix/type_index.rs"},"region":{"startLine":1922}}}],"partialFingerprints":{"codehealthFindingId/v1":"732ee0ef3d2b003ccc7413556ffb6dd8daefe188d7be61d836471a218a0da945"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_pascal::managed::app_helper_info (cyclomatic 16): azul_doc::codegen::v2::lang_pascal::managed::app_helper_info 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":"doc/src/codegen/v2/lang_pascal/managed.rs"},"region":{"startLine":687}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe0969d7f485435354e26eaae35c5b6c3d6480dc5d4012d30c5b73df19166347"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_nim::types::generate_types (cyclomatic 16): azul_doc::codegen::v2::lang_nim::types::generate_types 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":"doc/src/codegen/v2/lang_nim/types.rs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d501f9e6ab0fcfb32afa59620fec062f18853a265b9fa90e6d6325fecbe39b5"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_lua::wrappers::emit_data_enum_wrapper (cyclomatic 16): azul_doc::codegen::v2::lang_lua::wrappers::emit_data_enum_wrapper 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":"doc/src/codegen/v2/lang_lua/wrappers.rs"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8aa484c64d5a2ca159de253b7bd4090dbcd4deda3f5cce861dcc99452138472"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_node::types::generate_type_registrations (cyclomatic 16): azul_doc::codegen::v2::lang_node::types::generate_type_registrations 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":"doc/src/codegen/v2/lang_node/types.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"e39695285f4f2cac20d10c74b08c28c1ed293d2ab4ab55f5bdf4df3d46e066bd"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_php_ext::render_method (cyclomatic 16): azul_doc::codegen::v2::lang_php_ext::render_method 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":"doc/src/codegen/v2/lang_php_ext.rs"},"region":{"startLine":764}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2676b7792144bc9c9285d9dfd6136a65e8920c98bea783b326f7db2347dfa5d"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::print::print_function (cyclomatic 16): azul_doc::print::print_function 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":"doc/src/print.rs"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"9adb04105e8ffe529f4148e54e1e7b2aad24b3d1ce8b90e3e78e26e2d3368cc8"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::reftest::autodoc::parse_attrs (cyclomatic 16): azul_doc::reftest::autodoc::parse_attrs 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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":1462}}}],"partialFingerprints":{"codehealthFindingId/v1":"5db0f1ec5a5179b2556f2f0ca736c972bbdb3fe60e5315fcbc9b133cb904b0e4"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::lint_orphans::unreferenced_public_fns (cyclomatic 16): azul_doc::lint_orphans::unreferenced_public_fns 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":"doc/src/lint_orphans.rs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a8cd2f036be934d509a5a4528197464c7d56641780d21928010016e27f13045"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::workspace::collect_referenced_types_from_type_info (cyclomatic 16): azul_doc::autofix::workspace::collect_referenced_types_from_type_info 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: azul_doc::autofix::workspace::generate_synthetic_option_type (cyclomatic 21) 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":"doc/src/autofix/workspace.rs"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"658922834d68dfbe4d9c7a1bea363deb4a10f68fe5031cfcf56b6dfec44d5581"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::autofix::function_diff::method_to_function_data (cyclomatic 16): azul_doc::autofix::function_diff::method_to_function_data 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":"doc/src/autofix/function_diff.rs"},"region":{"startLine":867}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cec24c1f7f41cd412ed7d335b18b6f4dd3bc13351e76ccca965db69c8eef39a"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_haskell::wrappers::arg_plan (cyclomatic 16): azul_doc::codegen::v2::lang_haskell::wrappers::arg_plan 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":"doc/src/codegen/v2/lang_haskell/wrappers.rs"},"region":{"startLine":1778}}}],"partialFingerprints":{"codehealthFindingId/v1":"f40ae046ff3bebbe940d1c7f68fa4da20625520516864a3b8fa4d64791d684df"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::gene2e::render_facts (cyclomatic 16): azul_doc::gene2e::render_facts 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":"doc/src/gene2e.rs"},"region":{"startLine":2324}}}],"partialFingerprints":{"codehealthFindingId/v1":"00a685473465aaaf0888a05b1f81a6a5546b060d39313190dfefb57d9ae99568"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_zig::c_decls::generate_c_decls (cyclomatic 16): azul_doc::codegen::v2::lang_zig::c_decls::generate_c_decls 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: azul_doc::codegen::v2::lang_zig::c_decls::primitive (cyclomatic 24) 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":"doc/src/codegen/v2/lang_zig/c_decls.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7a638608f40bf5e9d8c70844713c5d29db472f79d4bfe2f006a1efc2f695f49"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::config::apply_prefix_to_type (cyclomatic 16): azul_doc::codegen::v2::config::apply_prefix_to_type 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":"doc/src/codegen/v2/config.rs"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"498187283c07f57eea193b14a8510a74e71b29e72ad3d075b0a55f83a051a796"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::ir_builder::classify_struct_type (cyclomatic 16): azul_doc::codegen::v2::ir_builder::classify_struct_type 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":"doc/src/codegen/v2/ir_builder.rs"},"region":{"startLine":2494}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9273c1386d927d615a10a43556febfd67405360b6b241523c5507497a351e38"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_haskell::types::layout_oracle (cyclomatic 16): azul_doc::codegen::v2::lang_haskell::types::layout_oracle 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":"doc/src/codegen/v2/lang_haskell/types.rs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5c6e38b34c4ee06f1c3c8c8d8af539c60ae4ffb6c8029aa64515853f53c9b4a"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_doc::lint_derives::check (cyclomatic 16): azul_doc::lint_derives::check 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":"doc/src/lint_derives.rs"},"region":{"startLine":1398}}}],"partialFingerprints":{"codehealthFindingId/v1":"683ba9231adda3bdd5ee9aca851cae7f6e1cae312d2c1d5c5b5f8912182db0fc"}},{"ruleId":"D1","level":"warning","message":{"text":"CompositorState::render_layers (cyclomatic 16): CompositorState::render_layers 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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":706}}}],"partialFingerprints":{"codehealthFindingId/v1":"82f73cd3f0aa20fc1479311cee052ea01854aea1ec1b942ce2b82350331c965c"}},{"ruleId":"D1","level":"warning","message":{"text":"VirtualViewState::scroll_demand (cyclomatic 16): VirtualViewState::scroll_demand has cyclomatic complexity 16 (threshold 15). 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":"layout/src/managers/virtual_view.rs"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1e37a92ab5dd01e902c7757951b64aed30360373173fe5f2ff81f141bd0187b"}},{"ruleId":"D1","level":"warning","message":{"text":"LayoutTreeBuilder::apply_split_previews (cyclomatic 16): LayoutTreeBuilder::apply_split_previews 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: azul_layout::solver3::layout_tree::determine_formatting_context_for_display (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":"layout/src/solver3/layout_tree.rs"},"region":{"startLine":2976}}}],"partialFingerprints":{"codehealthFindingId/v1":"88c667c2a89107ec31ccbc721fc8a08750e8cfcd046de45e690443e2c3de973d"}},{"ruleId":"D1","level":"warning","message":{"text":"UnifiedLayout::move_cursor_to_prev_word (cyclomatic 16): UnifiedLayout::move_cursor_to_prev_word 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":"layout/src/text3/cache.rs"},"region":{"startLine":6604}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a2e896994b07472d673aeefa2a5de430ad205724254ab56679db54915c9db12"}},{"ruleId":"D1","level":"warning","message":{"text":"LayoutWindow::apply_seat_selection_op (cyclomatic 16): LayoutWindow::apply_seat_selection_op 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":"layout/src/window.rs"},"region":{"startLine":10474}}}],"partialFingerprints":{"codehealthFindingId/v1":"e68b819f80cbeef5cc48a84b79e49d3ca0e02de0486b57ecc92b7d3778112fbd"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::cpurender::svg::build_agg_path (cyclomatic 16): azul_layout::cpurender::svg::build_agg_path 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":"layout/src/cpurender/svg.rs"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"db45faea7c458e99a16e4e526327f8bd592a02a9a48ca30bc6aaba329d11d821"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::text3::cache::shape_visual_items_with_per_item_cache (cyclomatic 16): azul_layout::text3::cache::shape_visual_items_with_per_item_cache 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":"layout/src/text3/cache.rs"},"region":{"startLine":8901}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e671516dbe3cbef6a581dafd82b2bccd25bc11aacb0b8ff02a54e0ba5b7310f"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::text3::cache::is_break_opportunity_with_word_break (cyclomatic 16): azul_layout::text3::cache::is_break_opportunity_with_word_break 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":"layout/src/text3/cache.rs"},"region":{"startLine":13489}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2b5bf20f11cf2cd41fa999e2b4506a74eb0ce3978f11bbe1605e42940730b70"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::dom_lint::warn_interactive_without_accessibility (cyclomatic 16): azul_layout::dom_lint::warn_interactive_without_accessibility 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":"layout/src/dom_lint.rs"},"region":{"startLine":857}}}],"partialFingerprints":{"codehealthFindingId/v1":"813a2f0d00c26ee18040225571c2b8e23062133bc9cbf88d35e6fa3df8b389ec"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::text3::edit::delete_range (cyclomatic 16): azul_layout::text3::edit::delete_range 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":"layout/src/text3/edit.rs"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fdfb42a77cdd6f9be1e533fa3bb84ae739d7b924c58d16e7116f758d35cb5ec"}},{"ruleId":"D1","level":"warning","message":{"text":"azul_layout::solver3::paged_layout::compute_layout_with_fragmentation (cyclomatic 16): azul_layout::solver3::paged_layout::compute_layout_with_fragmentation 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":"layout/src/solver3/paged_layout.rs"},"region":{"startLine":713}}}],"partialFingerprints":{"codehealthFindingId/v1":"435ab00a4a92ed1ec6297f6d077fd976c0930f74d850eeb5d98856b390f505f3"}},{"ruleId":"D1","level":"warning","message":{"text":"SwCompositor::start_compositing (cyclomatic 16): SwCompositor::start_compositing 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":"webrender/core/src/compositor/sw_compositor.rs"},"region":{"startLine":1538}}}],"partialFingerprints":{"codehealthFindingId/v1":"55b8f89d34ccae710b2546ff03cd38191b9b9751264daa837aa9aad36b4a0bc0"}},{"ruleId":"D1","level":"warning","message":{"text":"SceneBuilder::add_box_shadow (cyclomatic 16): SceneBuilder::add_box_shadow 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":"webrender/core/src/box_shadow.rs"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2158aaa79e1bce60cdd7a8a85d2e660a57fc1373949167c421b4e1eb1a52871"}},{"ruleId":"D1","level":"warning","message":{"text":"SceneBuilder::pop_stacking_context (cyclomatic 16): SceneBuilder::pop_stacking_context 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":"webrender/core/src/scene_building.rs"},"region":{"startLine":2192}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3001a479dc6fee2ccbdb28af0589578c95164dd0f4d0c6f64450b4bbb1ecb40"}},{"ruleId":"D1","level":"warning","message":{"text":"webrender::visibility::update_prim_visibility (cyclomatic 16): webrender::visibility::update_prim_visibility 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":"webrender/core/src/visibility.rs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"e58d43688e96321bed870978938545c964a42e39a33a3773df74fbcd9f09c5cf"}},{"ruleId":"D1","level":"warning","message":{"text":"sc_common._follow_includes (cyclomatic 16): sc_common._follow_includes 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":"scripts/supply-chain/sc_common.py"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7f922d35078b5691dcf997d642749687a5001bb696ec4b796853b1531ca740b"}},{"ruleId":"D1","level":"warning","message":{"text":"debugger._extractBase64Image (cyclomatic 16): debugger._extractBase64Image has cyclomatic complexity 16 (threshold 15). 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":4737}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bce90d0e71c553e2abe15c22baa4a532522fdd0acea59ee6b527507d8c72552"}},{"ruleId":"D1","level":"warning","message":{"text":"azul-search.compositeAdapter (cyclomatic 16): azul-search.compositeAdapter has cyclomatic complexity 16 (threshold 15). Most of this is not in the body itself: 1 of the 16 points is its own statement and the rest belongs to 5 function literals inside it that branch (lines 344, 362, 369, \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":"doc/templates/azul-search.js"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed5c4e14329aaaf1dae1474ea1c1714e99e2d7421f3fdd52ad73cab40e7fe412"}},{"ruleId":"D1","level":"warning","message":{"text":"updateStepParamsForm (cyclomatic 16): updateStepParamsForm has cyclomatic complexity 16 (threshold 15). Of this number, 8 points are the body\u0027s own statements and 8 belong to 6 function literals 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. This is NOT this file\u0027s highest cyclomatic complexity: render (cyclomatic 19) 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 method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":1095}}}],"partialFingerprints":{"codehealthFindingId/v1":"4decaa6373c03b98ca15a7cce0c642e08f50554c81946b7834121772308952ca"}},{"ruleId":"D1","level":"warning","message":{"text":"_buildPlaceholderTree (cyclomatic 16): _buildPlaceholderTree has cyclomatic complexity 16 (threshold 15). Most of this is not in the body itself: 3 of the 16 points are its own statements and the rest belongs to one function literal inside it that branches (line 2686). The decisions are inside the literal, 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 literal\u0027s work into a named function or method at the enclosing scope and have the literal call it, then reduce whichever part then reads as the largest. This is NOT this file\u0027s highest cyclomatic complexity: render (cyclomatic 19) 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 method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":2682}}}],"partialFingerprints":{"codehealthFindingId/v1":"0640e56e88705cff1ea7d873fdd6b20099ce6f331867009dc13ce4c809c6752f"}},{"ruleId":"D1","level":"warning","message":{"text":"render (cyclomatic 16): render has cyclomatic complexity 16 (threshold 15). Most of this is not in the body itself: 4 of the 16 points are its own statements and the rest belongs to 2 function literals inside it that branch (lines 4275, 4303). 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. This is NOT this file\u0027s highest cyclomatic complexity: render (cyclomatic 19) 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 method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":4269}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bfa43fa76ce1176b22bff3e596e2abce93e39f967309f56599aff87503a6890"}},{"ruleId":"D2","level":"warning","message":{"text":"PlatformWindow::apply_user_change (cognitive 551): PlatformWindow::apply_user_change has cognitive complexity 551 (threshold 15). Drivers by points: if/else 209 (496 pts), match/switch 10 (30 pts), loops 6 (18 pts), boolean chains 7 (nesting depth added 319). 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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":4824}}}],"partialFingerprints":{"codehealthFindingId/v1":"595ae79b0d573744478272d51e4fc8068f1f18da2c2bea3251ec73406130f087"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::main (cognitive 532): azul_doc::main has cognitive complexity 532 (threshold 15). Drivers by points: if/else 133 (304 pts), loops 44 (141 pts), match/switch 25 (71 pts), boolean chains 16 (nesting depth added 314). 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":"doc/src/main.rs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"3431a452a9f305f426e6160c175d6327b227b29d70cca4b8d709c118daa003c1"}},{"ruleId":"D2","level":"warning","message":{"text":"PlatformWindow::process_window_events_inner (cognitive 497): PlatformWindow::process_window_events_inner has cognitive complexity 497 (threshold 15). Drivers by points: if/else 147 (394 pts), match/switch 13 (48 pts), loops 14 (42 pts), boolean chains 13 (nesting depth added 310). 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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":10294}}}],"partialFingerprints":{"codehealthFindingId/v1":"72f8c9134b7a8cce8abf642ef51422334537f50753569e5d3193bf60f1d4eaa4"}},{"ruleId":"D2","level":"warning","message":{"text":"PlatformWindow::apply_system_change (cognitive 460): PlatformWindow::apply_system_change has cognitive complexity 460 (threshold 15). Drivers by points: if/else 150 (428 pts), match/switch 9 (24 pts), loops 2 (6 pts), boolean chains 2 (nesting depth added 297). 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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":7142}}}],"partialFingerprints":{"codehealthFindingId/v1":"5eedac952c0897be24b838c5d55403ee19b595a9335255152fdd70968c8ec609"}},{"ruleId":"D2","level":"warning","message":{"text":"WaylandWindow::generate_frame_if_needed (cognitive 409): WaylandWindow::generate_frame_if_needed has cognitive complexity 409 (threshold 15). Drivers by points: if/else 90 (309 pts), loops 9 (68 pts), match/switch 5 (17 pts), boolean chains 15 (nesting depth added 290). 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":7011}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5061170d5ef9aad3c1d529c9a840a947605fcb69d7da0e0f58652d25223fd17"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::check_ffi_safety (cognitive 393): azul_doc::autofix::check_ffi_safety has cognitive complexity 393 (threshold 15). Drivers by points: if/else 61 (262 pts), loops 27 (85 pts), match/switch 7 (25 pts), boolean chains 21 (nesting depth added 277). 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":"doc/src/autofix/mod.rs"},"region":{"startLine":1828}}}],"partialFingerprints":{"codehealthFindingId/v1":"3786115373f955e0b47a43a5a75b4ef6b6bd20d5129ee7b281ff3110b7785d01"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::windows::window_proc (cognitive 372): azul_dll::desktop::shell2::windows::window_proc has cognitive complexity 372 (threshold 15). Drivers by points: if/else 129 (315 pts), match/switch 15 (38 pts), boolean chains 15, loops 1 (4 pts) (nesting depth added 212). 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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":4025}}}],"partialFingerprints":{"codehealthFindingId/v1":"3dcc33d7711a46c0f1b43958168fbf3ed857942797b143134388ad2783e340e1"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::fc::layout_bfc (cognitive 295): azul_layout::solver3::fc::layout_bfc has cognitive complexity 295 (threshold 15). Drivers by points: if/else 109 (248 pts), boolean chains 30, loops 6 (11 pts), match/switch 4 (6 pts) (nesting depth added 146). 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":"layout/src/solver3/fc.rs"},"region":{"startLine":1214}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ec2583f4c2db52079d71259811d90c032bd8333cd69c39bfa69e8665dd3e52b"}},{"ruleId":"D2","level":"warning","message":{"text":"PicturePrimitive::take_context (cognitive 294): PicturePrimitive::take_context has cognitive complexity 294 (threshold 15). Drivers by points: if/else 50 (211 pts), loops 8 (39 pts), match/switch 14 (39 pts), boolean chains 5 (nesting depth added 217). 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":"webrender/core/src/picture.rs"},"region":{"startLine":5302}}}],"partialFingerprints":{"codehealthFindingId/v1":"5145238aca8d6a492c40622ff5ae3da01e4234460b10000760132937aebfbae4"}},{"ruleId":"D2","level":"warning","message":{"text":"CssPropertyCache::restyle (cognitive 279): CssPropertyCache::restyle has cognitive complexity 279 (threshold 15). Drivers by points: if/else 49 (159 pts), loops 26 (100 pts), match/switch 3 (12 pts), boolean chains 8 (nesting depth added 193). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"core/src/prop_cache.rs"},"region":{"startLine":1570}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd025ecc07a120963195860e9ed2d0f5b10b5d0702fe39f47921c69fc2ff6a1a"}},{"ruleId":"D2","level":"warning","message":{"text":"BatchBuilder::add_prim_to_batch (cognitive 257): BatchBuilder::add_prim_to_batch has cognitive complexity 257 (threshold 15). Drivers by points: if/else 71 (125 pts), match/switch 28 (77 pts), loops 14 (43 pts), boolean chains 12 (nesting depth added 132). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"webrender/core/src/batch.rs"},"region":{"startLine":815}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b465bb1a5635e16aff92522559365a50e8dd8cf0549339fb4d98c89289901a6"}},{"ruleId":"D2","level":"warning","message":{"text":"PlatformWindow::dispatch_events_propagated (cognitive 255): PlatformWindow::dispatch_events_propagated has cognitive complexity 255 (threshold 15). Drivers by points: if/else 43 (167 pts), loops 17 (66 pts), match/switch 7 (18 pts), boolean chains 4 (nesting depth added 184). 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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":8536}}}],"partialFingerprints":{"codehealthFindingId/v1":"14fa8773655cd5816e53fe1290b9f99278274a0033c1b8ac4b5ddbc139038b26"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::apply_midlevel::run (cognitive 246): azul_doc::reftest::apply_midlevel::run has cognitive complexity 246 (threshold 15). Drivers by points: if/else 66 (184 pts), match/switch 12 (40 pts), loops 5 (17 pts), boolean chains 5 (nesting depth added 158). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/reftest/apply_midlevel.rs"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffffe67a59545b3ea2e5f8ffcb72dcab9d64af00d422a022fdc6a38452e200c3"}},{"ruleId":"D2","level":"warning","message":{"text":"Win32Window::render_and_present (cognitive 242): Win32Window::render_and_present has cognitive complexity 242 (threshold 15). Drivers by points: if/else 58 (187 pts), loops 4 (32 pts), match/switch 3 (12 pts), boolean chains 11 (nesting depth added 166). 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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":1139}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c0165db7ba9c501da5cf645254713e42684464a4c35c157441866f7ae4fb175"}},{"ruleId":"D2","level":"warning","message":{"text":"RemillTranspiler::lift_with_transitive_deps_sequential (cognitive 242): RemillTranspiler::lift_with_transitive_deps_sequential has cognitive complexity 242 (threshold 15). Drivers by points: if/else 57 (171 pts), loops 20 (39 pts), match/switch 10 (25 pts), boolean chains 7 (nesting depth added 148). 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":2167}}}],"partialFingerprints":{"codehealthFindingId/v1":"28608cdc1c500f64baa0f85a0638473f7a0160cac8a724bad3aa52c2864e7d2e"}},{"ruleId":"D2","level":"warning","message":{"text":"CssPropertyCache::build_compact_cache_with_inheritance_debug (cognitive 240): CssPropertyCache::build_compact_cache_with_inheritance_debug has cognitive complexity 240 (threshold 15). Drivers by points: if/else 73 (216 pts), loops 8 (16 pts), match/switch 2 (6 pts), boolean chains 2 (nesting depth added 155). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"core/src/compact.rs"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0d197bc1a5283ac0b48b9c1c51dc061e672d582baa149a15e8cb8e053a4db64"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::api::collect_all_referenced_types_from_api_with_chains (cognitive 230): azul_doc::api::collect_all_referenced_types_from_api_with_chains has cognitive complexity 230 (threshold 15). Drivers by points: if/else 24 (161 pts), loops 14 (69 pts) (nesting depth added 192). 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":"doc/src/api.rs"},"region":{"startLine":1837}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c5775d6a8f84bc1664a8c46c6fe82197c0ef38a628cfd8d716b2371b6b7c7fb"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::positioning::position_out_of_flow_elements (cognitive 225): azul_layout::solver3::positioning::position_out_of_flow_elements has cognitive complexity 225 (threshold 15). Drivers by points: if/else 65 (170 pts), boolean chains 26, match/switch 6 (19 pts), loops 3 (10 pts) (nesting depth added 125). 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":"layout/src/solver3/positioning.rs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"547032baa57f9ab115b46f290bc9ca2d0735ff93f8b32ef3d10096c89e109048"}},{"ruleId":"D2","level":"warning","message":{"text":"HeadlessWindow::run (cognitive 220): HeadlessWindow::run has cognitive complexity 220 (threshold 15). Drivers by points: if/else 59 (185 pts), match/switch 8 (25 pts), loops 4 (7 pts), boolean chains 3 (nesting depth added 146). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/headless/mod.rs"},"region":{"startLine":2258}}}],"partialFingerprints":{"codehealthFindingId/v1":"309cba81bbeb821f5adf7e0edd20aa4435b22700d590002d83178d800c3742ff"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::xml::parse_xml_to_fast_dom_with_css (cognitive 220): azul_layout::xml::parse_xml_to_fast_dom_with_css has cognitive complexity 220 (threshold 15). Drivers by points: if/else 58 (182 pts), loops 8 (17 pts), match/switch 6 (15 pts), boolean chains 6 (nesting depth added 142). Of this number, 216 points are the body\u0027s own statements and 4 belong to one function item inside it that branches. 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":"layout/src/xml/mod.rs"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6f1d04ad0cb502ddf7587fafcc43f11c1fbb9821b9619194f99d1fc183d5a1a"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::patch::normalize_az_prefixes (cognitive 219): azul_doc::patch::normalize_az_prefixes has cognitive complexity 219 (threshold 15). Drivers by points: if/else 26 (147 pts), loops 15 (72 pts) (nesting depth added 178). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/patch/mod.rs"},"region":{"startLine":760}}}],"partialFingerprints":{"codehealthFindingId/v1":"02d82c138919c27228080ae8829735521864ba9f56b2e5d7f11a5a64bb64f99e"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::layout_dom_recursive_impl (cognitive 215): LayoutWindow::layout_dom_recursive_impl has cognitive complexity 215 (threshold 15). Drivers by points: if/else 74 (165 pts), loops 10 (24 pts), match/switch 5 (19 pts), boolean chains 7 (nesting depth added 119). 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":"layout/src/window.rs"},"region":{"startLine":5543}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d04c9edc49d4f981bbe5b0f6cf06e6295a61656d18c6d85af3c9ba1223e35dd"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::layout_document (cognitive 213): azul_layout::solver3::layout_document has cognitive complexity 213 (threshold 15). Drivers by points: if/else 69 (157 pts), loops 17 (36 pts), boolean chains 14, match/switch 3 (6 pts) (nesting depth added 110). Of this number, 208 points are the body\u0027s own statements and 5 belong to one function item inside it that branches. 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":"layout/src/solver3/mod.rs"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed391c53cfa1af0dabc45924bf9198b789e07939acd9bf9c3bc42a671bb81f42"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::scroll_timer::scroll_physics_timer_callback (cognitive 209): azul_layout::scroll_timer::scroll_physics_timer_callback has cognitive complexity 209 (threshold 15). Drivers by points: if/else 55 (148 pts), boolean chains 40, loops 10 (11 pts), match/switch 5 (10 pts) (nesting depth added 99). 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":"layout/src/scroll_timer.rs"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8cf239764cf2996f3241fff532c3ff70911155e98ec3d3ea9e0549a0c08ea5d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::api::find_unused_types_simulating_removal (cognitive 208): azul_doc::api::find_unused_types_simulating_removal has cognitive complexity 208 (threshold 15). Drivers by points: if/else 21 (105 pts), loops 21 (84 pts), boolean chains 14, match/switch 2 (5 pts) (nesting depth added 150). 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":"doc/src/api.rs"},"region":{"startLine":2278}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ca6fad06a9044a0806238b30d595baffb237c9f653c6dea18311fd660258fb2"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::debug::analyze_function_dependencies (cognitive 207): azul_doc::autofix::debug::analyze_function_dependencies has cognitive complexity 207 (threshold 15). Drivers by points: if/else 40 (152 pts), loops 23 (71 pts), boolean chains 2, match/switch 2 (nesting depth added 160). 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. This shape REPEATS in the file: one other method here (azul_doc::autofix::debug::analyze_function_dependencies::reaches_difficult) 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":"doc/src/autofix/debug.rs"},"region":{"startLine":1010}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe7cf1cec6c987a0defb249a61a56d6ad13e61e1aedfcf0d3d2c4aa566fc58ba"}},{"ruleId":"D2","level":"warning","message":{"text":"IRBuilder::validate_api_json (cognitive 199): IRBuilder::validate_api_json has cognitive complexity 199 (threshold 15). Drivers by points: if/else 34 (135 pts), loops 16 (59 pts), boolean chains 5 (nesting depth added 144). Of this number, 187 points are the body\u0027s own statements and 12 belong to one function item inside it that branches. 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":"doc/src/codegen/v2/ir_builder.rs"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb47f7b5804898e2ace5d4cb50890923610b8c4bb51070c1f5513d847e694596"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::api::find_unused_types (cognitive 199): azul_doc::api::find_unused_types has cognitive complexity 199 (threshold 15). Drivers by points: if/else 19 (97 pts), loops 21 (84 pts), boolean chains 13, match/switch 2 (5 pts) (nesting depth added 144). 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":"doc/src/api.rs"},"region":{"startLine":2009}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb541f04f0c564a91bad4066065d2a1932a72edffa4e14f787a57a65394dad92"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::event_determination::determine_all_events (cognitive 191): azul_layout::event_determination::determine_all_events has cognitive complexity 191 (threshold 15). Drivers by points: if/else 71 (140 pts), boolean chains 26, loops 10 (13 pts), match/switch 4 (12 pts) (nesting depth added 80). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/event_determination.rs"},"region":{"startLine":599}}}],"partialFingerprints":{"codehealthFindingId/v1":"12f8edac3893e2316beb72c932f686fa84b8ce167fa1e1e6ee9c980837d7eee0"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::compositor2::translate_displaylist_to_wr (cognitive 187): azul_dll::desktop::compositor2::translate_displaylist_to_wr has cognitive complexity 187 (threshold 15). Drivers by points: if/else 57 (142 pts), match/switch 13 (37 pts), loops 3 (6 pts), boolean chains 2 (nesting depth added 112). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/compositor2.rs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"4788efc6510a3096e2102cab3c3d7424d20be5fc29996709d932bab138c2d53c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::compact::apply_css_property_to_compact (cognitive 186): azul_core::compact::apply_css_property_to_compact has cognitive complexity 186 (threshold 15). Drivers by points: if/else 83 (175 pts), match/switch 3 (7 pts), boolean chains 4 (nesting depth added 96). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"core/src/compact.rs"},"region":{"startLine":1305}}}],"partialFingerprints":{"codehealthFindingId/v1":"33ac6329e26816c36d3c6ac8b0043f6345a5fe07d1f52bacacf31e7b9d6697d8"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::common::layout::regenerate_layout (cognitive 183): azul_dll::desktop::shell2::common::layout::regenerate_layout has cognitive complexity 183 (threshold 15). Drivers by points: if/else 48 (117 pts), loops 18 (43 pts), match/switch 6 (12 pts), boolean chains 11 (nesting depth added 100). 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":"dll/src/desktop/shell2/common/layout.rs"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"df763f76fc07aeda75d81f3f6ba40157e5016d2ffb0f26b9e764d38833f8d607"}},{"ruleId":"D2","level":"warning","message":{"text":"X11Window::render_and_present (cognitive 177): X11Window::render_and_present has cognitive complexity 177 (threshold 15). Drivers by points: if/else 49 (136 pts), loops 3 (27 pts), boolean chains 8, match/switch 5 (6 pts) (nesting depth added 112). 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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":6380}}}],"partialFingerprints":{"codehealthFindingId/v1":"4268f17f0ac340a27630da7a1aa0a54437dc022b7f3c58fab2efae0d64e33131"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::run::run (cognitive 171): azul_dll::desktop::shell2::run::run has cognitive complexity 171 (threshold 15). Drivers by points: if/else 31 (109 pts), loops 10 (32 pts), match/switch 11 (29 pts), boolean chains 1 (nesting depth added 118). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/run.rs"},"region":{"startLine":1963}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb97eea4c46729244025525fe4163ea315244da87ee5dc140a9dcb302f0757a1"}},{"ruleId":"D2","level":"warning","message":{"text":"Emitter::plan_method (cognitive 168): Emitter::plan_method has cognitive complexity 168 (threshold 15). Drivers by points: if/else 51 (114 pts), match/switch 11 (28 pts), boolean chains 22, loops 3 (4 pts) (nesting depth added 81). 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":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":1727}}}],"partialFingerprints":{"codehealthFindingId/v1":"77d05ce0811135ddb24ca7f48d3a8f0b1a68e522b2aa4fbf118fdf767b71ebd5"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_css::parser2::new_from_str_inner (cognitive 165): azul_css::parser2::new_from_str_inner has cognitive complexity 165 (threshold 15). Drivers by points: if/else 40 (122 pts), loops 5 (22 pts), match/switch 6 (17 pts), boolean chains 4 (nesting depth added 110). Of this number, 160 points are the body\u0027s own statements and 5 belong to one function item inside it that branches. 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":"css/src/parser2.rs"},"region":{"startLine":1465}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae338a9cf01bd952cfd8ba569bd3ed5c0ea2300e5f525ffbd26d4e92e3dd158f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::cache::shape_visual_items (cognitive 164): azul_layout::text3::cache::shape_visual_items has cognitive complexity 164 (threshold 15). Drivers by points: if/else 35 (112 pts), loops 9 (34 pts), match/switch 5 (16 pts), boolean chains 2 (nesting depth added 113). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/text3/cache.rs"},"region":{"startLine":9473}}}],"partialFingerprints":{"codehealthFindingId/v1":"f38603142d42f5deb84dccdbc714aa570e61e63493876151871e07d68b548301"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::cache::position_one_line (cognitive 161): azul_layout::text3::cache::position_one_line has cognitive complexity 161 (threshold 15). Drivers by points: if/else 55 (135 pts), boolean chains 12, match/switch 4 (9 pts), loops 3 (5 pts) (nesting depth added 87). 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":"layout/src/text3/cache.rs"},"region":{"startLine":11839}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b333662a34bc864925623d58b97764e3696c8142571194f1e3247ab9177d490"}},{"ruleId":"D2","level":"warning","message":{"text":"TileCacheInstance::update_prim_dependencies (cognitive 161): TileCacheInstance::update_prim_dependencies has cognitive complexity 161 (threshold 15). Drivers by points: if/else 48 (112 pts), loops 12 (29 pts), boolean chains 10, match/switch 5 (10 pts) (nesting depth added 86). 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":"webrender/core/src/picture.rs"},"region":{"startLine":3038}}}],"partialFingerprints":{"codehealthFindingId/v1":"a63e899c483b8f2a490bfefc23603410eb4ef97e0c86666bca0f3a12592390d9"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::cache::reconcile_recursive (cognitive 160): azul_layout::solver3::cache::reconcile_recursive has cognitive complexity 160 (threshold 15). Drivers by points: if/else 51 (136 pts), loops 4 (14 pts), boolean chains 8, match/switch 2 (nesting depth added 95). 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":"layout/src/solver3/cache.rs"},"region":{"startLine":1540}}}],"partialFingerprints":{"codehealthFindingId/v1":"39236caaa678b92967968ae91fe8d7a6045754f94c77e231aa1e9a48ccb208e3"}},{"ruleId":"D2","level":"warning","message":{"text":"Emitter::plan_method (cognitive 157): Emitter::plan_method has cognitive complexity 157 (threshold 15). Drivers by points: if/else 55 (104 pts), boolean chains 26, match/switch 8 (23 pts), loops 3 (4 pts) (nesting depth added 65). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":1710}}}],"partialFingerprints":{"codehealthFindingId/v1":"b11cf3cf7ac1e2fdc2f54d088648fd4e4187496ec9e0fc9115602f8c5ef79b4d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::patch::apply_class_patch (cognitive 154): azul_doc::patch::apply_class_patch has cognitive complexity 154 (threshold 15). Drivers by points: if/else 58 (96 pts), loops 14 (56 pts), boolean chains 2 (nesting depth added 80). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/patch/mod.rs"},"region":{"startLine":1100}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa5c889f696bc72e25bd0fa0e30b8a82816fe0962bc9d54a0c1361e1fa04c563"}},{"ruleId":"D2","level":"warning","message":{"text":"RemillTranspiler::produce_object_from_lifted_ir (cognitive 153): RemillTranspiler::produce_object_from_lifted_ir has cognitive complexity 153 (threshold 15). Drivers by points: if/else 46 (126 pts), boolean chains 25, loops 1, match/switch 1 (nesting depth added 80). 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":1272}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3c0036cc1b81e927579d43bb41006617decbb5000adf44a94754738ac36a7a4"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::function_diff::generate_add_type_patches (cognitive 152): azul_doc::autofix::function_diff::generate_add_type_patches has cognitive complexity 152 (threshold 15). Drivers by points: if/else 38 (111 pts), loops 8 (24 pts), match/switch 4 (10 pts), boolean chains 7 (nesting depth added 95). 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":"doc/src/autofix/function_diff.rs"},"region":{"startLine":1192}}}],"partialFingerprints":{"codehealthFindingId/v1":"57ee9c6f4908cabecfe1a1064e2c410e73ce208836f8598bba580cbfb8046d6b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::cache::perform_fragment_layout (cognitive 151): azul_layout::text3::cache::perform_fragment_layout has cognitive complexity 151 (threshold 15). Drivers by points: if/else 46 (118 pts), match/switch 4 (14 pts), loops 5 (11 pts), boolean chains 8 (nesting depth added 88). 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":"layout/src/text3/cache.rs"},"region":{"startLine":10761}}}],"partialFingerprints":{"codehealthFindingId/v1":"b31cc5bfcf7a5272d886c56a38a889d662fb11f3ea81c4660346ae3003947117"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::workspace::generate_patches (cognitive 149): azul_doc::autofix::workspace::generate_patches has cognitive complexity 149 (threshold 15). Drivers by points: if/else 43 (107 pts), loops 13 (18 pts), match/switch 6 (15 pts), boolean chains 9 (nesting depth added 78). 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":"doc/src/autofix/workspace.rs"},"region":{"startLine":432}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd7fb03c6a48485b6d87d0229172c39270bfb7aff6041da4cfb3453602278b3a"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::reshape_text_node (cognitive 148): LayoutWindow::reshape_text_node has cognitive complexity 148 (threshold 15). Drivers by points: if/else 49 (129 pts), loops 5 (12 pts), boolean chains 6, match/switch 1 (nesting depth added 87). 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":"layout/src/window.rs"},"region":{"startLine":17383}}}],"partialFingerprints":{"codehealthFindingId/v1":"3827d733a64fbb9ea39a4273e51f5e7b9d2672e86fbbefafb048f3769ee196aa"}},{"ruleId":"D2","level":"warning","message":{"text":"PythonGenerator::generate_pymethod (cognitive 139): PythonGenerator::generate_pymethod has cognitive complexity 139 (threshold 15). Drivers by points: if/else 74 (114 pts), loops 6 (9 pts), match/switch 5 (9 pts), boolean chains 7 (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":"doc/src/codegen/v2/lang_python.rs"},"region":{"startLine":2467}}}],"partialFingerprints":{"codehealthFindingId/v1":"f265f9048c01d17a7a5c762feb7fa71f1af115f62a93ca30fbe83a3de077c230"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::patch::update_type_references (cognitive 139): azul_doc::patch::update_type_references has cognitive complexity 139 (threshold 15). Drivers by points: if/else 17 (84 pts), loops 13 (55 pts) (nesting depth added 109). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/patch/mod.rs"},"region":{"startLine":1906}}}],"partialFingerprints":{"codehealthFindingId/v1":"390172812fdd7e343bcfb53e2d096e95599a7b0ddc6eea89022c60e0236c68e3"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::x11::init_xinput2 (cognitive 138): azul_dll::desktop::shell2::linux::x11::init_xinput2 has cognitive complexity 138 (threshold 15). Drivers by points: if/else 46 (113 pts), boolean chains 12, loops 5 (12 pts), match/switch 1 (nesting depth added 74). 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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":866}}}],"partialFingerprints":{"codehealthFindingId/v1":"d12c2272c565e1734a88bf699b73e1425b836e5a7b81986e0027ac6d7cdaf2a5"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::apply_text_tweens (cognitive 134): LayoutWindow::apply_text_tweens has cognitive complexity 134 (threshold 15). Drivers by points: if/else 43 (92 pts), match/switch 11 (24 pts), boolean chains 12, loops 3 (6 pts) (nesting depth added 65). 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":"layout/src/window.rs"},"region":{"startLine":8915}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4b997a2ea7f5b5d8c6e850322a636761fedb847a17e7864664222c90b13a1a4"}},{"ruleId":"D2","level":"warning","message":{"text":"X11Window::handle_event (cognitive 133): X11Window::handle_event has cognitive complexity 133 (threshold 15). Drivers by points: if/else 45 (108 pts), match/switch 7 (15 pts), boolean chains 10 (nesting depth added 71). 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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":4836}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf38fa24de744491ff10c27d915e39be66cca6efa406f8b9a88c9f8b1be3f19e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::video_codec::stream::decode_stream (cognitive 132): azul_dll::desktop::extra::video_codec::stream::decode_stream has cognitive complexity 132 (threshold 15). Drivers by points: if/else 28 (95 pts), match/switch 7 (20 pts), loops 5 (15 pts), boolean chains 2 (nesting depth added 90). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/extra/video_codec/stream.rs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd938365c02ef548a4be2d49b74aa5c2e32725766b5529bd584ac202dbebf99b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::fc::position_table_cells (cognitive 131): azul_layout::solver3::fc::position_table_cells has cognitive complexity 131 (threshold 15). Drivers by points: if/else 38 (100 pts), loops 8 (17 pts), match/switch 4 (13 pts), boolean chains 1 (nesting depth added 80). 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":"layout/src/solver3/fc.rs"},"region":{"startLine":7936}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bb37f0b16062981f31dae9163d1f4b80a0ce6803092aaa713bcb6cef1b8cdb3"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::android::drain_input (cognitive 130): azul_dll::desktop::shell2::android::drain_input has cognitive complexity 130 (threshold 15). Drivers by points: if/else 38 (97 pts), match/switch 11 (21 pts), loops 5 (7 pts), boolean chains 5 (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":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":1262}}}],"partialFingerprints":{"codehealthFindingId/v1":"7379a98b4f5363a8fbf1280c11d9094fe765cf77ee81047378adaee7a2c0d997"}},{"ruleId":"D2","level":"warning","message":{"text":"MacOSWindow::render_and_present_in_draw_rect (cognitive 128): MacOSWindow::render_and_present_in_draw_rect has cognitive complexity 128 (threshold 15). Drivers by points: if/else 46 (94 pts), match/switch 8 (28 pts), boolean chains 6 (nesting depth added 68). 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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":7700}}}],"partialFingerprints":{"codehealthFindingId/v1":"10e3185bde49260c55e354a476a7d57c1426708f1a2fb0131a82c39294ca7fc6"}},{"ruleId":"D2","level":"warning","message":{"text":"Emitter::emit_method (cognitive 128): Emitter::emit_method has cognitive complexity 128 (threshold 15). Drivers by points: if/else 41 (83 pts), match/switch 6 (17 pts), boolean chains 14, loops 8 (14 pts) (nesting depth added 59). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/wrappers.rs"},"region":{"startLine":1030}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec153388936bf12328d4e2372523df70cbdf04a61236556990faef094b7bfc0b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::symbol_table::classify_for_name (cognitive 127): azul_dll::web::symbol_table::classify_for_name has cognitive complexity 127 (threshold 15). Drivers by points: if/else 49 (80 pts), boolean chains 36, loops 6 (7 pts), match/switch 2 (4 pts) (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":"dll/src/web/symbol_table.rs"},"region":{"startLine":2437}}}],"partialFingerprints":{"codehealthFindingId/v1":"94289aab4da97e71e19f45d900b2634ae90575256648634ca0ee9c2b4d1c3619"}},{"ruleId":"D2","level":"warning","message":{"text":"CssPropertyCache::build_compact_cache (cognitive 125): CssPropertyCache::build_compact_cache has cognitive complexity 125 (threshold 15). Drivers by points: if/else 61 (117 pts), match/switch 1 (4 pts), boolean chains 2, loops 2 (nesting depth added 59). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"core/src/compact.rs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"643906f591144c08127e2316bb24656f9d26362bce2f3a73d8cef79f6a2813d4"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::dllgen::deploy::verify_examples (cognitive 125): azul_doc::dllgen::deploy::verify_examples has cognitive complexity 125 (threshold 15). Drivers by points: if/else 28 (106 pts), loops 6 (17 pts), boolean chains 2 (nesting depth added 89). 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":"doc/src/dllgen/deploy.rs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6a0c41a8e9f0b668b16b1572c97b21c8d8d2830e00f359d2b547ab8bc480811"}},{"ruleId":"D2","level":"warning","message":{"text":"webrender::prepare::prepare_interned_prim_for_render (cognitive 125): webrender::prepare::prepare_interned_prim_for_render has cognitive complexity 125 (threshold 15). Drivers by points: if/else 32 (77 pts), loops 6 (23 pts), match/switch 7 (17 pts), boolean chains 8 (nesting depth added 72). 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":"webrender/core/src/prepare.rs"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c6a5abfa699ffd1e4445d194549193a9117a086ef2a9ee059c38316a4e328f2"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::raster::render_single_item (cognitive 124): azul_layout::cpurender::raster::render_single_item has cognitive complexity 124 (threshold 15). Drivers by points: if/else 34 (91 pts), loops 7 (24 pts), boolean chains 8, match/switch 1 (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":"layout/src/cpurender/raster.rs"},"region":{"startLine":1830}}}],"partialFingerprints":{"codehealthFindingId/v1":"a99fd0ff66f7a37940b4bc4dc41bf47c5656290ce8fc0ae685385d6c20e4090e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::display_list::paginate_pages_impl (cognitive 121): azul_layout::solver3::display_list::paginate_pages_impl has cognitive complexity 121 (threshold 15). Drivers by points: if/else 30 (80 pts), loops 11 (30 pts), boolean chains 9, match/switch 1 (2 pts) (nesting depth added 70). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/solver3/display_list.rs"},"region":{"startLine":9684}}}],"partialFingerprints":{"codehealthFindingId/v1":"44f7ef80f41cd6be462d2fd61ee3cb7aa2a71e1c6ca8a18452c93b4f2991444f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::compositor::compute_display_list_damage_impl (cognitive 121): azul_layout::cpurender::compositor::compute_display_list_damage_impl has cognitive complexity 121 (threshold 15). Drivers by points: if/else 30 (102 pts), boolean chains 10, match/switch 2 (8 pts), loops 1 (nesting depth added 78). 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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":2982}}}],"partialFingerprints":{"codehealthFindingId/v1":"c08ee4c95cd4de296f722a08c1ac625a8fc513d9a92e5a24fb3fbe8f57c645d7"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::fc::collect_and_measure_inline_content_impl (cognitive 121): azul_layout::solver3::fc::collect_and_measure_inline_content_impl has cognitive complexity 121 (threshold 15). Drivers by points: if/else 45 (99 pts), match/switch 4 (11 pts), loops 3 (7 pts), boolean chains 4 (nesting depth added 65). 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":"layout/src/solver3/fc.rs"},"region":{"startLine":8628}}}],"partialFingerprints":{"codehealthFindingId/v1":"e524784ebb088442adff4a2e191600ee757b26793d10d1ea893ff88fb2efd9b9"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::fc::translate_to_text3_constraints (cognitive 120): azul_layout::solver3::fc::translate_to_text3_constraints has cognitive complexity 120 (threshold 15). Drivers by points: if/else 64 (75 pts), match/switch 28 (43 pts), boolean chains 2 (nesting depth added 26). 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":"layout/src/solver3/fc.rs"},"region":{"startLine":4623}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce66d7a6823f72b142b93e305c85198cbbedb8ab32959e670b23b54f87b1d94f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::transmute_helpers::generate_transmuted_fn_body (cognitive 119): azul_doc::codegen::v2::transmute_helpers::generate_transmuted_fn_body has cognitive complexity 119 (threshold 15). Drivers by points: if/else 52 (100 pts), boolean chains 15, loops 3 (4 pts) (nesting depth added 49). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/transmute_helpers.rs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b0825ff74ec63d359d8efb67c02d2cba81dd76701a3b9187333315d7ee69c8a"}},{"ruleId":"D2","level":"warning","message":{"text":"CpuBackend::render_frame (cognitive 118): CpuBackend::render_frame has cognitive complexity 118 (threshold 15). Drivers by points: if/else 50 (66 pts), match/switch 13 (25 pts), boolean chains 20, loops 3 (7 pts) (nesting depth added 32). 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":"dll/src/desktop/shell2/headless/mod.rs"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"f934c2919411e0f0efb0da21e63bb0c3b4140aaa9f7ba68edad46d025f5d9ec0"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::debug::debug_type_in_index (cognitive 118): azul_doc::autofix::debug::debug_type_in_index has cognitive complexity 118 (threshold 15). Drivers by points: if/else 22 (81 pts), loops 6 (24 pts), match/switch 4 (13 pts) (nesting depth added 86). 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":"doc/src/autofix/debug.rs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"08def9ac15f5227f50346d4f2816e8bc250e1d40a8764f622f216bc57ae35507"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::autodebug::discover_failing_tests (cognitive 117): azul_doc::reftest::autodebug::discover_failing_tests has cognitive complexity 117 (threshold 15). Drivers by points: if/else 39 (84 pts), loops 10 (21 pts), boolean chains 6, match/switch 4 (6 pts) (nesting depth added 58). 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":"doc/src/reftest/autodebug.rs"},"region":{"startLine":987}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bbbbc3adab1dea3d6ce03f721a2b8acfc5cde14e1563ce658b28dc7c069676b"}},{"ruleId":"D2","level":"warning","message":{"text":"RemillTranspiler::lift_with_transitive_deps_batched (cognitive 115): RemillTranspiler::lift_with_transitive_deps_batched has cognitive complexity 115 (threshold 15). Drivers by points: if/else 35 (75 pts), loops 18 (32 pts), boolean chains 6, match/switch 1 (2 pts) (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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":3387}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4a9dc697a5e6c7c8c5ede130ee8641bf00a9634b13f5f4acc0caa87c1f10e27"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::diff::resolve_api_functions_with_workspace_index (cognitive 114): azul_doc::autofix::diff::resolve_api_functions_with_workspace_index has cognitive complexity 114 (threshold 15). Drivers by points: loops 14 (69 pts), if/else 10 (45 pts) (nesting depth added 90). 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":"doc/src/autofix/diff.rs"},"region":{"startLine":781}}}],"partialFingerprints":{"codehealthFindingId/v1":"0eae301bab1b2c8443f59f4c6eba3264883bbc5f6b9ee4ef4576ae388a9cedd9"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::process_mouse_click_for_selection (cognitive 114): LayoutWindow::process_mouse_click_for_selection has cognitive complexity 114 (threshold 15). Drivers by points: if/else 31 (84 pts), loops 6 (14 pts), match/switch 3 (13 pts), boolean chains 3 (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":"layout/src/window.rs"},"region":{"startLine":19366}}}],"partialFingerprints":{"codehealthFindingId/v1":"eff3cd094a94d0eb681f40790f63fc2f3181d6fa24ab55b3fa186690049f872e"}},{"ruleId":"D2","level":"warning","message":{"text":"webrender::quad::prepare_quad (cognitive 114): webrender::quad::prepare_quad has cognitive complexity 114 (threshold 15). Drivers by points: if/else 27 (62 pts), match/switch 10 (31 pts), loops 7 (16 pts), boolean chains 5 (nesting depth added 65). Of this number, 111 points are the body\u0027s own statements and 3 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":"webrender/core/src/quad.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c5287ac19cc68314962b68117385d542d2473d37699903e0342f64158039217"}},{"ruleId":"D2","level":"warning","message":{"text":"SceneBuilder::wrap_prim_with_filters (cognitive 113): SceneBuilder::wrap_prim_with_filters has cognitive complexity 113 (threshold 15). Drivers by points: if/else 25 (71 pts), loops 10 (27 pts), match/switch 4 (14 pts), boolean chains 1 (nesting depth added 73). Of this number, 106 points are the body\u0027s own statements and 7 belong to one function item inside it that branches. 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":"webrender/core/src/scene_building.rs"},"region":{"startLine":3599}}}],"partialFingerprints":{"codehealthFindingId/v1":"423636c0e73333d892d69d6398be52b817184c883ae1d92bc5e6c9551a8599b4"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::symbol_table::compute_hashbrown_empty_group_ranges (cognitive 112): azul_dll::web::symbol_table::compute_hashbrown_empty_group_ranges has cognitive complexity 112 (threshold 15). Drivers by points: if/else 19 (66 pts), loops 9 (28 pts), boolean chains 12, match/switch 3 (6 pts) (nesting depth added 69). 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":"dll/src/web/symbol_table.rs"},"region":{"startLine":3247}}}],"partialFingerprints":{"codehealthFindingId/v1":"353e11292dc53bf0e83d2562de54b6fb02976aca979bcdb485e2a8626c06fa13"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::collect_synth_data_pages (cognitive 110): azul_dll::web::transpiler_remill::collect_synth_data_pages has cognitive complexity 110 (threshold 15). Drivers by points: if/else 28 (75 pts), loops 11 (30 pts), boolean chains 5 (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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":4742}}}],"partialFingerprints":{"codehealthFindingId/v1":"46e4c42942209e68f43628f598d5203d674b3b916dd63d36f88c3f2c23515502"}},{"ruleId":"D2","level":"warning","message":{"text":"TaffyBridge::translate_style_to_taffy (cognitive 107): TaffyBridge::translate_style_to_taffy has cognitive complexity 107 (threshold 15). Drivers by points: if/else 58 (86 pts), match/switch 15 (17 pts), boolean chains 4 (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":"layout/src/solver3/taffy_bridge.rs"},"region":{"startLine":734}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d0b087f7ce6bbf417bf50337923e13460d3fdbe736c0f56f764321a139a6730"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::diff::find_dead_type_clusters (cognitive 106): azul_doc::autofix::diff::find_dead_type_clusters has cognitive complexity 106 (threshold 15). Drivers by points: if/else 23 (73 pts), loops 14 (31 pts), boolean chains 2 (nesting depth added 67). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/autofix/diff.rs"},"region":{"startLine":1491}}}],"partialFingerprints":{"codehealthFindingId/v1":"955043e4f6f225a3ae23450f54bfa2e732aa04e2630717d511a325bfd2b9029b"}},{"ruleId":"D2","level":"warning","message":{"text":"TileCacheInstance::pre_update (cognitive 106): TileCacheInstance::pre_update has cognitive complexity 106 (threshold 15). Drivers by points: if/else 23 (61 pts), loops 15 (31 pts), boolean chains 7, match/switch 4 (7 pts) (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":"webrender/core/src/picture.rs"},"region":{"startLine":2047}}}],"partialFingerprints":{"codehealthFindingId/v1":"720ccd39727f964f0907a26663ee0f20ddc1e57c1c55f7b5ada77bfa0216375e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::fc::layout_ifc (cognitive 105): azul_layout::solver3::fc::layout_ifc has cognitive complexity 105 (threshold 15). Drivers by points: if/else 36 (79 pts), match/switch 9 (13 pts), loops 5 (10 pts), boolean chains 3 (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":"layout/src/solver3/fc.rs"},"region":{"startLine":3570}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a6df4bb05f5ae2413529e79e8fa01829eedaf87fafbd9e48cbf8dd5bb989041"}},{"ruleId":"D2","level":"warning","message":{"text":"A11yManager::update_tree (cognitive 104): A11yManager::update_tree has cognitive complexity 104 (threshold 15). Drivers by points: if/else 26 (82 pts), loops 6 (12 pts), match/switch 2 (7 pts), boolean chains 3 (nesting depth added 67). 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":"layout/src/managers/a11y.rs"},"region":{"startLine":470}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad4d882a36c2a42f9f6c48e7115dc19f206c3b518c14bd88f7aa9d73468941f4"}},{"ruleId":"D2","level":"warning","message":{"text":"DisplayListGenerator::paint_inline_content (cognitive 102): DisplayListGenerator::paint_inline_content has cognitive complexity 102 (threshold 15). Drivers by points: if/else 29 (70 pts), boolean chains 11, match/switch 4 (11 pts), loops 6 (10 pts) (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":"layout/src/solver3/display_list.rs"},"region":{"startLine":7603}}}],"partialFingerprints":{"codehealthFindingId/v1":"682d8559b4f9822a3f5bc1a0676feb09f5ceb177d75f77f28657d32215e3509f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::type_index::extract_custom_impls_from_items (cognitive 100): azul_doc::autofix::type_index::extract_custom_impls_from_items has cognitive complexity 100 (threshold 15). Drivers by points: if/else 20 (74 pts), loops 6 (25 pts), boolean chains 1 (nesting depth added 73). 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":"doc/src/autofix/type_index.rs"},"region":{"startLine":2890}}}],"partialFingerprints":{"codehealthFindingId/v1":"574707f31d1543cf144ec64f9637999fa1a03338c7d079beb299d4120ee2b476"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::cache::break_one_line (cognitive 100): azul_layout::text3::cache::break_one_line has cognitive complexity 100 (threshold 15). Drivers by points: if/else 26 (78 pts), loops 5 (14 pts), match/switch 1 (5 pts), boolean chains 3 (nesting depth added 65). 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":"layout/src/text3/cache.rs"},"region":{"startLine":11352}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a51d08473857a1b2c3bec0b2b45379052de9a101186c34a369d242ed9b64eb5"}},{"ruleId":"D2","level":"warning","message":{"text":"WaylandWindow::new (cognitive 99): WaylandWindow::new has cognitive complexity 99 (threshold 15). Drivers by points: if/else 43 (78 pts), match/switch 6 (14 pts), boolean chains 5, loops 1 (2 pts) (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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":1972}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a374c19e40102b1992f0ce5872adee31dc9e7a525fc2799f2c7c007d6fa214f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::check_doc_characters (cognitive 99): azul_doc::autofix::check_doc_characters has cognitive complexity 99 (threshold 15). Drivers by points: if/else 14 (71 pts), loops 8 (28 pts) (nesting depth added 77). Of this number, 96 points are the body\u0027s own statements and 3 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":"doc/src/autofix/mod.rs"},"region":{"startLine":3093}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3861de2920fbcb213e1592efc834dc5bde6c3b92d0bce0aae9d31450d71f698"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::xml::apply_xml_node_attributes (cognitive 97): azul_core::xml::apply_xml_node_attributes has cognitive complexity 97 (threshold 15). Drivers by points: if/else 40 (76 pts), boolean chains 7, loops 3 (7 pts), match/switch 3 (7 pts) (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":"core/src/xml.rs"},"region":{"startLine":5774}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e6a66dbafdcc5a854c1910dc8e09f85851181d7afc9985c7f088e4c60fe2dc7"}},{"ruleId":"D2","level":"warning","message":{"text":"IRBuilder::sort_types_by_dependencies (cognitive 96): IRBuilder::sort_types_by_dependencies has cognitive complexity 96 (threshold 15). Drivers by points: if/else 17 (57 pts), loops 14 (21 pts), boolean chains 13, match/switch 2 (5 pts) (nesting depth added 50). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/ir_builder.rs"},"region":{"startLine":528}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aba6ca79a7135fdca47389a37f60c7dd2be0c4e32515206f632f8af5b3cf95f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::cache::create_logical_items (cognitive 96): azul_layout::text3::cache::create_logical_items has cognitive complexity 96 (threshold 15). Drivers by points: if/else 24 (74 pts), match/switch 3 (9 pts), loops 4 (8 pts), boolean chains 5 (nesting depth added 60). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/text3/cache.rs"},"region":{"startLine":8352}}}],"partialFingerprints":{"codehealthFindingId/v1":"110fb75f11dcf0b581dff7954f0d18cc2c0080d02d2f3d8c9c858836ce7076b8"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::run::run (cognitive 94): azul_dll::desktop::shell2::run::run has cognitive complexity 94 (threshold 15). Drivers by points: if/else 22 (68 pts), loops 9 (20 pts), match/switch 2 (6 pts) (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":"dll/src/desktop/shell2/run.rs"},"region":{"startLine":1477}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c7fa065d815bd588cab23a9f45a3d5d6ef0a103f5383d76f1f2087a1d6379de"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_csharp::wrappers::emit_wrapper_method (cognitive 94): azul_doc::codegen::v2::lang_csharp::wrappers::emit_wrapper_method has cognitive complexity 94 (threshold 15). Drivers by points: if/else 47 (63 pts), match/switch 6 (14 pts), loops 6 (10 pts), boolean chains 7 (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":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":1419}}}],"partialFingerprints":{"codehealthFindingId/v1":"d67346a7621a4f47964f56bf77a4135ab6c5b96e7cfe3be04b8274092c4f8ebe"}},{"ruleId":"D2","level":"warning","message":{"text":"RenderTaskGraphBuilder::end_frame (cognitive 94): RenderTaskGraphBuilder::end_frame has cognitive complexity 94 (threshold 15). Drivers by points: if/else 16 (49 pts), loops 15 (27 pts), match/switch 4 (16 pts), boolean chains 2 (nesting depth added 57). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"webrender/core/src/render_task_graph.rs"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a015c6e2945218475baaf978fff775a514124d7fff9b387da0ca9c38b65ee2a"}},{"ruleId":"D2","level":"warning","message":{"text":"azul-search.mount (cognitive 94): azul-search.mount has cognitive complexity 94 (threshold 15). Drivers by points: if/else 53 (67 pts), boolean chains 23, ternaries 2, error handling 1, loops 1 (nesting depth added 14). Of this number, 55 points are the body\u0027s own statements and 39 belong to 10 function literals inside it that branch. 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":"doc/templates/azul-search.js"},"region":{"startLine":559}}}],"partialFingerprints":{"codehealthFindingId/v1":"88eb1fa7d8dba2abc9f512de8eff642f66b1e92b5fa25e7ab039c98f3507f2ca"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::diff::reconcile_dom (cognitive 93): azul_core::diff::reconcile_dom has cognitive complexity 93 (threshold 15). Drivers by points: if/else 29 (75 pts), loops 10, boolean chains 8 (nesting depth added 46). Of this number, 90 points are the body\u0027s own statements and 3 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":"core/src/diff.rs"},"region":{"startLine":569}}}],"partialFingerprints":{"codehealthFindingId/v1":"236400374d9f7aa41d1d3a35a0b07108de68f344b2bafb32751cba696c1ced66"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::x11::handle_xi_device_event (cognitive 93): azul_dll::desktop::shell2::linux::x11::handle_xi_device_event has cognitive complexity 93 (threshold 15). Drivers by points: if/else 30 (64 pts), match/switch 8 (24 pts), boolean chains 5 (nesting depth added 50). 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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":2048}}}],"partialFingerprints":{"codehealthFindingId/v1":"54a380a7bb1d09130e1755ad2639f4c7a1ba362a85442e93ba218b08e93ab505"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::patch::parser::organize_symbols (cognitive 92): azul_doc::patch::parser::organize_symbols has cognitive complexity 92 (threshold 15). Drivers by points: if/else 20 (75 pts), loops 7 (12 pts), match/switch 1 (3 pts), boolean chains 2 (nesting depth added 62). 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":"doc/src/patch/parser.rs"},"region":{"startLine":932}}}],"partialFingerprints":{"codehealthFindingId/v1":"02045f8ae5284ba5773467fc1ec54e40c94b3640735c5722ba53528d0e01a2b7"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::patch::index::extract_types_from_file (cognitive 92): azul_doc::patch::index::extract_types_from_file has cognitive complexity 92 (threshold 15). Drivers by points: if/else 22 (69 pts), loops 6 (13 pts), match/switch 3 (9 pts), boolean chains 1 (nesting depth added 60). 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":"doc/src/patch/index.rs"},"region":{"startLine":1196}}}],"partialFingerprints":{"codehealthFindingId/v1":"403322987587e3200992ce5fd3e4d25893a94dc4094a0a702790c0f11ca16d28"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::begin_reconciliation (cognitive 91): LayoutWindow::begin_reconciliation has cognitive complexity 91 (threshold 15). Drivers by points: if/else 24 (70 pts), loops 8 (15 pts), match/switch 2 (4 pts), boolean chains 2 (nesting depth added 55). 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":"layout/src/window.rs"},"region":{"startLine":10861}}}],"partialFingerprints":{"codehealthFindingId/v1":"85095ec8757503746760b89a0a8eca245acda238950cd32391b8b3610e110db4"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::ios::handle_touch (cognitive 90): azul_dll::desktop::shell2::ios::handle_touch has cognitive complexity 90 (threshold 15). Drivers by points: if/else 32 (72 pts), loops 3 (8 pts), match/switch 5 (6 pts), boolean chains 4 (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":"dll/src/desktop/shell2/ios/mod.rs"},"region":{"startLine":331}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef2ebd99ace9622afd34733e2d71fc59b19bda96ef25401f250b479db4826cb3"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::debug::analyze_ffi_difficulty (cognitive 90): azul_doc::autofix::debug::analyze_ffi_difficulty has cognitive complexity 90 (threshold 15). Drivers by points: if/else 16 (54 pts), loops 12 (34 pts), match/switch 2 (nesting depth added 60). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/autofix/debug.rs"},"region":{"startLine":706}}}],"partialFingerprints":{"codehealthFindingId/v1":"36feefba6039d42339a39a121714737c36cc33407c07f1ee96b34fb2e695d378"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::reloc_canonicalize (cognitive 89): azul_dll::web::transpiler_remill::reloc_canonicalize has cognitive complexity 89 (threshold 15). Drivers by points: if/else 19 (58 pts), loops 6 (22 pts), boolean chains 9 (nesting depth added 55). 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":7689}}}],"partialFingerprints":{"codehealthFindingId/v1":"30197c2b3ada662b3076d89ddd87dcacd6e830b59cca935b5dff58e425b61876"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::autofix_api (cognitive 89): azul_doc::autofix::autofix_api has cognitive complexity 89 (threshold 15). Drivers by points: if/else 27 (50 pts), loops 15 (23 pts), match/switch 4 (15 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":"doc/src/autofix/mod.rs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"93a76d4c891179c1a7f8a2810c1f870b883f872d1af77484fccb9c495590f5cd"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::tick_animations (cognitive 87): LayoutWindow::tick_animations has cognitive complexity 87 (threshold 15). Drivers by points: if/else 23 (63 pts), loops 8 (14 pts), match/switch 2 (7 pts), boolean chains 3 (nesting depth added 51). 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":"layout/src/window.rs"},"region":{"startLine":11609}}}],"partialFingerprints":{"codehealthFindingId/v1":"58cf9853a1ae2f4bd6eeb6c749e821bb84c16472242141ddc94fd358378c9f9b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::type_resolver::extract_functions_from_items (cognitive 85): azul_doc::autofix::type_resolver::extract_functions_from_items has cognitive complexity 85 (threshold 15). Drivers by points: if/else 11 (38 pts), match/switch 7 (31 pts), loops 4 (14 pts), boolean chains 2 (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":"doc/src/autofix/type_resolver.rs"},"region":{"startLine":601}}}],"partialFingerprints":{"codehealthFindingId/v1":"4966785ddba573898f6ec2fe70e7718cc9ea47017236488a7cd8a3444c7d6214"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::sizing::calculate_used_size_for_node (cognitive 85): azul_layout::solver3::sizing::calculate_used_size_for_node has cognitive complexity 85 (threshold 15). Drivers by points: if/else 41 (52 pts), match/switch 12 (21 pts), boolean chains 12 (nesting depth added 20). 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":"layout/src/solver3/sizing.rs"},"region":{"startLine":1730}}}],"partialFingerprints":{"codehealthFindingId/v1":"b90c193cb575d98fa0f114376f6f86972f3f1067f0bdf9d2fde4ea329b1a0666"}},{"ruleId":"D2","level":"warning","message":{"text":"CssPropertyCache::get_computed_css_style_string (cognitive 84): CssPropertyCache::get_computed_css_style_string has cognitive complexity 84 (threshold 15). Drivers by points: if/else 84. 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":"core/src/prop_cache.rs"},"region":{"startLine":2149}}}],"partialFingerprints":{"codehealthFindingId/v1":"3083760baf97e248d1ffa11f7f6fdd06e93b0864101cdb6dba31a3b2c563dfc8"}},{"ruleId":"D2","level":"warning","message":{"text":"Emitter::emit_string_ext (cognitive 84): Emitter::emit_string_ext has cognitive complexity 84 (threshold 15). Drivers by points: if/else 26 (44 pts), match/switch 8 (25 pts), loops 7 (13 pts), boolean chains 2 (nesting depth added 41). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":3259}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b98a054ca6add199cad7cc98d0b32e1556221d53dd591eb526c432d9300ef6e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::widgets::node_graph::nodegraph_drag_graph_or_nodes (cognitive 84): azul_layout::widgets::node_graph::nodegraph_drag_graph_or_nodes has cognitive complexity 84 (threshold 15). Drivers by points: if/else 28 (63 pts), match/switch 6 (13 pts), loops 3 (6 pts), boolean chains 2 (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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":3109}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca9ddcce52b55cb784a79b9205a56b5ff4b322ea453ae38de747c9b986dfddd7"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::inject_user_binary_data_segments (cognitive 83): azul_dll::web::transpiler_remill::inject_user_binary_data_segments has cognitive complexity 83 (threshold 15). Drivers by points: if/else 24 (62 pts), loops 8 (14 pts), boolean chains 5, match/switch 2 (nesting depth added 44). 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":4024}}}],"partialFingerprints":{"codehealthFindingId/v1":"d17166ce57f6cc74cbe0fbdd3ab04e628e1b62798c97e5d2bf39256fc9b66da0"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::cache::calculate_layout_for_subtree_fragment (cognitive 83): azul_layout::solver3::cache::calculate_layout_for_subtree_fragment has cognitive complexity 83 (threshold 15). Drivers by points: if/else 29 (60 pts), match/switch 5 (10 pts), boolean chains 8, loops 2 (5 pts) (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":"layout/src/solver3/cache.rs"},"region":{"startLine":3020}}}],"partialFingerprints":{"codehealthFindingId/v1":"8134f594ed20d659e4a3e9961d80080428ab800706e4e60d7749a5113199a55b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::regression::generate_visual_html_report (cognitive 81): azul_doc::reftest::regression::generate_visual_html_report has cognitive complexity 81 (threshold 15). Drivers by points: if/else 22 (66 pts), loops 5 (8 pts), match/switch 2 (7 pts) (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":"doc/src/reftest/regression.rs"},"region":{"startLine":2056}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d92046d41de5aa1c4d30a27650007d751c90715e67eb5d048a30bc981407b3e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_lua::cdef::strip_preprocessor (cognitive 81): azul_doc::codegen::v2::lang_lua::cdef::strip_preprocessor has cognitive complexity 81 (threshold 15). Drivers by points: if/else 28 (66 pts), boolean chains 8, loops 3 (7 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":"doc/src/codegen/v2/lang_lua/cdef.rs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ad1bc5dacd16e76c421b00d870d6398b03f97aae59c2ac92745725471a9087c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::display_list::split_text_for_glides (cognitive 81): azul_layout::solver3::display_list::split_text_for_glides has cognitive complexity 81 (threshold 15). Drivers by points: if/else 17 (54 pts), loops 5 (15 pts), boolean chains 7, match/switch 1 (5 pts) (nesting depth added 51). Of this number, 80 points are the body\u0027s own statements and 1 belongs to one function item inside it that branches. 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":"layout/src/solver3/display_list.rs"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"c72173873c930d060e0137e206ffa7ebdbda9befbc1821d1987dfa4a2edde163"}},{"ruleId":"D2","level":"warning","message":{"text":"lockfile_guard.main (cognitive 81): lockfile_guard.main has cognitive complexity 81 (threshold 15). Drivers by points: if/else 25 (50 pts), ternaries 8 (17 pts), loops 5 (9 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":"scripts/supply-chain/lockfile_guard.py"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0bf9baaeeb9803efbb37a5f350940c7302a8573f236dccd2f089bbe34299401"}},{"ruleId":"D2","level":"warning","message":{"text":"CssPropertyCache::get_property_slow (cognitive 80): CssPropertyCache::get_property_slow has cognitive complexity 80 (threshold 15). Drivers by points: if/else 54 (70 pts), boolean chains 8, match/switch 1 (2 pts) (nesting depth added 17). 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":"core/src/prop_cache.rs"},"region":{"startLine":2783}}}],"partialFingerprints":{"codehealthFindingId/v1":"08073397f9938936658f432d8a4dd913cb953ee0522994374caab94143593fb6"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::check_reserved_keywords (cognitive 80): azul_doc::autofix::check_reserved_keywords has cognitive complexity 80 (threshold 15). Drivers by points: if/else 10 (53 pts), loops 7 (27 pts) (nesting depth added 63). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/autofix/mod.rs"},"region":{"startLine":4880}}}],"partialFingerprints":{"codehealthFindingId/v1":"d84de9e77a0364fcfa4f306ac11a43d8eeff5e8a9aaf98ac29257945e1e5aea6"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::patch::explain_patches (cognitive 80): azul_doc::patch::explain_patches has cognitive complexity 80 (threshold 15). Drivers by points: if/else 19 (44 pts), loops 10 (36 pts) (nesting depth added 51). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/patch/mod.rs"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9ceea83747b9128dbd097a0baba3945036fbb555ab3120a2afc02d536730497"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::run_track_frames (cognitive 80): LayoutWindow::run_track_frames has cognitive complexity 80 (threshold 15). Drivers by points: if/else 18 (62 pts), loops 5 (11 pts), boolean chains 4, match/switch 2 (3 pts) (nesting depth added 51). 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":"layout/src/window.rs"},"region":{"startLine":13918}}}],"partialFingerprints":{"codehealthFindingId/v1":"67bdedf05e76db53306f6c53d11d02e48d1eaec0ebdce833227996160729a320"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::run::run (cognitive 79): azul_dll::desktop::shell2::run::run has cognitive complexity 79 (threshold 15). Drivers by points: loops 11 (35 pts), if/else 16 (28 pts), match/switch 5 (16 pts) (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":"dll/src/desktop/shell2/run.rs"},"region":{"startLine":620}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fe42733f20b4716b03bcd6beffc3f43fe7b566b0842383842541f1549d21fa6"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::utils::analyze::has_recursive_destructor_inner (cognitive 79): azul_doc::utils::analyze::has_recursive_destructor_inner has cognitive complexity 79 (threshold 15). Drivers by points: if/else 15 (67 pts), loops 4 (10 pts), boolean chains 2 (nesting depth added 58). 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":"doc/src/utils/analyze.rs"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"6732585964c3b6425b0d2676633e0abdad7b823fcdb75c679a2010150a3d87fd"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::scan_arm64_adrp_accesses (cognitive 78): azul_dll::web::transpiler_remill::scan_arm64_adrp_accesses has cognitive complexity 78 (threshold 15). Drivers by points: if/else 29 (67 pts), match/switch 3 (8 pts), boolean chains 2, loops 1 (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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":11061}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bb95be3128716272681d9d600b571acdaa80017e7732bfe300d565efb34d9d9"}},{"ruleId":"D2","level":"warning","message":{"text":"A11ySnapshot::build (cognitive 78): A11ySnapshot::build has cognitive complexity 78 (threshold 15). Drivers by points: if/else 15 (45 pts), loops 7 (16 pts), match/switch 4 (15 pts), boolean chains 2 (nesting depth added 50). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/managers/a11y_snapshot.rs"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b7891cc442145813aa73f9258543784c9bffde119ea82cc9bfab572e2dad0de"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::lift_audit::audit_wasm (cognitive 77): azul_dll::web::lift_audit::audit_wasm has cognitive complexity 77 (threshold 15). Drivers by points: if/else 14 (50 pts), loops 5 (18 pts), match/switch 2 (6 pts), boolean chains 3 (nesting depth added 53). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/web/lift_audit.rs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"573c713defcf3a6a899b1a674e2b3547971a9f95c2feb57440de7bb43b8c3c5b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::diff::generate_diff_v2 (cognitive 77): azul_doc::autofix::diff::generate_diff_v2 has cognitive complexity 77 (threshold 15). Drivers by points: if/else 25 (65 pts), match/switch 2 (5 pts), loops 4, boolean chains 3 (nesting depth added 43). 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":"doc/src/autofix/diff.rs"},"region":{"startLine":1111}}}],"partialFingerprints":{"codehealthFindingId/v1":"179674062c03af81acdf8747624aae68baa8466be80808f19c4dc5585e77dfb0"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::doc_coverage::run (cognitive 77): azul_doc::doc_coverage::run has cognitive complexity 77 (threshold 15). Drivers by points: loops 13 (39 pts), if/else 9 (37 pts), match/switch 1 (nesting depth added 54). 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":"doc/src/doc_coverage/mod.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f7c34e40e90c696f42125540cfd31378b4ec27148f1c47536fc77a34b480579"}},{"ruleId":"D2","level":"warning","message":{"text":"CompositorState::allocate_layers_from_display_list (cognitive 77): CompositorState::allocate_layers_from_display_list has cognitive complexity 77 (threshold 15). Drivers by points: if/else 20 (64 pts), boolean chains 10, match/switch 1 (2 pts), loops 1 (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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"13f24e147122e0e81ecd660e52bb981ab8c0ed608a196eeab37348b9ef477a00"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::autodoc::build_autodoc_prompt (cognitive 76): azul_doc::reftest::autodoc::build_autodoc_prompt has cognitive complexity 76 (threshold 15). Drivers by points: if/else 35 (49 pts), loops 10 (20 pts), match/switch 3 (6 pts), boolean chains 1 (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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8630ac4431b502b68a8b3b0264d580af49ac0eb095cf343786883fc40b22e38"}},{"ruleId":"D2","level":"warning","message":{"text":"UnifiedLayout::get_selection_rects (cognitive 76): UnifiedLayout::get_selection_rects has cognitive complexity 76 (threshold 15). Drivers by points: if/else 25 (54 pts), loops 5 (11 pts), boolean chains 10, match/switch 1 (nesting depth added 35). 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":"layout/src/text3/cache.rs"},"region":{"startLine":5767}}}],"partialFingerprints":{"codehealthFindingId/v1":"b351acac4d21ea09edb9e5c4e48436e0cf81f282f08d3815054bd75841e625af"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::process_accessibility_action (cognitive 76): LayoutWindow::process_accessibility_action has cognitive complexity 76 (threshold 15). Drivers by points: if/else 28 (64 pts), loops 3 (6 pts), match/switch 3 (5 pts), boolean chains 1 (nesting depth added 41). 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":"layout/src/window.rs"},"region":{"startLine":15882}}}],"partialFingerprints":{"codehealthFindingId/v1":"abd077995eb4b41b67314735520f5594d11c0e2d27313a65e80560fbcae909e1"}},{"ruleId":"D2","level":"warning","message":{"text":"RenderTask::new_svg_filter_graph (cognitive 75): RenderTask::new_svg_filter_graph has cognitive complexity 75 (threshold 15). Drivers by points: if/else 20 (49 pts), match/switch 5 (10 pts), loops 4 (9 pts), boolean chains 7 (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":"webrender/core/src/render_task.rs"},"region":{"startLine":1643}}}],"partialFingerprints":{"codehealthFindingId/v1":"a42c9a74663249f38e4fd59cfd489f86168c99a77b01f2567e7ea12840387212"}},{"ruleId":"D2","level":"warning","message":{"text":"X11Window::new_with_resources (cognitive 74): X11Window::new_with_resources has cognitive complexity 74 (threshold 15). Drivers by points: if/else 33 (41 pts), match/switch 13 (27 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 24). 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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":3227}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe700978de9af3c0303081b8bca80242285a564381e2b4f0e23000e8303b2e47"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::symbol_table::read_pdb_function_symbols (cognitive 74): azul_dll::web::symbol_table::read_pdb_function_symbols has cognitive complexity 74 (threshold 15). Drivers by points: if/else 19 (63 pts), loops 3 (9 pts), boolean chains 2 (nesting depth added 50). 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":"dll/src/web/symbol_table.rs"},"region":{"startLine":1538}}}],"partialFingerprints":{"codehealthFindingId/v1":"58b3ea846d10fa13d95fb760e2646081ead964f617138d7b089de2628ac058a8"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::gene2e::parse_schema (cognitive 74): azul_doc::gene2e::parse_schema has cognitive complexity 74 (threshold 15). Drivers by points: if/else 28 (63 pts), boolean chains 7, loops 4 (nesting depth added 35). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/gene2e.rs"},"region":{"startLine":641}}}],"partialFingerprints":{"codehealthFindingId/v1":"4eda1f872dc897e8a3508107a8bd912f90bdc1358aafdfffa4645d25b11c1180"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::getters::get_style_properties_for_state (cognitive 74): azul_layout::solver3::getters::get_style_properties_for_state has cognitive complexity 74 (threshold 15). Drivers by points: if/else 41 (68 pts), match/switch 5, boolean chains 1 (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":"layout/src/solver3/getters.rs"},"region":{"startLine":3042}}}],"partialFingerprints":{"codehealthFindingId/v1":"47490eae9c872315b0fd0ccea3a2daa7a8ef832394f5b5fa6461f77ceb9afc66"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::api::normalize_type_aliases (cognitive 73): azul_doc::api::normalize_type_aliases has cognitive complexity 73 (threshold 15). Drivers by points: if/else 18 (67 pts), loops 3 (6 pts) (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":"doc/src/api.rs"},"region":{"startLine":2646}}}],"partialFingerprints":{"codehealthFindingId/v1":"c598305077dfec74614d30fd431933fa9b7731cf536432ff5a094b2e7df754af"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutTreeBuilder::process_node (cognitive 73): LayoutTreeBuilder::process_node has cognitive complexity 73 (threshold 15). Drivers by points: if/else 28 (55 pts), loops 4 (9 pts), match/switch 2 (5 pts), boolean chains 4 (nesting depth added 35). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/solver3/layout_tree.rs"},"region":{"startLine":2062}}}],"partialFingerprints":{"codehealthFindingId/v1":"11d266422d21a9ec6f7578c0451de11d183a7dbc754ae09d7ab9a86780dd782a"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::gamepad::apple::poll (cognitive 72): azul_dll::desktop::extra::gamepad::apple::poll has cognitive complexity 72 (threshold 15). Drivers by points: if/else 31 (67 pts), boolean chains 4, loops 1 (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":"dll/src/desktop/extra/gamepad/apple.rs"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"3beac6f5e3133c1dfd6920b05ff0c176d1a8df882aa2713a3ede8843d76798a0"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::fc::calculate_row_heights (cognitive 71): azul_layout::solver3::fc::calculate_row_heights has cognitive complexity 71 (threshold 15). Drivers by points: if/else 18 (53 pts), loops 8 (16 pts), boolean chains 2 (nesting depth added 43). 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":"layout/src/solver3/fc.rs"},"region":{"startLine":7730}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddd5fc9215c30fc98d9974711202d3ab2764ec0773a97f0130cc92d11a5e6c23"}},{"ruleId":"D2","level":"warning","message":{"text":"SurfaceBuilder::pop_surface (cognitive 70): SurfaceBuilder::pop_surface has cognitive complexity 70 (threshold 15). Drivers by points: match/switch 11 (38 pts), loops 7 (23 pts), if/else 4 (9 pts) (nesting depth added 48). 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":"webrender/core/src/surface.rs"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb9976c5ff813536afd91320ee6250c3f0886c183e0f7e63a243ad21afbd4a5a"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::tray::linux::menu_message (cognitive 69): azul_dll::desktop::tray::linux::menu_message has cognitive complexity 69 (threshold 15). Drivers by points: if/else 21 (50 pts), loops 3 (9 pts), boolean chains 6, match/switch 2 (4 pts) (nesting depth added 37). 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":"dll/src/desktop/tray/linux.rs"},"region":{"startLine":778}}}],"partialFingerprints":{"codehealthFindingId/v1":"115110f382cb412e6a60cb6a0a125e50bdaeda9edfc3af6b8e5ccdce22690b36"}},{"ruleId":"D2","level":"warning","message":{"text":"CssPropertyWithConditionsVec::parse_at_rule (cognitive 67): CssPropertyWithConditionsVec::parse_at_rule has cognitive complexity 67 (threshold 15). Drivers by points: if/else 28 (58 pts), match/switch 2 (6 pts), boolean chains 3 (nesting depth added 34). 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":"css/src/dynamic_selector.rs"},"region":{"startLine":2260}}}],"partialFingerprints":{"codehealthFindingId/v1":"c81eafd1fe144c45af98efe4058ce3dd3d0b14b01d2ceb9dc9b7a4b82b420b71"}},{"ruleId":"D2","level":"warning","message":{"text":"MacOSWindow::sync_window_state (cognitive 67): MacOSWindow::sync_window_state has cognitive complexity 67 (threshold 15). Drivers by points: if/else 31 (55 pts), match/switch 5 (10 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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":6307}}}],"partialFingerprints":{"codehealthFindingId/v1":"03a27cee9e50f78d1a54a7e10064464836855af4f86fa9391424d374ef2f267a"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::common::layout::apply_runtime_states_before_layout (cognitive 67): azul_dll::desktop::shell2::common::layout::apply_runtime_states_before_layout has cognitive complexity 67 (threshold 15). Drivers by points: if/else 19 (60 pts), loops 2 (7 pts) (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":"dll/src/desktop/shell2/common/layout.rs"},"region":{"startLine":1760}}}],"partialFingerprints":{"codehealthFindingId/v1":"80778638394d596885c0ed25cb8425ebf15a33f18383d618de24e9433b14b3fd"}},{"ruleId":"D2","level":"warning","message":{"text":"PythonGenerator::field_type_needs_unsendable (cognitive 67): PythonGenerator::field_type_needs_unsendable has cognitive complexity 67 (threshold 15). Drivers by points: if/else 20 (43 pts), loops 5 (14 pts), boolean chains 7, match/switch 1 (3 pts) (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":"doc/src/codegen/v2/lang_python.rs"},"region":{"startLine":3564}}}],"partialFingerprints":{"codehealthFindingId/v1":"de2c55267a213c4b0320dd2baab8df10b555efcb22d1f72ae9d6169cb569ffad"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::icu::plural_for (cognitive 67): azul_layout::icu::plural_for has cognitive complexity 67 (threshold 15). Drivers by points: if/else 40 (52 pts), boolean chains 10, match/switch 3 (5 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":"layout/src/icu.rs"},"region":{"startLine":242}}}],"partialFingerprints":{"codehealthFindingId/v1":"f36a0d52e3931ffac96ab3d5f174e67176a708d716f7800b4809ebd208038046"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::composite_zombies_cpu (cognitive 66): LayoutWindow::composite_zombies_cpu has cognitive complexity 66 (threshold 15). Drivers by points: if/else 20 (49 pts), loops 5 (10 pts), match/switch 2 (5 pts), boolean chains 2 (nesting depth added 37). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/window.rs"},"region":{"startLine":25345}}}],"partialFingerprints":{"codehealthFindingId/v1":"53be9b49f2896d2b5c5a21d5812712596562ce839f343353fc160e120238819b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::xml::parse_xml_string (cognitive 66): azul_layout::xml::parse_xml_string has cognitive complexity 66 (threshold 15). Drivers by points: if/else 20 (54 pts), loops 3 (8 pts), boolean chains 2, match/switch 1 (2 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":"layout/src/xml/mod.rs"},"region":{"startLine":849}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd492cd698b46eea811f996b1dfb53ffdf1201a32fbe9b3d89cd7ad0147400c7"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::fc::split_text_for_whitespace (cognitive 66): azul_layout::solver3::fc::split_text_for_whitespace has cognitive complexity 66 (threshold 15). Drivers by points: if/else 22 (50 pts), loops 5 (11 pts), boolean chains 3, match/switch 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":"layout/src/solver3/fc.rs"},"region":{"startLine":10820}}}],"partialFingerprints":{"codehealthFindingId/v1":"b06c852ba74a146fb9a61ab5216111abdb0b4b4b55f3b38f97afefdaeed92d56"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::server::handle_connection (cognitive 64): azul_dll::web::server::handle_connection has cognitive complexity 64 (threshold 15). Drivers by points: if/else 29 (51 pts), boolean chains 6, loops 2 (4 pts), match/switch 2 (3 pts) (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/web/server.rs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7b90837498101d86dc20d75b671dbfe8da920920742d3cf7fde4bbfe4d010ae"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::run_web (cognitive 64): azul_dll::web::run_web has cognitive complexity 64 (threshold 15). Drivers by points: loops 17 (31 pts), if/else 21 (30 pts), match/switch 2, boolean chains 1 (nesting depth added 23). 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":"dll/src/web/mod.rs"},"region":{"startLine":1007}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ce1f7f67f7b0a918dbbca465279fa117ba3089af55f751809331295769b7e60"}},{"ruleId":"D2","level":"warning","message":{"text":"AutofixPatch::to_api_patch_with_context (cognitive 64): AutofixPatch::to_api_patch_with_context has cognitive complexity 64 (threshold 15). Drivers by points: if/else 14 (43 pts), loops 7 (19 pts), match/switch 1 (2 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":"doc/src/autofix/patch_format.rs"},"region":{"startLine":675}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa7cbd40b1dfd2094d6d15a0c6703872fe57bd97bf41ec9e81146336e1db00d8"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::display_list::compute_patch_move_summary (cognitive 64): azul_layout::solver3::display_list::compute_patch_move_summary has cognitive complexity 64 (threshold 15). Drivers by points: if/else 20 (43 pts), boolean chains 12, loops 7 (8 pts), match/switch 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":"layout/src/solver3/display_list.rs"},"region":{"startLine":3577}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa0a9f8987278886b2351e49678decc3d20277f519d1d6cf0e25ba9c88358ec2"}},{"ruleId":"D2","level":"warning","message":{"text":"AttribLocations::get_loc (cognitive 64): AttribLocations::get_loc has cognitive complexity 64 (threshold 15). Drivers by points: if/else 48 (64 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":"webrender/swgl/src/shaders/cs_clip_rectangle.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"15e653926b018a276d3c4d543315076fbe9da478620c49101d8046f6b613575e"}},{"ruleId":"D2","level":"warning","message":{"text":"Renderer::draw_frame (cognitive 63): Renderer::draw_frame has cognitive complexity 63 (threshold 15). Drivers by points: if/else 15 (37 pts), loops 7 (16 pts), match/switch 3 (10 pts) (nesting depth added 38). 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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":4534}}}],"partialFingerprints":{"codehealthFindingId/v1":"c78ebb2db89bb9637193819a924e4e804fdb77c873bd753589d24f11ca9c1b8e"}},{"ruleId":"D2","level":"warning","message":{"text":"WaylandPopup::render_if_ready (cognitive 62): WaylandPopup::render_if_ready has cognitive complexity 62 (threshold 15). Drivers by points: if/else 25 (49 pts), loops 1 (6 pts), boolean chains 5, match/switch 1 (2 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":9622}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f4d8f1bb7c7ea940378a30c14489321ee80e098a140ab8804601363fcc3ef05"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::common::transient::sync_parent (cognitive 62): azul_dll::desktop::shell2::common::transient::sync_parent has cognitive complexity 62 (threshold 15). Drivers by points: if/else 22 (51 pts), match/switch 4 (5 pts), loops 4, boolean chains 2 (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":"dll/src/desktop/shell2/common/transient.rs"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fa39c6e52cd703f8b9944c2a0ae4342eec5c2c0cf569df4fd98048d434f0ddf"}},{"ruleId":"D2","level":"warning","message":{"text":"ModulePlan::build (cognitive 62): ModulePlan::build has cognitive complexity 62 (threshold 15). Drivers by points: if/else 13 (34 pts), loops 15 (21 pts), match/switch 2 (4 pts), boolean chains 3 (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":"doc/src/codegen/v2/module_plan.rs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"51206afb2ebd977f3f4db6416e3ee5caf37253e31eb017a50c2562a3846097b6"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::regression::generate_diff_report (cognitive 62): azul_doc::reftest::regression::generate_diff_report has cognitive complexity 62 (threshold 15). Drivers by points: if/else 14 (40 pts), loops 6 (17 pts), match/switch 2 (4 pts), boolean chains 1 (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. This shape REPEATS in the file: one other method here (azul_doc::reftest::regression::generate_diff_report_string) 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":"doc/src/reftest/regression.rs"},"region":{"startLine":958}}}],"partialFingerprints":{"codehealthFindingId/v1":"83df1d2a7da17446319be11a30bf71d27334aac208235b4c57a0bd4a14a2378e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::regression::generate_diff_report_string (cognitive 62): azul_doc::reftest::regression::generate_diff_report_string has cognitive complexity 62 (threshold 15). Drivers by points: if/else 14 (40 pts), loops 6 (17 pts), match/switch 2 (4 pts), boolean chains 1 (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. This shape REPEATS in the file: one other method here (azul_doc::reftest::regression::generate_diff_report) 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":"doc/src/reftest/regression.rs"},"region":{"startLine":1748}}}],"partialFingerprints":{"codehealthFindingId/v1":"b46e9edf0b9acbd45341dc926ca5a6e7b7660b447d5a2050594752c09ff39fdd"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::xml::svg::render_node_clipmask_cpu::agg_translate_node (cognitive 62): azul_layout::xml::svg::render_node_clipmask_cpu::agg_translate_node has cognitive complexity 62 (threshold 15). Drivers by points: if/else 11 (29 pts), loops 9 (23 pts), match/switch 7 (10 pts) (nesting depth added 35). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/xml/svg.rs"},"region":{"startLine":1794}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b4f0c400799328aba9a5b1fb36307da12b149ae18725c66c0010a512dbeb26b"}},{"ruleId":"D2","level":"warning","message":{"text":"Device::new (cognitive 62): Device::new has cognitive complexity 62 (threshold 15). Drivers by points: if/else 27 (33 pts), boolean chains 19, match/switch 8 (9 pts), loops 1 (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":"webrender/core/src/device/gl.rs"},"region":{"startLine":1440}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cd8546142d6dd176a60a53ca70093e72e93f0b607629484d8b333ca0ef47979"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::regression::generate_html_report (cognitive 61): azul_doc::reftest::regression::generate_html_report has cognitive complexity 61 (threshold 15). Drivers by points: if/else 16 (46 pts), loops 7 (12 pts), match/switch 1 (2 pts), boolean chains 1 (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":"doc/src/reftest/regression.rs"},"region":{"startLine":632}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6d144ecb1fcef4b3a67885de75b835e2c403a7c99fe298d1209759b94b26c66"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::lint_examples::check_line (cognitive 61): azul_doc::lint_examples::check_line has cognitive complexity 61 (threshold 15). Drivers by points: if/else 16 (38 pts), loops 9 (13 pts), boolean chains 10 (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":"doc/src/lint_examples.rs"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"62db8edf7afd7c1396478f5a7dc862a7a75f7af044ae4b94f64b809e0117bf45"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::dllgen::bundles::create_bindings_bundles (cognitive 61): azul_doc::dllgen::bundles::create_bindings_bundles has cognitive complexity 61 (threshold 15). Drivers by points: if/else 14 (34 pts), loops 8 (20 pts), match/switch 2 (5 pts), boolean chains 2 (nesting depth added 35). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/dllgen/bundles.rs"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9d4d790d6e8dc09d8b3622f59d001fc4eb99d1866810f028b7b0f21131c2dab"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::patch::index::infer_module_path (cognitive 61): azul_doc::patch::index::infer_module_path has cognitive complexity 61 (threshold 15). Drivers by points: if/else 11 (59 pts), boolean chains 1, loops 1 (nesting depth added 48). 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":"doc/src/patch/index.rs"},"region":{"startLine":1722}}}],"partialFingerprints":{"codehealthFindingId/v1":"46968e4a58e45329d1e6b3ef29785255d3729638efffb09ffaee1c393e95c920"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::raster::blit_sampled_image (cognitive 61): azul_layout::cpurender::raster::blit_sampled_image has cognitive complexity 61 (threshold 15). Drivers by points: if/else 14 (37 pts), loops 10 (22 pts), boolean chains 2 (nesting depth added 35). 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":"layout/src/cpurender/raster.rs"},"region":{"startLine":4727}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c8d80d56de870a4f9d943d944e22eec83c729028ee24ef43a14fd5fdacc22de"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::knuth_plass::convert_items_to_nodes (cognitive 61): azul_layout::text3::knuth_plass::convert_items_to_nodes has cognitive complexity 61 (threshold 15). Drivers by points: if/else 10 (28 pts), loops 7 (27 pts), boolean chains 4, match/switch 1 (2 pts) (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":"layout/src/text3/knuth_plass.rs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"04b534524ef74af69cc06d812f7b1d077fe9f6e66b44ee04cdb67cc0f8a120e9"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::pdf::engine::page_ops (cognitive 60): azul_dll::desktop::extra::pdf::engine::page_ops has cognitive complexity 60 (threshold 15). Drivers by points: if/else 9 (43 pts), loops 4 (16 pts), boolean chains 1 (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":"dll/src/desktop/extra/pdf/mod.rs"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbc47165a7c339db27b51c374652d89056a9f854f93a42bda26af55accadc4dc"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_java::wrappers::classify_return (cognitive 60): azul_doc::codegen::v2::lang_java::wrappers::classify_return has cognitive complexity 60 (threshold 15). Drivers by points: if/else 17 (60 pts) (nesting depth added 43). 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":"doc/src/codegen/v2/lang_java/wrappers.rs"},"region":{"startLine":1228}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8613437bbe57e5491116d0ee8354f8aad5d3bd860236da5cd0a3c4960f91f4e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_csharp::wrappers::classify_return (cognitive 60): azul_doc::codegen::v2::lang_csharp::wrappers::classify_return has cognitive complexity 60 (threshold 15). Drivers by points: if/else 17 (60 pts) (nesting depth added 43). 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":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"febd6094fcd086affe79f59d393def56a52799b8289845a3a8f2aeb7a991177a"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_kotlin::wrappers::classify_return (cognitive 60): azul_doc::codegen::v2::lang_kotlin::wrappers::classify_return has cognitive complexity 60 (threshold 15). Drivers by points: if/else 17 (60 pts) (nesting depth added 43). 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":"doc/src/codegen/v2/lang_kotlin/wrappers.rs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"c803d9fe6ef64245e48430e18f5d856197dcbbb83372e27515c17f5badf74db0"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::get_selected_content_for_clipboard (cognitive 60): LayoutWindow::get_selected_content_for_clipboard has cognitive complexity 60 (threshold 15). Drivers by points: if/else 18 (51 pts), loops 2 (7 pts), boolean chains 1, match/switch 1 (nesting depth added 38). 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":"layout/src/window.rs"},"region":{"startLine":20281}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f659192fbb62d413a0633cfbc638b031e53b038a87b6e0daaddfeb22d153362"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::fc::calculate_column_widths_fixed (cognitive 60): azul_layout::solver3::fc::calculate_column_widths_fixed has cognitive complexity 60 (threshold 15). Drivers by points: if/else 17 (38 pts), loops 7 (15 pts), boolean chains 5, match/switch 1 (2 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":"layout/src/solver3/fc.rs"},"region":{"startLine":6913}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7e2586f55c59742a1680b89c83c93b47ccefae4ce23b0f9da03995a93d6f1d7"}},{"ruleId":"D2","level":"warning","message":{"text":"Xml::scan_node (cognitive 59): Xml::scan_node has cognitive complexity 59 (threshold 15). Drivers by points: if/else 27 (49 pts), loops 3 (8 pts), boolean chains 1, match/switch 1 (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":"core/src/xml.rs"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"79c68aff6445521718334a235cf18757debc5d2c81f2d353f1c821a3e2b3677d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_css::props::property::parse_combined_css_property (cognitive 59): azul_css::props::property::parse_combined_css_property has cognitive complexity 59 (threshold 15). Drivers by points: if/else 20 (42 pts), match/switch 8 (12 pts), loops 2 (4 pts), boolean chains 1 (nesting depth added 28). 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":"css/src/props/property.rs"},"region":{"startLine":3689}}}],"partialFingerprints":{"codehealthFindingId/v1":"05aa56ca9ac826eafb7cd82033679b618ac2fc48a20da2670d584048ece64b56"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::system_style::discover_kde_style (cognitive 59): azul_dll::desktop::shell2::linux::system_style::discover_kde_style has cognitive complexity 59 (threshold 15). Drivers by points: if/else 47 (55 pts), boolean chains 2, match/switch 2 (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":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":1642}}}],"partialFingerprints":{"codehealthFindingId/v1":"daa32c96ced5bdf092a591b2bb4516657f8493951c1f891fadc10a2743e7ab45"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_node::wrappers::classify_option_result_node (cognitive 59): azul_doc::codegen::v2::lang_node::wrappers::classify_option_result_node has cognitive complexity 59 (threshold 15). Drivers by points: if/else 16 (59 pts) (nesting depth added 43). 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":"doc/src/codegen/v2/lang_node/wrappers.rs"},"region":{"startLine":1286}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f5ae2b617d0c5a5014588e41faf8e8e3991072477026e905cdb9ec895451152"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::resources::build_add_font_resource_updates (cognitive 58): azul_core::resources::build_add_font_resource_updates has cognitive complexity 58 (threshold 15). Drivers by points: if/else 7 (28 pts), loops 5 (15 pts), match/switch 3 (11 pts), boolean chains 4 (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":"core/src/resources.rs"},"region":{"startLine":3669}}}],"partialFingerprints":{"codehealthFindingId/v1":"b742748391efd8622256b1b417c43e61b70df9798670b6f2a8b15c7ab2ceb438"}},{"ruleId":"D2","level":"warning","message":{"text":"WaylandWindow::wait_for_events (cognitive 58): WaylandWindow::wait_for_events has cognitive complexity 58 (threshold 15). Drivers by points: if/else 22 (41 pts), boolean chains 9, loops 4 (8 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":2971}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e7c8cac908c87204ecdd26e63f28dece2e0451f1234b93c9f8b3f8b10549471"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::macos::system_style::discover (cognitive 58): azul_dll::desktop::shell2::macos::system_style::discover has cognitive complexity 58 (threshold 15). Drivers by points: if/else 40 (54 pts), match/switch 3 (4 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":"dll/src/desktop/shell2/macos/system_style.rs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"d203d40e23a33e47ea50e68b9e10866e08a715b288357b4c7fe188659261627e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::android::android_main (cognitive 58): azul_dll::desktop::shell2::android::android_main has cognitive complexity 58 (threshold 15). Drivers by points: if/else 17 (39 pts), match/switch 5 (11 pts), loops 3 (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":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":670}}}],"partialFingerprints":{"codehealthFindingId/v1":"772314965f517dd00ea74532ab86f0704ddbd2cd30cf2dbc16d8054a717374d4"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::symbol_table::ingest_macho (cognitive 58): azul_dll::web::symbol_table::ingest_macho has cognitive complexity 58 (threshold 15). Drivers by points: if/else 20 (41 pts), loops 5 (9 pts), boolean chains 4, match/switch 2 (4 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":"dll/src/web/symbol_table.rs"},"region":{"startLine":1745}}}],"partialFingerprints":{"codehealthFindingId/v1":"70c4723ce03e8a80c52917f77044993b814dc320505eb5ccfec903a4d467c4ef"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::sensors::windows::poll (cognitive 58): azul_dll::desktop::extra::sensors::windows::poll has cognitive complexity 58 (threshold 15). Drivers by points: if/else 27 (54 pts), match/switch 1 (3 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":"dll/src/desktop/extra/sensors/windows.rs"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa6d4016ef73703aac12708106f45f19da76268f8292b1587217a12c49c9616c"}},{"ruleId":"D2","level":"warning","message":{"text":"Emitter::emit_methods (cognitive 58): Emitter::emit_methods has cognitive complexity 58 (threshold 15). Drivers by points: if/else 12 (32 pts), loops 9 (14 pts), match/switch 4 (9 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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":1552}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c4e31b36536729bdd2adcd3d3a979ab49af2855d9950a4dad9d138b1363d485"}},{"ruleId":"D2","level":"warning","message":{"text":"SymbolCollector::visit_item_fn (cognitive 58): SymbolCollector::visit_item_fn has cognitive complexity 58 (threshold 15). Drivers by points: if/else 19 (49 pts), match/switch 3 (8 pts), loops 1 (nesting depth added 35). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/patch/parser.rs"},"region":{"startLine":279}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3a09f11f5cac0ec96a78efacd7c709338d827700fed5cbe34d5c00f4f5af4d1"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::type_index::extract_type_name (cognitive 58): azul_doc::autofix::type_index::extract_type_name has cognitive complexity 58 (threshold 15). Drivers by points: if/else 15 (44 pts), loops 2 (9 pts), match/switch 2 (5 pts) (nesting depth added 39). 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":"doc/src/autofix/type_index.rs"},"region":{"startLine":1446}}}],"partialFingerprints":{"codehealthFindingId/v1":"db5eff0173eb88a44feeab6ca6f446b110f6311384e7c17807c306ccf70d7bbc"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::api::normalize_enum_variant_types (cognitive 58): azul_doc::api::normalize_enum_variant_types has cognitive complexity 58 (threshold 15). Drivers by points: if/else 9 (40 pts), loops 5 (17 pts), boolean chains 1 (nesting depth added 43). 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":"doc/src/api.rs"},"region":{"startLine":2743}}}],"partialFingerprints":{"codehealthFindingId/v1":"c034f98780102cbbdfc6b6a99b01903cdeacfd23604f778c942137d8ef2de233"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::knuth_plass::find_optimal_breakpoints (cognitive 58): azul_layout::text3::knuth_plass::find_optimal_breakpoints has cognitive complexity 58 (threshold 15). Drivers by points: if/else 23 (46 pts), loops 5 (7 pts), match/switch 3 (5 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":"layout/src/text3/knuth_plass.rs"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"fddcc081462a4451c131dc2701c81f49697986d6bb6674b687718c74c57ef9bc"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::native_screenshot::take_native_screenshot_xlib_bytes (cognitive 57): azul_dll::desktop::native_screenshot::take_native_screenshot_xlib_bytes has cognitive complexity 57 (threshold 15). Drivers by points: if/else 35 (45 pts), boolean chains 7, loops 3 (5 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":"dll/src/desktop/native_screenshot.rs"},"region":{"startLine":770}}}],"partialFingerprints":{"codehealthFindingId/v1":"b48faec645f8832ee161b13863e48113720191c5819d5cc821c1381d4abebb60"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::generate_release_pages (cognitive 57): azul_doc::generate_release_pages has cognitive complexity 57 (threshold 15). Drivers by points: if/else 19 (48 pts), loops 3 (6 pts), match/switch 1 (3 pts) (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":"doc/src/main.rs"},"region":{"startLine":2354}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fdb5dfed2c693263f7aba25eea4dddb59af20c520184f0e65907a48fe42da5f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::gene2e::validate (cognitive 57): azul_doc::gene2e::validate has cognitive complexity 57 (threshold 15). Drivers by points: if/else 17 (42 pts), loops 3 (7 pts), boolean chains 4, match/switch 2 (4 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":"doc/src/gene2e.rs"},"region":{"startLine":1383}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9780b3a414dc995271592bdee0a3b2ad2e5f3759f0e2a66eaaa4ba17121c578"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::apply_midlevel::process_stream_events (cognitive 57): azul_doc::reftest::apply_midlevel::process_stream_events has cognitive complexity 57 (threshold 15). Drivers by points: if/else 9 (35 pts), match/switch 6 (17 pts), loops 2 (5 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":"doc/src/reftest/apply_midlevel.rs"},"region":{"startLine":2454}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2995cf4cf88c9c3f8ea087223b4f90a5f56ba402cdf96f6020cf8f092bfd2e8"}},{"ruleId":"D2","level":"warning","message":{"text":"DisplayListGenerator::generate_for_stacking_context (cognitive 57): DisplayListGenerator::generate_for_stacking_context has cognitive complexity 57 (threshold 15). Drivers by points: if/else 27 (52 pts), loops 3, boolean chains 2 (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/solver3/display_list.rs"},"region":{"startLine":4690}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcae8a00d599ac937be08debbb8b5f8e3e72fb17ef83eb534fbefc3234615c98"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::default_actions::determine_keyboard_default_action_with_editing (cognitive 57): azul_layout::default_actions::determine_keyboard_default_action_with_editing has cognitive complexity 57 (threshold 15). Drivers by points: if/else 23 (39 pts), match/switch 7 (13 pts), boolean chains 5 (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":"layout/src/default_actions.rs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"25b16ecfbafbc7a030b79f3fa7fe4593d61dfa79b8b24c28d702fea21a42c742"}},{"ruleId":"D2","level":"warning","message":{"text":"TileNode::maybe_merge_or_split (cognitive 57): TileNode::maybe_merge_or_split has cognitive complexity 57 (threshold 15). Drivers by points: if/else 12 (33 pts), loops 5 (13 pts), match/switch 5 (10 pts), boolean chains 1 (nesting depth added 34). Of this number, 55 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":"webrender/core/src/picture.rs"},"region":{"startLine":7714}}}],"partialFingerprints":{"codehealthFindingId/v1":"69ef07afaa0f29991cc0eaf14999011effa1bbdce85a024ae9aa4e8d8cd3f686"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::x11::handle_xi_event (cognitive 56): azul_dll::desktop::shell2::linux::x11::handle_xi_event has cognitive complexity 56 (threshold 15). Drivers by points: if/else 19 (47 pts), match/switch 2 (4 pts), loops 1 (3 pts), boolean chains 2 (nesting depth added 32). 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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":1583}}}],"partialFingerprints":{"codehealthFindingId/v1":"29bd8334bcdae2dec71b54664c702768452c22c59ba77fe45d9d74b0fa52eeb3"}},{"ruleId":"D2","level":"warning","message":{"text":"SymbolCollector::visit_impl_item_fn (cognitive 56): SymbolCollector::visit_impl_item_fn has cognitive complexity 56 (threshold 15). Drivers by points: if/else 17 (47 pts), match/switch 3 (8 pts), loops 1 (nesting depth added 35). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/patch/parser.rs"},"region":{"startLine":401}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cceb87639dc5ee0464b36eb0d9030b4040a5237e58e145bb16f592008c11c20"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::docgen::apidocs::render_class (cognitive 56): azul_doc::docgen::apidocs::render_class has cognitive complexity 56 (threshold 15). Drivers by points: if/else 19 (33 pts), loops 7 (16 pts), match/switch 1 (4 pts), boolean chains 3 (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":"doc/src/docgen/apidocs.rs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ddc5308ca33f9b50ee4d1fdd8d28bb61286878d37ce830daa2f6d78e871acc8"}},{"ruleId":"D2","level":"warning","message":{"text":"Renderer::update (cognitive 56): Renderer::update has cognitive complexity 56 (threshold 15). Drivers by points: if/else 11 (36 pts), loops 4 (11 pts), match/switch 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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":984}}}],"partialFingerprints":{"codehealthFindingId/v1":"18918710c80174715d5afeef88ff1ccebe9a81fdbdc97b5ba81beffc36ca8fba"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeResolver::check_type_c_compatibility_with_index (cognitive 55): TypeResolver::check_type_c_compatibility_with_index has cognitive complexity 55 (threshold 15). Drivers by points: if/else 10 (39 pts), loops 2 (9 pts), match/switch 3 (7 pts) (nesting depth added 40). 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":"doc/src/autofix/type_resolver.rs"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"39a397e97110b5527723d46101943281ae65b609acbeef4bde8db7854d9f545f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_haskell::wrappers::emit_function (cognitive 55): azul_doc::codegen::v2::lang_haskell::wrappers::emit_function has cognitive complexity 55 (threshold 15). Drivers by points: if/else 23 (34 pts), loops 6 (11 pts), match/switch 7 (9 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":"doc/src/codegen/v2/lang_haskell/wrappers.rs"},"region":{"startLine":2049}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dc9b85525c91f4c0002b004c7ea5ea99ccbc476d8d78ff26a17f7f11af46108"}},{"ruleId":"D2","level":"warning","message":{"text":"PlatformWindow::process_window_events (cognitive 54): PlatformWindow::process_window_events has cognitive complexity 54 (threshold 15). Drivers by points: if/else 25 (42 pts), loops 4 (8 pts), match/switch 1 (3 pts), boolean chains 1 (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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":9942}}}],"partialFingerprints":{"codehealthFindingId/v1":"85a873d224b1c9d0fb22ac8bebfb467e28ec52010a3228148ea7b61ddacaa54d"}},{"ruleId":"D2","level":"warning","message":{"text":"PythonGenerator::function_has_unsupported_args (cognitive 54): PythonGenerator::function_has_unsupported_args has cognitive complexity 54 (threshold 15). Drivers by points: if/else 21 (39 pts), boolean chains 11, match/switch 1 (3 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":"doc/src/codegen/v2/lang_python.rs"},"region":{"startLine":3771}}}],"partialFingerprints":{"codehealthFindingId/v1":"021803ef8b48080c1a50d9b77afda55c7a7d89e8d65e6fc74364f7ccd507e10f"}},{"ruleId":"D2","level":"warning","message":{"text":"ParsedFont::from_provider (cognitive 54): ParsedFont::from_provider has cognitive complexity 54 (threshold 15). Drivers by points: if/else 26 (42 pts), loops 2 (6 pts), match/switch 3 (4 pts), boolean chains 2 (nesting depth added 21). Of this number, 48 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":"layout/src/font.rs"},"region":{"startLine":1011}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dca4409b56373c879ebc3f374f5e0d4fea423e3266e479769319e764e1a7ead"}},{"ruleId":"D2","level":"warning","message":{"text":"A11yManager::build_node (cognitive 54): A11yManager::build_node has cognitive complexity 54 (threshold 15). Drivers by points: if/else 23 (33 pts), match/switch 6 (13 pts), loops 4 (6 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":"layout/src/managers/a11y.rs"},"region":{"startLine":851}}}],"partialFingerprints":{"codehealthFindingId/v1":"b345c86e66596d85dfc52a6bef88d66d25971f528cc5971ddf0751caf2b24ba4"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::fc::calculate_column_widths_auto_with_width (cognitive 54): azul_layout::solver3::fc::calculate_column_widths_auto_with_width has cognitive complexity 54 (threshold 15). Drivers by points: if/else 24 (42 pts), loops 6 (11 pts), boolean chains 1 (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":"layout/src/solver3/fc.rs"},"region":{"startLine":7238}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba9bdb30bab686365f842214f6b25a569432bd492a91ff7b8c4504b7494c6617"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_pascal::managed::flatten_options (cognitive 53): azul_doc::codegen::v2::lang_pascal::managed::flatten_options has cognitive complexity 53 (threshold 15). Drivers by points: if/else 14 (47 pts), boolean chains 3, loops 2 (3 pts) (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":"doc/src/codegen/v2/lang_pascal/managed.rs"},"region":{"startLine":631}}}],"partialFingerprints":{"codehealthFindingId/v1":"58b77d4f22e84b0b500ad86e309dce11e3eff2eed4216f97b56caad0b6cf222f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::patches::path_correction::generate_path_corrections (cognitive 53): azul_doc::autofix::patches::path_correction::generate_path_corrections has cognitive complexity 53 (threshold 15). Drivers by points: if/else 10 (43 pts), loops 3 (10 pts) (nesting depth added 40). 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":"doc/src/autofix/patches/path_correction.rs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7bd9179de7015e3b238344037f17b473c2681e1d48de1394e4a6623ff186ac1"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::docgen::search::generate_search_index (cognitive 53): azul_doc::docgen::search::generate_search_index has cognitive complexity 53 (threshold 15). Drivers by points: loops 8 (29 pts), if/else 9 (24 pts) (nesting depth added 36). 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":"doc/src/docgen/search.rs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b3292580ecd4895a81f271abbe4e7a5937ea78736ecd444ebbd9efc16c6623b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autotest::extract::extract_from_items (cognitive 53): azul_doc::autotest::extract::extract_from_items has cognitive complexity 53 (threshold 15). Drivers by points: if/else 11 (44 pts), loops 2 (4 pts), boolean chains 3, match/switch 1 (2 pts) (nesting depth added 36). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/autotest/extract.rs"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e753da0300e96cb418bf37b643c6a5737c9d9e893fdbee3d71d519df4ddf58d"}},{"ruleId":"D2","level":"warning","message":{"text":"DisplayListGenerator::paint_in_flow_descendants (cognitive 53): DisplayListGenerator::paint_in_flow_descendants has cognitive complexity 53 (threshold 15). Drivers by points: if/else 24 (49 pts), loops 4 (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/solver3/display_list.rs"},"region":{"startLine":4993}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf290119be2f1a72d1c70f29f5b14fe9be79b1583cec63fe5e5caba97abde6fe"}},{"ruleId":"D2","level":"warning","message":{"text":"Renderer::render_impl (cognitive 53): Renderer::render_impl has cognitive complexity 53 (threshold 15). Drivers by points: if/else 29 (45 pts), match/switch 3 (5 pts), loops 2 (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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":1417}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2846311536c7b027ad63c1edfc37cb20f889e3d460e9df7ddc4e5f2ae46a233"}},{"ruleId":"D2","level":"warning","message":{"text":"RemillTranspiler::lift_fn (cognitive 52): RemillTranspiler::lift_fn has cognitive complexity 52 (threshold 15). Drivers by points: if/else 20 (44 pts), loops 1 (6 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":1013}}}],"partialFingerprints":{"codehealthFindingId/v1":"4467c37adf244dcbef3699bb474a744c505b321e0a1d1c6198d4047b5f54f9ee"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::type_resolver::check_type_c_compatibility (cognitive 52): azul_doc::autofix::type_resolver::check_type_c_compatibility has cognitive complexity 52 (threshold 15). Drivers by points: if/else 9 (36 pts), loops 2 (9 pts), match/switch 3 (7 pts) (nesting depth added 38). 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":"doc/src/autofix/type_resolver.rs"},"region":{"startLine":739}}}],"partialFingerprints":{"codehealthFindingId/v1":"84bf82474889be9f6f6e0530dc30d6198a1dd7e896af04ad83795daec9a649a0"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_java::wrappers::emit_wrapper_method (cognitive 52): azul_doc::codegen::v2::lang_java::wrappers::emit_wrapper_method has cognitive complexity 52 (threshold 15). Drivers by points: if/else 30 (37 pts), match/switch 3 (6 pts), loops 4 (5 pts), boolean chains 4 (nesting depth added 11). 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":"doc/src/codegen/v2/lang_java/wrappers.rs"},"region":{"startLine":1336}}}],"partialFingerprints":{"codehealthFindingId/v1":"4841bf1ee33ef0ede554ad0772c713d02e528d4c9cf3782bb8d775f2f2a875e6"}},{"ruleId":"D2","level":"warning","message":{"text":"TaffyBridge::compute_non_flex_layout (cognitive 52): TaffyBridge::compute_non_flex_layout has cognitive complexity 52 (threshold 15). Drivers by points: if/else 16 (29 pts), match/switch 11 (18 pts), boolean chains 3, loops 1 (2 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":"layout/src/solver3/taffy_bridge.rs"},"region":{"startLine":1990}}}],"partialFingerprints":{"codehealthFindingId/v1":"d99794f9d7288f1265804a9fd96e07f00a0a8b661dc1327c2c9d9500b3cfcbb7"}},{"ruleId":"D2","level":"warning","message":{"text":"MacOSWindow::new_with_options_internal (cognitive 51): MacOSWindow::new_with_options_internal has cognitive complexity 51 (threshold 15). Drivers by points: if/else 31 (35 pts), match/switch 10 (13 pts), loops 1 (2 pts), boolean chains 1 (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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":4965}}}],"partialFingerprints":{"codehealthFindingId/v1":"0449e5427d4eff5b87cc5468ac2d5cec85e262f87ad27733bbdba249f272724c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::display::linux::wayland::try_wlr_randr (cognitive 51): azul_dll::desktop::display::linux::wayland::try_wlr_randr has cognitive complexity 51 (threshold 15). Drivers by points: if/else 12 (40 pts), boolean chains 7, loops 2 (4 pts) (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":"dll/src/desktop/display.rs"},"region":{"startLine":1298}}}],"partialFingerprints":{"codehealthFindingId/v1":"332a0ff22692bd048b1af22e199004e9dca3760e498591097c8161993287fc5b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::screencap::macos::open (cognitive 51): azul_dll::desktop::extra::screencap::macos::open has cognitive complexity 51 (threshold 15). Drivers by points: if/else 22 (35 pts), match/switch 7 (8 pts), loops 2 (6 pts), boolean chains 2 (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":"dll/src/desktop/extra/screencap/macos.rs"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9425fd3e53508470190dbf2a8546a7cc0f5a5a61ecd73023ed425d8b807f925"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::type_index::parse_impl_option_args (cognitive 51): azul_doc::autofix::type_index::parse_impl_option_args has cognitive complexity 51 (threshold 15). Drivers by points: if/else 11 (43 pts), loops 2 (5 pts), match/switch 1 (2 pts), boolean chains 1 (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":"doc/src/autofix/type_index.rs"},"region":{"startLine":1922}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bbfe685ddec18c03a5fc3866fd7a1e22f8a2d10db39541da5e230865ca9d4ae"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::patch::apply_version_patch (cognitive 51): azul_doc::patch::apply_version_patch has cognitive complexity 51 (threshold 15). Drivers by points: if/else 14 (31 pts), loops 7 (14 pts), match/switch 2 (6 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":"doc/src/patch/mod.rs"},"region":{"startLine":906}}}],"partialFingerprints":{"codehealthFindingId/v1":"b688e7e901701a8998e324803bf4919c9291a0886c37ebd219de4a61f23272c8"}},{"ruleId":"D2","level":"warning","message":{"text":"Win32Window::sync_window_state (cognitive 50): Win32Window::sync_window_state has cognitive complexity 50 (threshold 15). Drivers by points: if/else 28 (41 pts), match/switch 4 (7 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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":2724}}}],"partialFingerprints":{"codehealthFindingId/v1":"42858431a6586828edecf86e5cf0ee1d2dfededf3b824b9c8d655c99c0b17640"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::workspace::has_field_changes (cognitive 50): azul_doc::autofix::workspace::has_field_changes has cognitive complexity 50 (threshold 15). Drivers by points: if/else 14 (36 pts), loops 6 (12 pts), boolean chains 1, match/switch 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":"doc/src/autofix/workspace.rs"},"region":{"startLine":2058}}}],"partialFingerprints":{"codehealthFindingId/v1":"805842799a0fddf3f1a74cc0ff9686072b61013de98299a37683325bf64100d1"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_csharp::types::generate_tagged_union (cognitive 50): azul_doc::codegen::v2::lang_csharp::types::generate_tagged_union has cognitive complexity 50 (threshold 15). Drivers by points: if/else 12 (30 pts), loops 6 (12 pts), match/switch 3 (8 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":"doc/src/codegen/v2/lang_csharp/types.rs"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"fae2b97ecdd81d985c624b610289fe386a6fd1b109c15a0a21bfd8adcc524d64"}},{"ruleId":"D2","level":"warning","message":{"text":"IntrinsicSizeCalculator::calculate_intrinsic_recursive (cognitive 50): IntrinsicSizeCalculator::calculate_intrinsic_recursive has cognitive complexity 50 (threshold 15). Drivers by points: if/else 22 (45 pts), boolean chains 2, match/switch 1 (2 pts), loops 1 (nesting depth added 24). 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":"layout/src/solver3/sizing.rs"},"region":{"startLine":279}}}],"partialFingerprints":{"codehealthFindingId/v1":"5657761b29a4807465e39843a9666105dee7c18e4fccced800a6182da679e264"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::widgets::color_input::publish (cognitive 50): azul_layout::widgets::color_input::publish has cognitive complexity 50 (threshold 15). Drivers by points: if/else 12 (49 pts), match/switch 1 (nesting depth added 37). 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":"layout/src/widgets/color_input.rs"},"region":{"startLine":1076}}}],"partialFingerprints":{"codehealthFindingId/v1":"20676e5745382ef214a98ae9c3fba025d17321f24488f61f0849663242a179ff"}},{"ruleId":"D2","level":"warning","message":{"text":"TileCacheInstance::post_update (cognitive 50): TileCacheInstance::post_update has cognitive complexity 50 (threshold 15). Drivers by points: loops 15 (32 pts), if/else 8 (18 pts) (nesting depth added 27). 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":"webrender/core/src/picture.rs"},"region":{"startLine":3850}}}],"partialFingerprints":{"codehealthFindingId/v1":"843508ae4ab989ef0adc91c57d4a914958d0a85dc795b80d7968a3f35c5027d7"}},{"ruleId":"D2","level":"warning","message":{"text":"webrender::render_target::add_svg_filter_node_instances (cognitive 50): webrender::render_target::add_svg_filter_node_instances has cognitive complexity 50 (threshold 15). Drivers by points: match/switch 45 (46 pts), if/else 2 (3 pts), loops 1 (nesting depth added 2). 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":"webrender/core/src/render_target.rs"},"region":{"startLine":1009}}}],"partialFingerprints":{"codehealthFindingId/v1":"103404f8e54e1d85d3daa53793a2593d4849fdeabd97493427df0c776579531d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::diff::compute_node_changes (cognitive 49): azul_core::diff::compute_node_changes has cognitive complexity 49 (threshold 15). Drivers by points: if/else 20 (37 pts), loops 4 (9 pts), boolean chains 2, match/switch 1 (nesting depth added 22). Of this number, 46 points are the body\u0027s own statements and 3 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":"core/src/diff.rs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"80212ebf1923d6ea3ae16c62911f874a28e4b56caba3503cc2544b613f3b26f1"}},{"ruleId":"D2","level":"warning","message":{"text":"X11Window::wait_for_events (cognitive 49): X11Window::wait_for_events has cognitive complexity 49 (threshold 15). Drivers by points: if/else 19 (34 pts), loops 4 (8 pts), boolean chains 7 (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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":4486}}}],"partialFingerprints":{"codehealthFindingId/v1":"0420e92720bf6db90c719c2e46316f9578156b7f45e2a75f5bc87d0f2eff63ce"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ruby::types::emit_tagged_union (cognitive 49): azul_doc::codegen::v2::lang_ruby::types::emit_tagged_union has cognitive complexity 49 (threshold 15). Drivers by points: if/else 16 (38 pts), loops 5 (9 pts), match/switch 1 (2 pts) (nesting depth added 27). 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":"doc/src/codegen/v2/lang_ruby/types.rs"},"region":{"startLine":564}}}],"partialFingerprints":{"codehealthFindingId/v1":"e92a85922925575e64c253d2fd42775eedb20f66a8ae24d0a96c5ee4a32caa57"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::raster::extract_gpu_values (cognitive 49): azul_layout::cpurender::raster::extract_gpu_values has cognitive complexity 49 (threshold 15). Drivers by points: if/else 11 (33 pts), loops 8 (16 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":"layout/src/cpurender/raster.rs"},"region":{"startLine":1303}}}],"partialFingerprints":{"codehealthFindingId/v1":"a247a5ef4ed780e19b161f4096b38cc667647f35ca42133fec633c7fb21f97b5"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::raster::render_display_list_damaged (cognitive 49): azul_layout::cpurender::raster::render_display_list_damaged has cognitive complexity 49 (threshold 15). Drivers by points: if/else 17 (40 pts), loops 4 (6 pts), boolean chains 3 (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/cpurender/raster.rs"},"region":{"startLine":1559}}}],"partialFingerprints":{"codehealthFindingId/v1":"4547d0dd45ed4e4e9b1acc07ffa0070f9389614ea393afcba385b96b4956999a"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::widgets::ribbon::on_ribbon_mobile_group_click (cognitive 49): azul_layout::widgets::ribbon::on_ribbon_mobile_group_click has cognitive complexity 49 (threshold 15). Drivers by points: if/else 12 (32 pts), loops 5 (16 pts), boolean chains 1 (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":"layout/src/widgets/ribbon.rs"},"region":{"startLine":3940}}}],"partialFingerprints":{"codehealthFindingId/v1":"f50f0b40c115bc0165fdddd0e790d2bae0d03b0dde06eb4bb67c5e62400bb442"}},{"ruleId":"D2","level":"warning","message":{"text":"Renderer::update_texture_cache (cognitive 49): Renderer::update_texture_cache has cognitive complexity 49 (threshold 15). Drivers by points: if/else 7 (21 pts), loops 7 (15 pts), match/switch 4 (12 pts), boolean chains 1 (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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":1796}}}],"partialFingerprints":{"codehealthFindingId/v1":"46736e25bcf654dfb3bc825c97577a4c489b88c396df46fab07d0834fce8328e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::xml::analyze_node_ctor (cognitive 48): azul_core::xml::analyze_node_ctor has cognitive complexity 48 (threshold 15). Drivers by points: if/else 29 (45 pts), boolean chains 2, match/switch 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":"core/src/xml.rs"},"region":{"startLine":7947}}}],"partialFingerprints":{"codehealthFindingId/v1":"15282a33c7b0f65b79b1fa2008c220284acc9492b6b0e3cc96873957dae19b5e"}},{"ruleId":"D2","level":"warning","message":{"text":"Cpp17Generator::generate_method_implementations (cognitive 48): Cpp17Generator::generate_method_implementations has cognitive complexity 48 (threshold 15). Drivers by points: if/else 22 (39 pts), boolean chains 6, loops 3 (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":"doc/src/codegen/v2/lang_cpp/cpp17.rs"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"abab5769068ff427819f7bf01e627b2b16dd425b22fb09e568fcd86938090fe7"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::check_enum_variant_method_collisions (cognitive 48): azul_doc::autofix::check_enum_variant_method_collisions has cognitive complexity 48 (threshold 15). Drivers by points: loops 7 (24 pts), if/else 5 (22 pts), boolean chains 2 (nesting depth added 34). 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":"doc/src/autofix/mod.rs"},"region":{"startLine":5047}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0205a89ec21d2d5d87b1a6fdf1e000e963db4ffa6aec1621bec77d121ada907"}},{"ruleId":"D2","level":"warning","message":{"text":"ParsedFont::decode_glyph_inner (cognitive 48): ParsedFont::decode_glyph_inner has cognitive complexity 48 (threshold 15). Drivers by points: if/else 14 (48 pts) (nesting depth added 34). 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":"layout/src/font.rs"},"region":{"startLine":1792}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfdf15265bb1f77ac53e085acbe9e6ea6e063617dca0a663950afb204bcc909e"}},{"ruleId":"D2","level":"warning","message":{"text":"IntrinsicSizeCalculator::calculate_node_intrinsic_sizes (cognitive 48): IntrinsicSizeCalculator::calculate_node_intrinsic_sizes has cognitive complexity 48 (threshold 15). Drivers by points: if/else 26 (41 pts), boolean chains 6, 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":"layout/src/solver3/sizing.rs"},"region":{"startLine":512}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce3b54c5c82557397c0546349c8ee94245af3a2b8c4221ca4b54e3c5c76265b5"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::layout_and_generate_display_list_impl (cognitive 48): LayoutWindow::layout_and_generate_display_list_impl has cognitive complexity 48 (threshold 15). Drivers by points: if/else 23 (35 pts), loops 6 (11 pts), boolean chains 2 (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":"layout/src/window.rs"},"region":{"startLine":2306}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdfd313f5976eb7c63906955204a7a9e206d46156b46407467db4331934707ff"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::xml::decode_xml_entities_slow (cognitive 48): azul_layout::xml::decode_xml_entities_slow has cognitive complexity 48 (threshold 15). Drivers by points: if/else 13 (38 pts), loops 2 (4 pts), match/switch 1 (4 pts), boolean chains 2 (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":"layout/src/xml/mod.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7554720551318e84a0d0cdbbe8ef9a430f283890954f76eb84c8ecc22b8b964"}},{"ruleId":"D2","level":"warning","message":{"text":"SwCompositor::occlude_surfaces (cognitive 48): SwCompositor::occlude_surfaces has cognitive complexity 48 (threshold 15). Drivers by points: if/else 11 (35 pts), boolean chains 7, loops 3 (4 pts), match/switch 1 (2 pts) (nesting depth added 26). Of this number, 41 points are the body\u0027s own statements and 7 belong to 3 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":"webrender/core/src/compositor/sw_compositor.rs"},"region":{"startLine":840}}}],"partialFingerprints":{"codehealthFindingId/v1":"0111d949b70f8e4c473ba940bc2af859a67af82806694a5d7784517c69591613"}},{"ruleId":"D2","level":"warning","message":{"text":"debugger._parseSlashCommand (cognitive 48): debugger._parseSlashCommand has cognitive complexity 48 (threshold 15). Drivers by points: if/else 17 (28 pts), error handling 2 (10 pts), loops 3 (5 pts), boolean chains 3, ternaries 1 (2 pts) (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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":4753}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd2ffdf84e97407f298429937bb71f2d465ed3441dc0c687225801e0ef14b005"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::compact::update_dom_declared_flags (cognitive 47): azul_core::compact::update_dom_declared_flags has cognitive complexity 47 (threshold 15). Drivers by points: if/else 23 (46 pts), match/switch 1 (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":"core/src/compact.rs"},"region":{"startLine":1937}}}],"partialFingerprints":{"codehealthFindingId/v1":"87ba387169602918623ecf3d69bd013750688db49a8185f83030410f7932fb0a"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::path_parser::parse_svg_path_d (cognitive 47): azul_core::path_parser::parse_svg_path_d has cognitive complexity 47 (threshold 15). Drivers by points: if/else 14 (32 pts), match/switch 3 (9 pts), loops 2 (4 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":"core/src/path_parser.rs"},"region":{"startLine":423}}}],"partialFingerprints":{"codehealthFindingId/v1":"33b31d08f5b622b77d1576b68908aa3754ad643f6bcfd22ad473b0632b66a99c"}},{"ruleId":"D2","level":"warning","message":{"text":"WaylandWindow::handle_pointer_button (cognitive 47): WaylandWindow::handle_pointer_button has cognitive complexity 47 (threshold 15). Drivers by points: if/else 19 (37 pts), match/switch 4 (6 pts), boolean chains 4 (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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":4438}}}],"partialFingerprints":{"codehealthFindingId/v1":"71a0b8e0341f21bb7dc085d56be38318da370eedf94864f6f543e9bf82544d0b"}},{"ruleId":"D2","level":"warning","message":{"text":"Win32Window::new (cognitive 47): Win32Window::new has cognitive complexity 47 (threshold 15). Drivers by points: if/else 29 (41 pts), loops 2 (3 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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bdc4c748cd53766a26aad6878dde18733baa4e0455b7b5b9a3e4582ea5caffc"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::screencap::linux::on_process (cognitive 47): azul_dll::desktop::extra::screencap::linux::on_process has cognitive complexity 47 (threshold 15). Drivers by points: if/else 11 (35 pts), loops 2 (8 pts), boolean chains 4 (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":"dll/src/desktop/extra/screencap/linux.rs"},"region":{"startLine":858}}}],"partialFingerprints":{"codehealthFindingId/v1":"3acff4e833bcb2c1b962b899e60d8a476515876e0f4e6baab6c99149b4f99e0d"}},{"ruleId":"D2","level":"warning","message":{"text":"PythonGenerator::generate_callback_trampoline (cognitive 47): PythonGenerator::generate_callback_trampoline has cognitive complexity 47 (threshold 15). Drivers by points: if/else 31 (37 pts), boolean chains 4, loops 3, match/switch 2 (3 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":"doc/src/codegen/v2/lang_python.rs"},"region":{"startLine":1075}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a03d1eebf1659f4a36d4ba991cc51379f9df6729bfe1f4da9e49b0df54bcc3c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::print::print_function (cognitive 47): azul_doc::print::print_function has cognitive complexity 47 (threshold 15). Drivers by points: if/else 11 (38 pts), match/switch 2 (8 pts), loops 1 (nesting depth added 33). 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":"doc/src/print.rs"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4aec28ebc6bcd746cf2582c49362af5e57b0dd13e78034461af31cd5d23c0dd"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_java::types::emit_monomorphized_alias_files (cognitive 47): azul_doc::codegen::v2::lang_java::types::emit_monomorphized_alias_files has cognitive complexity 47 (threshold 15). Drivers by points: if/else 12 (26 pts), loops 8 (20 pts), match/switch 1 (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":"doc/src/codegen/v2/lang_java/types.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"edbc2c9f2a46c4acdfad9addd481118cdb29b3c3aade6a103df87f00696691d7"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::select_next_occurrence (cognitive 47): LayoutWindow::select_next_occurrence has cognitive complexity 47 (threshold 15). Drivers by points: if/else 22 (41 pts), match/switch 4 (5 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":"layout/src/window.rs"},"region":{"startLine":13202}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e0547c22bd909bcc815d18cba24e9f3633e7d70d748eb5bb9a39e52431edc81"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::page_breaks::compute_page_breaks_impl (cognitive 47): azul_layout::solver3::page_breaks::compute_page_breaks_impl has cognitive complexity 47 (threshold 15). Drivers by points: if/else 20 (36 pts), boolean chains 7, loops 3 (4 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":"layout/src/solver3/page_breaks.rs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"f610cb3327d6ac59b706a0b55113f595312d2599d26d708ee449c70ccd09778d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::fc::layout_flex_grid (cognitive 47): azul_layout::solver3::fc::layout_flex_grid has cognitive complexity 47 (threshold 15). Drivers by points: if/else 27 (37 pts), boolean chains 5, match/switch 2 (4 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":"layout/src/solver3/fc.rs"},"region":{"startLine":646}}}],"partialFingerprints":{"codehealthFindingId/v1":"78f9f66baf7ff372628625d97fd8c5be2f41e9d3f062106e291aeacebb4e7db0"}},{"ruleId":"D2","level":"warning","message":{"text":"RenderTaskKind::write_gpu_blocks (cognitive 47): RenderTaskKind::write_gpu_blocks has cognitive complexity 47 (threshold 15). Drivers by points: if/else 11 (34 pts), loops 2 (8 pts), match/switch 3 (5 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":"webrender/core/src/render_task.rs"},"region":{"startLine":761}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae6f801be3ad54e391d24e61ff1383395468413db7391c2beaca45006f40c846"}},{"ruleId":"D2","level":"warning","message":{"text":"run_install_steps.run_route (cognitive 47): run_install_steps.run_route has cognitive complexity 47 (threshold 15). Drivers by points: if/else 15 (28 pts), ternaries 6 (12 pts), boolean chains 5, error handling 1, 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":"scripts/run_install_steps.py"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"583af720fbc3b6c828b09b9871a1a55af4a5135985be8aa6304281add71c5bba"}},{"ruleId":"D2","level":"warning","message":{"text":"WaylandWindow::handle_key (cognitive 46): WaylandWindow::handle_key has cognitive complexity 46 (threshold 15). Drivers by points: if/else 20 (36 pts), boolean chains 6, match/switch 3 (4 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":3450}}}],"partialFingerprints":{"codehealthFindingId/v1":"33f455dbea51a32b289fbf9a51201b3b4dfa88731d7f7130b618824698ba6da9"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::type_index::extract_method_def (cognitive 46): azul_doc::autofix::type_index::extract_method_def has cognitive complexity 46 (threshold 15). Drivers by points: if/else 20 (35 pts), boolean chains 6, match/switch 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":"doc/src/autofix/type_index.rs"},"region":{"startLine":3240}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bf64c5bd2ac5102af8e9e9aee5b8e51e384a442cd6eabaea6a067efac844ce2"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_smalltalk::wrappers::emit_wrapper_method (cognitive 46): azul_doc::codegen::v2::lang_smalltalk::wrappers::emit_wrapper_method has cognitive complexity 46 (threshold 15). Drivers by points: if/else 26 (35 pts), loops 4 (7 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":"doc/src/codegen/v2/lang_smalltalk/wrappers.rs"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"488ab707bc9ceb04bb6330eb62de47a21a688bcb981c40af09f04a174c05ed68"}},{"ruleId":"D2","level":"warning","message":{"text":"DenseText::from_unified_with_content (cognitive 46): DenseText::from_unified_with_content has cognitive complexity 46 (threshold 15). Drivers by points: if/else 16 (34 pts), boolean chains 4, loops 2 (4 pts), match/switch 2 (4 pts) (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":"layout/src/text3/dense.rs"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"c37a36da875e4b2b669a29ecc3c93da0433835a46edf11e210534fe8d6ae98b2"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::event_determination::pointer_seat_events (cognitive 46): azul_layout::event_determination::pointer_seat_events has cognitive complexity 46 (threshold 15). Drivers by points: if/else 19 (37 pts), boolean chains 8, 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":"layout/src/event_determination.rs"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bd290b4cc9cf60c831e44778c98edc4d0ab7c82f78f7866421a621f8e9177f6"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::compositor::gpu_value_damage (cognitive 46): azul_layout::cpurender::compositor::gpu_value_damage has cognitive complexity 46 (threshold 15). Drivers by points: if/else 10 (25 pts), loops 7 (9 pts), match/switch 3 (9 pts), boolean chains 3 (nesting depth added 23). Of this number, 43 points are the body\u0027s own statements and 3 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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":1934}}}],"partialFingerprints":{"codehealthFindingId/v1":"a556e4ba5552ebfd7af011153536dc04607a83dbe964690f272d4d07421f9764"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::positioning::adjust_sticky_positions (cognitive 46): azul_layout::solver3::positioning::adjust_sticky_positions has cognitive complexity 46 (threshold 15). Drivers by points: if/else 18 (44 pts), boolean chains 1, 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":"layout/src/solver3/positioning.rs"},"region":{"startLine":1171}}}],"partialFingerprints":{"codehealthFindingId/v1":"e11c66eb40151629cb2189f3c7e4f6eab6ad672039e5df6d2de80413ac6840f6"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::glyphs::suppress_split_border_fragments (cognitive 46): azul_layout::text3::glyphs::suppress_split_border_fragments has cognitive complexity 46 (threshold 15). Drivers by points: if/else 7 (32 pts), loops 3 (13 pts), boolean chains 1 (nesting depth added 35). 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":"layout/src/text3/glyphs.rs"},"region":{"startLine":385}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca4d0b37e9530cbba9c25578d6253e62dd093b5d031e314d3891f35d97e4378c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::knuth_plass::position_lines_from_breaks (cognitive 46): azul_layout::text3::knuth_plass::position_lines_from_breaks has cognitive complexity 46 (threshold 15). Drivers by points: if/else 12 (27 pts), match/switch 5 (12 pts), loops 3 (5 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":"layout/src/text3/knuth_plass.rs"},"region":{"startLine":570}}}],"partialFingerprints":{"codehealthFindingId/v1":"394d93ea437338b875a431319b1ea2dbe2963664b7efbcdd7f6c143a9c733165"}},{"ruleId":"D2","level":"warning","message":{"text":"Emitter::emit_traits (cognitive 45): Emitter::emit_traits has cognitive complexity 45 (threshold 15). Drivers by points: if/else 14 (21 pts), loops 8 (16 pts), match/switch 4 (5 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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":1288}}}],"partialFingerprints":{"codehealthFindingId/v1":"050a7947900f9d3c485814f10cbba8a8bb771dbc5fa05aeacb23e115277c73e3"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_haskell::wrappers::reexports (cognitive 45): azul_doc::codegen::v2::lang_haskell::wrappers::reexports has cognitive complexity 45 (threshold 15). Drivers by points: if/else 14 (34 pts), loops 6, boolean chains 3, match/switch 1 (2 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":"doc/src/codegen/v2/lang_haskell/wrappers.rs"},"region":{"startLine":684}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0020487d80077fdebf57bd8a735ae0a87e2a6a5552be12686ea5a194524ecec"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::gene2e::run (cognitive 45): azul_doc::gene2e::run has cognitive complexity 45 (threshold 15). Drivers by points: if/else 19 (29 pts), loops 7 (12 pts), boolean chains 3, 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":"doc/src/gene2e.rs"},"region":{"startLine":1812}}}],"partialFingerprints":{"codehealthFindingId/v1":"e67de758f30317785534f3e40f069743179adb5a191419cc3a2931c63a0b91ba"}},{"ruleId":"D2","level":"warning","message":{"text":"DisplayListGenerator::paint_cursor (cognitive 45): DisplayListGenerator::paint_cursor has cognitive complexity 45 (threshold 15). Drivers by points: if/else 17 (30 pts), match/switch 2 (6 pts), boolean chains 5, loops 2 (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":"layout/src/solver3/display_list.rs"},"region":{"startLine":4375}}}],"partialFingerprints":{"codehealthFindingId/v1":"481f3d3a699e106708b656596d6f60ccb30b8b3199de876ed3da46ce951cf2e0"}},{"ruleId":"D2","level":"warning","message":{"text":"DisplayListGenerator::paint_node_content_inner (cognitive 45): DisplayListGenerator::paint_node_content_inner has cognitive complexity 45 (threshold 15). Drivers by points: if/else 22 (43 pts), boolean chains 2 (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":"layout/src/solver3/display_list.rs"},"region":{"startLine":6665}}}],"partialFingerprints":{"codehealthFindingId/v1":"a116a9744a5eabdf53d6515432e53c385396445de14c6dbb04058d394dece65f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::raster::rounded_clip_corners (cognitive 45): azul_layout::cpurender::raster::rounded_clip_corners has cognitive complexity 45 (threshold 15). Drivers by points: if/else 19 (36 pts), loops 3 (6 pts), boolean chains 3 (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":"layout/src/cpurender/raster.rs"},"region":{"startLine":837}}}],"partialFingerprints":{"codehealthFindingId/v1":"20d0204abfb1fa6e075eae5cd95f3c7f3ef18906f3bea31904882df46ebcd75c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::cache::justify_kashida_and_rebuild (cognitive 45): azul_layout::text3::cache::justify_kashida_and_rebuild has cognitive complexity 45 (threshold 15). Drivers by points: if/else 25 (39 pts), loops 2 (3 pts), boolean chains 2, 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":"layout/src/text3/cache.rs"},"region":{"startLine":12524}}}],"partialFingerprints":{"codehealthFindingId/v1":"c42cbd9b2a2583b3e29c26a9d812056270501de033b1aaef92f0950aaf1e6414"}},{"ruleId":"D2","level":"warning","message":{"text":"SpatialNode::update_transform (cognitive 45): SpatialNode::update_transform has cognitive complexity 45 (threshold 15). Drivers by points: if/else 11 (27 pts), match/switch 6 (14 pts), loops 1 (3 pts), boolean chains 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":"webrender/core/src/spatial_node.rs"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"007dd7e9f61bda8cd4195546b9f1af06eef6cdcdc4feab01b2bca87463f2d33e"}},{"ruleId":"D2","level":"warning","message":{"text":"strip_coff_lib.main (cognitive 45): strip_coff_lib.main has cognitive complexity 45 (threshold 15). Drivers by points: if/else 13 (24 pts), loops 9 (13 pts), ternaries 2 (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":"scripts/strip_coff_lib.py"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"07c98125d0b7d1fa88b2db122ba94486f86c3b94661cb10da9f1ad0cbe032a15"}},{"ruleId":"D2","level":"warning","message":{"text":"AutofixPatch::modify_to_class_patch (cognitive 44): AutofixPatch::modify_to_class_patch has cognitive complexity 44 (threshold 15). Drivers by points: if/else 14 (28 pts), loops 4 (10 pts), match/switch 2 (6 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":"doc/src/autofix/patch_format.rs"},"region":{"startLine":951}}}],"partialFingerprints":{"codehealthFindingId/v1":"36d18a406bb2281adef7c42007f8ee760c6c33c7814966c9128e0806a6f2ecaa"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_julia::types::generate_types (cognitive 44): azul_doc::codegen::v2::lang_julia::types::generate_types has cognitive complexity 44 (threshold 15). Drivers by points: if/else 14 (31 pts), loops 7, match/switch 3 (6 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":"doc/src/codegen/v2/lang_julia/types.rs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"88d97b0eb8c5418fc1d74fe9757385c2a98a8b95c604993557d88d863fdb89bd"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::dense::get_glyph_runs_pdf_dense (cognitive 44): azul_layout::text3::dense::get_glyph_runs_pdf_dense has cognitive complexity 44 (threshold 15). Drivers by points: if/else 16 (32 pts), loops 4 (8 pts), match/switch 1 (3 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":"layout/src/text3/dense.rs"},"region":{"startLine":1451}}}],"partialFingerprints":{"codehealthFindingId/v1":"f98166477f00cd4bad812bfc34e1649173d82e479fa14618c5a35d68d1daaa50"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::form::validate_form (cognitive 44): azul_layout::form::validate_form has cognitive complexity 44 (threshold 15). Drivers by points: if/else 12 (38 pts), loops 2 (3 pts), match/switch 1 (3 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":"layout/src/form.rs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad931229c2bdfd0b93c700eed7951df08604c70053051783df0c7d55f1ffb26c"}},{"ruleId":"D2","level":"warning","message":{"text":"env_guard.main (cognitive 44): env_guard.main has cognitive complexity 44 (threshold 15). Drivers by points: if/else 14 (23 pts), loops 8 (14 pts), ternaries 2 (5 pts), boolean chains 2 (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":"scripts/supply-chain/env_guard.py"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"d32a25bfff977e5d796aa0f6d4438e91a563bcfcd934021ffed348160c2c5a16"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::symbol_table::ingest_macho_stubs (cognitive 43): azul_dll::web::symbol_table::ingest_macho_stubs has cognitive complexity 43 (threshold 15). Drivers by points: if/else 21 (35 pts), match/switch 2 (4 pts), boolean chains 2, loops 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":"dll/src/web/symbol_table.rs"},"region":{"startLine":2026}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae02832b4cd07f973272ba5477cd513a5c0d1880273fd92ab771594d2bc84184"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::type_index::extract_struct_field_type (cognitive 43): azul_doc::autofix::type_index::extract_struct_field_type has cognitive complexity 43 (threshold 15). Drivers by points: if/else 11 (42 pts), match/switch 1 (nesting depth added 31). 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":"doc/src/autofix/type_index.rs"},"region":{"startLine":1540}}}],"partialFingerprints":{"codehealthFindingId/v1":"32d17f9340e14c869b2ad9b885e1ae0ff7697862a38a39d22f7f6cc0c46886a7"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::module_plan::type_refs (cognitive 43): azul_doc::codegen::v2::module_plan::type_refs has cognitive complexity 43 (threshold 15). Drivers by points: loops 8 (24 pts), if/else 7 (13 pts), match/switch 2 (6 pts) (nesting depth added 26). 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":"doc/src/codegen/v2/module_plan.rs"},"region":{"startLine":438}}}],"partialFingerprints":{"codehealthFindingId/v1":"22d1bbd26076fa80ae2eced98382671a7e1a24161af6e1b0996c55ff10300223"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::diff::resolve_api_types (cognitive 43): azul_doc::autofix::diff::resolve_api_types has cognitive complexity 43 (threshold 15). Drivers by points: loops 7 (28 pts), if/else 3 (15 pts) (nesting depth added 33). 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":"doc/src/autofix/diff.rs"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"7555368c6c2373b9eb00bf9f3efb29df78e2dacf996f4527cfd7b5a6d1b91584"}},{"ruleId":"D2","level":"warning","message":{"text":"DisplayListGenerator::paint_collapsed_table_borders (cognitive 43): DisplayListGenerator::paint_collapsed_table_borders has cognitive complexity 43 (threshold 15). Drivers by points: if/else 10 (19 pts), match/switch 5 (12 pts), loops 7 (11 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":"layout/src/solver3/display_list.rs"},"region":{"startLine":6372}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f6397a7c61aa14efdce3d249a65d5400f5cf814eb95e5700a774e5143e06644"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::dom_lint::collect_findings (cognitive 43): azul_layout::dom_lint::collect_findings has cognitive complexity 43 (threshold 15). Drivers by points: if/else 16 (31 pts), loops 4 (8 pts), match/switch 1 (3 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":"layout/src/dom_lint.rs"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"035e09e74338121ff42c6197d4b72f8c5acfcb1282ef8eae1fbf058dcc3b8618"}},{"ruleId":"D2","level":"warning","message":{"text":"SwCompositor::flush_composites (cognitive 43): SwCompositor::flush_composites has cognitive complexity 43 (threshold 15). Drivers by points: if/else 9 (30 pts), loops 3 (8 pts), match/switch 4 (5 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":"webrender/core/src/compositor/sw_compositor.rs"},"region":{"startLine":1130}}}],"partialFingerprints":{"codehealthFindingId/v1":"84db266fb2a3f6e0be12628c3636e79b94057096778ae092886d9d1d78d566c6"}},{"ruleId":"D2","level":"warning","message":{"text":"BrushImageAdvancedBlendAlphaPassAntialiasingRepetitionTexture2DVert::brush_vs (cognitive 43): BrushImageAdvancedBlendAlphaPassAntialiasingRepetitionTexture2DVert::brush_vs has cognitive complexity 43 (threshold 15). Drivers by points: if/else 19 (39 pts), boolean chains 2, match/switch 2 (nesting depth added 20). 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":"webrender/swgl/src/shaders/brush_image_advanced_blend_alpha_pass_antialiasing_repetition_texture_2d.rs"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"285ddb002218882ee0b50db848aef8a751295e78b53523e4812bc3aa0646e918"}},{"ruleId":"D2","level":"warning","message":{"text":"BrushImageAdvancedBlendAlphaPassAntialiasingRepetitionTextureRectVert::brush_vs (cognitive 43): BrushImageAdvancedBlendAlphaPassAntialiasingRepetitionTextureRectVert::brush_vs has cognitive complexity 43 (threshold 15). Drivers by points: if/else 19 (39 pts), boolean chains 2, match/switch 2 (nesting depth added 20). 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":"webrender/swgl/src/shaders/brush_image_advanced_blend_alpha_pass_antialiasing_repetition_texture_rect.rs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3a0a058c5ace30f536875dd830f666c3b5fc0781209680053ba8e94e2d22b6e"}},{"ruleId":"D2","level":"warning","message":{"text":"BrushImageAdvancedBlendAlphaPassTexture2DVert::brush_vs (cognitive 43): BrushImageAdvancedBlendAlphaPassTexture2DVert::brush_vs has cognitive complexity 43 (threshold 15). Drivers by points: if/else 19 (39 pts), boolean chains 2, match/switch 2 (nesting depth added 20). 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":"webrender/swgl/src/shaders/brush_image_advanced_blend_alpha_pass_texture_2d.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"9829c498ae315c94209b14fb1eed28bc37f1d6482ece4795bc86da2dc64ce9bf"}},{"ruleId":"D2","level":"warning","message":{"text":"Vert::brush_vs (cognitive 43): Vert::brush_vs has cognitive complexity 43 (threshold 15). Drivers by points: if/else 19 (39 pts), boolean chains 2, match/switch 2 (nesting depth added 20). 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":"webrender/swgl/src/shaders/brush_image_alpha_pass_antialiasing_dual_source_blending_repetition_texture_2d.rs"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"75498af423744aaa88a5bca88185b4daa39cf8537ac730766aa62af8c51bd9d1"}},{"ruleId":"D2","level":"warning","message":{"text":"BrushImageAlphaPassAntialiasingDualSourceBlendingRepetitionTextureRectVert::brush_vs (cognitive 43): BrushImageAlphaPassAntialiasingDualSourceBlendingRepetitionTextureRectVert::brush_vs has cognitive complexity 43 (threshold 15). Drivers by points: if/else 19 (39 pts), boolean chains 2, match/switch 2 (nesting depth added 20). 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":"webrender/swgl/src/shaders/brush_image_alpha_pass_antialiasing_dual_source_blending_repetition_texture_rect.rs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd98571c2094a364abbff174f049f9fde41240879b8a4c09665d6cc52e0f5bc7"}},{"ruleId":"D2","level":"warning","message":{"text":"Cpp03Generator::generate_method_implementations (cognitive 42): Cpp03Generator::generate_method_implementations has cognitive complexity 42 (threshold 15). Drivers by points: if/else 19 (33 pts), boolean chains 6, loops 3 (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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"a367c0efe71702fa18d307e68b4b20950266bd9c143a286b0d9091f3d5c3c64d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::analysis::reachability::extract_fn_types (cognitive 42): azul_doc::autofix::analysis::reachability::extract_fn_types has cognitive complexity 42 (threshold 15). Drivers by points: if/else 9 (29 pts), loops 3 (11 pts), boolean chains 2 (nesting depth added 28). 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":"doc/src/autofix/analysis/reachability.rs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb9892c27978b7d08e4bdd78ba556b4859f77528134ce2f35ba7d1ccd5b702d2"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::utils::analyze::search_imports_arg_type (cognitive 42): azul_doc::utils::analyze::search_imports_arg_type has cognitive complexity 42 (threshold 15). Drivers by points: if/else 8 (24 pts), loops 4 (18 pts) (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":"doc/src/utils/analyze.rs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"50192f7b492d5a967004163b7a1f6d107af4d4133eac98a16f20c45d48954713"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::pixmap::blit_pixmap_projective_clipped (cognitive 42): azul_layout::cpurender::pixmap::blit_pixmap_projective_clipped has cognitive complexity 42 (threshold 15). Drivers by points: if/else 14 (29 pts), boolean chains 8, loops 3 (4 pts), match/switch 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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"30a95e1c2dc9072d378262b53217a3c23354695bf2dca9bfc6d13cd1420e933f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::updater::parse_release_document (cognitive 42): azul_layout::updater::parse_release_document has cognitive complexity 42 (threshold 15). Drivers by points: if/else 18 (26 pts), loops 3 (8 pts), boolean chains 6, 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":"layout/src/updater.rs"},"region":{"startLine":1001}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1da4f47d6bc48f3b787111038349c33d593bd86f0d24a55e9b77a0c366c71f6"}},{"ruleId":"D2","level":"warning","message":{"text":"Device::link_program (cognitive 42): Device::link_program has cognitive complexity 42 (threshold 15). Drivers by points: if/else 15 (36 pts), match/switch 2 (4 pts), loops 1 (2 pts) (nesting depth added 24). 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":"webrender/core/src/device/gl.rs"},"region":{"startLine":2444}}}],"partialFingerprints":{"codehealthFindingId/v1":"21de64ebc0750798e02dc51f12bdcc5afb0270f8205d05869e7daacd6a747301"}},{"ruleId":"D2","level":"warning","message":{"text":"webrender::prim_store::gradient::linear::optimize_linear_gradient (cognitive 42): webrender::prim_store::gradient::linear::optimize_linear_gradient has cognitive complexity 42 (threshold 15). Drivers by points: if/else 22 (28 pts), boolean chains 10, match/switch 2 (3 pts), loops 1 (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":"webrender/core/src/prim_store/gradient/linear.rs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"8eb3548206f00aa72da9a0af8dcc366944e58a510918d2bf17dcddffb4292a0d"}},{"ruleId":"D2","level":"warning","message":{"text":"_addCollapsible (cognitive 42): _addCollapsible has cognitive complexity 42 (threshold 15). Drivers by points: if/else 9 (16 pts), loops 4 (14 pts), ternaries 8 (11 pts), boolean chains 1 (nesting depth added 20). Of this number, 35 points are the body\u0027s own statements and 7 belong to 3 function literals 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":3335}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ae34225de4fa7d854cbac3cff9f87fadfd85d9efbbf45160e2af2916fea2aeb"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::styled_dom::is_layout_equivalent (cognitive 41): azul_core::styled_dom::is_layout_equivalent has cognitive complexity 41 (threshold 15). Drivers by points: if/else 15 (33 pts), match/switch 2 (5 pts), loops 2 (3 pts) (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":"core/src/styled_dom.rs"},"region":{"startLine":3281}}}],"partialFingerprints":{"codehealthFindingId/v1":"a02292ec643f908a09319755dbf63cccafc3a87b31761221a8c8d9883bc380ae"}},{"ruleId":"D2","level":"warning","message":{"text":"X11Window::handle_mouse_button (cognitive 41): X11Window::handle_mouse_button has cognitive complexity 41 (threshold 15). Drivers by points: if/else 16 (29 pts), boolean chains 6, match/switch 4 (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":"dll/src/desktop/shell2/linux/x11/events.rs"},"region":{"startLine":476}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c4866dc341898ff6e860bac3e13e463d6fbcf45f9c93c3904b72a66d45e8fd7"}},{"ruleId":"D2","level":"warning","message":{"text":"X11Window::handle_keyboard (cognitive 41): X11Window::handle_keyboard has cognitive complexity 41 (threshold 15). Drivers by points: if/else 13 (26 pts), match/switch 4 (12 pts), boolean chains 3 (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":"dll/src/desktop/shell2/linux/x11/events.rs"},"region":{"startLine":1002}}}],"partialFingerprints":{"codehealthFindingId/v1":"da25c112bc4721323fe6f9c83b105cfbfa82bd3a9e5330965978db2d19f362cc"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::regression::diff_render_warnings (cognitive 41): azul_doc::reftest::regression::diff_render_warnings has cognitive complexity 41 (threshold 15). Drivers by points: if/else 13 (36 pts), loops 4, boolean chains 1 (nesting depth added 23). Of this number, 35 points are the body\u0027s own statements and 6 belong to one function item inside it that branches. 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":"doc/src/reftest/regression.rs"},"region":{"startLine":1414}}}],"partialFingerprints":{"codehealthFindingId/v1":"b44331a07ac323d2e90df35ea1a192d9e3a3ea6c6236d71ddd8147cdd75c660d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::mobile::handle_mobile_command (cognitive 41): azul_doc::mobile::handle_mobile_command has cognitive complexity 41 (threshold 15). Drivers by points: if/else 15 (28 pts), loops 3 (7 pts), match/switch 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":"doc/src/mobile/mod.rs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"374a4b7b65ab5647fa8f567a0df1b9c27fcf2200e3333ba73e981e71516e2a54"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::module_map::module_from_external_path (cognitive 41): azul_doc::autofix::module_map::module_from_external_path has cognitive complexity 41 (threshold 15). Drivers by points: if/else 41. 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":"doc/src/autofix/module_map.rs"},"region":{"startLine":802}}}],"partialFingerprints":{"codehealthFindingId/v1":"abf73e6769fe85391b197034be925849ded042714b477454c1f30114974cfb8f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::getters::compute_all_font_sizes_px (cognitive 41): azul_layout::solver3::getters::compute_all_font_sizes_px has cognitive complexity 41 (threshold 15). Drivers by points: if/else 15 (39 pts), boolean chains 1, loops 1 (nesting depth added 24). 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":"layout/src/solver3/getters.rs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"892917b379f9f13e1368430cb219c6fb187f1d5d989fd3f0544e9059da2d7ffb"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::managers::scroll_registration::register_scroll_nodes (cognitive 41): azul_layout::managers::scroll_registration::register_scroll_nodes has cognitive complexity 41 (threshold 15). Drivers by points: if/else 9 (31 pts), match/switch 2 (6 pts), loops 2 (3 pts), boolean chains 1 (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":"layout/src/managers/scroll_registration.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c7cb2c612e807dbd09d5af3d30ae1d69b2564cd1420d80378ad9ab447442020"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::positioning::adjust_relative_positions (cognitive 41): azul_layout::solver3::positioning::adjust_relative_positions has cognitive complexity 41 (threshold 15). Drivers by points: if/else 13 (30 pts), loops 2 (5 pts), match/switch 2 (4 pts), boolean chains 2 (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":"layout/src/solver3/positioning.rs"},"region":{"startLine":844}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa7b682640a5d03e2e02e2fcaaa83857fe26c1ebda8b85accca15cd8d98db3a6"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::page_breaks::snap_break_up (cognitive 41): azul_layout::solver3::page_breaks::snap_break_up has cognitive complexity 41 (threshold 15). Drivers by points: if/else 9 (30 pts), loops 3 (6 pts), boolean chains 5 (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":"layout/src/solver3/page_breaks.rs"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a6e5bdd301ad1ae94d1489453a7a50c2621fac80a64533c8b345c0ea7bdbb9f"}},{"ruleId":"D2","level":"warning","message":{"text":"BrushImageAntialiasingRepetitionTexture2DVert::brush_vs (cognitive 41): BrushImageAntialiasingRepetitionTexture2DVert::brush_vs has cognitive complexity 41 (threshold 15). Drivers by points: if/else 19 (39 pts), boolean chains 2 (nesting depth added 20). 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":"webrender/swgl/src/shaders/brush_image_antialiasing_repetition_texture_2d.rs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe52e70c8be538f94d991bbf03fea2744cdda237dc9815fc0a9d3fe8ec131126"}},{"ruleId":"D2","level":"warning","message":{"text":"BrushImageAntialiasingRepetitionTextureRectVert::brush_vs (cognitive 41): BrushImageAntialiasingRepetitionTextureRectVert::brush_vs has cognitive complexity 41 (threshold 15). Drivers by points: if/else 19 (39 pts), boolean chains 2 (nesting depth added 20). 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":"webrender/swgl/src/shaders/brush_image_antialiasing_repetition_texture_rect.rs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"92cde83dd2e0418f786e4791b383ed84fb394892e187d4d9f3500b72a49c5d0b"}},{"ruleId":"D2","level":"warning","message":{"text":"AttribLocations::get_loc (cognitive 41): AttribLocations::get_loc has cognitive complexity 41 (threshold 15). Drivers by points: if/else 31 (41 pts) (nesting depth added 10). 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":"webrender/swgl/src/shaders/cs_border_segment.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"42eaecdbcbccdf33b9648bc7fba416cd03bbd72d83d70aa5a10e1ef05d7741bd"}},{"ruleId":"D2","level":"warning","message":{"text":"AttribLocations::get_loc (cognitive 41): AttribLocations::get_loc has cognitive complexity 41 (threshold 15). Drivers by points: if/else 31 (41 pts) (nesting depth added 10). 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":"webrender/swgl/src/shaders/cs_border_solid.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cd9676b7f3c1f059f7dc41f703e336caa5b546a93ffcc2d884775be2e2b7139"}},{"ruleId":"D2","level":"warning","message":{"text":"AttribLocations::get_loc (cognitive 41): AttribLocations::get_loc has cognitive complexity 41 (threshold 15). Drivers by points: if/else 31 (41 pts) (nesting depth added 10). 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":"webrender/swgl/src/shaders/cs_clip_box_shadow_texture_2d.rs"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"e874f11a6e3485b2f2177024839388cae3e03cc6b334ca2bc8b928b94ddd0df1"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::native_screenshot::take_native_screenshot_kwin_bytes (cognitive 40): azul_dll::desktop::native_screenshot::take_native_screenshot_kwin_bytes has cognitive complexity 40 (threshold 15). Drivers by points: if/else 16 (28 pts), loops 5 (8 pts), boolean chains 4 (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":"dll/src/desktop/native_screenshot.rs"},"region":{"startLine":528}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ba59d4db3d649761a40e1811b83cb2660c2944cbb4026ad8f7c6d1e79eeac38"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_kotlin::emit_tagged_union (cognitive 40): azul_doc::codegen::v2::lang_kotlin::emit_tagged_union has cognitive complexity 40 (threshold 15). Drivers by points: if/else 11 (20 pts), loops 6 (12 pts), match/switch 3 (8 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":"doc/src/codegen/v2/lang_kotlin/mod.rs"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"3db268ac314f777f0678cb69bf05570e8673e666ee8be72e0704c75d18d9c823"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::autodebug::analyze_pixel_diff (cognitive 40): azul_doc::reftest::autodebug::analyze_pixel_diff has cognitive complexity 40 (threshold 15). Drivers by points: if/else 12 (26 pts), loops 9 (13 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":"doc/src/reftest/autodebug.rs"},"region":{"startLine":601}}}],"partialFingerprints":{"codehealthFindingId/v1":"62ca9532bddacbd44ea5ddc4bc3e05a26c24e17f46649f56400fc3eb9b05e47c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::assemble_context::public_api_names (cognitive 40): azul_doc::assemble_context::public_api_names has cognitive complexity 40 (threshold 15). Drivers by points: loops 7 (24 pts), if/else 4 (16 pts) (nesting depth added 29). 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":"doc/src/assemble_context.rs"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcd3a728a604f662897c093e52e21d529a7787d8db3ce714c9cf4b23b2f84bdc"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_java::types::emit_tagged_union_files (cognitive 40): azul_doc::codegen::v2::lang_java::types::emit_tagged_union_files has cognitive complexity 40 (threshold 15). Drivers by points: if/else 11 (20 pts), loops 6 (12 pts), match/switch 3 (8 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":"doc/src/codegen/v2/lang_java/types.rs"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"a97475f3c7e1417f9bb801020c08ebfd854a11b3b8cc1535c3337b78bf5b506d"}},{"ruleId":"D2","level":"warning","message":{"text":"DisplayListGenerator::paint_node_background_and_border_inner (cognitive 40): DisplayListGenerator::paint_node_background_and_border_inner has cognitive complexity 40 (threshold 15). Drivers by points: if/else 20 (31 pts), loops 2 (5 pts), boolean chains 4 (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":"layout/src/solver3/display_list.rs"},"region":{"startLine":5889}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a721d6e17b10509ac291ab700eb46bf53a99832d7f1760aff0e39837e26f83a"}},{"ruleId":"D2","level":"warning","message":{"text":"DisplayListGenerator::maybe_paint_placeholder_prompt (cognitive 40): DisplayListGenerator::maybe_paint_placeholder_prompt has cognitive complexity 40 (threshold 15). Drivers by points: if/else 19 (31 pts), loops 3 (4 pts), boolean chains 3, 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":"layout/src/solver3/display_list.rs"},"region":{"startLine":6892}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ce77f5738177372b787cad5bccdf8adb8a4cf033cf0b0472b430d938166829b"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::update_a11y_tree_incremental (cognitive 40): LayoutWindow::update_a11y_tree_incremental has cognitive complexity 40 (threshold 15). Drivers by points: if/else 17 (34 pts), loops 1 (3 pts), match/switch 1 (2 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":"layout/src/window.rs"},"region":{"startLine":12332}}}],"partialFingerprints":{"codehealthFindingId/v1":"884d9f6ddd9ce39ae73bff76291353cd9869df55924c88483a4dd0420b43f234"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::cache::shape_visual_items_with_per_item_cache (cognitive 40): azul_layout::text3::cache::shape_visual_items_with_per_item_cache has cognitive complexity 40 (threshold 15). Drivers by points: if/else 9 (22 pts), match/switch 4 (12 pts), loops 3 (5 pts), boolean chains 1 (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":"layout/src/text3/cache.rs"},"region":{"startLine":8901}}}],"partialFingerprints":{"codehealthFindingId/v1":"d00b2859194a6099c60824de79ca3dc2984fb40764831425ec61db7b185df23e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::dom_lint::warn_interactive_without_accessibility (cognitive 40): azul_layout::dom_lint::warn_interactive_without_accessibility has cognitive complexity 40 (threshold 15). Drivers by points: if/else 11 (31 pts), loops 3 (8 pts), boolean chains 1 (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/dom_lint.rs"},"region":{"startLine":857}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd7ba99cd11f31fe5539ec1e2f77b40396b4d4f74cf2927925307a85c3f53c71"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::window::compile_keyframes_track (cognitive 40): azul_layout::window::compile_keyframes_track has cognitive complexity 40 (threshold 15). Drivers by points: if/else 6 (24 pts), loops 4 (8 pts), match/switch 2 (8 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":"layout/src/window.rs"},"region":{"startLine":25066}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cf9c1284ed6b9d35ba7564a82c2f7f7317922e3dc0ffb514c85aafc4a9cffc2"}},{"ruleId":"D2","level":"warning","message":{"text":"SwCompositor::start_compositing (cognitive 40): SwCompositor::start_compositing has cognitive complexity 40 (threshold 15). Drivers by points: if/else 8 (22 pts), loops 7 (18 pts) (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"webrender/core/src/compositor/sw_compositor.rs"},"region":{"startLine":1538}}}],"partialFingerprints":{"codehealthFindingId/v1":"af843e2aea9f9eec1389f6366b22110bc189db91eb57bd16378bdeb9aad32039"}},{"ruleId":"D2","level":"warning","message":{"text":"showComponentDetail (cognitive 40): showComponentDetail has cognitive complexity 40 (threshold 15). Drivers by points: if/else 16 (23 pts), boolean chains 15, ternaries 1 (2 pts) (nesting depth added 8). Of this number, 28 points are the body\u0027s own statements and 12 belong to 18 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":2265}}}],"partialFingerprints":{"codehealthFindingId/v1":"de6adc8806c94733c8668299a6788773c0022a9dad1a543c106258951d8ca0e2"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::system_style::discover_gnome_style (cognitive 39): azul_dll::desktop::shell2::linux::system_style::discover_gnome_style has cognitive complexity 39 (threshold 15). Drivers by points: if/else 22 (29 pts), match/switch 4 (8 pts), boolean chains 2 (nesting depth added 11). 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":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":1475}}}],"partialFingerprints":{"codehealthFindingId/v1":"eaf5f688a33e1547f13c0bd7b1ba1aa0ddcfb37fcfdfeb71cd6c40ce813f0d69"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::inject_selfloop_value_log (cognitive 39): azul_dll::web::transpiler_remill::inject_selfloop_value_log has cognitive complexity 39 (threshold 15). Drivers by points: if/else 11 (30 pts), loops 3 (5 pts), boolean chains 4 (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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":8279}}}],"partialFingerprints":{"codehealthFindingId/v1":"51b1873064b3ffee6e601841023bd1e46817a5e749b3eafced2d96b2d53266ed"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::estimate_type_size_align_by_name (cognitive 39): azul_doc::autofix::estimate_type_size_align_by_name has cognitive complexity 39 (threshold 15). Drivers by points: if/else 13 (27 pts), loops 4 (10 pts), match/switch 2 (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":"doc/src/autofix/mod.rs"},"region":{"startLine":1604}}}],"partialFingerprints":{"codehealthFindingId/v1":"2371015025d8a3513a78f5fd287766e5328f76e80431ce12f0c5cb1b7355d976"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::dllgen::deploy::create_examples (cognitive 39): azul_doc::dllgen::deploy::create_examples has cognitive complexity 39 (threshold 15). Drivers by points: if/else 11 (34 pts), loops 3 (5 pts) (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/dllgen/deploy.rs"},"region":{"startLine":1624}}}],"partialFingerprints":{"codehealthFindingId/v1":"6485af9279ea3f64232728fb28b5b03815119e28be83932f6d4b8b1f30bac4dd"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_lisp::map_type_to_cffi (cognitive 39): azul_doc::codegen::v2::lang_lisp::map_type_to_cffi has cognitive complexity 39 (threshold 15). Drivers by points: if/else 18 (33 pts), match/switch 2 (5 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":"doc/src/codegen/v2/lang_lisp/mod.rs"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"be1274d9d85ca7f311fcfcef334a5113cc6c7cec2d84e76989992ef9d24cc29d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::lint_derives::check (cognitive 39): azul_doc::lint_derives::check has cognitive complexity 39 (threshold 15). Drivers by points: if/else 9 (27 pts), loops 3 (6 pts), match/switch 1 (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":"doc/src/lint_derives.rs"},"region":{"startLine":1398}}}],"partialFingerprints":{"codehealthFindingId/v1":"edd5ca2c18a1c91b42745d474cc892a524d38ee831a3e7341ce77f8b0b618b56"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::patch::apply_path_only_patches (cognitive 39): azul_doc::patch::apply_path_only_patches has cognitive complexity 39 (threshold 15). Drivers by points: if/else 15 (25 pts), loops 6 (12 pts), match/switch 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":"doc/src/patch/mod.rs"},"region":{"startLine":609}}}],"partialFingerprints":{"codehealthFindingId/v1":"4080aa6c85e7a1d551eb84f29ff2a51d9d326aab65e6cbec003cd00d665183dc"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::calc::evaluate_calc_ast (cognitive 39): azul_layout::solver3::calc::evaluate_calc_ast has cognitive complexity 39 (threshold 15). Drivers by points: if/else 7 (18 pts), match/switch 5 (14 pts), loops 4 (6 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":"layout/src/solver3/calc.rs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"939d8eec487cc2d342210cd799708a462851a1b5bf9b6c316b8ef29a9b17ab1d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::cache::compute_counters_recursive (cognitive 39): azul_layout::solver3::cache::compute_counters_recursive has cognitive complexity 39 (threshold 15). Drivers by points: if/else 20 (29 pts), loops 5 (9 pts), boolean chains 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":"layout/src/solver3/cache.rs"},"region":{"startLine":3713}}}],"partialFingerprints":{"codehealthFindingId/v1":"60c0765873073f12f6665afd7396d64d09a1126eeb62bfddc0a4fec283daa7eb"}},{"ruleId":"D2","level":"warning","message":{"text":"ImageData::update (cognitive 39): ImageData::update has cognitive complexity 39 (threshold 15). Drivers by points: if/else 15 (30 pts), loops 2 (5 pts), boolean chains 2, match/switch 2 (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":"webrender/core/src/prim_store/image.rs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"09df6fb6c046278b8b9c3d9482a0c1ec9ab34ea4df2fe549af8f09844ad08e7e"}},{"ruleId":"D2","level":"warning","message":{"text":"webrender::render_target::build_mask_tasks (cognitive 39): webrender::render_target::build_mask_tasks has cognitive complexity 39 (threshold 15). Drivers by points: if/else 17 (33 pts), loops 2 (4 pts), match/switch 1 (2 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":"webrender/core/src/render_target.rs"},"region":{"startLine":1340}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a5cfec575dc5b018e06e98f1ac6ca3677fe23e23998b457fd9f88584c60e13f"}},{"ruleId":"D2","level":"warning","message":{"text":"MacOSWindow::apply_background_material (cognitive 38): MacOSWindow::apply_background_material has cognitive complexity 38 (threshold 15). Drivers by points: if/else 13 (33 pts), match/switch 3 (5 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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":6875}}}],"partialFingerprints":{"codehealthFindingId/v1":"657835b1eff51d375e88eaf9d69be0f4b0d704a15e51d576f880b8de93b642ce"}},{"ruleId":"D2","level":"warning","message":{"text":"CPUView::update_framebuffer (cognitive 38): CPUView::update_framebuffer has cognitive complexity 38 (threshold 15). Drivers by points: if/else 8 (16 pts), loops 5 (15 pts), boolean chains 7 (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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":2650}}}],"partialFingerprints":{"codehealthFindingId/v1":"2976621cd570a236d73e32e82b3d159a34a47db7a0acd07ecef83b0ef2821cce"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::ios::clipboard::read_payload (cognitive 38): azul_dll::desktop::shell2::ios::clipboard::read_payload has cognitive complexity 38 (threshold 15). Drivers by points: if/else 14 (31 pts), match/switch 1 (4 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":"dll/src/desktop/shell2/ios/clipboard.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd50692e4d9237eef75bbda63b102a8fa99db628e575dc98f912938fad09b1c3"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::strip_alias_scope_metadata (cognitive 38): azul_dll::web::transpiler_remill::strip_alias_scope_metadata has cognitive complexity 38 (threshold 15). Drivers by points: loops 5 (20 pts), if/else 5 (15 pts), boolean chains 3 (nesting depth added 25). 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":10755}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa9272482f809b7220fd2027829afeead62cc3210105200c34cc13f6ea35157f"}},{"ruleId":"D2","level":"warning","message":{"text":"RustGenerator::generate_transmute_trait_impls_enum (cognitive 38): RustGenerator::generate_transmute_trait_impls_enum has cognitive complexity 38 (threshold 15). Drivers by points: if/else 27 (33 pts), boolean chains 5 (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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2963}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c7ad247de86c05b20cc4354a0073421a4600adb7a860d5abb3d867f3230bba7"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::type_index::extract_macro_generated_types (cognitive 38): azul_doc::autofix::type_index::extract_macro_generated_types has cognitive complexity 38 (threshold 15). Drivers by points: if/else 18 (37 pts), match/switch 1 (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":"doc/src/autofix/type_index.rs"},"region":{"startLine":1990}}}],"partialFingerprints":{"codehealthFindingId/v1":"158b1f523422a83890ad5502349bd572469938b68520d7695576ea05910b1aaa"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::diff::collect_api_json_types (cognitive 38): azul_doc::autofix::diff::collect_api_json_types has cognitive complexity 38 (threshold 15). Drivers by points: loops 5 (16 pts), if/else 4 (13 pts), match/switch 2 (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":"doc/src/autofix/diff.rs"},"region":{"startLine":933}}}],"partialFingerprints":{"codehealthFindingId/v1":"89f333d37aa65b4fa033c3b931b3c086e91ee1cafb7b50ea19c6d6d962d21f99"}},{"ruleId":"D2","level":"warning","message":{"text":"TextShapingCache::measure_intrinsic_widths (cognitive 38): TextShapingCache::measure_intrinsic_widths has cognitive complexity 38 (threshold 15). Drivers by points: if/else 21 (34 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":"layout/src/text3/cache.rs"},"region":{"startLine":8146}}}],"partialFingerprints":{"codehealthFindingId/v1":"494d57537eac6366cff2f4f59387dcfd33b5173e5afdd4247da7582349f99ba3"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::glyphs::get_glyph_runs_pdf (cognitive 38): azul_layout::text3::glyphs::get_glyph_runs_pdf has cognitive complexity 38 (threshold 15). Drivers by points: if/else 13 (31 pts), loops 2 (3 pts), match/switch 1 (3 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":"layout/src/text3/glyphs.rs"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"83471186319ac3f86ec01936cdbede5906aa43256051fbd00a57d778517fff38"}},{"ruleId":"D2","level":"warning","message":{"text":"webrender::renderer::upload::upload_to_texture_cache (cognitive 38): webrender::renderer::upload::upload_to_texture_cache has cognitive complexity 38 (threshold 15). Drivers by points: if/else 16 (21 pts), match/switch 3 (9 pts), loops 4 (5 pts), boolean chains 3 (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":"webrender/core/src/renderer/upload.rs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf34379a0e33327ac3bd733f61fbf11e8ba22d2f62ca3473e71d1e7880c7a08a"}},{"ruleId":"D2","level":"warning","message":{"text":"check_dep_justifications.main (cognitive 38): check_dep_justifications.main has cognitive complexity 38 (threshold 15). Drivers by points: if/else 13 (17 pts), ternaries 7 (11 pts), loops 5 (6 pts), boolean chains 2, error handling 1 (2 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":"scripts/check_dep_justifications.py"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"f001a905404b8fb137e93cc3794674d1930902c25df59ab8d2b01c5d777872a1"}},{"ruleId":"D2","level":"warning","message":{"text":"Win32Window::feed_pointer (cognitive 37): Win32Window::feed_pointer has cognitive complexity 37 (threshold 15). Drivers by points: if/else 18 (30 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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":3591}}}],"partialFingerprints":{"codehealthFindingId/v1":"770b5aa0b9f5d25359cde7fce5204ff66e00b234a570b678da6daf69e1ae07f4"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::eventloop::AzStartup_dispatchEvent (cognitive 37): azul_dll::web::eventloop::AzStartup_dispatchEvent has cognitive complexity 37 (threshold 15). Drivers by points: if/else 19 (30 pts), boolean chains 5, loops 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":"dll/src/web/eventloop.rs"},"region":{"startLine":1843}}}],"partialFingerprints":{"codehealthFindingId/v1":"765ba22d9c62bfd78a3e3035a93acf24c5d8924caca331aa33cd07ab5d72dfc0"}},{"ruleId":"D2","level":"warning","message":{"text":"AutofixPatch::explain (cognitive 37): AutofixPatch::explain has cognitive complexity 37 (threshold 15). Drivers by points: if/else 8 (23 pts), loops 4 (12 pts), match/switch 1 (2 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":"doc/src/autofix/patch_format.rs"},"region":{"startLine":407}}}],"partialFingerprints":{"codehealthFindingId/v1":"133c9f2efb8571a32ecd540ff327d1e369f4b79263482ad5380f582c327806bf"}},{"ruleId":"D2","level":"warning","message":{"text":"Model::new (cognitive 37): Model::new has cognitive complexity 37 (threshold 15). Drivers by points: if/else 10 (19 pts), match/switch 5 (10 pts), loops 5, boolean chains 3 (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":"doc/src/codegen/v2/lang_d/model.rs"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"092a1b98f13f7ca75ede4d141f88a14345532690e768cd6931299607a61e1510"}},{"ruleId":"D2","level":"warning","message":{"text":"RustGenerator::generate_result_convenience_methods (cognitive 37): RustGenerator::generate_result_convenience_methods has cognitive complexity 37 (threshold 15). Drivers by points: if/else 16 (26 pts), match/switch 5 (10 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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":1387}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d7ec979e58ce7b95e04b8776901c19e582f7a889c72f8f6553670bea282afc0"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ocaml::types::c_size_of_tagged_enum (cognitive 37): azul_doc::codegen::v2::lang_ocaml::types::c_size_of_tagged_enum has cognitive complexity 37 (threshold 15). Drivers by points: if/else 8 (20 pts), match/switch 3 (10 pts), loops 3 (7 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":"doc/src/codegen/v2/lang_ocaml/types.rs"},"region":{"startLine":821}}}],"partialFingerprints":{"codehealthFindingId/v1":"28f639b6f867a304ecbf1fe7cc0dfccaf9493ec1ec3b36cb8de8106d6945cbe9"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::type_index::parse_file_for_types (cognitive 37): azul_doc::autofix::type_index::parse_file_for_types has cognitive complexity 37 (threshold 15). Drivers by points: if/else 11 (32 pts), loops 3, match/switch 1 (2 pts) (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":"doc/src/autofix/type_index.rs"},"region":{"startLine":1116}}}],"partialFingerprints":{"codehealthFindingId/v1":"56c77f8a30384a10aeb8ee9f952e0b0e59248870ab30c4a67b0d520a82968751"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::autodoc::run_autodoc_check (cognitive 37): azul_doc::reftest::autodoc::run_autodoc_check has cognitive complexity 37 (threshold 15). Drivers by points: if/else 11 (22 pts), match/switch 4 (9 pts), boolean chains 3, loops 2 (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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":1190}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd2d4a9e63fac9120bef8a9b32befbbf01e975c0e403bcc09491899e50289160"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_fortran::types::generate_types_for (cognitive 37): azul_doc::codegen::v2::lang_fortran::types::generate_types_for has cognitive complexity 37 (threshold 15). Drivers by points: if/else 11 (28 pts), loops 6, match/switch 1 (2 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":"doc/src/codegen/v2/lang_fortran/types.rs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"15e25030911d905cc895a513b672aebea03d8eb32a1b2948e5c04151cd0ae292"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::workspace::virtual_patch_application (cognitive 37): azul_doc::autofix::workspace::virtual_patch_application has cognitive complexity 37 (threshold 15). Drivers by points: if/else 8 (22 pts), loops 6 (10 pts), match/switch 1 (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":"doc/src/autofix/workspace.rs"},"region":{"startLine":1930}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccc45706539569d2e47bf3b3232b1c9e04dbd6e46579ca1da5dafb8f750526ad"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_kotlin::wrappers::emit_instance_method (cognitive 37): azul_doc::codegen::v2::lang_kotlin::wrappers::emit_instance_method has cognitive complexity 37 (threshold 15). Drivers by points: if/else 21 (28 pts), loops 4 (5 pts), match/switch 2 (4 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":"doc/src/codegen/v2/lang_kotlin/wrappers.rs"},"region":{"startLine":1735}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7ec506a4cc503db8c0c893c3df3b64223568b57bcb9935df8e2096c4819f689"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::cache::get_line_constraints (cognitive 37): azul_layout::text3::cache::get_line_constraints has cognitive complexity 37 (threshold 15). Drivers by points: if/else 13 (28 pts), loops 3 (6 pts), match/switch 1 (2 pts), boolean chains 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":"layout/src/text3/cache.rs"},"region":{"startLine":13031}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f2d4eea0872e4d7c77b9e5f0e93619180b706ae5693460462e1d7351a4ad090"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::xml::svg::storage_to_multi_polygon (cognitive 37): azul_layout::xml::svg::storage_to_multi_polygon has cognitive complexity 37 (threshold 15). Drivers by points: if/else 8 (25 pts), loops 5 (12 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":"layout/src/xml/svg.rs"},"region":{"startLine":2089}}}],"partialFingerprints":{"codehealthFindingId/v1":"da8fe7981f4aba7e37ac50b71290fca044e805d001fef5b1dd7ba0b49bbfcd32"}},{"ruleId":"D2","level":"warning","message":{"text":"AttribLocations::get_loc (cognitive 37): AttribLocations::get_loc has cognitive complexity 37 (threshold 15). Drivers by points: if/else 28 (37 pts) (nesting depth added 9). 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":"webrender/swgl/src/shaders/cs_conic_gradient.rs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f95480638cdcfad27dbe181722fa462f16f10191bff944d696cf118b8de3e03"}},{"ruleId":"D2","level":"warning","message":{"text":"AttribLocations::get_loc (cognitive 37): AttribLocations::get_loc has cognitive complexity 37 (threshold 15). Drivers by points: if/else 28 (37 pts) (nesting depth added 9). 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":"webrender/swgl/src/shaders/cs_radial_gradient.rs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ad6dd5e345bcd9b4bd968006e566884d33cf28966fc30f3a1068a0c3ae3accf"}},{"ruleId":"D2","level":"warning","message":{"text":"AttribLocations::get_loc (cognitive 37): AttribLocations::get_loc has cognitive complexity 37 (threshold 15). Drivers by points: if/else 28 (37 pts) (nesting depth added 9). 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":"webrender/swgl/src/shaders/cs_svg_filter_node.rs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"31863aa75a470e01232ffb0bc94f34688e50214a41197ad7775d7214ca4ae921"}},{"ruleId":"D2","level":"warning","message":{"text":"_renderTreeNode (cognitive 37): _renderTreeNode has cognitive complexity 37 (threshold 15). Drivers by points: if/else 16 (21 pts), boolean chains 10, ternaries 5 (6 pts) (nesting depth added 6). Of this number, 34 points are the body\u0027s own statements and 3 belong to 5 function literals inside it that branch. 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":656}}}],"partialFingerprints":{"codehealthFindingId/v1":"73ddf35e065bd78fd5d78bfa290bfb0aacaf0e2adb3c8f01e115fcfc388532c4"}},{"ruleId":"D2","level":"warning","message":{"text":"PathParser::parse_number (cognitive 36): PathParser::parse_number has cognitive complexity 36 (threshold 15). Drivers by points: if/else 14 (27 pts), loops 3 (6 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":"core/src/path_parser.rs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"2119c7cbb38f0836c3d15e0771b94a61de0e4bc444b5d06517d62ff2f6680d4c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_css::props::style::background::parser::parse_gradient (cognitive 36): azul_css::props::style::background::parser::parse_gradient has cognitive complexity 36 (threshold 15). Drivers by points: if/else 12 (23 pts), loops 5 (11 pts), boolean chains 1, match/switch 1 (nesting depth added 17). 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":"css/src/props/style/background.rs"},"region":{"startLine":1361}}}],"partialFingerprints":{"codehealthFindingId/v1":"a64a0e9b368455791dd4add960c50d90bc86252a545f32f12176915113edd061"}},{"ruleId":"D2","level":"warning","message":{"text":"X11Window::close (cognitive 36): X11Window::close has cognitive complexity 36 (threshold 15). Drivers by points: if/else 11 (32 pts), loops 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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":3092}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a6e1131ab8e2c1d181b09cf22fd592745d439f05359e121c5cb673a5daba5bf"}},{"ruleId":"D2","level":"warning","message":{"text":"MacOSWindow::handle_scroll_wheel (cognitive 36): MacOSWindow::handle_scroll_wheel has cognitive complexity 36 (threshold 15). Drivers by points: if/else 19 (29 pts), boolean chains 4, match/switch 1 (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":"dll/src/desktop/shell2/macos/events.rs"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e7fe2daa5b802dfcec54e43ed12ad6aa47eac51d8721e2fc5327cf1c8ded428"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::wayland::screencopy::capture_toplevel (cognitive 36): azul_dll::desktop::shell2::linux::wayland::screencopy::capture_toplevel has cognitive complexity 36 (threshold 15). Drivers by points: if/else 18 (24 pts), loops 4 (7 pts), boolean chains 4, 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":"dll/src/desktop/shell2/linux/wayland/screencopy.rs"},"region":{"startLine":684}}}],"partialFingerprints":{"codehealthFindingId/v1":"6560bfc9200f3baff4a1fb6ef38816de6df8bc036e654cd4f02d6c8221ff75fc"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::wayland::events::seat_capabilities_handler (cognitive 36): azul_dll::desktop::shell2::linux::wayland::events::seat_capabilities_handler has cognitive complexity 36 (threshold 15). Drivers by points: if/else 13 (29 pts), match/switch 3 (6 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":"dll/src/desktop/shell2/linux/wayland/events.rs"},"region":{"startLine":3073}}}],"partialFingerprints":{"codehealthFindingId/v1":"982be571c425bbc4a23fce5f360286276490df2ffc4a3815470da5c25efbf4e0"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::reloc_templateize (cognitive 36): azul_dll::web::transpiler_remill::reloc_templateize has cognitive complexity 36 (threshold 15). Drivers by points: if/else 14 (28 pts), boolean chains 4, loops 2, match/switch 1 (2 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":7935}}}],"partialFingerprints":{"codehealthFindingId/v1":"090474145b3f654564ebbcdb5056e448b4e8331966145bff5c91205fca60ee5e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::dedup_sub_declares (cognitive 36): azul_dll::web::transpiler_remill::dedup_sub_declares has cognitive complexity 36 (threshold 15). Drivers by points: if/else 9 (33 pts), loops 2, boolean chains 1 (nesting depth added 24). 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":10585}}}],"partialFingerprints":{"codehealthFindingId/v1":"3137cf49a56b6e356a86abe7f1107c1f8b8e7f8295c1e4f807e21f3180a41a7e"}},{"ruleId":"D2","level":"warning","message":{"text":"RustGenerator::generate_trait_impls (cognitive 36): RustGenerator::generate_trait_impls has cognitive complexity 36 (threshold 15). Drivers by points: if/else 9 (23 pts), loops 6 (12 pts), match/switch 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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"46e4f9d5af42c910d3c2b143663b607c18def34bf9edc309ff61db50efe16b11"}},{"ruleId":"D2","level":"warning","message":{"text":"EnhancedXmlParser::extract_head_metadata (cognitive 36): EnhancedXmlParser::extract_head_metadata has cognitive complexity 36 (threshold 15). Drivers by points: if/else 5 (20 pts), match/switch 4 (12 pts), loops 2 (4 pts) (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/reftest/mod.rs"},"region":{"startLine":1219}}}],"partialFingerprints":{"codehealthFindingId/v1":"58c331c6165f2b4d8efae4b9c93a8c77b1399e7e3a93e6ab08ca15e120d6fa71"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::api::normalize_array_types (cognitive 36): azul_doc::api::normalize_array_types has cognitive complexity 36 (threshold 15). Drivers by points: if/else 3 (19 pts), loops 5 (17 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":"doc/src/api.rs"},"region":{"startLine":2602}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d02684f3c5c79d4461e93d76dd294751a80402d09c9525e7ca0802e61c1000a"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_cpp::cpp20::generate_method_implementations_shared (cognitive 36): azul_doc::codegen::v2::lang_cpp::cpp20::generate_method_implementations_shared has cognitive complexity 36 (threshold 15). Drivers by points: if/else 17 (26 pts), boolean chains 7, loops 3 (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":"doc/src/codegen/v2/lang_cpp/cpp20.rs"},"region":{"startLine":990}}}],"partialFingerprints":{"codehealthFindingId/v1":"74f78950e942420a5920cf56bf2a3cf5e62bc3f92e327a817c28c10977f81308"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_haskell::wrappers::emit_class_functions (cognitive 36): azul_doc::codegen::v2::lang_haskell::wrappers::emit_class_functions has cognitive complexity 36 (threshold 15). Drivers by points: if/else 12 (22 pts), boolean chains 6, loops 3 (5 pts), match/switch 1 (3 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":"doc/src/codegen/v2/lang_haskell/wrappers.rs"},"region":{"startLine":1932}}}],"partialFingerprints":{"codehealthFindingId/v1":"11f8a9f1303d7c547dd9a42937551189d3722a32c168f7b3e7f07e6921cf2c83"}},{"ruleId":"D2","level":"warning","message":{"text":"DisplayListGenerator::paint_selections (cognitive 36): DisplayListGenerator::paint_selections has cognitive complexity 36 (threshold 15). Drivers by points: if/else 8 (18 pts), loops 3 (12 pts), match/switch 1 (4 pts), boolean chains 2 (nesting depth added 22). 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":"layout/src/solver3/display_list.rs"},"region":{"startLine":4091}}}],"partialFingerprints":{"codehealthFindingId/v1":"4eb51a063235f429a6ae43b9328c7096bae1feb39925188bd715898804f857b8"}},{"ruleId":"D2","level":"warning","message":{"text":"TransientWindowManager::reconcile (cognitive 36): TransientWindowManager::reconcile has cognitive complexity 36 (threshold 15). Drivers by points: if/else 12 (30 pts), boolean chains 4, loops 2 (nesting depth added 18). 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":"layout/src/transient.rs"},"region":{"startLine":836}}}],"partialFingerprints":{"codehealthFindingId/v1":"525948e4ac76948a11412ae605d2f78d9101bef7b7c0ea4e206b7e5ed4f22107"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::cache::shape_with_font_fallback (cognitive 36): azul_layout::text3::cache::shape_with_font_fallback has cognitive complexity 36 (threshold 15). Drivers by points: if/else 14 (27 pts), loops 3 (7 pts), boolean chains 2 (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":"layout/src/text3/cache.rs"},"region":{"startLine":9313}}}],"partialFingerprints":{"codehealthFindingId/v1":"48237230b9250d786179d638c241c4fed8859531ff0d5d992693f45291a89e7d"}},{"ruleId":"D2","level":"warning","message":{"text":"PrimitiveComparer::compare_prim (cognitive 36): PrimitiveComparer::compare_prim has cognitive complexity 36 (threshold 15). Drivers by points: if/else 11 (33 pts), match/switch 1 (2 pts), loops 1 (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":"webrender/core/src/picture.rs"},"region":{"startLine":7450}}}],"partialFingerprints":{"codehealthFindingId/v1":"6583c9b40f88ab561d0ecfd7173e905c886a01490bb678e6a9e8fe48a998f315"}},{"ruleId":"D2","level":"warning","message":{"text":"SegmentBuilder::build (cognitive 36): SegmentBuilder::build has cognitive complexity 36 (threshold 15). Drivers by points: if/else 11 (23 pts), loops 5 (8 pts), boolean chains 4, 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":"webrender/core/src/segment.rs"},"region":{"startLine":458}}}],"partialFingerprints":{"codehealthFindingId/v1":"079498f41614e23648b6fe8277884f141f052a74387ddd311798dddca7ca6400"}},{"ruleId":"D2","level":"warning","message":{"text":"azul-search.resolveDefaults (cognitive 36): azul-search.resolveDefaults has cognitive complexity 36 (threshold 15). Drivers by points: if/else 6 (15 pts), loops 5 (12 pts), boolean chains 8, ternaries 1 (nesting depth added 16). Of this number, 34 points are the body\u0027s own statements and 2 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":"doc/templates/azul-search.js"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f469b82ce03830f08e59ae56fc89d2ec89b3a3e8f0ed36be7cecbc7e9cd539e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::events::handle_key_down (cognitive 35): azul_core::events::handle_key_down has cognitive complexity 35 (threshold 15). Drivers by points: if/else 19 (30 pts), match/switch 2 (5 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":"core/src/events.rs"},"region":{"startLine":5081}}}],"partialFingerprints":{"codehealthFindingId/v1":"66a6f9a373cbf34369d5b2b477f1f06dd5e87f764a37d4a97af2e8ea51aac055"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::reloc_next_token (cognitive 35): azul_dll::web::transpiler_remill::reloc_next_token has cognitive complexity 35 (threshold 15). Drivers by points: if/else 8 (22 pts), loops 3 (7 pts), boolean chains 6 (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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":7878}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fbeac081fc580a3599eb5ee70a49ed35be8850baabd63956ceae63e735674f2"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::parse_reg_store (cognitive 35): azul_dll::web::transpiler_remill::parse_reg_store has cognitive complexity 35 (threshold 15). Drivers by points: if/else 18, boolean chains 15, 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":9133}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2311c1c72c0f32108b8787ca406471a522982da2240a04ac2c0236a779496f2"}},{"ruleId":"D2","level":"warning","message":{"text":"ApiTypeExtractor::extract_from_fn_args_array (cognitive 35): ApiTypeExtractor::extract_from_fn_args_array has cognitive complexity 35 (threshold 15). Drivers by points: if/else 8 (29 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":"doc/src/autofix/analysis/extractor.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"e505063d52f69076868204c9c596038cb5129ee3bd32026d5d8b91b73ce422b4"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::type_resolver::extract_types_from_type_path (cognitive 35): azul_doc::autofix::type_resolver::extract_types_from_type_path has cognitive complexity 35 (threshold 15). Drivers by points: if/else 9 (27 pts), loops 2 (7 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":"doc/src/autofix/type_resolver.rs"},"region":{"startLine":1040}}}],"partialFingerprints":{"codehealthFindingId/v1":"74ec548da905c05e977a808609f839784a8d236be8ffa9bf1140d6265fe228d4"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::output::apply::apply_patches (cognitive 35): azul_doc::autofix::output::apply::apply_patches has cognitive complexity 35 (threshold 15). Drivers by points: if/else 9 (28 pts), loops 2 (4 pts), match/switch 2, boolean chains 1 (nesting depth added 21). 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":"doc/src/autofix/output/apply.rs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b42646d5b97648363302f8db64258bdf78d50782b7036353a64c7773405ca36"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_fortran::map_type_to_fortran (cognitive 35): azul_doc::codegen::v2::lang_fortran::map_type_to_fortran has cognitive complexity 35 (threshold 15). Drivers by points: if/else 19 (32 pts), boolean chains 2, match/switch 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":"doc/src/codegen/v2/lang_fortran/mod.rs"},"region":{"startLine":664}}}],"partialFingerprints":{"codehealthFindingId/v1":"daad4ab0a7edb5fb98893cf5c8be05a09ce6db629c614a057a3a3211fece5aa2"}},{"ruleId":"D2","level":"warning","message":{"text":"DisplayListGenerator::paint_scrollbars (cognitive 35): DisplayListGenerator::paint_scrollbars has cognitive complexity 35 (threshold 15). Drivers by points: if/else 20 (31 pts), boolean chains 4 (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":"layout/src/solver3/display_list.rs"},"region":{"startLine":7128}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2c5e99c57cf0320c62812ede6e62bd6c59709debd69c07644051653ac0bab9a"}},{"ruleId":"D2","level":"warning","message":{"text":"Ribbon::build_chrome (cognitive 35): Ribbon::build_chrome has cognitive complexity 35 (threshold 15). Drivers by points: if/else 18 (27 pts), match/switch 3 (4 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":"layout/src/widgets/ribbon.rs"},"region":{"startLine":3210}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5d9a50d44730abc0c7e191f19ab9ab2d40d83910b8bd21214c335132fe9c2f3"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::raster::render_text_prerendered_lcd (cognitive 35): azul_layout::cpurender::raster::render_text_prerendered_lcd has cognitive complexity 35 (threshold 15). Drivers by points: if/else 16 (23 pts), boolean chains 5, loops 4 (5 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":"layout/src/cpurender/raster.rs"},"region":{"startLine":3486}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef87e382fa68f1e00b62a4765f77db82839ec704a8e773eabfc23fac2ab0fcbc"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::getters::get_scrollbar_style (cognitive 35): azul_layout::solver3::getters::get_scrollbar_style has cognitive complexity 35 (threshold 15). Drivers by points: if/else 21 (30 pts), match/switch 2 (4 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":"layout/src/solver3/getters.rs"},"region":{"startLine":5616}}}],"partialFingerprints":{"codehealthFindingId/v1":"adba1ecbb54c149c6bc2ea1597ffd7f381607f955df0061b5997071301bfcce8"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::headless::resolve_virtual_view_placements (cognitive 35): azul_layout::headless::resolve_virtual_view_placements has cognitive complexity 35 (threshold 15). Drivers by points: if/else 7 (22 pts), loops 3 (6 pts), match/switch 1 (4 pts), boolean chains 3 (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":"layout/src/headless.rs"},"region":{"startLine":575}}}],"partialFingerprints":{"codehealthFindingId/v1":"4692dc8affb8f495b0a4d49b578abb684408a4cfc192f7ed9a6921ece8267102"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::pixmap::blit_pixmap_clipped (cognitive 35): azul_layout::cpurender::pixmap::blit_pixmap_clipped has cognitive complexity 35 (threshold 15). Drivers by points: if/else 10 (27 pts), boolean chains 5, loops 2 (3 pts) (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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ff1ee117e2dda92c08bb18e099b0a4ba529d6bcf88d826950fdcf39da6ee069"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::widgets::map::map_widget_render (cognitive 35): azul_layout::widgets::map::map_widget_render has cognitive complexity 35 (threshold 15). Drivers by points: match/switch 6 (16 pts), if/else 9 (14 pts), loops 3 (4 pts), boolean chains 1 (nesting depth added 16). 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":"layout/src/widgets/map.rs"},"region":{"startLine":2590}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f01b6a0323f2f2f342eefc382da0db5089e125701b8ad5edf109bf3c55143b0"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::fc::apply_segment_break_transform (cognitive 35): azul_layout::solver3::fc::apply_segment_break_transform has cognitive complexity 35 (threshold 15). Drivers by points: if/else 11 (21 pts), boolean chains 7, loops 3 (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":"layout/src/solver3/fc.rs"},"region":{"startLine":10700}}}],"partialFingerprints":{"codehealthFindingId/v1":"a760fd2aa76713557c4d5b48610cd708311f4d8916c2c96ed80729f004580628"}},{"ruleId":"D2","level":"warning","message":{"text":"TileCacheInstance::setup_compositor_surfaces_impl (cognitive 35): TileCacheInstance::setup_compositor_surfaces_impl has cognitive complexity 35 (threshold 15). Drivers by points: if/else 13 (21 pts), match/switch 6 (10 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":"webrender/core/src/picture.rs"},"region":{"startLine":2710}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb918d98635da284f246c8eec2cb0539f556b07a9b8e1980ac2924c4192b718c"}},{"ruleId":"D2","level":"warning","message":{"text":"SceneBuilder::add_box_shadow (cognitive 35): SceneBuilder::add_box_shadow has cognitive complexity 35 (threshold 15). Drivers by points: if/else 11 (26 pts), match/switch 3 (6 pts), boolean chains 3 (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":"webrender/core/src/box_shadow.rs"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"843ef5a77514132749d92ffbfd91c7c78686885957c5fd30e1df642c7b78d05b"}},{"ruleId":"D2","level":"warning","message":{"text":"SceneSpatialTree::find_scroll_root (cognitive 35): SceneSpatialTree::find_scroll_root has cognitive complexity 35 (threshold 15). Drivers by points: if/else 7 (24 pts), match/switch 3 (8 pts), boolean chains 2, 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":"webrender/core/src/spatial_tree.rs"},"region":{"startLine":331}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a323fac63349d679b3e7ae9ebf14afc88cec9b100381381fd6e2910eec0102a"}},{"ruleId":"D2","level":"warning","message":{"text":"webrender::prim_store::gradient::radial::optimize_radial_gradient (cognitive 35): webrender::prim_store::gradient::radial::optimize_radial_gradient has cognitive complexity 35 (threshold 15). Drivers by points: if/else 17 (26 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":"webrender/core/src/prim_store/gradient/radial.rs"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"f30aae3f2dde3c2588aa28f3422bde54dc4781ee191d05214d32b02abb59e23b"}},{"ruleId":"D2","level":"warning","message":{"text":"webrender::visibility::update_prim_visibility (cognitive 35): webrender::visibility::update_prim_visibility has cognitive complexity 35 (threshold 15). Drivers by points: if/else 8 (20 pts), match/switch 4 (10 pts), loops 3 (5 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":"webrender/core/src/visibility.rs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"0329ed07d33de75b5f9e735ce07f61a5b3bea2a6d53cc44231b506f081bcc85f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_css::props::basic::animation::parse_style_animation (cognitive 34): azul_css::props::basic::animation::parse_style_animation has cognitive complexity 34 (threshold 15). Drivers by points: if/else 16 (30 pts), loops 2, match/switch 1 (2 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":"css/src/props/basic/animation.rs"},"region":{"startLine":2720}}}],"partialFingerprints":{"codehealthFindingId/v1":"886e5a9f4a1849f447e4029ede29e3cb499f7cd6abf28aba7463b75cf34f79e8"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::native_screenshot::add_synthetic_shadow (cognitive 34): azul_dll::desktop::native_screenshot::add_synthetic_shadow has cognitive complexity 34 (threshold 15). Drivers by points: loops 12 (24 pts), if/else 3 (8 pts), boolean chains 2 (nesting depth added 17). 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":"dll/src/desktop/native_screenshot.rs"},"region":{"startLine":1137}}}],"partialFingerprints":{"codehealthFindingId/v1":"0701e51ea2734f8f78858862315879e3fa1af773739204eb103fb6d7bb17d57f"}},{"ruleId":"D2","level":"warning","message":{"text":"Cpp11Generator::generate_method_implementations (cognitive 34): Cpp11Generator::generate_method_implementations has cognitive complexity 34 (threshold 15). Drivers by points: if/else 15 (25 pts), boolean chains 6, loops 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":"doc/src/codegen/v2/lang_cpp/cpp11.rs"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c64bd95da873a356ab830fa5f04aae3ea3b04ba5b93ff94b684eaa87fb2717c"}},{"ruleId":"D2","level":"warning","message":{"text":"Emitter::emit_variants (cognitive 34): Emitter::emit_variants has cognitive complexity 34 (threshold 15). Drivers by points: if/else 8 (20 pts), loops 3 (10 pts), match/switch 1 (4 pts) (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":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":1101}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbdbff859fd71a04c7efeeb0e87034d404ca98245cea5a1c374fa554e64f04f5"}},{"ruleId":"D2","level":"warning","message":{"text":"Emitter::emit_option_traits (cognitive 34): Emitter::emit_option_traits has cognitive complexity 34 (threshold 15). Drivers by points: if/else 16 (25 pts), loops 3 (6 pts), boolean chains 2, 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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":2857}}}],"partialFingerprints":{"codehealthFindingId/v1":"79ac83116f9add7fd4af59347e5f23f3cff5a1d16fccde7f2b20f2b1897ee9c2"}},{"ruleId":"D2","level":"warning","message":{"text":"SymbolCollector::extract_doc (cognitive 34): SymbolCollector::extract_doc has cognitive complexity 34 (threshold 15). Drivers by points: if/else 7 (33 pts), loops 1 (nesting depth added 26). 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":"doc/src/patch/parser.rs"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"92d49d6c23c22e6f1ebaf78999256dbd57290dc682327f480e027d0eb26345d0"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ocaml::types::emit_tagged_union_fields (cognitive 34): azul_doc::codegen::v2::lang_ocaml::types::emit_tagged_union_fields has cognitive complexity 34 (threshold 15). Drivers by points: if/else 11 (28 pts), boolean chains 4, loops 1 (2 pts) (nesting depth added 18). 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":"doc/src/codegen/v2/lang_ocaml/types.rs"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"932553e5f3a7e2251dd1c9131fd892305b0a76040d505bbe33102893096c0265"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::type_index::extract_trait_impl_methods_from_items (cognitive 34): azul_doc::autofix::type_index::extract_trait_impl_methods_from_items has cognitive complexity 34 (threshold 15). Drivers by points: if/else 9 (26 pts), loops 3 (8 pts) (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. This shape REPEATS in the file: one other method here (azul_doc::autofix::type_index::extract_inherent_methods_from_items) 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":"doc/src/autofix/type_index.rs"},"region":{"startLine":1244}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4eb3f0233736ce8f677decddfb4cdec47f26699bf2017e2f8fdc47c20b91a81"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::type_index::extract_inherent_methods_from_items (cognitive 34): azul_doc::autofix::type_index::extract_inherent_methods_from_items has cognitive complexity 34 (threshold 15). Drivers by points: if/else 9 (26 pts), loops 3 (8 pts) (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. This shape REPEATS in the file: one other method here (azul_doc::autofix::type_index::extract_trait_impl_methods_from_items) 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":"doc/src/autofix/type_index.rs"},"region":{"startLine":3126}}}],"partialFingerprints":{"codehealthFindingId/v1":"93615108126fef8d05d89d9716a9d7f7399533e4214af6699907b42ebd262cd1"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::apply_seat_selection_op (cognitive 34): LayoutWindow::apply_seat_selection_op has cognitive complexity 34 (threshold 15). Drivers by points: if/else 6 (14 pts), match/switch 5 (12 pts), loops 3 (7 pts), boolean chains 1 (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":"layout/src/window.rs"},"region":{"startLine":10474}}}],"partialFingerprints":{"codehealthFindingId/v1":"81493bac239c31feeb4d0206257915e131aafa51a21411b11a03f33d25bfee54"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::synchronize_scrollbar_opacity (cognitive 34): LayoutWindow::synchronize_scrollbar_opacity has cognitive complexity 34 (threshold 15). Drivers by points: if/else 13 (24 pts), match/switch 2 (6 pts), boolean chains 3, 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":"layout/src/window.rs"},"region":{"startLine":11883}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e7edb3f96c0ed2e28364d7b2f9392d47b17dec17b6c2fb05a208ddf55bb6a34"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::getters::collect_font_stacks_from_styled_dom (cognitive 34): azul_layout::solver3::getters::collect_font_stacks_from_styled_dom has cognitive complexity 34 (threshold 15). Drivers by points: if/else 11 (25 pts), match/switch 2 (4 pts), loops 3, 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":"layout/src/solver3/getters.rs"},"region":{"startLine":4130}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2a36e8ea0b392f2cae45ea32db8b71d4d7589a71dc7453fbbf7422481f125d4"}},{"ruleId":"D2","level":"warning","message":{"text":"Tile::post_update (cognitive 34): Tile::post_update has cognitive complexity 34 (threshold 15). Drivers by points: if/else 13 (21 pts), match/switch 4 (8 pts), boolean chains 4, 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":"webrender/core/src/picture.rs"},"region":{"startLine":1117}}}],"partialFingerprints":{"codehealthFindingId/v1":"acf96f4e7ec385e5bda307334381ed216e4de3fe68f06ec0eaeff2046ed74726"}},{"ruleId":"D2","level":"warning","message":{"text":"Shaders::new (cognitive 34): Shaders::new has cognitive complexity 34 (threshold 15). Drivers by points: if/else 13 (23 pts), loops 6, 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":"webrender/core/src/renderer/shade.rs"},"region":{"startLine":630}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d7079bdc916d6eaddde0821c830defe5b240a223ecbc9caf8b8a773ad775cf4"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::style::matches_html_element (cognitive 33): azul_core::style::matches_html_element has cognitive complexity 33 (threshold 15). Drivers by points: if/else 8 (18 pts), match/switch 3 (8 pts), loops 3 (7 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":"core/src/style.rs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"5098305af11e81ef3a1175e0b8c1dd396fb1d3105b5ac7c79d7547eae58589f9"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_css::props::style::background::parser::get_normalized_linear_stops (cognitive 33): azul_css::props::style::background::parser::get_normalized_linear_stops has cognitive complexity 33 (threshold 15). Drivers by points: if/else 13 (21 pts), loops 5 (9 pts), match/switch 1 (2 pts), boolean chains 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. This shape REPEATS in the file: one other method here (azul_css::props::style::background::parser::get_normalized_radial_stops) 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":"css/src/props/style/background.rs"},"region":{"startLine":1729}}}],"partialFingerprints":{"codehealthFindingId/v1":"2971d889451f2d4bc19dab5bcd2d4682b7bde760987a4187a4ace73f34e7d474"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_css::props::style::background::parser::get_normalized_radial_stops (cognitive 33): azul_css::props::style::background::parser::get_normalized_radial_stops has cognitive complexity 33 (threshold 15). Drivers by points: if/else 13 (21 pts), loops 5 (9 pts), match/switch 1 (2 pts), boolean chains 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. This shape REPEATS in the file: one other method here (azul_css::props::style::background::parser::get_normalized_linear_stops) 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":"css/src/props/style/background.rs"},"region":{"startLine":1739}}}],"partialFingerprints":{"codehealthFindingId/v1":"56eed1ab96542f75d6ce479deea1a3a2b48c4f2deb887871d9cd4f6c591dad6b"}},{"ruleId":"D2","level":"warning","message":{"text":"WaylandWindow::set_cursor_for (cognitive 33): WaylandWindow::set_cursor_for has cognitive complexity 33 (threshold 15). Drivers by points: if/else 17 (24 pts), match/switch 7 (8 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":8284}}}],"partialFingerprints":{"codehealthFindingId/v1":"dec811f40a7e3937cd2ad8cb0c8a5aede316bdfb237c4cdfd3320c770b9700c0"}},{"ruleId":"D2","level":"warning","message":{"text":"WaylandWindow::set_prevent_system_sleep (cognitive 33): WaylandWindow::set_prevent_system_sleep has cognitive complexity 33 (threshold 15). Drivers by points: if/else 13 (25 pts), match/switch 5 (8 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":10845}}}],"partialFingerprints":{"codehealthFindingId/v1":"27c6baf1f1e3f24d50a68e177183e8b3045e84c315d729a5b04de002660e5137"}},{"ruleId":"D2","level":"warning","message":{"text":"X11Window::set_prevent_system_sleep (cognitive 33): X11Window::set_prevent_system_sleep has cognitive complexity 33 (threshold 15). Drivers by points: if/else 13 (25 pts), match/switch 5 (8 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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":8606}}}],"partialFingerprints":{"codehealthFindingId/v1":"10c0a6970896d4d6d88f5d63bd9d43a81f97d4662eac73f87878b50f4a5efd05"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::wayland::events::registry_global_handler (cognitive 33): azul_dll::desktop::shell2::linux::wayland::events::registry_global_handler has cognitive complexity 33 (threshold 15). Drivers by points: if/else 14 (32 pts), match/switch 1 (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":"dll/src/desktop/shell2/linux/wayland/events.rs"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"a91e91ddb3d0217264f125aabf3470da1ce00268cf00310152c143e3c7c291e3"}},{"ruleId":"D2","level":"warning","message":{"text":"ConformancePlan::build (cognitive 33): ConformancePlan::build has cognitive complexity 33 (threshold 15). Drivers by points: if/else 8 (16 pts), loops 8, match/switch 3 (6 pts), boolean chains 3 (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":"doc/src/codegen/v2/conformance/mod.rs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f750e5850969b40cabc49ca966897a0c29c8270674369479921dcbaecfc4ead"}},{"ruleId":"D2","level":"warning","message":{"text":"PythonGenerator::generate_enum_pymethods (cognitive 33): PythonGenerator::generate_enum_pymethods has cognitive complexity 33 (threshold 15). Drivers by points: if/else 13 (28 pts), loops 2, match/switch 1 (2 pts), boolean chains 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":"doc/src/codegen/v2/lang_python.rs"},"region":{"startLine":2316}}}],"partialFingerprints":{"codehealthFindingId/v1":"a97f1a93f4cc85ddc5d1f156b3fe518180316bbb0fab40d1e7f3d3978d3b5dff"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::patch::locatesource::find_method_in_ast (cognitive 33): azul_doc::patch::locatesource::find_method_in_ast has cognitive complexity 33 (threshold 15). Drivers by points: if/else 11 (25 pts), loops 2 (5 pts), match/switch 1 (3 pts) (nesting depth added 19). 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":"doc/src/patch/locatesource.rs"},"region":{"startLine":524}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ce674f304b4f6e59740dd3e3f60d888f4cb28c1964e3bf8bbca6541ec591640"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::module_plan::tarjan_scc (cognitive 33): azul_doc::codegen::v2::module_plan::tarjan_scc has cognitive complexity 33 (threshold 15). Drivers by points: if/else 8 (25 pts), loops 3 (8 pts) (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":"doc/src/codegen/v2/module_plan.rs"},"region":{"startLine":499}}}],"partialFingerprints":{"codehealthFindingId/v1":"a006e6a66180414b27ca47743d1f6975270cf7955b89416a75a9893440b0ec37"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::autodoc::expand_azul_render_blocks (cognitive 33): azul_doc::reftest::autodoc::expand_azul_render_blocks has cognitive complexity 33 (threshold 15). Drivers by points: if/else 7 (19 pts), match/switch 3 (7 pts), loops 4 (6 pts), boolean chains 1 (nesting depth added 18). Of this number, 32 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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":1864}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d8d8ba04201d67ce74ab087c4448f2c5710903428bb30ff085fb816b492b9f2"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_java::map_jvm_type (cognitive 33): azul_doc::codegen::v2::lang_java::map_jvm_type has cognitive complexity 33 (threshold 15). Drivers by points: if/else 15 (32 pts), match/switch 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":"doc/src/codegen/v2/lang_java/mod.rs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"4aba8946d61aab166be2afa55f2664e8a71d0aa831f410b0086e490fe61ac08d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_csharp::map_type_to_csharp (cognitive 33): azul_doc::codegen::v2::lang_csharp::map_type_to_csharp has cognitive complexity 33 (threshold 15). Drivers by points: if/else 15 (32 pts), match/switch 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":"doc/src/codegen/v2/lang_csharp/mod.rs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"49a7bcfe818b13d36e3cc4c61d490d4aaa34c9f19d1b1d614a9c24926617e0f6"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::patch::index::extract_impl_vec_traits_from_items (cognitive 33): azul_doc::patch::index::extract_impl_vec_traits_from_items has cognitive complexity 33 (threshold 15). Drivers by points: if/else 6 (24 pts), loops 3 (9 pts) (nesting depth added 24). 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":"doc/src/patch/index.rs"},"region":{"startLine":422}}}],"partialFingerprints":{"codehealthFindingId/v1":"afdad1c1cdd4d28ad94b935f765d73eb7425f892dfb4d7dc0be700ae6a71f58a"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_kotlin::wrappers::emit_wrapper (cognitive 33): azul_doc::codegen::v2::lang_kotlin::wrappers::emit_wrapper has cognitive complexity 33 (threshold 15). Drivers by points: if/else 22 (26 pts), loops 3 (5 pts), boolean chains 2 (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":"doc/src/codegen/v2/lang_kotlin/wrappers.rs"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"adf00200fb8aea5ce07db85c8df08d224f2194839ff15827de5c462b834ea026"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::diff::generate_diff (cognitive 33): azul_doc::autofix::diff::generate_diff has cognitive complexity 33 (threshold 15). Drivers by points: match/switch 4 (18 pts), if/else 6 (12 pts), loops 3 (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":"doc/src/autofix/diff.rs"},"region":{"startLine":550}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7d601735d732149889215d79890f503b6de51c7b249ba0b9467d06ac9ca07f7"}},{"ruleId":"D2","level":"warning","message":{"text":"UnifiedLayout::move_cursor_to_prev_word (cognitive 33): UnifiedLayout::move_cursor_to_prev_word has cognitive complexity 33 (threshold 15). Drivers by points: if/else 14 (31 pts), loops 2 (nesting depth added 17). 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":"layout/src/text3/cache.rs"},"region":{"startLine":6604}}}],"partialFingerprints":{"codehealthFindingId/v1":"283d4414403d3f89da138e4b99533dca015ba004601f09356dc1fe860bcef96b"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::finish_reconciliation (cognitive 33): LayoutWindow::finish_reconciliation has cognitive complexity 33 (threshold 15). Drivers by points: if/else 13 (26 pts), loops 2 (3 pts), match/switch 1 (3 pts), boolean chains 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":"layout/src/window.rs"},"region":{"startLine":11286}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7cd77f7b8f93df36c5e725b106fc203bcd18f0480d0d23d033bed6018a933b8"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::apply_one_text_changeset (cognitive 33): LayoutWindow::apply_one_text_changeset has cognitive complexity 33 (threshold 15). Drivers by points: if/else 26 (31 pts), boolean chains 1, match/switch 1 (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":"layout/src/window.rs"},"region":{"startLine":16478}}}],"partialFingerprints":{"codehealthFindingId/v1":"171058c6521967c0f7d86923b1b4cf7ba427fd46b037b943989375a4dc1d3b10"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::pixmap::blit_pixmap_affine_clipped (cognitive 33): azul_layout::cpurender::pixmap::blit_pixmap_affine_clipped has cognitive complexity 33 (threshold 15). Drivers by points: if/else 12 (24 pts), boolean chains 5, loops 3 (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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bcaa9a26f6fc7eb2224030e747fe6e2d09dd8f1bc1b53dde3c66cb0363ca6a0"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::compositor::scroll_shift_region_impl (cognitive 33): azul_layout::cpurender::compositor::scroll_shift_region_impl has cognitive complexity 33 (threshold 15). Drivers by points: if/else 16 (24 pts), loops 2 (5 pts), boolean chains 3, 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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":1500}}}],"partialFingerprints":{"codehealthFindingId/v1":"87b9a8cb47bd29419c17cc24c66815a881bcbbd2772114badee4eae50b74919d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::edit::delete_range (cognitive 33): azul_layout::text3::edit::delete_range has cognitive complexity 33 (threshold 15). Drivers by points: if/else 14 (27 pts), match/switch 2 (4 pts), boolean chains 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":"layout/src/text3/edit.rs"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d54abe62798a63877be16a65d2716d2950182344f8e97c532d7dca975eff29e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::widgets::microphone::mic_worker (cognitive 33): azul_layout::widgets::microphone::mic_worker has cognitive complexity 33 (threshold 15). Drivers by points: if/else 10 (24 pts), loops 4 (9 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":"layout/src/widgets/microphone.rs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"2516adb5fee514469df4f95d1558288e6923a48d4e983f6fef87808c0f51f2c8"}},{"ruleId":"D2","level":"warning","message":{"text":"webrender_build::shader_features::get_shader_features (cognitive 33): webrender_build::shader_features::get_shader_features has cognitive complexity 33 (threshold 15). Drivers by points: if/else 14 (22 pts), loops 10 (11 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":"webrender/build/src/shader_features.rs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a1335f1a1c6ca9202e659d119d86db6a3054699054a0cc7afec348e8c389314"}},{"ruleId":"D2","level":"warning","message":{"text":"RenderBackend::update_document (cognitive 33): RenderBackend::update_document has cognitive complexity 33 (threshold 15). Drivers by points: if/else 17 (25 pts), boolean chains 4, loops 2, 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":"webrender/core/src/render_backend.rs"},"region":{"startLine":1327}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1eced9055d435505193b6e1258d3bd1ac048dc50a175bd6313ea3028e45aff4"}},{"ruleId":"D2","level":"warning","message":{"text":"Renderer::draw_alpha_batch_container (cognitive 33): Renderer::draw_alpha_batch_container has cognitive complexity 33 (threshold 15). Drivers by points: if/else 10 (22 pts), loops 2 (4 pts), match/switch 1 (4 pts), boolean chains 3 (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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":2837}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5324aaa93c69800c2026cde566a486c457ec59dcb010b2a443605b458e0601a"}},{"ruleId":"D2","level":"warning","message":{"text":"Renderer::calculate_dirty_rects (cognitive 33): Renderer::calculate_dirty_rects has cognitive complexity 33 (threshold 15). Drivers by points: if/else 12 (28 pts), loops 1 (3 pts), boolean chains 1, 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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":4324}}}],"partialFingerprints":{"codehealthFindingId/v1":"3335a72558892fff76d512f2f1d75f083f2c81812c0a4a09779c82b72f2087c8"}},{"ruleId":"D2","level":"warning","message":{"text":"webrender::border::add_corner_segment (cognitive 33): webrender::border::add_corner_segment has cognitive complexity 33 (threshold 15). Drivers by points: if/else 19 (27 pts), boolean chains 3, match/switch 3 (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":"webrender/core/src/border.rs"},"region":{"startLine":1007}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cda9ae995de5f663db791284a46442dcfa389c411f4f75f2605a9b6f3c0fb7b"}},{"ruleId":"D2","level":"warning","message":{"text":"AttribLocations::get_loc (cognitive 33): AttribLocations::get_loc has cognitive complexity 33 (threshold 15). Drivers by points: if/else 25 (33 pts) (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":"webrender/swgl/src/shaders/composite_texture_2d_yuv.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"04175179122a9a42a353132e8ba61b5d6ee3232be00702fcdcdc8fde8063260f"}},{"ruleId":"D2","level":"warning","message":{"text":"AttribLocations::get_loc (cognitive 33): AttribLocations::get_loc has cognitive complexity 33 (threshold 15). Drivers by points: if/else 25 (33 pts) (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":"webrender/swgl/src/shaders/composite_texture_rect_yuv.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c75510b5067939cbe92f2eb437fb8b8a3341ad996a9bcd742686bdac5e68458"}},{"ruleId":"D2","level":"warning","message":{"text":"azinput-portal.main (cognitive 33): azinput-portal.main has cognitive complexity 33 (threshold 15). Drivers by points: if/else 15 (21 pts), ternaries 2 (6 pts), loops 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":"scripts/debugging/azinput-portal.py"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa273b4af80f2a3d7b0473c3d1ac1a06de4e23dfe9a53bdf0276c93de8baf524"}},{"ruleId":"D2","level":"warning","message":{"text":"init (cognitive 33): init has cognitive complexity 33 (threshold 15). Drivers by points: if/else 16 (28 pts), error handling 2 (3 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"abad331a3769913c4232dec00164f028f050c992e41cf8bd84b76a3e949f3a23"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::diff::calculate_reconciliation_key (cognitive 32): azul_core::diff::calculate_reconciliation_key has cognitive complexity 32 (threshold 15). Drivers by points: if/else 9 (22 pts), loops 5 (8 pts), match/switch 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":"core/src/diff.rs"},"region":{"startLine":361}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5b61bf665b9b5f8f0e98ad53fafcadc8ef1f1d7ad119e0e4071c4d3071d4176"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::xml::split_dynamic_string (cognitive 32): azul_core::xml::split_dynamic_string has cognitive complexity 32 (threshold 15). Drivers by points: if/else 9 (24 pts), loops 3 (5 pts), match/switch 1 (2 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":"core/src/xml.rs"},"region":{"startLine":6740}}}],"partialFingerprints":{"codehealthFindingId/v1":"b386a04f81c01fc1727296071189ce0667a31f11741f5d4235bbd161b0fa2fa7"}},{"ruleId":"D2","level":"warning","message":{"text":"X11Window::sync_window_state (cognitive 32): X11Window::sync_window_state has cognitive complexity 32 (threshold 15). Drivers by points: if/else 20 (28 pts), match/switch 2 (4 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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":7443}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae2d5c7361af043804cf5d216420827b8b6b6776d924092fb6c981a6c77acd0d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::video_codec::videotoolbox::enc_output (cognitive 32): azul_dll::desktop::extra::video_codec::videotoolbox::enc_output has cognitive complexity 32 (threshold 15). Drivers by points: if/else 12 (21 pts), boolean chains 6, loops 2 (4 pts), 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":"dll/src/desktop/extra/video_codec/videotoolbox.rs"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"d01388a52399045de0eaba162efe369b0c206bc86eba79fda76da24235befbc9"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::config::parse_web_config (cognitive 32): azul_dll::web::config::parse_web_config has cognitive complexity 32 (threshold 15). Drivers by points: if/else 10 (21 pts), match/switch 3 (7 pts), boolean chains 2, 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":"dll/src/web/config.rs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"4823cad7ac6ffb76a14c9f8f2cb506995b7f1783fa989dfffc80704c13dbae42"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::parse_logged_write (cognitive 32): azul_dll::web::transpiler_remill::parse_logged_write has cognitive complexity 32 (threshold 15). Drivers by points: if/else 9 (23 pts), match/switch 1 (5 pts), loops 2 (4 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":8557}}}],"partialFingerprints":{"codehealthFindingId/v1":"718781a8ada509f19f6cf65dde0f33871e7691f32eb82952a9a08a5b1a91818d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::lift_audit::run (cognitive 32): azul_dll::web::lift_audit::run has cognitive complexity 32 (threshold 15). Drivers by points: if/else 14 (23 pts), boolean chains 6, 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":"dll/src/web/lift_audit.rs"},"region":{"startLine":409}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a9d1f59150f3489c3fd964cedc7a42071b385c245a5d3ee9221196cbab0dcf1"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_go::managed::emit_register_fns (cognitive 32): azul_doc::codegen::v2::lang_go::managed::emit_register_fns has cognitive complexity 32 (threshold 15). Drivers by points: if/else 11 (22 pts), match/switch 3 (6 pts), loops 2 (3 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":"doc/src/codegen/v2/lang_go/managed.rs"},"region":{"startLine":713}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d6b5f34f0edfafe60d0375a11b86367f49438339e60c8207bcb59e62644ad68"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_node::managed::emit_init_block (cognitive 32): azul_doc::codegen::v2::lang_node::managed::emit_init_block has cognitive complexity 32 (threshold 15). Drivers by points: if/else 13 (25 pts), loops 4 (7 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":"doc/src/codegen/v2/lang_node/managed.rs"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a2c0581ec075e9a1dcc69eb2c38f6234d337b1266c6d25de49112c8df381f07"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_pascal::wrappers::emit_wrapper_class_decl (cognitive 32): azul_doc::codegen::v2::lang_pascal::wrappers::emit_wrapper_class_decl has cognitive complexity 32 (threshold 15). Drivers by points: if/else 10 (21 pts), loops 7 (11 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":"doc/src/codegen/v2/lang_pascal/wrappers.rs"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f955a0d718888a6e74770cf93972b3ef15d6f532106db35aa078d81e2237c41"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::workspace::collect_referenced_types_from_type_info (cognitive 32): azul_doc::autofix::workspace::collect_referenced_types_from_type_info has cognitive complexity 32 (threshold 15). Drivers by points: if/else 8 (23 pts), loops 4 (8 pts), match/switch 1 (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":"doc/src/autofix/workspace.rs"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"054226471d1bb01e2fb73d5399504b5c7810b58c8b7dff57c6c55ada8746d0b1"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_go::wrappers::emit_instance_method (cognitive 32): azul_doc::codegen::v2::lang_go::wrappers::emit_instance_method has cognitive complexity 32 (threshold 15). Drivers by points: if/else 25 (29 pts), match/switch 2, 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":"doc/src/codegen/v2/lang_go/wrappers.rs"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"db8c3357deca1e900b6e77019ce4482012aa2b836e94da47c5dc91cbe7d00487"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::patch::normalize_class_names (cognitive 32): azul_doc::patch::normalize_class_names has cognitive complexity 32 (threshold 15). Drivers by points: if/else 7 (25 pts), loops 4 (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":"doc/src/patch/mod.rs"},"region":{"startLine":1836}}}],"partialFingerprints":{"codehealthFindingId/v1":"04d21caa5e1c2b251c77d0195262ba0ae4b36212b592e72e6c0b11a393688a1d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::raster::render_box_shadow (cognitive 32): azul_layout::cpurender::raster::render_box_shadow has cognitive complexity 32 (threshold 15). Drivers by points: if/else 26 (47 pts), boolean chains 4, loops 1 (2 pts) (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. This shape REPEATS in the file: one other method here (azul_layout::cpurender::raster::render_box_shadow::blit_clipped) 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":"layout/src/cpurender/raster.rs"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"550f212924dc309845bfce4b84aa903a04a445ee84c614058ce6786ef5a03465"}},{"ruleId":"D2","level":"warning","message":{"text":"SwCompositor::queue_composite (cognitive 32): SwCompositor::queue_composite has cognitive complexity 32 (threshold 15). Drivers by points: match/switch 4 (21 pts), if/else 6 (11 pts) (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":"webrender/core/src/compositor/sw_compositor.rs"},"region":{"startLine":1017}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d04277df7db8d8d9ba8afc8d67306db87e8ac4dadf33875a165d1d82d862f53"}},{"ruleId":"D2","level":"warning","message":{"text":"Renderer::save_capture (cognitive 32): Renderer::save_capture has cognitive complexity 32 (threshold 15). Drivers by points: match/switch 4 (16 pts), if/else 6 (9 pts), loops 3 (6 pts), boolean chains 1 (nesting depth added 18). 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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":5683}}}],"partialFingerprints":{"codehealthFindingId/v1":"74e4b33c57b3c90711dcebf77efae19aff9701759f8ac4d12cef4979ca7cf2d1"}},{"ruleId":"D2","level":"warning","message":{"text":"webrender::renderer::init::create_webrender_instance (cognitive 32): webrender::renderer::init::create_webrender_instance has cognitive complexity 32 (threshold 15). Drivers by points: if/else 21 (23 pts), boolean chains 5, match/switch 3, loops 1 (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":"webrender/core/src/renderer/init.rs"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b171a1c69798bd232ee5b8d817b033347a6d953a4a6abd7fc25dc4d03fc9d37"}},{"ruleId":"D2","level":"warning","message":{"text":"check_links.check_live (cognitive 32): check_links.check_live has cognitive complexity 32 (threshold 15). Drivers by points: if/else 11 (20 pts), loops 4 (7 pts), ternaries 2 (3 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":"scripts/check_links.py"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"aed180b515b2c7defc5e2cd2a47cdf35a5be1472f2406a10fb98ebf284fd54c2"}},{"ruleId":"D2","level":"warning","message":{"text":"azul-search.scoreEntry (cognitive 32): azul-search.scoreEntry has cognitive complexity 32 (threshold 15). Drivers by points: if/else 12 (18 pts), boolean chains 6, loops 2 (4 pts), ternaries 4 (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":"doc/templates/azul-search.js"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ced1cb8e0417ea4cfb1a6ea48ce0b4ae8e71d455ea87e0508124a50274892f2"}},{"ruleId":"D2","level":"warning","message":{"text":"MultiCursorState::move_all_cursors_with (cognitive 31): MultiCursorState::move_all_cursors_with has cognitive complexity 31 (threshold 15). Drivers by points: if/else 12 (28 pts), match/switch 1 (2 pts), 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":"core/src/selection.rs"},"region":{"startLine":893}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e8146145d7f84afa090e0f1bac0210cc83bb573950c35728fbd9332b27f7bfb"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::db::az_db_merge_callback_thunk (cognitive 31): azul_core::db::az_db_merge_callback_thunk has cognitive complexity 31 (threshold 15). Drivers by points: if/else 16 (27 pts), match/switch 3 (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":"core/src/db.rs"},"region":{"startLine":739}}}],"partialFingerprints":{"codehealthFindingId/v1":"6230719ed6e81bd102b68ddde3714eeaa4ce7eac9d7c897ffa1a8629298f99ec"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::wr_translate2::synchronize_gpu_values (cognitive 31): azul_dll::desktop::wr_translate2::synchronize_gpu_values has cognitive complexity 31 (threshold 15). Drivers by points: if/else 8 (20 pts), loops 5 (9 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":"dll/src/desktop/wr_translate2.rs"},"region":{"startLine":1744}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1f4fe16a9b61767767ee337ed05bec5a1faf039d7ee399368ac36c5057afad6"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::windows::wcreate::create_gl_context (cognitive 31): azul_dll::desktop::shell2::windows::wcreate::create_gl_context has cognitive complexity 31 (threshold 15). Drivers by points: if/else 19 (28 pts), match/switch 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":"dll/src/desktop/shell2/windows/wcreate.rs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"448b4ba100e27028c206eb190ab14373568b71e4d48538118f5150c4c51af57f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::symbol_table::ingest_pe (cognitive 31): azul_dll::web::symbol_table::ingest_pe has cognitive complexity 31 (threshold 15). Drivers by points: if/else 13 (24 pts), loops 4, boolean chains 3 (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":"dll/src/web/symbol_table.rs"},"region":{"startLine":1380}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c6ce32af3f64ddeb7cbbac591aeb49d4c1a9c435b221d78dae81369acd97ebd"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeDefinition::expand_macro_generated (cognitive 31): TypeDefinition::expand_macro_generated has cognitive complexity 31 (threshold 15). Drivers by points: if/else 14 (28 pts), match/switch 2 (3 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":"doc/src/autofix/type_index.rs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"6af53f610826423991643b264e42b3d7c34cb1ec8d62f155885138c3d196d26d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_lisp::types::emit_monomorphized_alias (cognitive 31): azul_doc::codegen::v2::lang_lisp::types::emit_monomorphized_alias has cognitive complexity 31 (threshold 15). Drivers by points: if/else 8 (15 pts), loops 6 (13 pts), match/switch 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":"doc/src/codegen/v2/lang_lisp/types.rs"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7b033faa0b68bdcc584acf2e8b66a34c6f2e3a6ade581794b397448ab27c649"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::autodebug::parse_autodebug_args (cognitive 31): azul_doc::reftest::autodebug::parse_autodebug_args has cognitive complexity 31 (threshold 15). Drivers by points: if/else 17 (23 pts), loops 2 (4 pts), match/switch 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":"doc/src/reftest/autodebug.rs"},"region":{"startLine":1907}}}],"partialFingerprints":{"codehealthFindingId/v1":"95470a3e310a8fe16009a824b405abb967bee9763bc2303d5d0841f9db7eb37e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::print::print_class (cognitive 31): azul_doc::print::print_class has cognitive complexity 31 (threshold 15). Drivers by points: if/else 7 (18 pts), loops 2 (8 pts), match/switch 1 (5 pts) (nesting depth added 21). 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":"doc/src/print.rs"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"e72f1595107fcf243003cdc07c544890f10ca16a15eb47445c854e7cf9727aa9"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::function_diff::find_function_differences (cognitive 31): azul_doc::autofix::function_diff::find_function_differences has cognitive complexity 31 (threshold 15). Drivers by points: if/else 10 (20 pts), loops 2 (4 pts), match/switch 2 (4 pts), boolean chains 3 (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":"doc/src/autofix/function_diff.rs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"836b40c2df943a451eab4836a57e89cd358550e586312904b41e31320196ac5d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::lint_links::check_link (cognitive 31): azul_doc::lint_links::check_link has cognitive complexity 31 (threshold 15). Drivers by points: if/else 13 (26 pts), match/switch 2 (3 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":"doc/src/lint_links.rs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"0497caf8b4c944d64cb3b62ba6ba462c2114e9edc89658145e2732fd9515c7f7"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutTree::memory_report (cognitive 31): LayoutTree::memory_report has cognitive complexity 31 (threshold 15). Drivers by points: if/else 8 (22 pts), loops 4 (9 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":"layout/src/solver3/layout_tree.rs"},"region":{"startLine":1418}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ae43d54b802cf3224655fc895265e1c77edea6680c02058d607c57dcc592340"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::queue_resize_events_after_layout (cognitive 31): LayoutWindow::queue_resize_events_after_layout has cognitive complexity 31 (threshold 15). Drivers by points: if/else 9 (25 pts), loops 3 (5 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":"layout/src/window.rs"},"region":{"startLine":20557}}}],"partialFingerprints":{"codehealthFindingId/v1":"3dab5cfe5ca979de6112ef0f2cc06f0039398f7d9f2ef4cdf4ed15a3e39e1918"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::widgets::date_picker::on_day_click (cognitive 31): azul_layout::widgets::date_picker::on_day_click has cognitive complexity 31 (threshold 15). Drivers by points: if/else 9 (30 pts), match/switch 1 (nesting depth added 21). 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":"layout/src/widgets/date_picker.rs"},"region":{"startLine":913}}}],"partialFingerprints":{"codehealthFindingId/v1":"29067240931baa1b40fc8d90f34a6939dccb4bb258d22d66534eee3219ef4830"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::widgets::pagination::on_page_click (cognitive 31): azul_layout::widgets::pagination::on_page_click has cognitive complexity 31 (threshold 15). Drivers by points: if/else 21 (28 pts), 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":"layout/src/widgets/pagination.rs"},"region":{"startLine":500}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9124648714c8567b293651034dff4d90a3ed2397310f50d752a408118799c8f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::page_breaks::collect_avoid_ranges (cognitive 31): azul_layout::solver3::page_breaks::collect_avoid_ranges has cognitive complexity 31 (threshold 15). Drivers by points: if/else 9 (25 pts), loops 3 (6 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":"layout/src/solver3/page_breaks.rs"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b65cb86fbce6760bc79576f5516961fd7ac37033fa6f7bf83b3fa2e122c30bd"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::fc::analyze_table_row (cognitive 31): azul_layout::solver3::fc::analyze_table_row has cognitive complexity 31 (threshold 15). Drivers by points: if/else 6 (16 pts), loops 5 (15 pts) (nesting depth added 20). 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":"layout/src/solver3/fc.rs"},"region":{"startLine":6797}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ab78c4ad66066d9143b17b96d9961eb41d5f07e45fe36198afb6ee62fa0bffb"}},{"ruleId":"D2","level":"warning","message":{"text":"ResourceCache::update_texture_cache (cognitive 31): ResourceCache::update_texture_cache has cognitive complexity 31 (threshold 15). Drivers by points: if/else 7 (19 pts), match/switch 3 (8 pts), loops 2 (3 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":"webrender/core/src/resource_cache.rs"},"region":{"startLine":1387}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea6f5e9f2301c8de915fe2d3abe04106be354c1728773faaf51964c5b0f6b2cb"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::diff::calculate_contenteditable_key (cognitive 30): azul_core::diff::calculate_contenteditable_key has cognitive complexity 30 (threshold 15). Drivers by points: if/else 10 (21 pts), loops 5 (7 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":"core/src/diff.rs"},"region":{"startLine":1426}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d628c9e09776ba53db4a809da9b719eab946ca583e0966d47d7da91c94ed81a"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::xml::group_matches (cognitive 30): azul_core::xml::group_matches has cognitive complexity 30 (threshold 15). Drivers by points: if/else 9 (27 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":"core/src/xml.rs"},"region":{"startLine":7140}}}],"partialFingerprints":{"codehealthFindingId/v1":"1444e950db9549f0d30bc9aec8cf3ef12d5bc7b35e2877c2ff53a677f330c757"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_css::parser2::parse_media_feature (cognitive 30): azul_css::parser2::parse_media_feature has cognitive complexity 30 (threshold 15). Drivers by points: if/else 16 (27 pts), boolean chains 2, 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":"css/src/parser2.rs"},"region":{"startLine":1186}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c0ecb1ef3931cc0300fe73910d3957ec86edc83c701873432fdf2f6f3a345ed"}},{"ruleId":"D2","level":"warning","message":{"text":"RemillTranspiler::emit_indirect_dispatcher_obj (cognitive 30): RemillTranspiler::emit_indirect_dispatcher_obj has cognitive complexity 30 (threshold 15). Drivers by points: if/else 13 (18 pts), loops 7 (8 pts), match/switch 2 (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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":3039}}}],"partialFingerprints":{"codehealthFindingId/v1":"030c92f8fb9c8e8231f8f14736e8d7e9748dd082c18c225cce01b7bdb0470e65"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::system_style::parse_header_fields (cognitive 30): azul_dll::desktop::shell2::linux::system_style::parse_header_fields has cognitive complexity 30 (threshold 15). Drivers by points: if/else 11 (27 pts), match/switch 1 (2 pts), 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":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f04cd3eea7335a23185f5834b47f7510057a1537b33de41c2cbe3df88a977c2"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::common::event::apply_active_restyle (cognitive 30): azul_dll::desktop::shell2::common::event::apply_active_restyle has cognitive complexity 30 (threshold 15). Drivers by points: if/else 13 (23 pts), loops 3 (6 pts), boolean chains 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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":870}}}],"partialFingerprints":{"codehealthFindingId/v1":"452415b53e1bd80df47de4e1bf943e5a5edb3a51ad1c49a2cf47c562afcce161"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::android::render_frame (cognitive 30): azul_dll::desktop::shell2::android::render_frame has cognitive complexity 30 (threshold 15). Drivers by points: if/else 12 (13 pts), loops 4 (8 pts), match/switch 7 (8 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":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":2009}}}],"partialFingerprints":{"codehealthFindingId/v1":"55fc3888ae606fef0199fc88e59d64daee6ee1cb47e667a9b3745a3138e2d953"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::geolocation::windows::imp::location_poll_loop (cognitive 30): azul_dll::desktop::extra::geolocation::windows::imp::location_poll_loop has cognitive complexity 30 (threshold 15). Drivers by points: if/else 11 (23 pts), boolean chains 3, match/switch 3, 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":"dll/src/desktop/extra/geolocation/windows.rs"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"d962caa1fc0e8a94569a6a19938dc28de91d4dee60614be93651ba9ad69bd61b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::wayland::events::xdg_toplevel_configure_handler (cognitive 30): azul_dll::desktop::shell2::linux::wayland::events::xdg_toplevel_configure_handler has cognitive complexity 30 (threshold 15). Drivers by points: if/else 13 (19 pts), boolean chains 6, match/switch 1 (3 pts), loops 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":"dll/src/desktop/shell2/linux/wayland/events.rs"},"region":{"startLine":3504}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1b392f5c90f2412d082eafd6465c48804a4b3d3c62689a6d7bdcf5b41112f64"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::ios::text_input::replace_range_with_text (cognitive 30): azul_dll::desktop::shell2::ios::text_input::replace_range_with_text has cognitive complexity 30 (threshold 15). Drivers by points: if/else 12 (25 pts), loops 1 (4 pts), boolean chains 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":"dll/src/desktop/shell2/ios/text_input.rs"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"73532e6c4b762971d32f23dc43bf8b39d0afa73b17effccbd7a7ce47df8e5216"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::sensors::windows::start_async_sensors (cognitive 30): azul_dll::desktop::extra::sensors::windows::start_async_sensors has cognitive complexity 30 (threshold 15). Drivers by points: if/else 12 (30 pts) (nesting depth added 18). 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":"dll/src/desktop/extra/sensors/windows.rs"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f681b55781e7f0317a9783bce55a4e807c30c94f0f70d817dafefb7013b23d8"}},{"ruleId":"D2","level":"warning","message":{"text":"RustGenerator::generate_method (cognitive 30): RustGenerator::generate_method has cognitive complexity 30 (threshold 15). Drivers by points: if/else 9 (17 pts), boolean chains 8, match/switch 2 (4 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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2116}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5997b574054c10d343396fea3c45dad4956860c867b3a0f5c760ee86bc1da93"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ruby::wrappers::emit_method_body_instance (cognitive 30): azul_doc::codegen::v2::lang_ruby::wrappers::emit_method_body_instance has cognitive complexity 30 (threshold 15). Drivers by points: if/else 6 (11 pts), loops 5 (11 pts), match/switch 3 (6 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":"doc/src/codegen/v2/lang_ruby/wrappers.rs"},"region":{"startLine":1247}}}],"partialFingerprints":{"codehealthFindingId/v1":"c52f6f0eee2f277c5611e0e76b92e69674aeca0d7870a14f25ff99e3611e4044"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_lua::wrappers::emit_static_method (cognitive 30): azul_doc::codegen::v2::lang_lua::wrappers::emit_static_method has cognitive complexity 30 (threshold 15). Drivers by points: if/else 11 (14 pts), loops 4 (10 pts), boolean chains 6 (nesting depth added 9). 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":"doc/src/codegen/v2/lang_lua/wrappers.rs"},"region":{"startLine":1256}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a44ffda6373af9a00aadfc757a659d2c471faccc49ad7787a0424cd88a16f1e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_algol68::types::emit_tagged_union (cognitive 30): azul_doc::codegen::v2::lang_algol68::types::emit_tagged_union has cognitive complexity 30 (threshold 15). Drivers by points: if/else 12 (23 pts), loops 3 (4 pts), match/switch 1 (2 pts), boolean chains 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":"doc/src/codegen/v2/lang_algol68/types.rs"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"a68bc802fa365720affe8407e9a43965906440f8d54ba155a1bc8fc8ed9583fd"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_haskell::cshim::emit_inbound_trampoline (cognitive 30): azul_doc::codegen::v2::lang_haskell::cshim::emit_inbound_trampoline has cognitive complexity 30 (threshold 15). Drivers by points: if/else 17 (22 pts), match/switch 4 (5 pts), boolean chains 2, 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":"doc/src/codegen/v2/lang_haskell/cshim.rs"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6f8bbc4ef92f97226f1cc3ff9f8b6a5400cd6b9eaea098ae08a723213b2e7c6"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_racket::map_type_to_racket (cognitive 30): azul_doc::codegen::v2::lang_racket::map_type_to_racket has cognitive complexity 30 (threshold 15). Drivers by points: if/else 13 (27 pts), boolean chains 2, match/switch 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":"doc/src/codegen/v2/lang_racket/mod.rs"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"184e8902205ae0bc80c04d65b77e0b817a63535088254495364d5283126778d7"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::regenerate_display_list_for_dom (cognitive 30): LayoutWindow::regenerate_display_list_for_dom has cognitive complexity 30 (threshold 15). Drivers by points: if/else 8 (24 pts), boolean chains 3, loops 1 (2 pts), match/switch 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":"layout/src/window.rs"},"region":{"startLine":18150}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f29cb56ef98a67dd44112b25d955c14e94e7a9aa62009460e6a2df29b13b474"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::extract_clipboard_ranges (cognitive 30): LayoutWindow::extract_clipboard_ranges has cognitive complexity 30 (threshold 15). Drivers by points: if/else 10 (25 pts), loops 2 (4 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":"layout/src/window.rs"},"region":{"startLine":20208}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff60559aec9f6f89bbd6be154c9ba7dca11578dbdff87cc34e7ee19f62d7eeae"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::display_list::clip_and_offset_display_item (cognitive 30): azul_layout::solver3::display_list::clip_and_offset_display_item has cognitive complexity 30 (threshold 15). Drivers by points: if/else 13 (23 pts), boolean chains 6, 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":"layout/src/solver3/display_list.rs"},"region":{"startLine":8598}}}],"partialFingerprints":{"codehealthFindingId/v1":"d25cf1a582fbbe171ee75731d2612c0e247e4ee6d9aa5d13e9f270c901b77dc0"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::compositor::apply_layer_filters (cognitive 30): azul_layout::cpurender::compositor::apply_layer_filters has cognitive complexity 30 (threshold 15). Drivers by points: loops 9 (25 pts), if/else 1 (3 pts), match/switch 1 (2 pts) (nesting depth added 19). 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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":2357}}}],"partialFingerprints":{"codehealthFindingId/v1":"614f642cf1ac6db37521ed39b161dc72f4a00df897dd1affe6789af3a62d2cd5"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::compositor::execute_translate_blit (cognitive 30): azul_layout::cpurender::compositor::execute_translate_blit has cognitive complexity 30 (threshold 15). Drivers by points: if/else 6 (19 pts), loops 5 (10 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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":2690}}}],"partialFingerprints":{"codehealthFindingId/v1":"c57f9f7a10e6b4145c3c3a88388e6111ceeec6b27a1bde1eb3953237fc391776"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::edit::extract_text_in_range (cognitive 30): azul_layout::text3::edit::extract_text_in_range has cognitive complexity 30 (threshold 15). Drivers by points: if/else 10 (26 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 17). 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":"layout/src/text3/edit.rs"},"region":{"startLine":1247}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6677b1a6d1c8d81090c9a1949e3e676a9112371648eef877bf2e4e0b63a3e00"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::telemetry::config::apply_env (cognitive 30): azul_layout::telemetry::config::apply_env has cognitive complexity 30 (threshold 15). Drivers by points: if/else 15 (26 pts), boolean chains 2, 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":"layout/src/telemetry/config.rs"},"region":{"startLine":505}}}],"partialFingerprints":{"codehealthFindingId/v1":"77ede83261677c7030dfbabfb6c12220e68f8ce53090908cedc3239c63801f99"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::paged_layout::layout_document_tokenized_from (cognitive 30): azul_layout::solver3::paged_layout::layout_document_tokenized_from has cognitive complexity 30 (threshold 15). Drivers by points: if/else 6 (14 pts), match/switch 3 (8 pts), boolean chains 6, loops 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":"layout/src/solver3/paged_layout.rs"},"region":{"startLine":2492}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e32aa5db2d586cf2e0f4eb68440d840597078a31aaf4b1ca651d008d2825dcb"}},{"ruleId":"D2","level":"warning","message":{"text":"ClipNodeInfo::create_instance (cognitive 30): ClipNodeInfo::create_instance has cognitive complexity 30 (threshold 15). Drivers by points: if/else 8 (19 pts), loops 2 (9 pts), boolean chains 2 (nesting depth added 18). 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":"webrender/core/src/clip.rs"},"region":{"startLine":979}}}],"partialFingerprints":{"codehealthFindingId/v1":"32049c0b8ea0ac1d457150d5258e8fb3fc4765070f97b42f246d8d44637aa1f2"}},{"ruleId":"D2","level":"warning","message":{"text":"FrameBuilder::render_minimap (cognitive 30): FrameBuilder::render_minimap has cognitive complexity 30 (threshold 15). Drivers by points: if/else 12 (29 pts), boolean chains 1 (nesting depth added 17). 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":"webrender/core/src/frame_builder.rs"},"region":{"startLine":720}}}],"partialFingerprints":{"codehealthFindingId/v1":"e743899d481724a67b78a956bd9a221de5df5ba8268894ee0ab9f404e3ef9703"}},{"ruleId":"D2","level":"warning","message":{"text":"PicturePrimitive::prepare_for_render (cognitive 30): PicturePrimitive::prepare_for_render has cognitive complexity 30 (threshold 15). Drivers by points: if/else 5 (15 pts), loops 3 (8 pts), match/switch 4 (7 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":"webrender/core/src/picture.rs"},"region":{"startLine":7265}}}],"partialFingerprints":{"codehealthFindingId/v1":"88aaede0bb1745d7c9e9a21e017eceef79faa1c7564d6b9728474489258cb27a"}},{"ruleId":"D2","level":"warning","message":{"text":"RenderBackend::process_api_msg (cognitive 30): RenderBackend::process_api_msg has cognitive complexity 30 (threshold 15). Drivers by points: if/else 6 (16 pts), loops 4 (11 pts), match/switch 2 (3 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":"webrender/core/src/render_backend.rs"},"region":{"startLine":953}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e79f2c8f0fc053361f8d83a2e8d680819c5cbd0841de9c9f6314ad0c3bf7618"}},{"ruleId":"D2","level":"warning","message":{"text":"ResourceCache::save_capture (cognitive 30): ResourceCache::save_capture has cognitive complexity 30 (threshold 15). Drivers by points: match/switch 8 (16 pts), if/else 6 (10 pts), loops 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":"webrender/core/src/resource_cache.rs"},"region":{"startLine":1931}}}],"partialFingerprints":{"codehealthFindingId/v1":"35295a855dc5647fa0afe8112a2427507ad11f1ddccbbf7eadc1301c758c641c"}},{"ruleId":"D2","level":"warning","message":{"text":"SceneBuilder::finalize_picture (cognitive 30): SceneBuilder::finalize_picture has cognitive complexity 30 (threshold 15). Drivers by points: if/else 7 (17 pts), loops 5 (7 pts), match/switch 3 (5 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":"webrender/core/src/scene_building.rs"},"region":{"startLine":670}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ca55af88391adf6d3213bf0d89adf6d4a770b923cbfde2a6e15609a4db03e93"}},{"ruleId":"D2","level":"warning","message":{"text":"sc_common._follow_includes (cognitive 30): sc_common._follow_includes has cognitive complexity 30 (threshold 15). Drivers by points: error handling 4 (10 pts), if/else 4 (10 pts), loops 4 (7 pts), boolean chains 3 (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":"scripts/supply-chain/sc_common.py"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb36e3610d7830c85b12479730ba57eb794b15ce15defdba9c4b3222ab6414b0"}},{"ruleId":"D2","level":"warning","message":{"text":"chrome_layout_extractor.allElements.forEach() (cognitive 30): chrome_layout_extractor.allElements.forEach() has cognitive complexity 30 (threshold 15). Drivers by points: boolean chains 17, if/else 3 (4 pts), error handling 1 (3 pts), loops 1 (3 pts), ternaries 3 (nesting depth added 5). Of this number, 21 points are the body\u0027s own statements and 9 belong to one function literal inside it that branches. 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":"doc/src/reftest/chrome_layout_extractor.js"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"482575e6abfb5b16953ca9bdebfc4385f4b16db14069315c97bd42d38b6be0c6"}},{"ruleId":"D2","level":"warning","message":{"text":"CssPropertyCache::generate_tag_ids (cognitive 29): CssPropertyCache::generate_tag_ids has cognitive complexity 29 (threshold 15). Drivers by points: if/else 16 (20 pts), boolean chains 7, loops 1 (2 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":"core/src/prop_cache.rs"},"region":{"startLine":1960}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9f1f45f2d078b0f1a22bf33de660e5dc7e800b2905c71b560762b0e112ad720"}},{"ruleId":"D2","level":"warning","message":{"text":"StyledDom::restyle_on_state_change (cognitive 29): StyledDom::restyle_on_state_change has cognitive complexity 29 (threshold 15). Drivers by points: if/else 14 (26 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":"core/src/styled_dom.rs"},"region":{"startLine":2153}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe429c292641c7dd46505adea3c63910e536aefba87a8998015c7350c668a9a4"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_css::system::detect_linux_desktop_env (cognitive 29): azul_css::system::detect_linux_desktop_env has cognitive complexity 29 (threshold 15). Drivers by points: if/else 24 (26 pts), boolean chains 3 (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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"css/src/system.rs"},"region":{"startLine":1920}}}],"partialFingerprints":{"codehealthFindingId/v1":"014d56f000c909c6da29354489536cc0d3d32e99cf809e334920b9c5b7958298"}},{"ruleId":"D2","level":"warning","message":{"text":"WaylandWindow::sync_window_state (cognitive 29): WaylandWindow::sync_window_state has cognitive complexity 29 (threshold 15). Drivers by points: if/else 12 (20 pts), match/switch 5 (9 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":6656}}}],"partialFingerprints":{"codehealthFindingId/v1":"03536a79d30bdd8714f43873add19492cf5dab08fedb91f04dd98d51340ac418"}},{"ruleId":"D2","level":"warning","message":{"text":"X11Window::process_pending_menu_callbacks (cognitive 29): X11Window::process_pending_menu_callbacks has cognitive complexity 29 (threshold 15). Drivers by points: if/else 5 (17 pts), loops 3 (6 pts), match/switch 3 (6 pts) (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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":4340}}}],"partialFingerprints":{"codehealthFindingId/v1":"b62a8892c0c62e50f9d203902ba6fda293500d697e8eaf7592c509c6c7b64497"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::tray::linux::sni_message (cognitive 29): azul_dll::desktop::tray::linux::sni_message has cognitive complexity 29 (threshold 15). Drivers by points: if/else 10 (21 pts), boolean chains 4, loops 1 (3 pts), match/switch 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":"dll/src/desktop/tray/linux.rs"},"region":{"startLine":418}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8563299df5319f1e5bbb260c1a74fe7b1ce0020a358579c43a1b267f803a7ef"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::wayland::events::drain_offer_pipe (cognitive 29): azul_dll::desktop::shell2::linux::wayland::events::drain_offer_pipe has cognitive complexity 29 (threshold 15). Drivers by points: if/else 11 (25 pts), loops 2 (3 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":"dll/src/desktop/shell2/linux/wayland/events.rs"},"region":{"startLine":2485}}}],"partialFingerprints":{"codehealthFindingId/v1":"c01ff3060ee354507abde13ed8b75a68d0e27bcc82800c9c04904677c8831cf0"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::wayland::events::text_input_done_handler (cognitive 29): azul_dll::desktop::shell2::linux::wayland::events::text_input_done_handler has cognitive complexity 29 (threshold 15). Drivers by points: if/else 12 (20 pts), loops 2 (8 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":"dll/src/desktop/shell2/linux/wayland/events.rs"},"region":{"startLine":4217}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8c459290d3516b6c91694903b0b79ce9013599f7ed60c6bde5e975b46dd12f3"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::camera::v4l2::open (cognitive 29): azul_dll::desktop::extra::camera::v4l2::open has cognitive complexity 29 (threshold 15). Drivers by points: if/else 20 (24 pts), boolean chains 3, loops 1, match/switch 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":"dll/src/desktop/extra/camera/v4l2.rs"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e68ee2b3dbac25b7612f0d47702563bd094b16f89572d17eef4aa6f5f7dd7c0"}},{"ruleId":"D2","level":"warning","message":{"text":"Emitter::emit_fields (cognitive 29): Emitter::emit_fields has cognitive complexity 29 (threshold 15). Drivers by points: if/else 9 (20 pts), match/switch 4 (8 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":"doc/src/codegen/v2/lang_crystal/wrappers.rs"},"region":{"startLine":762}}}],"partialFingerprints":{"codehealthFindingId/v1":"8851812b699953654f147344e721d609c83103382c786556add4f7ef18025952"}},{"ruleId":"D2","level":"warning","message":{"text":"Model::new (cognitive 29): Model::new has cognitive complexity 29 (threshold 15). Drivers by points: if/else 9 (16 pts), match/switch 3 (7 pts), loops 4, boolean chains 2 (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":"doc/src/codegen/v2/lang_swift/model.rs"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8822eeec1bb79a0774a9d9193f3981e83bd0e5839e6ba46d67ae5be1689460e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ocaml::types::emit_forward_struct_decls (cognitive 29): azul_doc::codegen::v2::lang_ocaml::types::emit_forward_struct_decls has cognitive complexity 29 (threshold 15). Drivers by points: if/else 10 (20 pts), loops 6, 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":"doc/src/codegen/v2/lang_ocaml/types.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"12b6023a2d72717e7c62692d6b8f73168ccc1b76318f689aaba8d5ad852f542b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::type_index::extract_types_from_items (cognitive 29): azul_doc::autofix::type_index::extract_types_from_items has cognitive complexity 29 (threshold 15). Drivers by points: if/else 9 (24 pts), loops 3, match/switch 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":"doc/src/autofix/type_index.rs"},"region":{"startLine":1301}}}],"partialFingerprints":{"codehealthFindingId/v1":"43999be74995fb8363fb49fd5435075656e1b512d2ec5c428245afcae3cb222e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ada::types::emit_types (cognitive 29): azul_doc::codegen::v2::lang_ada::types::emit_types has cognitive complexity 29 (threshold 15). Drivers by points: if/else 11 (22 pts), loops 5, 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":"doc/src/codegen/v2/lang_ada/types.rs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"782699a11092e7d9a780950ec497ccd85fa51de800babbab56275e07ae63808d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_go::types::emit_union_body (cognitive 29): azul_doc::codegen::v2::lang_go::types::emit_union_body has cognitive complexity 29 (threshold 15). Drivers by points: if/else 13 (20 pts), loops 4 (9 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":"doc/src/codegen/v2/lang_go/types.rs"},"region":{"startLine":422}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d6783c4eb2755f3e7ac216c76e99380b111b351920263cd18717da5689664fd"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_d::types::generate_types (cognitive 29): azul_doc::codegen::v2::lang_d::types::generate_types has cognitive complexity 29 (threshold 15). Drivers by points: if/else 10 (19 pts), loops 5, match/switch 2 (5 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":"doc/src/codegen/v2/lang_d/types.rs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"a75a0fd08aa7ce570c1d11083d241189b4f9c8158b6a9b60450eb3a3c578d922"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_crystal::types::generate_types (cognitive 29): azul_doc::codegen::v2::lang_crystal::types::generate_types has cognitive complexity 29 (threshold 15). Drivers by points: if/else 10 (19 pts), loops 5, match/switch 2 (5 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":"doc/src/codegen/v2/lang_crystal/types.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fa66184aa8057369f3fd704840a8d1cd6dd99a64000d195289a5e030044d993"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::patch::remove_duplicate_types (cognitive 29): azul_doc::patch::remove_duplicate_types has cognitive complexity 29 (threshold 15). Drivers by points: if/else 4 (18 pts), loops 5 (11 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":"doc/src/patch/mod.rs"},"region":{"startLine":557}}}],"partialFingerprints":{"codehealthFindingId/v1":"43e71d87b04e13be7c23d7e05032a38a823f8b260172246a4ad4f840265a6425"}},{"ruleId":"D2","level":"warning","message":{"text":"UnifiedLayout::get_cursor_rect (cognitive 29): UnifiedLayout::get_cursor_rect has cognitive complexity 29 (threshold 15). Drivers by points: if/else 11 (21 pts), match/switch 2 (5 pts), loops 2, boolean chains 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":"layout/src/text3/cache.rs"},"region":{"startLine":5996}}}],"partialFingerprints":{"codehealthFindingId/v1":"b869f321fa9b7d8ffffeb249f255901452f5b2a722e7b84d240900be2b781ae9"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::dense::get_glyph_runs_simple_dense (cognitive 29): azul_layout::text3::dense::get_glyph_runs_simple_dense has cognitive complexity 29 (threshold 15). Drivers by points: if/else 8 (15 pts), loops 4 (8 pts), match/switch 2 (5 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":"layout/src/text3/dense.rs"},"region":{"startLine":1295}}}],"partialFingerprints":{"codehealthFindingId/v1":"94f5fa53398b0e30caf260e1a19e40c247ec6928156a3bf2ba35dc02924bed29"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::paged_layout::compute_layout_with_fragmentation (cognitive 29): azul_layout::solver3::paged_layout::compute_layout_with_fragmentation has cognitive complexity 29 (threshold 15). Drivers by points: if/else 11 (21 pts), loops 5 (6 pts), boolean chains 2 (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":"layout/src/solver3/paged_layout.rs"},"region":{"startLine":713}}}],"partialFingerprints":{"codehealthFindingId/v1":"7340a764bda0550130958e15bf54774d887dff2ac541924f60c6097b32e50171"}},{"ruleId":"D2","level":"warning","message":{"text":"TileCacheInstance::prepare_for_new_scene (cognitive 29): TileCacheInstance::prepare_for_new_scene has cognitive complexity 29 (threshold 15). Drivers by points: if/else 6 (19 pts), loops 3 (10 pts) (nesting depth added 20). 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":"webrender/core/src/picture.rs"},"region":{"startLine":1942}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4c8b324793253423c0437394ad5967e7920b40e673be26ce50e842d3eda247e"}},{"ruleId":"D2","level":"warning","message":{"text":"AttribLocations::get_loc (cognitive 29): AttribLocations::get_loc has cognitive complexity 29 (threshold 15). Drivers by points: if/else 22 (29 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":"webrender/swgl/src/shaders/composite_texture_rect.rs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4b25c31cd9db43ee82382951ff4f858084190e396ba0fa6dcac1550d0d86cbc"}},{"ruleId":"D2","level":"warning","message":{"text":"AttribLocations::get_loc (cognitive 29): AttribLocations::get_loc has cognitive complexity 29 (threshold 15). Drivers by points: if/else 22 (29 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":"webrender/swgl/src/shaders/cs_linear_gradient.rs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"4674b3972eb524255ae6be8efcc4db04bc115ca1c8e3b8db499b5e906a8fb859"}},{"ruleId":"D2","level":"warning","message":{"text":"CssPropertyWithConditionsVec::parse_media_query (cognitive 28): CssPropertyWithConditionsVec::parse_media_query has cognitive complexity 28 (threshold 15). Drivers by points: if/else 7 (23 pts), match/switch 2 (4 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":"css/src/dynamic_selector.rs"},"region":{"startLine":2419}}}],"partialFingerprints":{"codehealthFindingId/v1":"add1e3cfc5843470fd2001f33b068f236f8da82a819a58c2769cea8d173fee19"}},{"ruleId":"D2","level":"warning","message":{"text":"WaylandWindow::handle_tablet_frame (cognitive 28): WaylandWindow::handle_tablet_frame has cognitive complexity 28 (threshold 15). Drivers by points: if/else 15 (20 pts), boolean chains 8 (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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":4259}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b1204b4b610b1a340061cd9a046c3f7734def907b0593d9425bb9e548ecd880"}},{"ruleId":"D2","level":"warning","message":{"text":"WaylandWindow::handle_seat_pointer_button (cognitive 28): WaylandWindow::handle_seat_pointer_button has cognitive complexity 28 (threshold 15). Drivers by points: if/else 12 (23 pts), boolean chains 4, 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":6124}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e772e28526273aa0e17a247d8bb6e08cb6897fac85a406a697e4523c89ae27b"}},{"ruleId":"D2","level":"warning","message":{"text":"X11Window::handle_xdnd_client_message (cognitive 28): X11Window::handle_xdnd_client_message has cognitive complexity 28 (threshold 15). Drivers by points: if/else 16 (25 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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":5739}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f104a419e8b91fafb33059f009459430d4bc9dc4d6ec6862f279eac70f4bd23"}},{"ruleId":"D2","level":"warning","message":{"text":"SymbolTable::assign_synthetic_addresses (cognitive 28): SymbolTable::assign_synthetic_addresses has cognitive complexity 28 (threshold 15). Drivers by points: if/else 5 (11 pts), loops 6 (7 pts), match/switch 3 (7 pts), boolean chains 3 (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":"dll/src/web/symbol_table.rs"},"region":{"startLine":756}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3de76b645b154c918409d1bae2018eb3f6329b6652e34acf1395e559e6e4fd7"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::build_link::link_shared (cognitive 28): azul_dll::build_link::link_shared has cognitive complexity 28 (threshold 15). Drivers by points: if/else 17 (22 pts), boolean chains 6 (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":"dll/build_link.rs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa5d2e6b8a9f891105e60120d4204350ddc7ff88a330e26478d12a2726758de4"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_haskell::functions::emit_one_register_helper (cognitive 28): azul_doc::codegen::v2::lang_haskell::functions::emit_one_register_helper has cognitive complexity 28 (threshold 15). Drivers by points: if/else 16 (22 pts), match/switch 3 (4 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":"doc/src/codegen/v2/lang_haskell/functions.rs"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"552318eb32f9fe6c8d85c745146ee6e93304425bd8a8c8142c3ac10225131f01"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::patch::locatesource::find_workspace_member (cognitive 28): azul_doc::patch::locatesource::find_workspace_member has cognitive complexity 28 (threshold 15). Drivers by points: if/else 6 (26 pts), loops 1 (2 pts) (nesting depth added 21). 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":"doc/src/patch/locatesource.rs"},"region":{"startLine":354}}}],"partialFingerprints":{"codehealthFindingId/v1":"7abd08da1ee478e330b84618f65d4ce28ae6a3d214329dc12c3cf78ab5d805ad"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_java::wrappers::emit_wrapper_class (cognitive 28): azul_doc::codegen::v2::lang_java::wrappers::emit_wrapper_class has cognitive complexity 28 (threshold 15). Drivers by points: if/else 14 (19 pts), loops 4 (6 pts), match/switch 2, 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":"doc/src/codegen/v2/lang_java/wrappers.rs"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd6a1c61ce1402b3b07edc7fa85d25d174de6f82d168de535341064224d6b3c8"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ocaml::map_type_to_ocaml_typ (cognitive 28): azul_doc::codegen::v2::lang_ocaml::map_type_to_ocaml_typ has cognitive complexity 28 (threshold 15). Drivers by points: if/else 13 (24 pts), boolean chains 3, 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":"doc/src/codegen/v2/lang_ocaml/mod.rs"},"region":{"startLine":762}}}],"partialFingerprints":{"codehealthFindingId/v1":"319d74cd763c411ab10e071d06cbf2b0a44896e8b3d583eabc640bdf40484bd9"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::gene2e::render_facts (cognitive 28): azul_doc::gene2e::render_facts has cognitive complexity 28 (threshold 15). Drivers by points: if/else 10 (14 pts), loops 8 (14 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":"doc/src/gene2e.rs"},"region":{"startLine":2324}}}],"partialFingerprints":{"codehealthFindingId/v1":"b336cb213ff0c9f595ba471403c713b6ee2b07d53da4c70c86cce5bc985bf057"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_fortran::managed::emit_invoker (cognitive 28): azul_doc::codegen::v2::lang_fortran::managed::emit_invoker has cognitive complexity 28 (threshold 15). Drivers by points: loops 10 (17 pts), if/else 8 (10 pts), match/switch 1 (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":"doc/src/codegen/v2/lang_fortran/managed.rs"},"region":{"startLine":965}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7ddfef3b0e8fcbd81ba750acb45344ae2b5efd00b6e691ee0da64cb640b4f30"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::apply_midlevel::run_refresh_pending (cognitive 28): azul_doc::reftest::apply_midlevel::run_refresh_pending has cognitive complexity 28 (threshold 15). Drivers by points: if/else 9 (15 pts), loops 3 (7 pts), match/switch 2 (6 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":"doc/src/reftest/apply_midlevel.rs"},"region":{"startLine":1015}}}],"partialFingerprints":{"codehealthFindingId/v1":"11eff9053ec53823613ed41f6ce2ba916807d54d9761d2f847b6bac177d66fac"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_kotlin::wrappers::emit_static_factory (cognitive 28): azul_doc::codegen::v2::lang_kotlin::wrappers::emit_static_factory has cognitive complexity 28 (threshold 15). Drivers by points: if/else 17 (20 pts), loops 3 (4 pts), match/switch 2 (4 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":"doc/src/codegen/v2/lang_kotlin/wrappers.rs"},"region":{"startLine":1532}}}],"partialFingerprints":{"codehealthFindingId/v1":"bac9a6fa79c311100fd421420cade212d66bcbba2e179b6e353bb3e75039f162"}},{"ruleId":"D2","level":"warning","message":{"text":"CpuHitTester::rebuild_from_layout_with_gpu (cognitive 28): CpuHitTester::rebuild_from_layout_with_gpu has cognitive complexity 28 (threshold 15). Drivers by points: if/else 6 (18 pts), loops 4 (6 pts), match/switch 1 (3 pts), boolean chains 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":"layout/src/headless.rs"},"region":{"startLine":794}}}],"partialFingerprints":{"codehealthFindingId/v1":"6281a2eab8c5796405616df7400815b522fec6c15ef136eb279252da60db59eb"}},{"ruleId":"D2","level":"warning","message":{"text":"IntrinsicSizeCalculator::calculate_table_intrinsic_sizes (cognitive 28): IntrinsicSizeCalculator::calculate_table_intrinsic_sizes has cognitive complexity 28 (threshold 15). Drivers by points: if/else 7 (19 pts), loops 4 (7 pts), match/switch 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":"layout/src/solver3/sizing.rs"},"region":{"startLine":1208}}}],"partialFingerprints":{"codehealthFindingId/v1":"665afc53ce9c58f41b836e04359cd01d09957b4cfa90a1f5aa8931cce436f131"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::widgets::capture_common::run_capture_loop (cognitive 28): azul_layout::widgets::capture_common::run_capture_loop has cognitive complexity 28 (threshold 15). Drivers by points: if/else 9 (20 pts), boolean chains 3, loops 2 (3 pts), match/switch 1 (2 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":"layout/src/widgets/capture_common.rs"},"region":{"startLine":683}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d837c56909cb261de7fc8967fd7248cc6e734d529a82fa636b2edd4ca4e3847"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::dom_lint::warn_a11y_shape (cognitive 28): azul_layout::dom_lint::warn_a11y_shape has cognitive complexity 28 (threshold 15). Drivers by points: if/else 11 (22 pts), boolean chains 5, loops 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":"layout/src/dom_lint.rs"},"region":{"startLine":1160}}}],"partialFingerprints":{"codehealthFindingId/v1":"e18091799df6510119afebaa568c28c510c27a251a609e05aa17333c4926ccf6"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::xml::svg::svg_path_offset (cognitive 28): azul_layout::xml::svg::svg_path_offset has cognitive complexity 28 (threshold 15). Drivers by points: match/switch 9 (17 pts), if/else 6 (10 pts), loops 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":"layout/src/xml/svg.rs"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a33b4583f3af745cde40c1f0b517c35e0a69c9b83cdd01b6f71ba273c0a66fe"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::compositor::windowed_structural_damage (cognitive 28): azul_layout::cpurender::compositor::windowed_structural_damage has cognitive complexity 28 (threshold 15). Drivers by points: if/else 9 (17 pts), loops 4, match/switch 2 (4 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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":2811}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1fa513d8b21f46038d059d82fcef7715884a173977a688b259c20457cbb788b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::glyph_cache::build_path_from_contours (cognitive 28): azul_layout::glyph_cache::build_path_from_contours has cognitive complexity 28 (threshold 15). Drivers by points: if/else 12 (24 pts), loops 2 (3 pts), boolean chains 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":"layout/src/glyph_cache.rs"},"region":{"startLine":793}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2cfa6927fb3b6dccb213742bd8ecf03c9c624d25101eee97e5eee45865ca927"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::paged_layout::layout_document_paged_impl (cognitive 28): azul_layout::solver3::paged_layout::layout_document_paged_impl has cognitive complexity 28 (threshold 15). Drivers by points: if/else 16 (23 pts), loops 2 (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":"layout/src/solver3/paged_layout.rs"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"0feb01aa74e00753eb85719b27b06eb51b36cc7309fe3d9025fe4fcf91f170ff"}},{"ruleId":"D2","level":"warning","message":{"text":"PictureCompositeMode::get_coverage_target_svgfe (cognitive 28): PictureCompositeMode::get_coverage_target_svgfe has cognitive complexity 28 (threshold 15). Drivers by points: if/else 6 (18 pts), match/switch 2 (5 pts), loops 2 (3 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":"webrender/core/src/picture.rs"},"region":{"startLine":4634}}}],"partialFingerprints":{"codehealthFindingId/v1":"3804004cbfc667a193b7461a591868b620beacbec421c511dba65bb1ac64cdf6"}},{"ruleId":"D2","level":"warning","message":{"text":"QuadTileClassifier::classify (cognitive 28): QuadTileClassifier::classify has cognitive complexity 28 (threshold 15). Drivers by points: if/else 3 (12 pts), match/switch 3 (9 pts), loops 4 (7 pts) (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":"webrender/core/src/quad.rs"},"region":{"startLine":1188}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dd87cdab83ce4ae48d9a7455e70d851d4ef2052c40cc0874c2945f910d8c692"}},{"ruleId":"D2","level":"warning","message":{"text":"SceneBuilder::build_all (cognitive 28): SceneBuilder::build_all has cognitive complexity 28 (threshold 15). Drivers by points: match/switch 4 (12 pts), if/else 3 (9 pts), loops 3 (6 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":"webrender/core/src/scene_building.rs"},"region":{"startLine":856}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b6fcb28f24faf17026034bc2c4992f427d8301fc0eb67c55e016a48be6da610"}},{"ruleId":"D2","level":"warning","message":{"text":"SpatialNode::calculate_sticky_offset (cognitive 28): SpatialNode::calculate_sticky_offset has cognitive complexity 28 (threshold 15). Drivers by points: if/else 15 (23 pts), boolean chains 5 (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":"webrender/core/src/spatial_node.rs"},"region":{"startLine":607}}}],"partialFingerprints":{"codehealthFindingId/v1":"df3b682941dfb94569b6f7543ff325afdc59d7d20ca8d22314c4b90440d5e8dc"}},{"ruleId":"D2","level":"warning","message":{"text":"renderNodeDetail (cognitive 28): renderNodeDetail has cognitive complexity 28 (threshold 15). Drivers by points: if/else 17 (20 pts), boolean chains 4, ternaries 1 (4 pts) (nesting depth added 6). Of this number, 24 points are the body\u0027s own statements and 4 belong to 2 function literals 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":795}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c5a89295102782e6f61bc1a92e5dfff6612a8d991178300882982d925faae30"}},{"ruleId":"D2","level":"warning","message":{"text":"ctxCreateComponentFromSubtree (cognitive 28): ctxCreateComponentFromSubtree has cognitive complexity 28 (threshold 15). Drivers by points: if/else 14 (17 pts), boolean chains 8, error handling 2 (3 pts) (nesting depth added 4). Of this number, 20 points are the body\u0027s own statements and 8 belong to 8 function items inside it that branch. 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":1943}}}],"partialFingerprints":{"codehealthFindingId/v1":"d92a2cf375c053702195ff702f6593bb94aa955b9ddbc0717982b9946ee605fe"}},{"ruleId":"D2","level":"warning","message":{"text":"Win32Window::try_show_context_menu (cognitive 27): Win32Window::try_show_context_menu has cognitive complexity 27 (threshold 15). Drivers by points: if/else 10 (24 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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":3359}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1ccad40efc4c1391795ef038798a260485eb4add5a019ab9e099ed5b6c9bc76"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::system_style::parse_hyprland_config (cognitive 27): azul_dll::desktop::shell2::linux::system_style::parse_hyprland_config has cognitive complexity 27 (threshold 15). Drivers by points: if/else 10 (26 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":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":2117}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d3132d1effc95663adbfabc31dc941966cd49b47b379c3b0cbe78416a8d1fe7"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::system_style::parse_sway_config (cognitive 27): azul_dll::desktop::shell2::linux::system_style::parse_sway_config has cognitive complexity 27 (threshold 15). Drivers by points: if/else 9 (25 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":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":2165}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ac29898f1e8ca84a451e3e74059894c417de9c29051b1d6619430fe5e6fb266"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::macos::system_style::discover_macos_cli_extras (cognitive 27): azul_dll::desktop::shell2::macos::system_style::discover_macos_cli_extras has cognitive complexity 27 (threshold 15). Drivers by points: if/else 11 (23 pts), match/switch 1 (4 pts) (nesting depth added 15). 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":"dll/src/desktop/shell2/macos/system_style.rs"},"region":{"startLine":591}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d08075dc2adc3548ec2c54f60ddae237fbc47e8fe1090e80a01924d2395c962"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::build_link::configure_dynamic_linking (cognitive 27): azul_dll::build_link::configure_dynamic_linking has cognitive complexity 27 (threshold 15). Drivers by points: if/else 13 (17 pts), match/switch 2 (5 pts), loops 4, boolean chains 1 (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":"dll/build_link.rs"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"b552be4251f2e0c81ab5643a9c01fc06155820f7ec61f67a68fea37de7f18d71"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::x11::handle_xi_gesture_event (cognitive 27): azul_dll::desktop::shell2::linux::x11::handle_xi_gesture_event has cognitive complexity 27 (threshold 15). Drivers by points: if/else 13 (24 pts), boolean chains 2, 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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":9360}}}],"partialFingerprints":{"codehealthFindingId/v1":"eba74801fddb3c3a6478a28965b73845c948796ad3711fe354d9febbaa8157ec"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::wr_translate2::merge_overlay_env (cognitive 27): azul_dll::desktop::wr_translate2::merge_overlay_env has cognitive complexity 27 (threshold 15). Drivers by points: boolean chains 27. 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":"dll/src/desktop/wr_translate2.rs"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c6f9402e0761d1c3e0d0b420dabd357ae889d5b604cc5e0c86615d7106bf448"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::windows::pump_modal_loop_work (cognitive 27): azul_dll::desktop::shell2::windows::pump_modal_loop_work has cognitive complexity 27 (threshold 15). Drivers by points: if/else 7 (18 pts), match/switch 2 (6 pts), loops 2 (3 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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":3856}}}],"partialFingerprints":{"codehealthFindingId/v1":"97f1615f7ef18e13593b1de8a611c6abce2fb008352913ff163d741910d9eae5"}},{"ruleId":"D2","level":"warning","message":{"text":"Model::new (cognitive 27): Model::new has cognitive complexity 27 (threshold 15). Drivers by points: if/else 7 (14 pts), match/switch 3 (7 pts), loops 4, boolean chains 2 (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":"doc/src/codegen/v2/lang_crystal/model.rs"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd78bd879e360b152090b6c8e26be0274c6ecb2fe8ba71f40666ef42d6d846b7"}},{"ruleId":"D2","level":"warning","message":{"text":"Emitter::emit_union (cognitive 27): Emitter::emit_union has cognitive complexity 27 (threshold 15). Drivers by points: if/else 18 (25 pts), loops 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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":757}}}],"partialFingerprints":{"codehealthFindingId/v1":"00312de1ac9ecd2c176212a0ac18e69933f47e5de6b35710df3ee074147892b5"}},{"ruleId":"D2","level":"warning","message":{"text":"WorkspaceIndex::find_type_by_string_search_inner (cognitive 27): WorkspaceIndex::find_type_by_string_search_inner has cognitive complexity 27 (threshold 15). Drivers by points: if/else 12 (23 pts), match/switch 1 (2 pts), boolean chains 1, 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":"doc/src/patch/index.rs"},"region":{"startLine":697}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1030df254e99f3a86472b80bd172374daaae9a51cb16c00e8e304b13194ba7f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_kotlin::emit_monomorphized_alias (cognitive 27): azul_doc::codegen::v2::lang_kotlin::emit_monomorphized_alias has cognitive complexity 27 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 6 (12 pts), match/switch 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":"doc/src/codegen/v2/lang_kotlin/mod.rs"},"region":{"startLine":598}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1d64ed2faf24595559883d392b80a61208e755216a87a2e9e861ec24a976c42"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ada::types::emit_tagged_union (cognitive 27): azul_doc::codegen::v2::lang_ada::types::emit_tagged_union has cognitive complexity 27 (threshold 15). Drivers by points: if/else 8 (13 pts), loops 5 (12 pts), match/switch 1 (2 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":"doc/src/codegen/v2/lang_ada/types.rs"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"54b5326bc46a084eda6c720679cf13322664882bccc9786d5b0bb95c5872d7d9"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_lua::wrappers::emit_instance_method (cognitive 27): azul_doc::codegen::v2::lang_lua::wrappers::emit_instance_method has cognitive complexity 27 (threshold 15). Drivers by points: if/else 12 (14 pts), match/switch 3 (5 pts), boolean chains 4, loops 3 (4 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":"doc/src/codegen/v2/lang_lua/wrappers.rs"},"region":{"startLine":785}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1bf427ad03da2d4025f319c7e974be56af9183895ca3ad022bfdca17ad70290"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::autodoc::parse_attrs (cognitive 27): azul_doc::reftest::autodoc::parse_attrs has cognitive complexity 27 (threshold 15). Drivers by points: loops 5 (11 pts), if/else 5 (10 pts), boolean chains 6 (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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":1462}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea52403169287db73922b1e71a30b21fff690e725dc96a917a32287e77b0fa88"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::dllgen::deploy::generate_nfpm_yaml_content (cognitive 27): azul_doc::dllgen::deploy::generate_nfpm_yaml_content has cognitive complexity 27 (threshold 15). Drivers by points: if/else 11 (13 pts), loops 6 (13 pts), boolean chains 1 (nesting depth added 9). 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":"doc/src/dllgen/deploy.rs"},"region":{"startLine":2974}}}],"partialFingerprints":{"codehealthFindingId/v1":"e33be6b62f98868e1613771e1d81fdf6c5ed8a247490177194e20f083b6a6fbc"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::lint_orphans::unreferenced_public_fns (cognitive 27): azul_doc::lint_orphans::unreferenced_public_fns has cognitive complexity 27 (threshold 15). Drivers by points: if/else 6 (17 pts), boolean chains 6, loops 3 (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":"doc/src/lint_orphans.rs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff11b288e12a806601960c3a046634aab0cd2112914c6e94c02aef72db0aa197"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ruby::types::emit_typedefs_in_sort_order (cognitive 27): azul_doc::codegen::v2::lang_ruby::types::emit_typedefs_in_sort_order has cognitive complexity 27 (threshold 15). Drivers by points: if/else 5 (13 pts), match/switch 3 (10 pts), loops 4 (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":"doc/src/codegen/v2/lang_ruby/types.rs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cac4f1c01bbed34ca40c9a81c61e541706f916b47a28fc15c05b4b036a6a30f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::function_diff::method_to_function_data (cognitive 27): azul_doc::autofix::function_diff::method_to_function_data has cognitive complexity 27 (threshold 15). Drivers by points: if/else 14 (21 pts), match/switch 1 (3 pts), loops 2, 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":"doc/src/autofix/function_diff.rs"},"region":{"startLine":867}}}],"partialFingerprints":{"codehealthFindingId/v1":"d80c0d80cc77165218451c7d78501fa4b31c8c928e943dd2bb7505010b4deddb"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::gene2e::review_batch (cognitive 27): azul_doc::gene2e::review_batch has cognitive complexity 27 (threshold 15). Drivers by points: if/else 9 (15 pts), loops 4 (7 pts), match/switch 3 (5 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":"doc/src/gene2e.rs"},"region":{"startLine":2783}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ce1db8cbb650fb7c3e4428f70864be7b7d42122e89f5dab94f8c3ad0357042c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_haskell::types::emit_union_type (cognitive 27): azul_doc::codegen::v2::lang_haskell::types::emit_union_type has cognitive complexity 27 (threshold 15). Drivers by points: if/else 11 (18 pts), loops 5 (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":"doc/src/codegen/v2/lang_haskell/types.rs"},"region":{"startLine":766}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c703fbf9edbc3b06c0500c9d3a611e67221dd55518dd428b25be8fc5aff2cb9"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_cpp::common::generate_freefn_trait_helpers (cognitive 27): azul_doc::codegen::v2::lang_cpp::common::generate_freefn_trait_helpers has cognitive complexity 27 (threshold 15). Drivers by points: if/else 10 (17 pts), loops 4 (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":"doc/src/codegen/v2/lang_cpp/common.rs"},"region":{"startLine":2965}}}],"partialFingerprints":{"codehealthFindingId/v1":"31c84b67e2fb9564a8e5f328a56ec1d99846267a76c6df0f7e3559b952fb93a2"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_node::map_type_to_koffi (cognitive 27): azul_doc::codegen::v2::lang_node::map_type_to_koffi has cognitive complexity 27 (threshold 15). Drivers by points: if/else 11 (24 pts), boolean chains 2, match/switch 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":"doc/src/codegen/v2/lang_node/mod.rs"},"region":{"startLine":957}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa821032835aae97ebc7f8d7e8ec1b98587be859c4f0f38494e9fb5451ebfcfb"}},{"ruleId":"D2","level":"warning","message":{"text":"GlyphCache::get_or_build_cells (cognitive 27): GlyphCache::get_or_build_cells has cognitive complexity 27 (threshold 15). Drivers by points: if/else 19 (24 pts), boolean chains 3 (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":"layout/src/glyph_cache.rs"},"region":{"startLine":331}}}],"partialFingerprints":{"codehealthFindingId/v1":"98fbc2b9a6d74c4605842cf7b74c7113d0b49a49e79ac01938d23613bd7f86ed"}},{"ruleId":"D2","level":"warning","message":{"text":"GpuStateManager::update_scrollbar_transforms (cognitive 27): GpuStateManager::update_scrollbar_transforms has cognitive complexity 27 (threshold 15). Drivers by points: if/else 14 (26 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":"layout/src/managers/gpu_state.rs"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2c91859c999088031f36d1961ea81a598b5d8882a81d92b8455b6a351907231"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutTreeBuilder::apply_split_previews (cognitive 27): LayoutTreeBuilder::apply_split_previews has cognitive complexity 27 (threshold 15). Drivers by points: if/else 10 (22 pts), loops 2 (3 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":"layout/src/solver3/layout_tree.rs"},"region":{"startLine":2976}}}],"partialFingerprints":{"codehealthFindingId/v1":"262bc0a03b80b45e723895214f03d32bef883900154d4eb38d82ff55b50e0a63"}},{"ruleId":"D2","level":"warning","message":{"text":"TaffyBridge::compute_child_layout (cognitive 27): TaffyBridge::compute_child_layout has cognitive complexity 27 (threshold 15). Drivers by points: if/else 12 (18 pts), match/switch 4 (7 pts), boolean chains 2 (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":"layout/src/solver3/taffy_bridge.rs"},"region":{"startLine":1832}}}],"partialFingerprints":{"codehealthFindingId/v1":"44e82c4fe3d35ba3634397def365e2c4d534802dc526bd96e6d843d485727d2a"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::headless::compute_node_chains (cognitive 27): azul_layout::headless::compute_node_chains has cognitive complexity 27 (threshold 15). Drivers by points: if/else 6 (17 pts), loops 3 (5 pts), match/switch 1 (3 pts), boolean chains 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":"layout/src/headless.rs"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"80e2efe7cba013a8ac0637f408977930c7af321970c420a7bcf27a3d6d412ea9"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::headless::compute_node_clips (cognitive 27): azul_layout::headless::compute_node_clips has cognitive complexity 27 (threshold 15). Drivers by points: if/else 17 (24 pts), loops 2, boolean chains 1 (nesting depth added 7). Of this number, 19 points are the body\u0027s own statements and 8 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":"layout/src/headless.rs"},"region":{"startLine":1338}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f070f599c5c00496ebfc02650af8b746659c512f2aec29083f74ad3ae943ff5"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::compositor::compute_virtual_view_damage (cognitive 27): azul_layout::cpurender::compositor::compute_virtual_view_damage has cognitive complexity 27 (threshold 15). Drivers by points: if/else 3 (12 pts), match/switch 2 (7 pts), loops 2 (6 pts), boolean chains 2 (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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":3379}}}],"partialFingerprints":{"codehealthFindingId/v1":"bef29953861894fb23212b3671b1efcee78211c546f4ff5a627cedc6f0178fdc"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::widgets::ribbon::on_ribbon_gallery_cell_click (cognitive 27): azul_layout::widgets::ribbon::on_ribbon_gallery_cell_click has cognitive complexity 27 (threshold 15). Drivers by points: if/else 8 (19 pts), loops 2 (7 pts), match/switch 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":"layout/src/widgets/ribbon.rs"},"region":{"startLine":4255}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b70154a7cbc6d78944f84bd70ca725aed19cbd2375d16b9c573c78e2326254e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::widgets::stepper::on_step_click (cognitive 27): azul_layout::widgets::stepper::on_step_click has cognitive complexity 27 (threshold 15). Drivers by points: if/else 15 (24 pts), loops 2, 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":"layout/src/widgets/stepper.rs"},"region":{"startLine":567}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f70f39cae9c95e05a168524f6987c1b915cd4dee8fe575e864c3847007c07ec"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::managers::focus_cursor::collect_tab_order (cognitive 27): azul_layout::managers::focus_cursor::collect_tab_order has cognitive complexity 27 (threshold 15). Drivers by points: if/else 7 (19 pts), loops 3 (5 pts), match/switch 1 (3 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":"layout/src/managers/focus_cursor.rs"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1051659bc70ea789fab743685883fc7870ba71eb7b9ed28b46281ea3d29a48e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::fc::analyze_table_structure (cognitive 27): azul_layout::solver3::fc::analyze_table_structure has cognitive complexity 27 (threshold 15). Drivers by points: if/else 5 (19 pts), loops 2 (5 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":"layout/src/solver3/fc.rs"},"region":{"startLine":6662}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fa3585dcb8cf08540c719ad5f67af4c0099b470fcfc2496f2d966392129102c"}},{"ruleId":"D2","level":"warning","message":{"text":"SceneBuilder::push_stacking_context (cognitive 27): SceneBuilder::push_stacking_context has cognitive complexity 27 (threshold 15). Drivers by points: if/else 13 (17 pts), match/switch 5 (7 pts), boolean chains 3 (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":"webrender/core/src/scene_building.rs"},"region":{"startLine":1972}}}],"partialFingerprints":{"codehealthFindingId/v1":"de7711155cb1574a4e2b44d36d8f13dbe795fd1819ff14999001c0a21d17e277"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo_bin_path.main (cognitive 27): cargo_bin_path.main has cognitive complexity 27 (threshold 15). Drivers by points: if/else 11 (19 pts), boolean chains 4, error handling 1 (2 pts), loops 1, ternaries 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":"scripts/cargo_bin_path.py"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"119491bed07f16ba79405a8edc23a940f28b5a3052295c5e92ea8f4f9d172ec7"}},{"ruleId":"D2","level":"warning","message":{"text":"scan_build_scripts.main (cognitive 27): scan_build_scripts.main has cognitive complexity 27 (threshold 15). Drivers by points: if/else 10 (14 pts), loops 5 (8 pts), ternaries 3 (5 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":"scripts/supply-chain/scan_build_scripts.py"},"region":{"startLine":412}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c1ca787849f75e9aca4be4aa875fe0c4cbdac35a0bcf38c3f0b91f9272f7fe7"}},{"ruleId":"D2","level":"warning","message":{"text":"_loop (cognitive 27): _loop has cognitive complexity 27 (threshold 15). Drivers by points: if/else 12 (16 pts), boolean chains 9, error handling 1, ternaries 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":4572}}}],"partialFingerprints":{"codehealthFindingId/v1":"d17c9519f945fa6cb16d0d5641f8ccb19c0c257cc608338ef35a04a9ec454c88"}},{"ruleId":"D2","level":"warning","message":{"text":"CssPropertyCache::prune_compact_normal_props (cognitive 26): CssPropertyCache::prune_compact_normal_props has cognitive complexity 26 (threshold 15). Drivers by points: if/else 9 (15 pts), loops 4 (10 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":"core/src/prop_cache.rs"},"region":{"startLine":1215}}}],"partialFingerprints":{"codehealthFindingId/v1":"a422a1c4b08fdf4c25f1a9fd52a5f607990019a30afaa88a1f5cd5983f37a062"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::diff::transfer_states (cognitive 26): azul_core::diff::transfer_states has cognitive complexity 26 (threshold 15). Drivers by points: if/else 7 (20 pts), boolean chains 3, match/switch 1 (2 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":"core/src/diff.rs"},"region":{"startLine":1223}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ca337b4264fa330db6df9a8bef867d4d67e0af2bcd5ee2f063e9904b3ca0b0a"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::xml::decode_entities (cognitive 26): azul_core::xml::decode_entities has cognitive complexity 26 (threshold 15). Drivers by points: if/else 6 (20 pts), match/switch 1 (5 pts), loops 1 (nesting depth added 18). 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":"core/src/xml.rs"},"region":{"startLine":6913}}}],"partialFingerprints":{"codehealthFindingId/v1":"0594d07ce241a3a82804fda792cd123055c799fa9622b8a93bc4786de00917c5"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_css::props::layout::grid::parse_grid_template_areas (cognitive 26): azul_css::props::layout::grid::parse_grid_template_areas has cognitive complexity 26 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 6 (9 pts), boolean chains 2 (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":"css/src/props/layout/grid.rs"},"region":{"startLine":1393}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5369a1343b69447377e07d4ae0e8eaefcf487790eab63132c2c0fc94b76e647"}},{"ruleId":"D2","level":"warning","message":{"text":"WaylandWindow::handle_seat_key (cognitive 26): WaylandWindow::handle_seat_key has cognitive complexity 26 (threshold 15). Drivers by points: if/else 10 (21 pts), boolean chains 4, match/switch 1 (nesting depth added 11). 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":5312}}}],"partialFingerprints":{"codehealthFindingId/v1":"9677f87e94de73b817dedbe7ce21493e506dc1f225ce333e8305ee2350d47115"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::x86_scan::data_referenced_code_ptrs (cognitive 26): azul_dll::web::transpiler_remill::x86_scan::data_referenced_code_ptrs has cognitive complexity 26 (threshold 15). Drivers by points: if/else 9 (19 pts), boolean chains 4, loops 2 (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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":5948}}}],"partialFingerprints":{"codehealthFindingId/v1":"b05132e3843eee773c64e3b76cbdba8fffb12d81cbdee50be85e14bfbc36dfd8"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::macos::ime_set_marked_text (cognitive 26): azul_dll::desktop::shell2::macos::ime_set_marked_text has cognitive complexity 26 (threshold 15). Drivers by points: if/else 10 (22 pts), match/switch 1 (3 pts), boolean chains 1 (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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":3583}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f731598cdc0fea3265ee96d6adaf190f0f684e14c4b2d35186926033c42ef31"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::classify::classify_api_functions (cognitive 26): azul_dll::web::classify::classify_api_functions has cognitive complexity 26 (threshold 15). Drivers by points: loops 5 (15 pts), if/else 4 (11 pts) (nesting depth added 17). 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":"dll/src/web/classify.rs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"08754696e8ea486ec7a551e882226179abfe6642b4a97d2e2852965ec1cf86f9"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::reloc_translate (cognitive 26): azul_dll::web::transpiler_remill::reloc_translate has cognitive complexity 26 (threshold 15). Drivers by points: if/else 12 (21 pts), loops 2, match/switch 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":8081}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c475ac892336de1340bfd1c2fa262a2e1a29ae44e5713fb2b14b076926a130a"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::sqlite::sync::run (cognitive 26): azul_dll::desktop::extra::sqlite::sync::run has cognitive complexity 26 (threshold 15). Drivers by points: if/else 8 (15 pts), match/switch 5 (8 pts), loops 1 (2 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":"dll/src/desktop/extra/sqlite/mod.rs"},"region":{"startLine":1664}}}],"partialFingerprints":{"codehealthFindingId/v1":"836d1c56cd9f909d0b3a2cf49877af07ea5de0278d13155f6ad79b681dcdba20"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeResolver::resolve_type_with_context (cognitive 26): TypeResolver::resolve_type_with_context has cognitive complexity 26 (threshold 15). Drivers by points: if/else 11 (21 pts), boolean chains 2, match/switch 1 (2 pts), loops 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":"doc/src/autofix/type_resolver.rs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"209a659fd0d319f5f6edc71e8e800e519ca999a58e1087694e1cec4685a0f9c2"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_fortran::wrappers::emit_procedure (cognitive 26): azul_doc::codegen::v2::lang_fortran::wrappers::emit_procedure has cognitive complexity 26 (threshold 15). Drivers by points: loops 12 (18 pts), if/else 6 (7 pts), match/switch 1 (nesting depth added 7). 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":"doc/src/codegen/v2/lang_fortran/wrappers.rs"},"region":{"startLine":1291}}}],"partialFingerprints":{"codehealthFindingId/v1":"95e5caf5d4d9bbdc1a72820e6b128b79ab87ddc9af4c92499efbc82cb2c561ec"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_go::managed::emit_smart_helpers (cognitive 26): azul_doc::codegen::v2::lang_go::managed::emit_smart_helpers has cognitive complexity 26 (threshold 15). Drivers by points: if/else 10 (20 pts), loops 4 (6 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":"doc/src/codegen/v2/lang_go/managed.rs"},"region":{"startLine":910}}}],"partialFingerprints":{"codehealthFindingId/v1":"a54ae5934421ef2508b42e26ff1a487d2640d687053f957d08436543d6a6b80c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_nim::types::emit_type_alias (cognitive 26): azul_doc::codegen::v2::lang_nim::types::emit_type_alias has cognitive complexity 26 (threshold 15). Drivers by points: loops 5 (13 pts), if/else 3 (10 pts), match/switch 2 (3 pts) (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":"doc/src/codegen/v2/lang_nim/types.rs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6f3bcf396fe0417ce81933f525fbd325d98700c8a5cfc883d8b8c23fc257ac6"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_kotlin::managed::emit_kt_data_typed_invoker_sam (cognitive 26): azul_doc::codegen::v2::lang_kotlin::managed::emit_kt_data_typed_invoker_sam has cognitive complexity 26 (threshold 15). Drivers by points: if/else 9 (14 pts), loops 5 (6 pts), match/switch 4 (6 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":"doc/src/codegen/v2/lang_kotlin/managed.rs"},"region":{"startLine":726}}}],"partialFingerprints":{"codehealthFindingId/v1":"44228cec5d092999ccb45c64133b551d0db2cb9071370982839139126bce4acb"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_haskell::narrow_facade_imports (cognitive 26): azul_doc::codegen::v2::lang_haskell::narrow_facade_imports has cognitive complexity 26 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 3 (7 pts), match/switch 3 (7 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":"doc/src/codegen/v2/lang_haskell/mod.rs"},"region":{"startLine":895}}}],"partialFingerprints":{"codehealthFindingId/v1":"71eb8e5094ac9524bd50a2ac3581e77884d5400dd437d03c94f05f4f9d4d5d9a"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::print::print_class_detail (cognitive 26): azul_doc::print::print_class_detail has cognitive complexity 26 (threshold 15). Drivers by points: loops 6 (14 pts), if/else 9 (12 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":"doc/src/print.rs"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe19eb8405f12bff2ce8883791aaac0c225e55b76f1dcd351f1972d7a1180310"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::debug::collect_source_code_with_budget (cognitive 26): azul_doc::reftest::debug::collect_source_code_with_budget has cognitive complexity 26 (threshold 15). Drivers by points: if/else 10 (18 pts), loops 3 (5 pts), match/switch 1 (2 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":"doc/src/reftest/debug.rs"},"region":{"startLine":568}}}],"partialFingerprints":{"codehealthFindingId/v1":"c866da54ffc37a480bb839b747152a4881a4b018c7b57b9955534a0edbcc5088"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::gene2e::collected_map_keys (cognitive 26): azul_doc::gene2e::collected_map_keys has cognitive complexity 26 (threshold 15). Drivers by points: if/else 7 (20 pts), loops 3 (5 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":"doc/src/gene2e.rs"},"region":{"startLine":977}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d72245c20388ea99783a08827e7214dc5b7a9e3db4bf22b085c6fca095a5d22"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_v::types::generate_types (cognitive 26): azul_doc::codegen::v2::lang_v::types::generate_types has cognitive complexity 26 (threshold 15). Drivers by points: if/else 10 (20 pts), loops 4, 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":"doc/src/codegen/v2/lang_v/types.rs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"04367e1d7dc2d5aff3de24a8c7d4d62e7514b6f356e2b3d5b9222cc406597ee4"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::patch::index::extract_macro_generated_types_from_items (cognitive 26): azul_doc::patch::index::extract_macro_generated_types_from_items has cognitive complexity 26 (threshold 15). Drivers by points: if/else 6 (18 pts), loops 2 (5 pts), boolean chains 3 (nesting depth added 15). 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":"doc/src/patch/index.rs"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"09dda46614f06d75dd96f68602a5c29ad00b8e7ff8277f306fcefe0d5d70dc09"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::diff::check_vec_functions (cognitive 26): azul_doc::autofix::diff::check_vec_functions has cognitive complexity 26 (threshold 15). Drivers by points: if/else 18 (20 pts), boolean chains 6 (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":"doc/src/autofix/diff.rs"},"region":{"startLine":2627}}}],"partialFingerprints":{"codehealthFindingId/v1":"b634a4bb29e38209509962d32655fb9dcbe225a3e2ab432ae39609c69280055a"}},{"ruleId":"D2","level":"warning","message":{"text":"DisplayListItem::is_visually_equal (cognitive 26): DisplayListItem::is_visually_equal has cognitive complexity 26 (threshold 15). Drivers by points: boolean chains 24, if/else 1, match/switch 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":"layout/src/solver3/display_list.rs"},"region":{"startLine":1883}}}],"partialFingerprints":{"codehealthFindingId/v1":"f493b49541b2d8ced4f638f451efd5b4787cc3373d22aa2434a3829e86cb1e3d"}},{"ruleId":"D2","level":"warning","message":{"text":"BreakCursor::peek_next_unit (cognitive 26): BreakCursor::peek_next_unit has cognitive complexity 26 (threshold 15). Drivers by points: if/else 12 (24 pts), boolean chains 1, 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":"layout/src/text3/cache.rs"},"region":{"startLine":13779}}}],"partialFingerprints":{"codehealthFindingId/v1":"1625fd54f39f55daa9abde87b2508991719d85fcda21d5be1c5c25ae9ef5c5af"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::try_incremental_text_relayout (cognitive 26): LayoutWindow::try_incremental_text_relayout has cognitive complexity 26 (threshold 15). Drivers by points: if/else 8 (17 pts), loops 2 (4 pts), boolean chains 3, 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":"layout/src/window.rs"},"region":{"startLine":18688}}}],"partialFingerprints":{"codehealthFindingId/v1":"834b1461037d70dc019f421c3da5b9f2058678f4bd96db7936e2a1feb54273c2"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::remap_node_ids (cognitive 26): LayoutWindow::remap_node_ids has cognitive complexity 26 (threshold 15). Drivers by points: if/else 13 (19 pts), match/switch 3 (7 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":"layout/src/window.rs"},"region":{"startLine":20900}}}],"partialFingerprints":{"codehealthFindingId/v1":"675d6cd10264f443e6c3c7d353c5c1a285828789e5165eebd3f428e1f0a0a48e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::getters::build_font_selector_stack (cognitive 26): azul_layout::solver3::getters::build_font_selector_stack has cognitive complexity 26 (threshold 15). Drivers by points: if/else 10 (19 pts), loops 3 (5 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":"layout/src/solver3/getters.rs"},"region":{"startLine":3923}}}],"partialFingerprints":{"codehealthFindingId/v1":"db09754bded05fdaeeafcfd9edf66ae35f9b8569dde3a6d81559df21cfa21657"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::getters::resolve_font_chains_with_registry (cognitive 26): azul_layout::solver3::getters::resolve_font_chains_with_registry has cognitive complexity 26 (threshold 15). Drivers by points: if/else 12 (21 pts), loops 2 (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":"layout/src/solver3/getters.rs"},"region":{"startLine":4678}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd98c93a8a6aec7e089dfdf240034ab042c2cfe05d62c7317cdea6f9ef59f842"}},{"ruleId":"D2","level":"warning","message":{"text":"ResourceCache::post_scene_building_update (cognitive 26): ResourceCache::post_scene_building_update has cognitive complexity 26 (threshold 15). Drivers by points: if/else 6 (19 pts), match/switch 3 (6 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":"webrender/core/src/resource_cache.rs"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"afce1992aef9a1882bfce5cafcbd53b17a5a8e1b8bcb1249f85fbc9c3d0a015f"}},{"ruleId":"D2","level":"warning","message":{"text":"AzulGamepad.onCapturedPointer (cognitive 26): AzulGamepad.onCapturedPointer has cognitive complexity 26 (threshold 15). Drivers by points: if/else 9 (15 pts), boolean chains 4, ternaries 3 (4 pts), loops 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":"scripts/android/AzulGamepad.java"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"317a51b706c51214ea7c09ed63e39b3d7016111098696d2682d6a4a0f3fe657e"}},{"ruleId":"D2","level":"warning","message":{"text":"preflight_contracts.check_demo_naming (cognitive 26): preflight_contracts.check_demo_naming has cognitive complexity 26 (threshold 15). Drivers by points: if/else 7 (17 pts), boolean chains 3, loops 2 (3 pts), ternaries 1 (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":"scripts/preflight_contracts.py"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"86c3e4873b7b439f62e4b509606f3a8035aef0a87194d57850e66441b1a39e23"}},{"ruleId":"D2","level":"warning","message":{"text":"env_guard.scan_crate (cognitive 26): env_guard.scan_crate has cognitive complexity 26 (threshold 15). Drivers by points: if/else 8 (11 pts), loops 3 (6 pts), boolean chains 5, error handling 1 (2 pts), ternaries 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":"scripts/supply-chain/env_guard.py"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e9de76b63ba44a896f4b7a91b2ea54e20a15c848a655d160959ae85f3b3a900"}},{"ruleId":"D2","level":"warning","message":{"text":"scan_build_scripts.evaluate (cognitive 26): scan_build_scripts.evaluate has cognitive complexity 26 (threshold 15). Drivers by points: if/else 10 (23 pts), boolean chains 2, 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":"scripts/supply-chain/scan_build_scripts.py"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"b36bbed52b04431f0e0d8083598747bf8e172618a1ae466034a8db2d85d534e3"}},{"ruleId":"D2","level":"warning","message":{"text":"updateStepParamsForm (cognitive 26): updateStepParamsForm has cognitive complexity 26 (threshold 15). Drivers by points: if/else 8 (11 pts), ternaries 3 (8 pts), boolean chains 7 (nesting depth added 8). Most of this is not in the body itself: 8 of the 26 points are its own statements and the rest belongs to 6 function literals inside it that branch (lines 1132, 1107, 1120, \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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":1095}}}],"partialFingerprints":{"codehealthFindingId/v1":"f075792421ba6e56f63480f99d2b5285df98024b1728245bf4d19331d38fd7a3"}},{"ruleId":"D2","level":"warning","message":{"text":"open (cognitive 26): open has cognitive complexity 26 (threshold 15). Drivers by points: if/else 13 (18 pts), boolean chains 8 (nesting depth added 5). Most of this is not in the body itself: 7 of the 26 points are its own statements and the rest belongs to 8 function literals inside it that branch (lines 4452, 4507, 4417, \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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":4400}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3ddf8337c067d575c868cb5170e2268e86eb7325bd0ccb063935848038ec76c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::diff::fingerprint_dom (cognitive 25): azul_core::diff::fingerprint_dom has cognitive complexity 25 (threshold 15). Drivers by points: loops 10 (15 pts), if/else 4 (5 pts), match/switch 3 (5 pts) (nesting depth added 8). Most of this is not in the body itself: 2 of the 25 points are its own statements and the rest belongs to 3 function items inside it that branch (node_style_hash, node_structure_hash, walk). 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":"core/src/diff.rs"},"region":{"startLine":2325}}}],"partialFingerprints":{"codehealthFindingId/v1":"a18e8d11eabbd8b5899109298aa4de556ef8b0a4eb61e817ca5e050eda7459c2"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_css::parser2::parse_declaration_resilient (cognitive 25): azul_css::parser2::parse_declaration_resilient has cognitive complexity 25 (threshold 15). Drivers by points: match/switch 5 (14 pts), if/else 8 (11 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":"css/src/parser2.rs"},"region":{"startLine":2070}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee08e196bc633360b823de9b78c1aa61e92b6c07456f93df0b97987d39055032"}},{"ruleId":"D2","level":"warning","message":{"text":"PlatformWindow::handle_track_click (cognitive 25): PlatformWindow::handle_track_click has cognitive complexity 25 (threshold 15). Drivers by points: if/else 17 (19 pts), match/switch 5 (6 pts) (nesting depth added 3). 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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":12688}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd64d4efe9979b03fbbea8443eb8144b650f35b663320c8b5e34b56839974f71"}},{"ruleId":"D2","level":"warning","message":{"text":"WaylandWindow::drop (cognitive 25): WaylandWindow::drop has cognitive complexity 25 (threshold 15). Drivers by points: if/else 22 (23 pts), loops 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":8509}}}],"partialFingerprints":{"codehealthFindingId/v1":"a040036d769bfd34d9b8b87acf3585b60bb6789a982558ef8fd79b079d83e610"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::html_render::extract_head_meta (cognitive 25): azul_dll::web::html_render::extract_head_meta has cognitive complexity 25 (threshold 15). Drivers by points: if/else 5 (18 pts), loops 2 (4 pts), match/switch 1 (2 pts), boolean chains 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":"dll/src/web/html_render.rs"},"region":{"startLine":779}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0a44152eb3f59ff5277808f6243282f88ab28bb71bdc203a13fc904bdeda902"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::collect_synth_data_segments_legacy (cognitive 25): azul_dll::web::transpiler_remill::collect_synth_data_segments_legacy has cognitive complexity 25 (threshold 15). Drivers by points: if/else 4 (10 pts), match/switch 4 (9 pts), boolean chains 3, 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":5149}}}],"partialFingerprints":{"codehealthFindingId/v1":"71ac5947b13588ba89f0604425bf17f20d85888b736992ca6e26031adfe3a221"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::geolocation::linux::imp::geoclue_loop (cognitive 25): azul_dll::desktop::extra::geolocation::linux::imp::geoclue_loop has cognitive complexity 25 (threshold 15). Drivers by points: if/else 10 (14 pts), match/switch 8 (10 pts), 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":"dll/src/desktop/extra/geolocation/linux.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"928a5a137470c8e552df99beeb6df015495e5349e641a2d3cdc7e4e5fd2cd1f2"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::map::tile_fetch_worker (cognitive 25): azul_dll::desktop::extra::map::tile_fetch_worker has cognitive complexity 25 (threshold 15). Drivers by points: if/else 12 (19 pts), match/switch 4 (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":"dll/src/desktop/extra/map/mod.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"d72cd82c452194b18972aa52bcc01e7f71694d1002fc48baef436adb70a500f2"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::run::setup_e2e_runner (cognitive 25): azul_dll::desktop::shell2::run::setup_e2e_runner has cognitive complexity 25 (threshold 15). Drivers by points: if/else 8 (13 pts), loops 4 (8 pts), match/switch 3 (4 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":"dll/src/desktop/shell2/run.rs"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"eba508d3f82c14acd0d16d4fd54a06ad6488106aff8049d443ba5f5c65608af8"}},{"ruleId":"D2","level":"warning","message":{"text":"SmartCtor::build (cognitive 25): SmartCtor::build has cognitive complexity 25 (threshold 15). Drivers by points: if/else 8 (18 pts), loops 2 (3 pts), boolean chains 2, match/switch 2 (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":"doc/src/codegen/v2/lang_ocaml/wrappers.rs"},"region":{"startLine":885}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c74f3efde9f13c2d814b99dcefd64490d9cd399b50bdac24c50cc11538d89ac"}},{"ruleId":"D2","level":"warning","message":{"text":"Emitter::emit_trampolines (cognitive 25): Emitter::emit_trampolines has cognitive complexity 25 (threshold 15). Drivers by points: if/else 8 (18 pts), loops 2 (4 pts), match/switch 1 (2 pts), boolean chains 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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":2560}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a91c57ffeab2d0a958f1954185664f23fe24cfca1c16dd0a21d4b37e29a160b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::type_index::extract_into_bounds (cognitive 25): azul_doc::autofix::type_index::extract_into_bounds has cognitive complexity 25 (threshold 15). Drivers by points: if/else 5 (15 pts), loops 4 (10 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":"doc/src/autofix/type_index.rs"},"region":{"startLine":3183}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae8f64d0dabb62854763a2a0d9a7950cc3f8c5ff3212e8e1dab5a647f746809d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ada::types::emit_monomorphized_alias (cognitive 25): azul_doc::codegen::v2::lang_ada::types::emit_monomorphized_alias has cognitive complexity 25 (threshold 15). Drivers by points: if/else 6 (11 pts), loops 5 (10 pts), match/switch 2 (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":"doc/src/codegen/v2/lang_ada/types.rs"},"region":{"startLine":391}}}],"partialFingerprints":{"codehealthFindingId/v1":"d752a541221efffbd09ddced2cd3bde41dd7cf66852efe352ae0d087702f3735"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ruby::types::emit_monomorphized_alias (cognitive 25): azul_doc::codegen::v2::lang_ruby::types::emit_monomorphized_alias has cognitive complexity 25 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 5 (10 pts), match/switch 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":"doc/src/codegen/v2/lang_ruby/types.rs"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4b25ff903ec9914eb299cb7213e6fe34bc644030461c6151c5ded9a3543faed"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ocaml::wrappers::tag_helpers (cognitive 25): azul_doc::codegen::v2::lang_ocaml::wrappers::tag_helpers has cognitive complexity 25 (threshold 15). Drivers by points: if/else 8 (18 pts), boolean chains 4, loops 2 (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":"doc/src/codegen/v2/lang_ocaml/wrappers.rs"},"region":{"startLine":1191}}}],"partialFingerprints":{"codehealthFindingId/v1":"992b2a00b556010049d0bc9425eede5ba4e202def23d88391a4e3000126adeae"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::module_map::get_correct_module_with_path (cognitive 25): azul_doc::autofix::module_map::get_correct_module_with_path has cognitive complexity 25 (threshold 15). Drivers by points: if/else 15 (23 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":"doc/src/autofix/module_map.rs"},"region":{"startLine":718}}}],"partialFingerprints":{"codehealthFindingId/v1":"7612244c3f34e6925783bd7493cb10c93160070b253294479f354c69cb1db171"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::apply_midlevel::read_followup (cognitive 25): azul_doc::reftest::apply_midlevel::read_followup has cognitive complexity 25 (threshold 15). Drivers by points: if/else 7 (19 pts), match/switch 2 (4 pts), loops 1 (2 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":"doc/src/reftest/apply_midlevel.rs"},"region":{"startLine":2022}}}],"partialFingerprints":{"codehealthFindingId/v1":"482b0d9d6036768a192a55236e8d14fc9bfda691c84cbff06cd570c6a0ecd4f5"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_csharp::types::generate_monomorphized_alias (cognitive 25): azul_doc::codegen::v2::lang_csharp::types::generate_monomorphized_alias has cognitive complexity 25 (threshold 15). Drivers by points: loops 8 (17 pts), if/else 3 (7 pts), match/switch 1 (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":"doc/src/codegen/v2/lang_csharp/types.rs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1cd0482efad549ef5f3c7f3763e888449940b97d80e638453d47b0d1f18a35a"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_freebasic::types::emit_tagged_union (cognitive 25): azul_doc::codegen::v2::lang_freebasic::types::emit_tagged_union has cognitive complexity 25 (threshold 15). Drivers by points: if/else 8 (13 pts), loops 6 (10 pts), match/switch 1 (2 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":"doc/src/codegen/v2/lang_freebasic/types.rs"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fc3092c91f1f86b3ebcba919faf0d60a1d84cfc89af366166a05f279f4bd169"}},{"ruleId":"D2","level":"warning","message":{"text":"CompositorState::render_layers (cognitive 25): CompositorState::render_layers has cognitive complexity 25 (threshold 15). Drivers by points: if/else 9 (14 pts), loops 5 (8 pts), boolean chains 3 (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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":706}}}],"partialFingerprints":{"codehealthFindingId/v1":"abf485d19f8d937bb76fb7dc8d2ee8c4f4cdffc0349cf70981d27fd2322ad9d2"}},{"ruleId":"D2","level":"warning","message":{"text":"CompositorState::composite_layer_recursive (cognitive 25): CompositorState::composite_layer_recursive has cognitive complexity 25 (threshold 15). Drivers by points: if/else 16 (19 pts), boolean chains 4, loops 1, match/switch 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, 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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":937}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee408ffe1306b2e7d71d1c3f554e9cfa6d273e5e9d4f8d37c29f7e065931222f"}},{"ruleId":"D2","level":"warning","message":{"text":"TextShapingCache::memory_report (cognitive 25): TextShapingCache::memory_report has cognitive complexity 25 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 5 (7 pts), match/switch 1 (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":"layout/src/text3/cache.rs"},"region":{"startLine":7501}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ab39261cf15f1d2cef616a8b9979e559986da9a4ab10e80fe52281e425e92b4"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::caret_node_position_for_seat (cognitive 25): LayoutWindow::caret_node_position_for_seat has cognitive complexity 25 (threshold 15). Drivers by points: if/else 10 (20 pts), loops 3 (5 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":"layout/src/window.rs"},"region":{"startLine":3532}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dec9ca6f33c68f9338461092ac8cfe059402b13c00d87851c286bfc1fe55cb5"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::zombie_paint_rects (cognitive 25): LayoutWindow::zombie_paint_rects has cognitive complexity 25 (threshold 15). Drivers by points: if/else 6 (19 pts), loops 3 (5 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":"layout/src/window.rs"},"region":{"startLine":25610}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5682dc208d16c3470350a3831a6065da44f0bd066c4012e4c90f55fde5af08c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::telemetry::sharedconfig::within_maintenance_window (cognitive 25): azul_layout::telemetry::sharedconfig::within_maintenance_window has cognitive complexity 25 (threshold 15). Drivers by points: if/else 8 (13 pts), match/switch 3 (6 pts), boolean chains 5, 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":"layout/src/telemetry/sharedconfig.rs"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"27828f3b7b749fd54c5aa5e8fcda788f419265b458dd5f7ad73b4e8b50e6bc7f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::cache::reorder_logical_items (cognitive 25): azul_layout::text3::cache::reorder_logical_items has cognitive complexity 25 (threshold 15). Drivers by points: if/else 10 (13 pts), loops 6 (10 pts), match/switch 1 (2 pts) (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":"layout/src/text3/cache.rs"},"region":{"startLine":8697}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c0dc99ef348263ea5e51002e32c330f4b0d93f0d466594fcdcef7a89d8eb7ce"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::telemetry::queue::upload_pending_with_timeout (cognitive 25): azul_layout::telemetry::queue::upload_pending_with_timeout has cognitive complexity 25 (threshold 15). Drivers by points: loops 5 (12 pts), if/else 5 (8 pts), match/switch 2 (5 pts) (nesting depth added 13). 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":"layout/src/telemetry/queue.rs"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"eaf370bc4d60d9a2c5dda7bac9372144766953a99e914f69573ea3932788ff0e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::layout_tree::collect_box_props (cognitive 25): azul_layout::solver3::layout_tree::collect_box_props has cognitive complexity 25 (threshold 15). Drivers by points: if/else 15 (18 pts), match/switch 5 (6 pts), boolean chains 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":"layout/src/solver3/layout_tree.rs"},"region":{"startLine":3814}}}],"partialFingerprints":{"codehealthFindingId/v1":"420df100fdb6f27e13bfd6ad03e6741d68ac6bf135e441b7bfb9510748d31317"}},{"ruleId":"D2","level":"warning","message":{"text":"PicturePrimitive::assign_surface (cognitive 25): PicturePrimitive::assign_surface has cognitive complexity 25 (threshold 15). Drivers by points: if/else 6 (14 pts), match/switch 4 (9 pts), boolean chains 2 (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":"webrender/core/src/picture.rs"},"region":{"startLine":6945}}}],"partialFingerprints":{"codehealthFindingId/v1":"30bf9d7ed00d305970784dca8764c8187e0c4e6eaaf3c9f489585d81f2f23d43"}},{"ruleId":"D2","level":"warning","message":{"text":"RenderBackend::process_transaction (cognitive 25): RenderBackend::process_transaction has cognitive complexity 25 (threshold 15). Drivers by points: if/else 13 (24 pts), loops 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":"webrender/core/src/render_backend.rs"},"region":{"startLine":842}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c006a39318deba5f3961d0e066b5e9ac7cba3c4ad5e73dd29cb59d3f012fe1d"}},{"ruleId":"D2","level":"warning","message":{"text":"Renderer::draw_texture_cache_target (cognitive 25): Renderer::draw_texture_cache_target has cognitive complexity 25 (threshold 15). Drivers by points: if/else 14 (19 pts), boolean chains 2, 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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":3949}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7355a1c9cf772d2e5af943ad04dfed1cbad48ecb0ff475af28e31e8bb2622c6"}},{"ruleId":"D2","level":"warning","message":{"text":"Shaders::get (cognitive 25): Shaders::get has cognitive complexity 25 (threshold 15). Drivers by points: if/else 7 (16 pts), match/switch 4 (8 pts), boolean chains 1 (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":"webrender/core/src/renderer/shade.rs"},"region":{"startLine":1182}}}],"partialFingerprints":{"codehealthFindingId/v1":"23bc3630b3285ab61e6b3c08f5be3246f6fd5f60d73161132bb90b7726225bdf"}},{"ruleId":"D2","level":"warning","message":{"text":"TileCacheBuilder::add_prim (cognitive 25): TileCacheBuilder::add_prim has cognitive complexity 25 (threshold 15). Drivers by points: if/else 5 (15 pts), loops 1 (5 pts), match/switch 2 (4 pts), boolean chains 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":"webrender/core/src/tile_cache.rs"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"45c348581a963ec5d808aaf4754de1d7a6daf24d615fcfb2b5232833dc74ed3e"}},{"ruleId":"D2","level":"warning","message":{"text":"AttribLocations::get_loc (cognitive 25): AttribLocations::get_loc has cognitive complexity 25 (threshold 15). Drivers by points: if/else 19 (25 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":"webrender/swgl/src/shaders/composite_fast_path_texture_rect.rs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe578636f18396fc74c7c09cddd31b68addb8e30f9e21e4d655b24d1a6addd03"}},{"ruleId":"D2","level":"warning","message":{"text":"AttribLocations::get_loc (cognitive 25): AttribLocations::get_loc has cognitive complexity 25 (threshold 15). Drivers by points: if/else 19 (25 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":"webrender/swgl/src/shaders/cs_blur_alpha_target.rs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f61e5d35c6a53261bf4669ed725468041bfc2335d8ee95bd25520e47c92d940"}},{"ruleId":"D2","level":"warning","message":{"text":"lockfile_guard.verify_vendor (cognitive 25): lockfile_guard.verify_vendor has cognitive complexity 25 (threshold 15). Drivers by points: if/else 6 (15 pts), loops 3 (5 pts), boolean chains 3, error handling 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":"scripts/supply-chain/lockfile_guard.py"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee2af2579550609ba1a99ff9af82430ed27f374d52129746b8871d91975d623c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::style::construct_html_cascade_tree (cognitive 24): azul_core::style::construct_html_cascade_tree has cognitive complexity 24 (threshold 15). Drivers by points: if/else 5 (15 pts), loops 4 (9 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":"core/src/style.rs"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca5ae8733cf0daf846a3bc3c26c18419083d8d25528912d5d91162a036aa5852"}},{"ruleId":"D2","level":"warning","message":{"text":"MapCss::parse (cognitive 24): MapCss::parse has cognitive complexity 24 (threshold 15). Drivers by points: if/else 7 (18 pts), loops 2 (3 pts), match/switch 1 (3 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":"dll/src/desktop/extra/map/svg.rs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b8651fa57f4f9ae80b214bc33557cd07ad1e2942daa8379979855683907b6bd"}},{"ruleId":"D2","level":"warning","message":{"text":"PlatformWindow::invoke_expired_timers (cognitive 24): PlatformWindow::invoke_expired_timers has cognitive complexity 24 (threshold 15). Drivers by points: if/else 8 (15 pts), boolean chains 3, loops 2 (3 pts), match/switch 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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":12843}}}],"partialFingerprints":{"codehealthFindingId/v1":"c34482f5e4ededc9d730aa3d4b93e449a5adae273a3a4557d4f201384b67ea1b"}},{"ruleId":"D2","level":"warning","message":{"text":"PlatformWindow::handle_scrollbar_drag (cognitive 24): PlatformWindow::handle_scrollbar_drag has cognitive complexity 24 (threshold 15). Drivers by points: if/else 19, match/switch 5. 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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":13166}}}],"partialFingerprints":{"codehealthFindingId/v1":"99a5284bc6d8ff758ed5ce753f1f499c539797717da236a1dc2dcd2dbc800618"}},{"ruleId":"D2","level":"warning","message":{"text":"WaylandWindow::send_surrounding_text (cognitive 24): WaylandWindow::send_surrounding_text has cognitive complexity 24 (threshold 15). Drivers by points: match/switch 8 (17 pts), if/else 1 (4 pts), loops 1 (3 pts) (nesting depth added 14). 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":10323}}}],"partialFingerprints":{"codehealthFindingId/v1":"4339599dae36fd5d5e37bccd6a8e4dfec5e29b512751206df27efb2c28cd95e5"}},{"ruleId":"D2","level":"warning","message":{"text":"X11Window::handle_seat_key_event (cognitive 24): X11Window::handle_seat_key_event has cognitive complexity 24 (threshold 15). Drivers by points: if/else 15 (22 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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":1870}}}],"partialFingerprints":{"codehealthFindingId/v1":"d82a06baffb85c879c87db1d56c78ad5d999a2129daf55ab34ba3d5eab25d161"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::video_codec::videotoolbox::annexb_nals (cognitive 24): azul_dll::desktop::extra::video_codec::videotoolbox::annexb_nals has cognitive complexity 24 (threshold 15). Drivers by points: if/else 11 (21 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":"dll/src/desktop/extra/video_codec/videotoolbox.rs"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"d173376d13f35038268116096c9376b4a23f99d4ad6fee84507203a3ce6143ba"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::common::capability_pump::pump (cognitive 24): azul_dll::desktop::shell2::common::capability_pump::pump has cognitive complexity 24 (threshold 15). Drivers by points: if/else 10 (12 pts), loops 11 (12 pts) (nesting depth added 3). 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":"dll/src/desktop/shell2/common/capability_pump.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"95628280dfbf4acb4491378e68d61a689d776cb0e28609bfddca7571746bbbeb"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::common::debug_server::platform::handle_http_connection (cognitive 24): azul_dll::desktop::shell2::common::debug_server::platform::handle_http_connection has cognitive complexity 24 (threshold 15). Drivers by points: if/else 13 (16 pts), boolean chains 6, match/switch 2 (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":"dll/src/desktop/shell2/common/debug_server/platform.rs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"8867e8cfff6d594a8831d4d29a883fbfad0c79b96187e4be381096c1ff26e683"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::hid::macos::enumerate (cognitive 24): azul_dll::desktop::extra::hid::macos::enumerate has cognitive complexity 24 (threshold 15). Drivers by points: if/else 13 (20 pts), loops 1 (4 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":"dll/src/desktop/extra/hid/macos.rs"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ab9f8157afa4448a95ab4343cb40bdd8e02529a839de9b3055fe38e59a1b549"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::preflight_scan (cognitive 24): azul_dll::web::transpiler_remill::preflight_scan has cognitive complexity 24 (threshold 15). Drivers by points: if/else 10 (15 pts), boolean chains 8, 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":7371}}}],"partialFingerprints":{"codehealthFindingId/v1":"b726c683fa12291acd28570d6eb7218ce25fdda17aee2af358eb46a0651b9a72"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::enforce_sp_preservation (cognitive 24): azul_dll::web::transpiler_remill::enforce_sp_preservation has cognitive complexity 24 (threshold 15). Drivers by points: if/else 6 (16 pts), loops 3 (7 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":8684}}}],"partialFingerprints":{"codehealthFindingId/v1":"29f5b7345ddfc181d220a7cb99798a5886db640b10199836ec44c0a1eb219fbb"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::build_extra_data (cognitive 24): azul_dll::web::transpiler_remill::build_extra_data has cognitive complexity 24 (threshold 15). Drivers by points: if/else 7 (19 pts), loops 2 (4 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":11007}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef986e8a4acd736caacf9df8663a0742fb4e2965363b341aa0fd4a475ce960f4"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::scan_arm64_adrp_add_code_targets (cognitive 24): azul_dll::web::transpiler_remill::scan_arm64_adrp_add_code_targets has cognitive complexity 24 (threshold 15). Drivers by points: if/else 9 (22 pts), boolean chains 1, 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":11423}}}],"partialFingerprints":{"codehealthFindingId/v1":"809d58bb6dae57eeab72a9d35e9e355f0eaa5a5bc225711d936ae323abb3465b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::haptics::windows::play_pen (cognitive 24): azul_dll::desktop::extra::haptics::windows::play_pen has cognitive complexity 24 (threshold 15). Drivers by points: if/else 13 (21 pts), loops 1 (2 pts), 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":"dll/src/desktop/extra/haptics/windows.rs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"45f2314e3c4dc00648567afad7657153677424928945b08baa3584583a226576"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::file_picker::ios::key_root_view_controller (cognitive 24): azul_dll::desktop::extra::file_picker::ios::key_root_view_controller has cognitive complexity 24 (threshold 15). Drivers by points: if/else 8 (21 pts), loops 1 (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":"dll/src/desktop/extra/file_picker/ios.rs"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"1294d8dc26235ba885517a1bea07c05989e3dbae695968b1773f2eb4d83f775f"}},{"ruleId":"D2","level":"warning","message":{"text":"AutofixMessages::print_report (cognitive 24): AutofixMessages::print_report has cognitive complexity 24 (threshold 15). Drivers by points: if/else 10 (16 pts), loops 3 (6 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":"doc/src/autofix/message.rs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f7f4a8042d83c94540c3b4211f7890b4765e9e91f7bfdaab8ca7e65140a5b83"}},{"ruleId":"D2","level":"warning","message":{"text":"PythonGenerator::is_python_compatible_type (cognitive 24): PythonGenerator::is_python_compatible_type has cognitive complexity 24 (threshold 15). Drivers by points: if/else 15 (18 pts), boolean chains 6 (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":"doc/src/codegen/v2/lang_python.rs"},"region":{"startLine":4009}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a64b3a802fa698ebba087fe0090e04852da808c54dd6f6e372b4a13c629783b"}},{"ruleId":"D2","level":"warning","message":{"text":"RustGenerator::generate_transmute_trait_impls (cognitive 24): RustGenerator::generate_transmute_trait_impls has cognitive complexity 24 (threshold 15). Drivers by points: if/else 15 (16 pts), boolean chains 8 (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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2733}}}],"partialFingerprints":{"codehealthFindingId/v1":"06912416eb73cfd35a69da02ab25c07e41dcdf7818b7dfc898ea6907b109a850"}},{"ruleId":"D2","level":"warning","message":{"text":"WorkspaceIndex::deduce_full_path (cognitive 24): WorkspaceIndex::deduce_full_path has cognitive complexity 24 (threshold 15). Drivers by points: if/else 10 (18 pts), loops 4 (5 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":"doc/src/patch/index.rs"},"region":{"startLine":864}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b2ff8ecd0a6b7081d7065e290026d2adf8a8a07ae816716e2ad01d466435884"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::api::extract_types_from_class_data (cognitive 24): azul_doc::api::extract_types_from_class_data has cognitive complexity 24 (threshold 15). Drivers by points: loops 6 (14 pts), if/else 7 (10 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":"doc/src/api.rs"},"region":{"startLine":1457}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c939dd20859368af10f6671a74e45c1a78d56f72288145b3c025427492a2458"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_nim::types::collect_type_names (cognitive 24): azul_doc::codegen::v2::lang_nim::types::collect_type_names has cognitive complexity 24 (threshold 15). Drivers by points: if/else 6 (13 pts), loops 6 (11 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":"doc/src/codegen/v2/lang_nim/types.rs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f167ad44e87cf8c23aedf161e8eb37b8b680c054343ef908aa05f69171be038"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_haskell::module_scope_declarations (cognitive 24): azul_doc::codegen::v2::lang_haskell::module_scope_declarations has cognitive complexity 24 (threshold 15). Drivers by points: if/else 8 (19 pts), boolean chains 4, loops 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":"doc/src/codegen/v2/lang_haskell/mod.rs"},"region":{"startLine":797}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c21f32ed2d3ea6dca7ffe414a989869bcc41742f00bb984f38dd296f0d37248"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::lint_examples::run (cognitive 24): azul_doc::lint_examples::run has cognitive complexity 24 (threshold 15). Drivers by points: if/else 6 (15 pts), loops 3 (6 pts), boolean chains 3 (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":"doc/src/lint_examples.rs"},"region":{"startLine":623}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bee41b15beace2f30b80ddb1755eeafe64954d82c76837497f13f3940439927"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::module_map::determine_module (cognitive 24): azul_doc::autofix::module_map::determine_module has cognitive complexity 24 (threshold 15). Drivers by points: if/else 8 (13 pts), loops 3 (5 pts), boolean chains 3, match/switch 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":"doc/src/autofix/module_map.rs"},"region":{"startLine":627}}}],"partialFingerprints":{"codehealthFindingId/v1":"839db3ff5bff4878c2c51d98aaaf229d62ddf02b40d3a063b5da8ef95bf789cd"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_csharp::wrappers::emit_wrapper_class (cognitive 24): azul_doc::codegen::v2::lang_csharp::wrappers::emit_wrapper_class has cognitive complexity 24 (threshold 15). Drivers by points: if/else 12 (17 pts), loops 3 (4 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":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":621}}}],"partialFingerprints":{"codehealthFindingId/v1":"67fa7fdeb8e3751e5facb430a9058cda5e8b275f09e160e8882db1b504ce7257"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_haskell::types::layout_oracle (cognitive 24): azul_doc::codegen::v2::lang_haskell::types::layout_oracle has cognitive complexity 24 (threshold 15). Drivers by points: loops 5 (10 pts), if/else 3 (6 pts), match/switch 2 (6 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":"doc/src/codegen/v2/lang_haskell/types.rs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ab424960f27b56e469397210868a8c1f23e3e36ba1fa1eb1520e904c5ab973b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autotest::categorize::classify (cognitive 24): azul_doc::autotest::categorize::classify has cognitive complexity 24 (threshold 15). Drivers by points: boolean chains 18, if/else 6. 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":"doc/src/autotest/categorize.rs"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"a40731f74136901fd63341c7b6cdec8d9dd76104e69bcc842971ef35534a24f2"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_go::wrappers::format_call_args (cognitive 24): azul_doc::codegen::v2::lang_go::wrappers::format_call_args has cognitive complexity 24 (threshold 15). Drivers by points: if/else 13 (22 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":"doc/src/codegen/v2/lang_go/wrappers.rs"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fbe54f3ea749c791ceecd84911f6feb14df505b94015ad222d9ae35c536a1ad"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::mobile::run::deploy_and_run (cognitive 24): azul_doc::mobile::run::deploy_and_run has cognitive complexity 24 (threshold 15). Drivers by points: if/else 7 (16 pts), boolean chains 4, loops 1 (2 pts), 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":"doc/src/mobile/run.rs"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4ce22dd6dc2834967952b6887488b0962266c1a860ac7fc5bf252f62bb99afc"}},{"ruleId":"D2","level":"warning","message":{"text":"A11yTreeMirror::apply (cognitive 24): A11yTreeMirror::apply has cognitive complexity 24 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 5 (6 pts), boolean chains 2, 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":"layout/src/managers/a11y.rs"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b7ee506e3d97d7f4e4e19f07d4c3a0b641a7b7cf547083b4b964a8e85af7cae"}},{"ruleId":"D2","level":"warning","message":{"text":"DenseText::move_cursor_to_prev_word (cognitive 24): DenseText::move_cursor_to_prev_word has cognitive complexity 24 (threshold 15). Drivers by points: if/else 11 (22 pts), loops 2 (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":"layout/src/text3/dense.rs"},"region":{"startLine":638}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9645f5b1515916f73d1e163e2f6941c5477f482a8acbb1a545848297c763e0f"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::finalize_pending_focus_changes (cognitive 24): LayoutWindow::finalize_pending_focus_changes has cognitive complexity 24 (threshold 15). Drivers by points: if/else 14 (18 pts), boolean chains 4, loops 2 (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":"layout/src/window.rs"},"region":{"startLine":9890}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e847fca157021b778e6e1ae1e9fe1de442fe9d8091c2893fb1282c24b891ec2"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::svg::render_svg_group_with_style (cognitive 24): azul_layout::cpurender::svg::render_svg_group_with_style has cognitive complexity 24 (threshold 15). Drivers by points: match/switch 4 (12 pts), if/else 4 (11 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":"layout/src/cpurender/svg.rs"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd1924f8f100e6e8fcf660261dd22e6e900e6a7e8c690c897489aeb597f73d87"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::fc::apply_text_box_trim (cognitive 24): azul_layout::solver3::fc::apply_text_box_trim has cognitive complexity 24 (threshold 15). Drivers by points: match/switch 6 (12 pts), if/else 6 (7 pts), boolean chains 5 (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":"layout/src/solver3/fc.rs"},"region":{"startLine":3432}}}],"partialFingerprints":{"codehealthFindingId/v1":"15594bfcdc42078bddd1b077af079d8751a37105a03cc871213f80df8d6ef5d4"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::document_edit::apply_unwrap (cognitive 24): azul_layout::document_edit::apply_unwrap has cognitive complexity 24 (threshold 15). Drivers by points: if/else 9 (13 pts), match/switch 3 (9 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":"layout/src/document_edit.rs"},"region":{"startLine":454}}}],"partialFingerprints":{"codehealthFindingId/v1":"03ef2e70d941e645fbbf9cd65e07f349072ff4005de95e14248267ab92b600df"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::paged_layout::spine_path_at_y (cognitive 24): azul_layout::solver3::paged_layout::spine_path_at_y has cognitive complexity 24 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 4 (5 pts), boolean chains 2, match/switch 1 (2 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":"layout/src/solver3/paged_layout.rs"},"region":{"startLine":1001}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7e1b5ea5de5c12761dac0276eb419935fcfce7cf35596740f9632c248e0a924"}},{"ruleId":"D2","level":"warning","message":{"text":"preflight_contracts.check_widget_wiring (cognitive 24): preflight_contracts.check_widget_wiring has cognitive complexity 24 (threshold 15). Drivers by points: if/else 8 (20 pts), loops 3 (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":"scripts/preflight_contracts.py"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"64d8b597df24e346c1f6a6bf2e1201da1d671b286a541ee42ee47022eb8653b3"}},{"ruleId":"D2","level":"warning","message":{"text":"_showTreeContextMenu (cognitive 24): _showTreeContextMenu has cognitive complexity 24 (threshold 15). Drivers by points: if/else 8 (18 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 12). Most of this is not in the body itself: 2 of the 24 points are its own statements and the rest belongs to 7 function items inside it that branch (action::insertAfter, action::removeNode, action, \u2026). 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":2778}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3a33d86775fe382f1c965ac2566c8803d723e77a496c20139a5c69fd80f1350"}},{"ruleId":"D2","level":"warning","message":{"text":"Json::jq_all_recursive_depth (cognitive 23): Json::jq_all_recursive_depth has cognitive complexity 23 (threshold 15). Drivers by points: loops 3 (9 pts), if/else 4 (7 pts), match/switch 3 (7 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":"core/src/json.rs"},"region":{"startLine":813}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea16c5a9269b6ddcf8be095028af2b385f9032d98af5d2b6a34a207d57790773"}},{"ruleId":"D2","level":"warning","message":{"text":"MultiCursorState::merge_overlapping (cognitive 23): MultiCursorState::merge_overlapping has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (20 pts), boolean chains 2, 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":"core/src/selection.rs"},"region":{"startLine":734}}}],"partialFingerprints":{"codehealthFindingId/v1":"68fe15e7cefc1c7a84de68176f9cd26c9a168c2826d7266a33fe2ad16bee1976"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::ua_css::evaluate_ua_scrollbar_css (cognitive 23): azul_core::ua_css::evaluate_ua_scrollbar_css has cognitive complexity 23 (threshold 15). Drivers by points: if/else 7 (19 pts), match/switch 1 (2 pts), boolean chains 1, 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":"core/src/ua_css.rs"},"region":{"startLine":1590}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb22b24b21a84fd3b81a7c6824555d26171ec06c78362a6046898e0cf11b18cf"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::xml::user_defined_render_fn (cognitive 23): azul_core::xml::user_defined_render_fn has cognitive complexity 23 (threshold 15). Drivers by points: if/else 6 (12 pts), match/switch 3 (10 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":"core/src/xml.rs"},"region":{"startLine":2993}}}],"partialFingerprints":{"codehealthFindingId/v1":"d94d4a73cafe26e49b3849940ca150bf463c76ea5e37795e575c8b5656d4d24b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::hid::linux::top_level_usage (cognitive 23): azul_dll::desktop::extra::hid::linux::top_level_usage has cognitive complexity 23 (threshold 15). Drivers by points: if/else 6 (15 pts), match/switch 2 (4 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":"dll/src/desktop/extra/hid/linux.rs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7553ad4ea5201f5c76ffd981de1281062ba68c2ebcbe5008929024f7746ec7c"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeResolver::resolve_referenced_types (cognitive 23): TypeResolver::resolve_referenced_types has cognitive complexity 23 (threshold 15). Drivers by points: if/else 5 (14 pts), loops 4 (8 pts), match/switch 1 (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":"doc/src/autofix/type_resolver.rs"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"d014b0b455ca49ec4693f0f392cbbc121d5e802c00f38bc616000c46fe4e0c5e"}},{"ruleId":"D2","level":"warning","message":{"text":"RustGenerator::generate_method_body (cognitive 23): RustGenerator::generate_method_body has cognitive complexity 23 (threshold 15). Drivers by points: if/else 14 (19 pts), match/switch 2 (3 pts), 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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":4377}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7dcbcffba313df09f061de3e2df49ebf605291c5a8200317569c0988a995e20"}},{"ruleId":"D2","level":"warning","message":{"text":"Model::classify (cognitive 23): Model::classify has cognitive complexity 23 (threshold 15). Drivers by points: if/else 6 (15 pts), loops 3 (4 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":"doc/src/codegen/v2/lang_swift/model.rs"},"region":{"startLine":476}}}],"partialFingerprints":{"codehealthFindingId/v1":"fce999fd4f8c00e677f4634f66f084e04ac9ecc721534171f12b2aab08aecfd5"}},{"ruleId":"D2","level":"warning","message":{"text":"Surface::build (cognitive 23): Surface::build has cognitive complexity 23 (threshold 15). Drivers by points: if/else 7 (12 pts), loops 4 (10 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":"doc/src/lint_examples.rs"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4d755bf2a70972caefa01fbb59390f362d9ca02f8b8b1f0e598875bdcceef9a"}},{"ruleId":"D2","level":"warning","message":{"text":"CssWarningCollector::validate_property (cognitive 23): CssWarningCollector::validate_property has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (22 pts), match/switch 1 (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":"doc/src/reftest/mod.rs"},"region":{"startLine":1444}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c74862b6482bdf75e8875ad0689941aaebb2f5a364a12ba714f6eef0b8ea19b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ruby::wrappers::emit_class_wrapper (cognitive 23): azul_doc::codegen::v2::lang_ruby::wrappers::emit_class_wrapper has cognitive complexity 23 (threshold 15). Drivers by points: if/else 14 (18 pts), loops 3 (5 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":"doc/src/codegen/v2/lang_ruby/wrappers.rs"},"region":{"startLine":263}}}],"partialFingerprints":{"codehealthFindingId/v1":"98d798e8495ec3a37106839bb1bc3ff3c09b3323216d149397f7497550edf692"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_odin::types::generate_types (cognitive 23): azul_doc::codegen::v2::lang_odin::types::generate_types has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (17 pts), loops 4, 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":"doc/src/codegen/v2/lang_odin/types.rs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"224b061f1b0efb32449a4313d61b3dafe96bea2bd665857e219ed41067330f02"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_pascal::managed::emit_callback_surface_types (cognitive 23): azul_doc::codegen::v2::lang_pascal::managed::emit_callback_surface_types has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (22 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":"doc/src/codegen/v2/lang_pascal/managed.rs"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"3086c146744f4ef05dcf8d1a025b726c2a28e093b6afeab8300070f7eeffdb70"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_pascal::managed::app_helper_info (cognitive 23): azul_doc::codegen::v2::lang_pascal::managed::app_helper_info has cognitive complexity 23 (threshold 15). Drivers by points: if/else 4 (9 pts), boolean chains 8, loops 2 (3 pts), 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":"doc/src/codegen/v2/lang_pascal/managed.rs"},"region":{"startLine":687}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ecc6fffd0e2d170875d79f536bb1d1901e5a369d806d20257efb6e183aa8db9"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::regression::diff_results (cognitive 23): azul_doc::reftest::regression::diff_results has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (21 pts), boolean chains 1, loops 1 (nesting depth added 11). 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":"doc/src/reftest/regression.rs"},"region":{"startLine":1217}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e59dd13d73776a9a2cc5ebe30ef8b391c1bd49c854e882bae93bacf8969eed9"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::dllgen::deploy::generate_redirect_stubs (cognitive 23): azul_doc::dllgen::deploy::generate_redirect_stubs has cognitive complexity 23 (threshold 15). Drivers by points: if/else 7 (17 pts), loops 2 (3 pts), match/switch 1 (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":"doc/src/dllgen/deploy.rs"},"region":{"startLine":2719}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a1be7f50fd9f9091511881e5709bba0747265180d15c34c5a7dd7e8845bc3d6"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::conformance::recipe (cognitive 23): azul_doc::codegen::v2::conformance::recipe has cognitive complexity 23 (threshold 15). Drivers by points: if/else 12 (22 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":"doc/src/codegen/v2/conformance/mod.rs"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"e29bb30f07e4d3f121a1b598224ce59f698c6bc884e24400876558a2586d6e30"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ruby::types::type_with_ref_to_ruby (cognitive 23): azul_doc::codegen::v2::lang_ruby::types::type_with_ref_to_ruby has cognitive complexity 23 (threshold 15). Drivers by points: if/else 15 (20 pts), boolean chains 2, 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":"doc/src/codegen/v2/lang_ruby/types.rs"},"region":{"startLine":771}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0848a56a2dd859c6a2e333094a1cb63ad5e54459abb9e30d376fd112e359b08"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_go::types::generate (cognitive 23): azul_doc::codegen::v2::lang_go::types::generate has cognitive complexity 23 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 7, 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":"doc/src/codegen/v2/lang_go/types.rs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"825de30adbedaf895c67dcd8581afd14b2fb968c311cfa4bd99c897025844290"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::analysis::reachability::find_entry_points (cognitive 23): azul_doc::autofix::analysis::reachability::find_entry_points has cognitive complexity 23 (threshold 15). Drivers by points: if/else 5 (17 pts), loops 2 (6 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":"doc/src/autofix/analysis/reachability.rs"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"f34874c9b5ee2dc3f39aebb1ae72485412567432b870df51abf790718a5f040f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_zig::c_decls::generate_c_decls (cognitive 23): azul_doc::codegen::v2::lang_zig::c_decls::generate_c_decls has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 6 (7 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":"doc/src/codegen/v2/lang_zig/c_decls.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"21a4c0435bca554228fd68904ee3edd9717a4f8b25a77ca4ff3cfb51640e74c2"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::mobile::install::android_plan (cognitive 23): azul_doc::mobile::install::android_plan has cognitive complexity 23 (threshold 15). Drivers by points: if/else 18 (20 pts), boolean chains 2, match/switch 1 (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":"doc/src/mobile/install.rs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7d568db813d691103d89cbd4f027b8b8ea65d522f72d3216ba46961f5bb3ff2"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_pascal::types::emit_tagged_union (cognitive 23): azul_doc::codegen::v2::lang_pascal::types::emit_tagged_union has cognitive complexity 23 (threshold 15). Drivers by points: loops 4 (11 pts), if/else 6 (10 pts), match/switch 1 (2 pts) (nesting depth added 12). 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":"doc/src/codegen/v2/lang_pascal/types.rs"},"region":{"startLine":402}}}],"partialFingerprints":{"codehealthFindingId/v1":"31b013d01a7244c496ab4f1eef24b1faa901019d1c5614dc85ec05601e538594"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::analysis::extractor::extract_types_from_api (cognitive 23): azul_doc::autofix::analysis::extractor::extract_types_from_api has cognitive complexity 23 (threshold 15). Drivers by points: if/else 5 (13 pts), loops 3 (10 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":"doc/src/autofix/analysis/extractor.rs"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2b9ddbec1d06d44cebef24d95dfbce5e6c7e4989a313a96ed83c0673420c05c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::lint_derives::index_abi_symbols (cognitive 23): azul_doc::lint_derives::index_abi_symbols has cognitive complexity 23 (threshold 15). Drivers by points: if/else 5 (15 pts), loops 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":"doc/src/lint_derives.rs"},"region":{"startLine":1197}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bd3d4a83a1dae0c7bbce79f1b5e96ac24f04febf5762e043c957ad4c71a123a"}},{"ruleId":"D2","level":"warning","message":{"text":"DisplayListGenerator::paint_table_items (cognitive 23): DisplayListGenerator::paint_table_items has cognitive complexity 23 (threshold 15). Drivers by points: if/else 6 (10 pts), loops 4 (10 pts), match/switch 1 (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":"layout/src/solver3/display_list.rs"},"region":{"startLine":6217}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce51a37ca41c658c6a2c5cdddc4e14f39c95af9b34fa9060bbe1c7e0a9132317"}},{"ruleId":"D2","level":"warning","message":{"text":"DisplayListGenerator::paint_table_row_and_cells (cognitive 23): DisplayListGenerator::paint_table_row_and_cells has cognitive complexity 23 (threshold 15). Drivers by points: if/else 6 (16 pts), loops 2 (6 pts), boolean chains 1 (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":"layout/src/solver3/display_list.rs"},"region":{"startLine":6552}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fa6f57bf95d7ad544072f86591a8c7f5a2f5616374d7c000acd25871ac19544"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::apply_node_css_change (cognitive 23): LayoutWindow::apply_node_css_change has cognitive complexity 23 (threshold 15). Drivers by points: if/else 11 (14 pts), loops 3 (4 pts), boolean chains 3, match/switch 2 (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":"layout/src/window.rs"},"region":{"startLine":7327}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d6eb0eb62eb38d607da049b8bc049d55effcbe2372ec31a679dc5556a84ef38"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::invoke_image_callbacks_into_overlay (cognitive 23): LayoutWindow::invoke_image_callbacks_into_overlay has cognitive complexity 23 (threshold 15). Drivers by points: if/else 6 (16 pts), loops 4 (5 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":"layout/src/window.rs"},"region":{"startLine":7638}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff3ef1f9fad3d09498ebca3a0f3ee30368ab12ae1726c3b3148629703b2b2642"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::run_all_threads (cognitive 23): LayoutWindow::run_all_threads has cognitive complexity 23 (threshold 15). Drivers by points: if/else 5 (14 pts), match/switch 2 (6 pts), loops 2 (3 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":"layout/src/window.rs"},"region":{"startLine":14354}}}],"partialFingerprints":{"codehealthFindingId/v1":"db850991541c0f4e969eff540e7a7593aa4ba3c14ea76ff2a3c12cec371ed14f"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::hittest_text_position_global (cognitive 23): LayoutWindow::hittest_text_position_global has cognitive complexity 23 (threshold 15). Drivers by points: if/else 11 (18 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":"layout/src/window.rs"},"region":{"startLine":19938}}}],"partialFingerprints":{"codehealthFindingId/v1":"21ccf2e5079ec85464f63092e86a755de2fa2555452f1d154da0a36db4457c4c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::raster::render_glyphs_lcd (cognitive 23): azul_layout::cpurender::raster::render_glyphs_lcd has cognitive complexity 23 (threshold 15). Drivers by points: if/else 11 (21 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":"layout/src/cpurender/raster.rs"},"region":{"startLine":3157}}}],"partialFingerprints":{"codehealthFindingId/v1":"211e776e72ac621cb62a335ca2f214ace5c449c034134cd2fc4d6bea0681ad37"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::raster::render_text (cognitive 23): azul_layout::cpurender::raster::render_text has cognitive complexity 23 (threshold 15). Drivers by points: if/else 16 (20 pts), boolean chains 2, 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":"layout/src/cpurender/raster.rs"},"region":{"startLine":3730}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5c7d3abace6b243548be03afad65f0ffced2a29d9e68c005eb7e2b30cca7cba"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::raster::render_border_sides (cognitive 23): azul_layout::cpurender::raster::render_border_sides has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (16 pts), boolean chains 5, loops 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":"layout/src/cpurender/raster.rs"},"region":{"startLine":4152}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b84d2f8e0e49f7e9ed83862f786fe725fcec01138e53071741475b57cb56b54"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::getters::scripts_present_in_styled_dom (cognitive 23): azul_layout::solver3::getters::scripts_present_in_styled_dom has cognitive complexity 23 (threshold 15). Drivers by points: if/else 5 (14 pts), loops 3 (6 pts), match/switch 1 (2 pts), boolean chains 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":"layout/src/solver3/getters.rs"},"region":{"startLine":4495}}}],"partialFingerprints":{"codehealthFindingId/v1":"519d480478c35b1a2c1d637df03865e7df637573a8473511d1cbae3c9d88c466"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::telemetry::install_panic_hook (cognitive 23): azul_layout::telemetry::install_panic_hook has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (20 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 13). 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":"layout/src/telemetry/mod.rs"},"region":{"startLine":1209}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5c40d1266da9ffe043fe539d94dfa8cfea94a45c9d19fabe928edc973948e2d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::cache::missing_coverage_faces (cognitive 23): azul_layout::text3::cache::missing_coverage_faces has cognitive complexity 23 (threshold 15). Drivers by points: if/else 6 (14 pts), loops 3 (4 pts), match/switch 1 (3 pts), boolean chains 2 (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":"layout/src/text3/cache.rs"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"98fa4ba71de34c9becbcfa247aa0cf8a2726600105322ed5e5dd07e5cc8d483c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::cache::shape_text_correctly (cognitive 23): azul_layout::text3::cache::shape_text_correctly has cognitive complexity 23 (threshold 15). Drivers by points: if/else 13 (22 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":"layout/src/text3/cache.rs"},"region":{"startLine":10152}}}],"partialFingerprints":{"codehealthFindingId/v1":"043a44041aad6e3e59ead9c6a0d0df449a4835e0307ca658186bbf8c1accc108"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::cache::is_break_opportunity_with_word_break (cognitive 23): azul_layout::text3::cache::is_break_opportunity_with_word_break has cognitive complexity 23 (threshold 15). Drivers by points: if/else 13 (22 pts), 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":"layout/src/text3/cache.rs"},"region":{"startLine":13489}}}],"partialFingerprints":{"codehealthFindingId/v1":"906531d232261955ae9dbd9bb2e54e7833a49f7a4604961aded176d8b78c9b51"}},{"ruleId":"D2","level":"warning","message":{"text":"SwCompositor::init_overlaps (cognitive 23): SwCompositor::init_overlaps has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (18 pts), loops 2 (4 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":"webrender/core/src/compositor/sw_compositor.rs"},"region":{"startLine":958}}}],"partialFingerprints":{"codehealthFindingId/v1":"50ca22997ac675dee4e481f54d534206d55faa6eda30263a34cba7f1fbc9c82e"}},{"ruleId":"D2","level":"warning","message":{"text":"GpuCacheTexture::update (cognitive 23): GpuCacheTexture::update has cognitive complexity 23 (threshold 15). Drivers by points: loops 5 (16 pts), match/switch 3 (7 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":"webrender/core/src/renderer/gpu_cache.rs"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"04bac2d67698f2d45b47c9cc0b4f4e07697bdd0112f16d84ebdef4700ee443aa"}},{"ruleId":"D2","level":"warning","message":{"text":"ResourceCache::request_image (cognitive 23): ResourceCache::request_image has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (13 pts), match/switch 6 (9 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":"webrender/core/src/resource_cache.rs"},"region":{"startLine":954}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e1bf43c3b0b490fbcd258f5584deb5d0c4521d4d55066931a734cfeb47784b8"}},{"ruleId":"D2","level":"warning","message":{"text":"SceneBuilder::build_item (cognitive 23): SceneBuilder::build_item has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (19 pts), match/switch 2 (3 pts), boolean chains 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":"webrender/core/src/scene_building.rs"},"region":{"startLine":1332}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a13c9dda615d8bdb71ff2bfb00237fb933bdda6c6f88b4fc4478a5e6e82b1dc"}},{"ruleId":"D2","level":"warning","message":{"text":"SceneBuilder::pop_stacking_context (cognitive 23): SceneBuilder::pop_stacking_context has cognitive complexity 23 (threshold 15). Drivers by points: if/else 11 (15 pts), loops 2 (5 pts), match/switch 2, 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":"webrender/core/src/scene_building.rs"},"region":{"startLine":2192}}}],"partialFingerprints":{"codehealthFindingId/v1":"20e3f59d648d2ed86062101135fe38916eeaded239ccec45a1bf223db689e820"}},{"ruleId":"D2","level":"warning","message":{"text":"analyze_coverage.main (cognitive 23): analyze_coverage.main has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (10 pts), loops 7, ternaries 4 (6 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/analyze_coverage.py"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c663e984ca5631d6fdcf8e5972dbf3377eb3524eabd85f3a8398f77eb513d03"}},{"ruleId":"D2","level":"warning","message":{"text":"check_links.check_local (cognitive 23): check_links.check_local has cognitive complexity 23 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 4 (6 pts), boolean chains 1, ternaries 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":"scripts/check_links.py"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"46915277a298d9a00c6ddc3bb6bf43038e1cf7ec5b46eb58a58fe6eddf713dfa"}},{"ruleId":"D2","level":"warning","message":{"text":"exportCode (cognitive 23): exportCode has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (10 pts), boolean chains 8, error handling 3, ternaries 1 (2 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":1588}}}],"partialFingerprints":{"codehealthFindingId/v1":"09f4639cb5d24b0ffd40f9e4e9fe01044e981aebdaa6ecb6e9c1806d6bcd1c12"}},{"ruleId":"D2","level":"warning","message":{"text":"update (cognitive 23): update has cognitive complexity 23 (threshold 15). Drivers by points: if/else 12 (18 pts), boolean chains 5 (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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":4004}}}],"partialFingerprints":{"codehealthFindingId/v1":"a22b3633efdde70de2f722c8a173912b42c439fa460ea75d8a1c3863a3b6b10d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::xml::compile_body_node_to_rust_code (cognitive 22): azul_core::xml::compile_body_node_to_rust_code has cognitive complexity 22 (threshold 15). Drivers by points: if/else 4 (8 pts), loops 3 (7 pts), match/switch 2 (7 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":"core/src/xml.rs"},"region":{"startLine":7227}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4e437b974160b600e299673a75b5aba7ecc79f675ecf7f6370d616fc04ff76e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::xml::compile_node_to_rust_code_inner (cognitive 22): azul_core::xml::compile_node_to_rust_code_inner has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (11 pts), loops 2 (5 pts), match/switch 2 (5 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":"core/src/xml.rs"},"region":{"startLine":7462}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe33b86a22ce51afcb9332b0d2fe9dafe36f7c168399fbe82a97a1ad6e9285f3"}},{"ruleId":"D2","level":"warning","message":{"text":"CssPropertyWithConditionsVec::parse_with_conditions (cognitive 22): CssPropertyWithConditionsVec::parse_with_conditions has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (18 pts), match/switch 1 (2 pts), boolean chains 1, 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":"css/src/dynamic_selector.rs"},"region":{"startLine":2075}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2b459eaa50a0caa0168afa45d0a8d0c835349d2cf9358be696bc2f8582cf31b"}},{"ruleId":"D2","level":"warning","message":{"text":"PlatformWindow::process_timers_and_threads (cognitive 22): PlatformWindow::process_timers_and_threads has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11 (14 pts), match/switch 3 (6 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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":12369}}}],"partialFingerprints":{"codehealthFindingId/v1":"33c7dbe540537d4cb4f53930793b4a12855e64bb6f734c89f9ae823bd636d067"}},{"ruleId":"D2","level":"warning","message":{"text":"X11Window::handle_scroll_input_for_seat (cognitive 22): X11Window::handle_scroll_input_for_seat has cognitive complexity 22 (threshold 15). Drivers by points: if/else 14 (21 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":"dll/src/desktop/shell2/linux/x11/events.rs"},"region":{"startLine":868}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae047ccd31cb7125eaea1485b4f1a1691000f6d612c0a9df3106b4bd092c6a93"}},{"ruleId":"D2","level":"warning","message":{"text":"X11Window::apply_size_to_content (cognitive 22): X11Window::apply_size_to_content has cognitive complexity 22 (threshold 15). Drivers by points: if/else 8 (19 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 12). 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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":6006}}}],"partialFingerprints":{"codehealthFindingId/v1":"3582b5d8e8277370587c6a328bd4798d502fca59ecb98cc788157aae77ddde96"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::system_icons::read_icon_svg (cognitive 22): azul_dll::desktop::shell2::linux::system_icons::read_icon_svg has cognitive complexity 22 (threshold 15). Drivers by points: loops 6 (13 pts), if/else 2 (8 pts), boolean chains 1 (nesting depth added 13). 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":"dll/src/desktop/shell2/linux/system_icons.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f4512bcf32b816d6a87556982792d34b753f693ca35cd617dc2c04b15951de5"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::symbol_table::ingest_elf (cognitive 22): azul_dll::web::symbol_table::ingest_elf has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11 (16 pts), boolean chains 2, loops 2, 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":"dll/src/web/symbol_table.rs"},"region":{"startLine":2305}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb6351d35ff07b8d1c94816ea38f006ef38f3d4e904285d1fe8737ee32563e0f"}},{"ruleId":"D2","level":"warning","message":{"text":"PatchSummary::print (cognitive 22): PatchSummary::print has cognitive complexity 22 (threshold 15). Drivers by points: loops 6 (13 pts), if/else 5, match/switch 1 (4 pts) (nesting depth added 10). 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":"doc/src/autofix/message.rs"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"af1efcdfe7f4a9d5a116d0282ca33ec21d1e458fdb0e9d899b24ca0515e2a645"}},{"ruleId":"D2","level":"warning","message":{"text":"CGenerator::generate_monomorphized_type (cognitive 22): CGenerator::generate_monomorphized_type has cognitive complexity 22 (threshold 15). Drivers by points: if/else 5 (11 pts), loops 5 (10 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":"doc/src/codegen/v2/lang_c.rs"},"region":{"startLine":513}}}],"partialFingerprints":{"codehealthFindingId/v1":"e453a8cef1881c9c94063d51ffa708bf0ce55e5c84bb978737aa1cec7c60a76b"}},{"ruleId":"D2","level":"warning","message":{"text":"CGenerator::generate_tagged_union (cognitive 22): CGenerator::generate_tagged_union has cognitive complexity 22 (threshold 15). Drivers by points: if/else 5 (9 pts), loops 5 (9 pts), match/switch 2 (4 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":"doc/src/codegen/v2/lang_c.rs"},"region":{"startLine":764}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c5794608ce193fafac8bb4d6318ba9340a2087418d3b6a62c7088da41845ab2"}},{"ruleId":"D2","level":"warning","message":{"text":"Emitter::emit_class (cognitive 22): Emitter::emit_class has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11 (13 pts), loops 2 (4 pts), match/switch 2 (4 pts), boolean chains 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":"doc/src/codegen/v2/lang_crystal/wrappers.rs"},"region":{"startLine":479}}}],"partialFingerprints":{"codehealthFindingId/v1":"562d88a032716598577574d36730d00c85fcda24ee5bcb62a23897b367a56a50"}},{"ruleId":"D2","level":"warning","message":{"text":"Emitter::method_name (cognitive 22): Emitter::method_name has cognitive complexity 22 (threshold 15). Drivers by points: if/else 13 (15 pts), boolean chains 7 (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":"doc/src/codegen/v2/lang_crystal/wrappers.rs"},"region":{"startLine":963}}}],"partialFingerprints":{"codehealthFindingId/v1":"6841dccc56842a6077c2dccb221817fad27022183b39cde1610a4f59a998ac17"}},{"ruleId":"D2","level":"warning","message":{"text":"PythonGenerator::generate_variant_accessors (cognitive 22): PythonGenerator::generate_variant_accessors has cognitive complexity 22 (threshold 15). Drivers by points: if/else 8 (18 pts), match/switch 1 (2 pts), boolean chains 1, loops 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":"doc/src/codegen/v2/lang_python.rs"},"region":{"startLine":2246}}}],"partialFingerprints":{"codehealthFindingId/v1":"49b6d066dc562f0d4050c0c25011ccc09db992a15b31bbf4cf33ce719bb90d5e"}},{"ruleId":"D2","level":"warning","message":{"text":"Emitter::emit_class_fields (cognitive 22): Emitter::emit_class_fields has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (16 pts), match/switch 2 (5 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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":1191}}}],"partialFingerprints":{"codehealthFindingId/v1":"1376230399c8fa2a0c22c05bcf6bea973f036ccc07f8b567313f32ecd524191b"}},{"ruleId":"D2","level":"warning","message":{"text":"Emitter::emit_constants (cognitive 22): Emitter::emit_constants has cognitive complexity 22 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 4 (7 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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":3549}}}],"partialFingerprints":{"codehealthFindingId/v1":"8afaf101772b0fa8e6c9bd50dfd3d83696dc7051b2d613904bc16028a5897a09"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ruby::wrappers::emit_wrappers (cognitive 22): azul_doc::codegen::v2::lang_ruby::wrappers::emit_wrappers has cognitive complexity 22 (threshold 15). Drivers by points: if/else 9 (16 pts), boolean chains 3, loops 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":"doc/src/codegen/v2/lang_ruby/wrappers.rs"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"621d623df73d121839687c04ff49ee3215672f8ab1d35b0b3cd11797895c3420"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_nim::types::generate_types (cognitive 22): azul_doc::codegen::v2::lang_nim::types::generate_types has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 8 (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":"doc/src/codegen/v2/lang_nim/types.rs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"14833239267b7e0bfe0bd4b3a73eb8a1ce3fe673a1577e02801ed5f07e6b02a0"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::type_resolver::is_known_c_compatible_type (cognitive 22): azul_doc::autofix::type_resolver::is_known_c_compatible_type has cognitive complexity 22 (threshold 15). Drivers by points: if/else 4 (13 pts), loops 1 (5 pts), match/switch 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":"doc/src/autofix/type_resolver.rs"},"region":{"startLine":880}}}],"partialFingerprints":{"codehealthFindingId/v1":"afdc4579f839c7f27061790ae9b8cfb316560af6bbd1aa01a3537c5695f66611"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_lisp::types::emit_tagged_union (cognitive 22): azul_doc::codegen::v2::lang_lisp::types::emit_tagged_union has cognitive complexity 22 (threshold 15). Drivers by points: loops 6 (12 pts), if/else 5 (8 pts), match/switch 1 (2 pts) (nesting depth added 10). 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":"doc/src/codegen/v2/lang_lisp/types.rs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"54c7aa1ce8aca9e23a863f5dede696420c57dcdfdda0bf169e6fd5e15ae6fdc8"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_lua::wrappers::emit_struct_wrapper (cognitive 22): azul_doc::codegen::v2::lang_lua::wrappers::emit_struct_wrapper has cognitive complexity 22 (threshold 15). Drivers by points: if/else 10 (13 pts), boolean chains 4, loops 3, match/switch 1 (2 pts) (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":"doc/src/codegen/v2/lang_lua/wrappers.rs"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffda115ce7fcb3ace97654cd23652ab66e232cfbff930da4d7afe5db83fa62ae"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_node::types::emit_monomorphized_alias (cognitive 22): azul_doc::codegen::v2::lang_node::types::emit_monomorphized_alias has cognitive complexity 22 (threshold 15). Drivers by points: loops 5 (11 pts), if/else 6 (10 pts), match/switch 1 (nesting depth added 10). 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":"doc/src/codegen/v2/lang_node/types.rs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"1539bf389e8e68be59fdb7b851c441a6946b78d9c1090a85382e5b6b65635541"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::generate_reftest_page (cognitive 22): azul_doc::reftest::generate_reftest_page has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 1 (3 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":"doc/src/reftest/mod.rs"},"region":{"startLine":367}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bf5e4471934f7cf8f4ecc28393d896d815d37ecdb90f611f325dde4ca00f453"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_perl::types::type_with_ref_to_perl (cognitive 22): azul_doc::codegen::v2::lang_perl::types::type_with_ref_to_perl has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12 (17 pts), boolean chains 4, 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":"doc/src/codegen/v2/lang_perl/types.rs"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"dee28154a71a391225561eedeae28606dc3d194027c5aac4d3bac2510ac01c3d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ada::functions::emit_one (cognitive 22): azul_doc::codegen::v2::lang_ada::functions::emit_one has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11 (15 pts), loops 3 (5 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":"doc/src/codegen/v2/lang_ada/functions.rs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"c330a5d3581c3a7b1628240215c20fc6bb71bd663b9a43d910a37b7b4ecd4d8f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::patch_format::explain_change (cognitive 22): azul_doc::autofix::patch_format::explain_change has cognitive complexity 22 (threshold 15). Drivers by points: if/else 14 (21 pts), 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":"doc/src/autofix/patch_format.rs"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"54d45662148041137a2d11f626bf79dcdaf3a0a81f1f42d0f0b677bd83afc35b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::analysis::reachability::extract_dependencies (cognitive 22): azul_doc::autofix::analysis::reachability::extract_dependencies has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 4 (8 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":"doc/src/autofix/analysis/reachability.rs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"1179d315e06217199c4748712dee8f80a2501a9f74a48d0abec985bc5dcb07a6"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::gene2e::closure_relayed_keys (cognitive 22): azul_doc::gene2e::closure_relayed_keys has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (17 pts), loops 2 (3 pts), boolean chains 2 (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":"doc/src/gene2e.rs"},"region":{"startLine":897}}}],"partialFingerprints":{"codehealthFindingId/v1":"00a82c2770594120567bc16e9dbc3137c2f71e9a65014b741e8d1dd31484ac14"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::diff::compare_callback_typedef (cognitive 22): azul_doc::autofix::diff::compare_callback_typedef has cognitive complexity 22 (threshold 15). Drivers by points: if/else 5 (14 pts), boolean chains 3, loops 1 (3 pts), match/switch 2 (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":"doc/src/autofix/diff.rs"},"region":{"startLine":1935}}}],"partialFingerprints":{"codehealthFindingId/v1":"767f0e2bd0ee918adff4c64dea1c45f262f1d273c36c45e5fae119d5733f95fb"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::diff::collect_vec_required_types (cognitive 22): azul_doc::autofix::diff::collect_vec_required_types has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12 (18 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":"doc/src/autofix/diff.rs"},"region":{"startLine":2534}}}],"partialFingerprints":{"codehealthFindingId/v1":"a95f8d640d564412430ff78a3e73d4ac98c2459e193ff9aa3f07c650f385871d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::raster::extract_mask_data (cognitive 22): azul_layout::cpurender::raster::extract_mask_data has cognitive complexity 22 (threshold 15). Drivers by points: loops 4 (9 pts), if/else 3 (6 pts), match/switch 3 (5 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":"layout/src/cpurender/raster.rs"},"region":{"startLine":904}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9f983b26fe6e721d1bf08d20d8fe34c45f9524fca7bb6eaeff897275a056c5d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::widgets::number_input::is_float_prefix (cognitive 22): azul_layout::widgets::number_input::is_float_prefix has cognitive complexity 22 (threshold 15). Drivers by points: boolean chains 10, if/else 5 (7 pts), loops 3 (5 pts) (nesting depth added 4). 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":"layout/src/widgets/number_input.rs"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba7e936dac0deddc1d2f937c3b09867e881699563374c361c970d743d43fd8a7"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::display_list::rasterize_svg_clip_to_r8 (cognitive 22): azul_layout::solver3::display_list::rasterize_svg_clip_to_r8 has cognitive complexity 22 (threshold 15). Drivers by points: if/else 4 (13 pts), match/switch 2 (4 pts), loops 2 (3 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":"layout/src/solver3/display_list.rs"},"region":{"startLine":11063}}}],"partialFingerprints":{"codehealthFindingId/v1":"faf606e216ce96055878e242f1d468f221825eb7d2c582058a735081903eedfb"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::script::detect_script (cognitive 22): azul_layout::text3::script::detect_script has cognitive complexity 22 (threshold 15). Drivers by points: if/else 8 (19 pts), loops 2 (3 pts) (nesting depth added 12). 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":"layout/src/text3/script.rs"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"23e5840a7739be89b58cfeb2e639e9564b3e7482c1739e5d1e5ddff922ceebce"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::default::shape_text_internal (cognitive 22): azul_layout::text3::default::shape_text_internal has cognitive complexity 22 (threshold 15). Drivers by points: if/else 14 (18 pts), boolean chains 2, loops 2 (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":"layout/src/text3/default.rs"},"region":{"startLine":762}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bb1dd9828edf58dde4fb4d60fa0c95541a573b5777c1ff68245e758f3f51fa6"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::dom_lint::has_readable_text_label (cognitive 22): azul_layout::dom_lint::has_readable_text_label has cognitive complexity 22 (threshold 15). Drivers by points: if/else 6 (16 pts), loops 2 (5 pts), boolean chains 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":"layout/src/dom_lint.rs"},"region":{"startLine":1089}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fa937c13287b22ea75576eafda478d88b2cd81658d1b5f20c5da59c574aa9a7"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::cache::reposition_block_flow_siblings (cognitive 22): azul_layout::solver3::cache::reposition_block_flow_siblings has cognitive complexity 22 (threshold 15). Drivers by points: if/else 9 (17 pts), match/switch 2 (4 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":"layout/src/solver3/cache.rs"},"region":{"startLine":1028}}}],"partialFingerprints":{"codehealthFindingId/v1":"658ad8a64c9deb98bb6e09156bd10cc572faa713d6236e24b5cd8146ce042066"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::widgets::map::spawn_pending_tile_fetches (cognitive 22): azul_layout::widgets::map::spawn_pending_tile_fetches has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11 (15 pts), loops 3, boolean chains 2, match/switch 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":"layout/src/widgets/map.rs"},"region":{"startLine":2045}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4397f31970bc49bcb96eafc83e06387137cb8acbc57b502b2667381a220bdf9"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::fc::layout_table_fc (cognitive 22): azul_layout::solver3::fc::layout_table_fc has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12 (17 pts), loops 2 (3 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":"layout/src/solver3/fc.rs"},"region":{"startLine":6282}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ff31b49e55578f8db9b91587e9bfcc3e15d6bae38f3e7add4e3358ec2502d83"}},{"ruleId":"D2","level":"warning","message":{"text":"ResourceCache::load_capture (cognitive 22): ResourceCache::load_capture has cognitive complexity 22 (threshold 15). Drivers by points: match/switch 5 (11 pts), if/else 4 (8 pts), loops 3 (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":"webrender/core/src/resource_cache.rs"},"region":{"startLine":2146}}}],"partialFingerprints":{"codehealthFindingId/v1":"da80e2198314c207f9bf407c1a452ab180986a014e516fc6cdbed7584f600669"}},{"ruleId":"D2","level":"warning","message":{"text":"CsBorderSegmentFrag::main (cognitive 22): CsBorderSegmentFrag::main has cognitive complexity 22 (threshold 15). Drivers by points: if/else 14 (20 pts), boolean chains 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":"webrender/swgl/src/shaders/cs_border_segment.rs"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"9094c66853f9ea2f156777a5c06d91296ce34c10de344cc2b6c1eb4f53c9f734"}},{"ruleId":"D2","level":"warning","message":{"text":"sc_common._skip_to_item_body (cognitive 22): sc_common._skip_to_item_body has cognitive complexity 22 (threshold 15). Drivers by points: if/else 8 (18 pts), boolean chains 2, 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":"scripts/supply-chain/sc_common.py"},"region":{"startLine":470}}}],"partialFingerprints":{"codehealthFindingId/v1":"72ea2d02abff91c68848e3775a60c4a43d1442185a4ada483182a41d3bcc9bc5"}},{"ruleId":"D2","level":"warning","message":{"text":"_loadNodeClipInfo (cognitive 22): _loadNodeClipInfo has cognitive complexity 22 (threshold 15). Drivers by points: boolean chains 10, if/else 6 (8 pts), ternaries 2 (3 pts), error handling 1 (nesting depth added 3). Of this number, 21 points are the body\u0027s own statements and 1 belongs 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":1313}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b8f5cf151f467949ed3d1e5c34c879f5dd474504e20e1a314e2f6a902210bac"}},{"ruleId":"D2","level":"warning","message":{"text":"terminalKeydown (cognitive 22): terminalKeydown has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12 (22 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":3011}}}],"partialFingerprints":{"codehealthFindingId/v1":"518146fc759d53076c3edb9e0cf1dc10a21f7e671ae52d30dcfb9d005b86ab61"}},{"ruleId":"D2","level":"warning","message":{"text":"StyledDom::create_from_compact_dom (cognitive 21): StyledDom::create_from_compact_dom has cognitive complexity 21 (threshold 15). Drivers by points: if/else 9 (14 pts), loops 2 (5 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":"core/src/styled_dom.rs"},"region":{"startLine":1301}}}],"partialFingerprints":{"codehealthFindingId/v1":"5086d7f640306525e4f4343c84784d3e1bb304483c5e54c5b4e0ec0fa2566930"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::prop_cache::clone_inheritable_property (cognitive 21): azul_core::prop_cache::clone_inheritable_property has cognitive complexity 21 (threshold 15). Drivers by points: if/else 21. 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":"core/src/prop_cache.rs"},"region":{"startLine":1493}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2e8b6ec880ebdb34820ea7031c2481edef064fd7fda06ed449021726e12594e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::xml::compile_and_format_dynamic_items (cognitive 21): azul_core::xml::compile_and_format_dynamic_items has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (14 pts), match/switch 2 (5 pts), loops 1 (2 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":"core/src/xml.rs"},"region":{"startLine":7400}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4666cd8635b85fd581d0bbada0e9c095977cac33004c348d03543a7fc9f0690"}},{"ruleId":"D2","level":"warning","message":{"text":"VtDecoder::decode (cognitive 21): VtDecoder::decode has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (14 pts), boolean chains 3, match/switch 2 (3 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":"dll/src/desktop/extra/video_codec/videotoolbox.rs"},"region":{"startLine":903}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e77bcddd8ac7bcafa88b6faaa51b31d9ca2e7964097c600e18a26ef490882f8"}},{"ruleId":"D2","level":"warning","message":{"text":"PlatformWindow::feed_seat_gesture_sessions (cognitive 21): PlatformWindow::feed_seat_gesture_sessions has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (12 pts), boolean chains 3, loops 3, match/switch 2 (3 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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":9182}}}],"partialFingerprints":{"codehealthFindingId/v1":"768744392253ca16f9451f24adaeba0ca27d743246a441839f585e0b61b60581"}},{"ruleId":"D2","level":"warning","message":{"text":"WaylandWindow::handle_process_event_result (cognitive 21): WaylandWindow::handle_process_event_result has cognitive complexity 21 (threshold 15). Drivers by points: if/else 5 (17 pts), loops 1 (3 pts), match/switch 1 (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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":3716}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc05ed875302c405d4cbe424119f63815262f0a991b468583ba1c23c7776c148"}},{"ruleId":"D2","level":"warning","message":{"text":"MacOSWindow::initialize_display_link (cognitive 21): MacOSWindow::initialize_display_link has cognitive complexity 21 (threshold 15). Drivers by points: if/else 13 (17 pts), boolean chains 3, match/switch 1 (nesting depth added 4). Most of this is not in the body itself: 8 of the 21 points are its own statements and the rest belongs to 2 function items inside it that branch (mark_views_dirty_on_main, display_link_callback). 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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":4724}}}],"partialFingerprints":{"codehealthFindingId/v1":"e93ae3ea5bbb0df5a70f0c8cc0191d9432daaee4e8c095ab2e51fd159d2e5b2e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::system_style::gtk_ini_extras (cognitive 21): azul_dll::desktop::shell2::linux::system_style::gtk_ini_extras has cognitive complexity 21 (threshold 15). Drivers by points: if/else 13 (21 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":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":1435}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f787f6edbb0b642e718c8e4efc5162cac0fe3992a36a66eef7e376ff83a624b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::system_style::discover_riced_style (cognitive 21): azul_dll::desktop::shell2::linux::system_style::discover_riced_style has cognitive complexity 21 (threshold 15). Drivers by points: if/else 14 (20 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":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":1994}}}],"partialFingerprints":{"codehealthFindingId/v1":"c35407928eff372a7d92e65e798408ba333959555297c59299e41deb4a9a1857"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::eyedropper::magnifier_image (cognitive 21): azul_dll::desktop::eyedropper::magnifier_image has cognitive complexity 21 (threshold 15). Drivers by points: loops 4 (10 pts), if/else 3 (7 pts), boolean chains 4 (nesting depth added 10). 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":"dll/src/desktop/eyedropper/mod.rs"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b07eeceb12a4f418a2936faca3fda9265d4843852d6cb3e88f4463ced89d45d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::patch_wasm_add_data_segments (cognitive 21): azul_dll::web::transpiler_remill::patch_wasm_add_data_segments has cognitive complexity 21 (threshold 15). Drivers by points: if/else 12 (17 pts), loops 2 (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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":5271}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8beafb7d159c56c40c5334d7c1e427bf7d3a2432a798c5592d641b254022420"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::sqlite::sync::apply_remote (cognitive 21): azul_dll::desktop::extra::sqlite::sync::apply_remote has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (15 pts), match/switch 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":"dll/src/desktop/extra/sqlite/mod.rs"},"region":{"startLine":1812}}}],"partialFingerprints":{"codehealthFindingId/v1":"e513fe429d520346edd675090c2cbbb6b99cabf9322f5cc1ecdfa6d1a1384915"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::media_keys::apple::start (cognitive 21): azul_dll::desktop::extra::media_keys::apple::start has cognitive complexity 21 (threshold 15). Drivers by points: if/else 14 (21 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":"dll/src/desktop/extra/media_keys/apple.rs"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"69f6ddc200d41df9f1b15943eaae821584f9b9d63ee6e6b25d30528c41a57587"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::sensors::windows::start (cognitive 21): azul_dll::desktop::extra::sensors::windows::start has cognitive complexity 21 (threshold 15). Drivers by points: if/else 13 (20 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":"dll/src/desktop/extra/sensors/windows.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"f593212ab2721bf61187776ef8cf111b1dace5d7dbc894b5b2b15437d2a41d72"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeIndex::resolve (cognitive 21): TypeIndex::resolve has cognitive complexity 21 (threshold 15). Drivers by points: if/else 11 (18 pts), 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":"doc/src/autofix/type_index.rs"},"region":{"startLine":854}}}],"partialFingerprints":{"codehealthFindingId/v1":"18358979ec8eb0c12f6a395f59119ac89efa00961c99ad0243f2f4b6dab63b8f"}},{"ruleId":"D2","level":"warning","message":{"text":"IRBuilder::build_type_aliases (cognitive 21): IRBuilder::build_type_aliases has cognitive complexity 21 (threshold 15). Drivers by points: if/else 5 (13 pts), match/switch 1 (4 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":"doc/src/codegen/v2/ir_builder.rs"},"region":{"startLine":1319}}}],"partialFingerprints":{"codehealthFindingId/v1":"29fc682e8afc01211424080f56bd1cc9ab01e284b155e9dae70dd017b8b330f5"}},{"ruleId":"D2","level":"warning","message":{"text":"IRBuilder::build_api_functions (cognitive 21): IRBuilder::build_api_functions has cognitive complexity 21 (threshold 15). Drivers by points: loops 4 (11 pts), if/else 3 (9 pts), boolean chains 1 (nesting depth added 13). 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":"doc/src/codegen/v2/ir_builder.rs"},"region":{"startLine":1598}}}],"partialFingerprints":{"codehealthFindingId/v1":"eaa78e4c9673884c127da03ba3bfcaf58a3ebc38d3dabd5f38b0dd6f674753f9"}},{"ruleId":"D2","level":"warning","message":{"text":"Ctx::plan_classes (cognitive 21): Ctx::plan_classes has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 3 (4 pts), match/switch 1 (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":"doc/src/codegen/v2/lang_fortran/wrappers.rs"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bd0209847a04aa927958dba9eeb0244772c27b7f5cd364c4a72bf3dc0b0a5c3"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ruby::wrappers::emit_method (cognitive 21): azul_doc::codegen::v2::lang_ruby::wrappers::emit_method has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (12 pts), boolean chains 6, loops 1 (2 pts), match/switch 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, 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":"doc/src/codegen/v2/lang_ruby/wrappers.rs"},"region":{"startLine":980}}}],"partialFingerprints":{"codehealthFindingId/v1":"711327e9b9baed48d05e9a96bca71f15d3042c1a42a5056837be7fc8498eafa5"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_go::managed::go_param_names (cognitive 21): azul_doc::codegen::v2::lang_go::managed::go_param_names has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (12 pts), loops 3 (6 pts), boolean chains 3 (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":"doc/src/codegen/v2/lang_go/managed.rs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d00903a633597ed9cc64eb57b624a303a70077d4ca396e87d15ab429123b916"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_pascal::managed::emit_managed_implementation (cognitive 21): azul_doc::codegen::v2::lang_pascal::managed::emit_managed_implementation has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (14 pts), loops 5 (6 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":"doc/src/codegen/v2/lang_pascal/managed.rs"},"region":{"startLine":1097}}}],"partialFingerprints":{"codehealthFindingId/v1":"69d6b656c1749a0e71a0ae0e5f43531e7b664d0cf4d03ed9129e0ac8e60105df"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::patch::fallback::build_crate_name_cache (cognitive 21): azul_doc::patch::fallback::build_crate_name_cache has cognitive complexity 21 (threshold 15). Drivers by points: if/else 5 (20 pts), loops 1 (nesting depth added 15). 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":"doc/src/patch/fallback.rs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ff46c0ba719fa81d3f4ef8f4ff0032648df75a875fce4a1f80b3781827c4dd7"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_lua::wrappers::emit_data_enum_wrapper (cognitive 21): azul_doc::codegen::v2::lang_lua::wrappers::emit_data_enum_wrapper has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (10 pts), match/switch 3 (6 pts), loops 3, 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":"doc/src/codegen/v2/lang_lua/wrappers.rs"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"631734d86f978c5649f5ee5c7b03687aac2aafb7fdb010045ca96bf0511ab27e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_node::wrappers::emit_node_option_result_body (cognitive 21): azul_doc::codegen::v2::lang_node::wrappers::emit_node_option_result_body has cognitive complexity 21 (threshold 15). Drivers by points: if/else 16 (21 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":"doc/src/codegen/v2/lang_node/wrappers.rs"},"region":{"startLine":1396}}}],"partialFingerprints":{"codehealthFindingId/v1":"63d4c63aec867c1c8d0d1462e195acf5dc0d26a3f4a1a8fda6dfe32e3b2ee051"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_reexports::generate_reexports_with_config (cognitive 21): azul_doc::codegen::v2::lang_reexports::generate_reexports_with_config has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 6 (7 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":"doc/src/codegen/v2/lang_reexports.rs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6a58d0a176fce3d14a28ac69e20dfdc59146b8b2f6f8374d1041b9092a0eb94"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::workspace::generate_synthetic_vec_types (cognitive 21): azul_doc::autofix::workspace::generate_synthetic_vec_types has cognitive complexity 21 (threshold 15). Drivers by points: if/else 11 (16 pts), loops 1 (3 pts), boolean chains 1, 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":"doc/src/autofix/workspace.rs"},"region":{"startLine":1390}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f18ce601b3b8d9fca40f6639ae0ade849b1ec20b2c91a18b50ff4db59827904"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autotest::render_task_file (cognitive 21): azul_doc::autotest::render_task_file has cognitive complexity 21 (threshold 15). Drivers by points: if/else 9 (17 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":"doc/src/autotest/mod.rs"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f6df65095f3d701b0771dd59254db32a17ed4253acd8b61f71824411eae442b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_haskell::wrappers::arg_plan (cognitive 21): azul_doc::codegen::v2::lang_haskell::wrappers::arg_plan has cognitive complexity 21 (threshold 15). Drivers by points: if/else 13 (17 pts), boolean chains 4 (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":"doc/src/codegen/v2/lang_haskell/wrappers.rs"},"region":{"startLine":1778}}}],"partialFingerprints":{"codehealthFindingId/v1":"415dde16a9bf13e66e088ce78c65e244dcafd768edce2d609b539604c2069f01"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::utils::analyze::get_all_imports (cognitive 21): azul_doc::utils::analyze::get_all_imports has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 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":"doc/src/utils/analyze.rs"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"09aa7ef8d36f33c2397cfa12e7951cb24210857db671acf8562ff67ff4672e26"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_zig::wrappers::emit_raw_instance_methods (cognitive 21): azul_doc::codegen::v2::lang_zig::wrappers::emit_raw_instance_methods has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (14 pts), match/switch 2 (4 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":"doc/src/codegen/v2/lang_zig/wrappers.rs"},"region":{"startLine":956}}}],"partialFingerprints":{"codehealthFindingId/v1":"baa73d8a1999a93e489cca676af228e07362820327f0700bac731222c2b60efa"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::apply_midlevel::parse_args (cognitive 21): azul_doc::reftest::apply_midlevel::parse_args has cognitive complexity 21 (threshold 15). Drivers by points: if/else 16 (17 pts), boolean chains 3, loops 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":"doc/src/reftest/apply_midlevel.rs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e01c49de3da7f73575483526d625bee698918135920287effc80d3ac882a636"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_pascal::types::generate_types (cognitive 21): azul_doc::codegen::v2::lang_pascal::types::generate_types has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 5, 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":"doc/src/codegen/v2/lang_pascal/types.rs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fdb91cf1343c647ddb41a1dc0d7e4b61b5a6ece5b93240c9c8193f30dbe0fa7"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::pipeline::extract_metadata_from_string (cognitive 21): azul_doc::reftest::pipeline::extract_metadata_from_string has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (15 pts), match/switch 1 (5 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":"doc/src/reftest/pipeline.rs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"56d3db285704c27a16d161b7e68c04925b6e5a806e6dee58422f94ffc8d69882"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_go::wrappers::emit_static_factory (cognitive 21): azul_doc::codegen::v2::lang_go::wrappers::emit_static_factory has cognitive complexity 21 (threshold 15). Drivers by points: if/else 17 (19 pts), loops 1, match/switch 1 (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":"doc/src/codegen/v2/lang_go/wrappers.rs"},"region":{"startLine":338}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4815697471ebeb20bdf876c46bd55c0030575a7b3f3a001db2666d8cd94dd68"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::docgen::apidocs::render_member (cognitive 21): azul_doc::docgen::apidocs::render_member has cognitive complexity 21 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 4 (6 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":"doc/src/docgen/apidocs.rs"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"8399775721f91d5f5932980ff526d7de2b4b380ee8a735b9c70ea4f3f22da1d3"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_freebasic::map_type_to_fb (cognitive 21): azul_doc::codegen::v2::lang_freebasic::map_type_to_fb has cognitive complexity 21 (threshold 15). Drivers by points: if/else 11 (18 pts), boolean chains 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":"doc/src/codegen/v2/lang_freebasic/mod.rs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec3bf06b112c34462a4b0d9f75a7590408315c96679da71802505b01fd785574"}},{"ruleId":"D2","level":"warning","message":{"text":"DenseText::to_unified_items (cognitive 21): DenseText::to_unified_items has cognitive complexity 21 (threshold 15). Drivers by points: loops 4 (9 pts), match/switch 2 (6 pts), if/else 2 (4 pts), boolean chains 2 (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":"layout/src/text3/dense.rs"},"region":{"startLine":748}}}],"partialFingerprints":{"codehealthFindingId/v1":"854d26ba70aacdd8faef96f8cac8afba93de0114f17a16720228b688d81cf020"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::handle_focus_change_for_cursor_blink (cognitive 21): LayoutWindow::handle_focus_change_for_cursor_blink has cognitive complexity 21 (threshold 15). Drivers by points: if/else 13 (20 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":"layout/src/window.rs"},"region":{"startLine":9620}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1e4f3330af887528a3e7ae146a4df8714db1279073951360290a1723c094d59"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::raster::render_box_shadow::blit_clipped (cognitive 21): azul_layout::cpurender::raster::render_box_shadow::blit_clipped has cognitive complexity 21 (threshold 15). Drivers by points: if/else 9 (21 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. This shape REPEATS in the file: one other method here (azul_layout::cpurender::raster::render_box_shadow) 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":"layout/src/cpurender/raster.rs"},"region":{"startLine":473}}}],"partialFingerprints":{"codehealthFindingId/v1":"28667fe7b9df8b6d38d51162a0111787bc5b1711fb96b7a8790bc0236b7bc074"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::getters::resolve_font_chains_fast (cognitive 21): azul_layout::solver3::getters::resolve_font_chains_fast has cognitive complexity 21 (threshold 15). Drivers by points: if/else 9 (17 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":"layout/src/solver3/getters.rs"},"region":{"startLine":5008}}}],"partialFingerprints":{"codehealthFindingId/v1":"8df1939729df9de21697ff821649682d19cad3927d6f24f70b73d2ac22181bb0"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::telemetry::drain_probe_events (cognitive 21): azul_layout::telemetry::drain_probe_events has cognitive complexity 21 (threshold 15). Drivers by points: if/else 4 (12 pts), loops 2 (6 pts), match/switch 1 (2 pts), boolean chains 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":"layout/src/telemetry/mod.rs"},"region":{"startLine":729}}}],"partialFingerprints":{"codehealthFindingId/v1":"866c2890cbdabe4a42f677556b64e3efdf88acd804d7eeca672db87de520db6a"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::pixmap::blit_buffer_sub (cognitive 21): azul_layout::cpurender::pixmap::blit_buffer_sub has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (15 pts), boolean chains 3, 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. This shape REPEATS in the file: one other method here (azul_layout::cpurender::pixmap::blit_buffer) 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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":1493}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7af55e858423dcba8f5338df6b0cee24f49fe3eeeb00101a92505369098603a"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::pixmap::blit_buffer (cognitive 21): azul_layout::cpurender::pixmap::blit_buffer has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (15 pts), boolean chains 3, 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. This shape REPEATS in the file: one other method here (azul_layout::cpurender::pixmap::blit_buffer_sub) 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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":1553}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fd162b1c2ebb151b967d5e5319ee1e1721ab58219d906af8437898ca85f340f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::compositor::scroll_fast_path_eligible (cognitive 21): azul_layout::cpurender::compositor::scroll_fast_path_eligible has cognitive complexity 21 (threshold 15). Drivers by points: match/switch 4 (9 pts), if/else 6 (8 pts), boolean chains 2, loops 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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":1789}}}],"partialFingerprints":{"codehealthFindingId/v1":"52c2fa29c23bdc34cc059a0bcb16a62f452addbc9ea12cb737e8051a44645405"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::dialogs::markdown::render_markdown (cognitive 21): azul_layout::dialogs::markdown::render_markdown has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (17 pts), match/switch 1 (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":"layout/src/dialogs/markdown.rs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3b1d559a34bf6ab94063a319190e0da78e4f5f368f289c1e3d3ef22522609ba"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::dialogs::markdown::strip_inline (cognitive 21): azul_layout::dialogs::markdown::strip_inline has cognitive complexity 21 (threshold 15). Drivers by points: if/else 3 (12 pts), loops 2 (7 pts), match/switch 1 (2 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":"layout/src/dialogs/markdown.rs"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ef97afc84e5ce748627eb60465cef0ece93bdbebce4adf2a9872ff8218d317e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::updater::download_update (cognitive 21): azul_layout::updater::download_update has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (15 pts), loops 2 (3 pts), match/switch 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":"layout/src/updater.rs"},"region":{"startLine":1964}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea334d95e5574ba66c44b46d7d3f6362bfffaedd82b1cd1485e799a909f4f3b7"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::widgets::themes::flora::button (cognitive 21): azul_layout::widgets::themes::flora::button has cognitive complexity 21 (threshold 15). Drivers by points: if/else 11 (13 pts), match/switch 3 (5 pts), boolean chains 3 (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":"layout/src/widgets/themes/flora.rs"},"region":{"startLine":789}}}],"partialFingerprints":{"codehealthFindingId/v1":"f942e2e3841a92cacd15d2530ed9bd9f72365639778578ed9cbddbc7a619f165"}},{"ruleId":"D2","level":"warning","message":{"text":"OpaqueBatchList::set_params_and_get_batch (cognitive 21): OpaqueBatchList::set_params_and_get_batch has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (17 pts), loops 1 (3 pts), boolean chains 1 (nesting depth added 12). 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":"webrender/core/src/batch.rs"},"region":{"startLine":432}}}],"partialFingerprints":{"codehealthFindingId/v1":"5968f8538db540b6f1a5c2151b5267e5010893b5d8f5ff171f589231ff110fef"}},{"ruleId":"D2","level":"warning","message":{"text":"TileCacheInstance::can_promote_to_surface (cognitive 21): TileCacheInstance::can_promote_to_surface has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (19 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":"webrender/core/src/picture.rs"},"region":{"startLine":2508}}}],"partialFingerprints":{"codehealthFindingId/v1":"127817b74fd3843c4b556e41914b20963c591e6902da559b162a2891bda475a7"}},{"ruleId":"D2","level":"warning","message":{"text":"TileNode::update_dirty_rects (cognitive 21): TileNode::update_dirty_rects has cognitive complexity 21 (threshold 15). Drivers by points: if/else 5 (15 pts), loops 2 (5 pts), match/switch 1 (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":"webrender/core/src/picture.rs"},"region":{"startLine":7886}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7f76862f5058d45a34b31525e87fd71f14a9de8225fe3a668c01b0f8a7eadda"}},{"ruleId":"D2","level":"warning","message":{"text":"Renderer::draw_color_target (cognitive 21): Renderer::draw_color_target has cognitive complexity 21 (threshold 15). Drivers by points: if/else 11 (13 pts), loops 3, match/switch 2 (3 pts), boolean chains 2 (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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":3568}}}],"partialFingerprints":{"codehealthFindingId/v1":"14f23f1696518736c07e4899e001e4eeb107f0dd264767d6d0dfe40f6b61cfda"}},{"ruleId":"D2","level":"warning","message":{"text":"SpatialTree::apply_updates (cognitive 21): SpatialTree::apply_updates has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (17 pts), match/switch 2 (3 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":"webrender/core/src/spatial_tree.rs"},"region":{"startLine":873}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf4f324964409d53e8ed49f09230188595545f1f6489af70ecceb07594eda20f"}},{"ruleId":"D2","level":"warning","message":{"text":"webrender::border::add_segment (cognitive 21): webrender::border::add_segment 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":"webrender/core/src/border.rs"},"region":{"startLine":882}}}],"partialFingerprints":{"codehealthFindingId/v1":"16d4262966e4b13ba150e3ea917a0d82c071f12c8f242792dbcf3efc8ef529f1"}},{"ruleId":"D2","level":"warning","message":{"text":"webrender::rectangle_occlusion::apply_occluder (cognitive 21): webrender::rectangle_occlusion::apply_occluder has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (20 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":"webrender/core/src/rectangle_occlusion.rs"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"85be997086c22fa65594d619d56f5bd93b321ead480672bcd57eb069136fb569"}},{"ruleId":"D2","level":"warning","message":{"text":"AttribLocations::get_loc (cognitive 21): AttribLocations::get_loc has cognitive complexity 21 (threshold 15). Drivers by points: if/else 16 (21 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":"webrender/swgl/src/shaders/cs_fast_linear_gradient.rs"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"e01b2173f02edc2a72805afbff3d927733d080d777d4f74a898a25c223ef87f9"}},{"ruleId":"D2","level":"warning","message":{"text":"azul-search.renderResults (cognitive 21): azul-search.renderResults has cognitive complexity 21 (threshold 15). Drivers by points: ternaries 6 (12 pts), boolean chains 5, if/else 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":"doc/templates/azul-search.js"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"410ce0319801712e794fce3d36fea0c28ec4c3b3ba0f7359a2417ca59ee8cb37"}},{"ruleId":"D2","level":"warning","message":{"text":"_loadComponentPreview (cognitive 21): _loadComponentPreview has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (11 pts), boolean chains 8, error handling 1, ternaries 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":2590}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc101285736788140af4cb0b2a3be093a1633af043139471752b7c630758980c"}},{"ruleId":"D2","level":"warning","message":{"text":"CssPropertyCache::normal_props_present (cognitive 20): CssPropertyCache::normal_props_present has cognitive complexity 20 (threshold 15). Drivers by points: loops 8 (13 pts), if/else 3 (7 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":"core/src/prop_cache.rs"},"region":{"startLine":5013}}}],"partialFingerprints":{"codehealthFindingId/v1":"21443a66c2c4ed0d56da2066651a6edf591a97027ec89c481df77d2db4242716"}},{"ruleId":"D2","level":"warning","message":{"text":"RawImage::paint_dot (cognitive 20): RawImage::paint_dot has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (14 pts), loops 2 (3 pts), match/switch 2, 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":"core/src/resources.rs"},"region":{"startLine":2324}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f2f74d4e415e9c3137599c8f491b447dce4f2e831a4548bff875138ea1cac17"}},{"ruleId":"D2","level":"warning","message":{"text":"SvgNode::is_closed (cognitive 20): SvgNode::is_closed has cognitive complexity 20 (threshold 15). Drivers by points: if/else 3 (10 pts), loops 4 (9 pts), match/switch 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":"core/src/svg.rs"},"region":{"startLine":692}}}],"partialFingerprints":{"codehealthFindingId/v1":"22838a51a4a3bb9d74a188cab97a80c7a6879ee0db09f55b3dedd642c9567806"}},{"ruleId":"D2","level":"warning","message":{"text":"DxgiCapture::read (cognitive 20): DxgiCapture::read has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (13 pts), loops 2 (3 pts), match/switch 2 (3 pts), boolean chains 1 (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":"dll/src/desktop/extra/screencap/windows.rs"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb611b010754a8923507d96babc433e1114dce7e0240ff1737d353bc32e4a13a"}},{"ruleId":"D2","level":"warning","message":{"text":"X11Window::handle_property_notify (cognitive 20): X11Window::handle_property_notify has cognitive complexity 20 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 2 (7 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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":7358}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccc6b43bdce6410522be7f7fd82e1ad85ba7fa70212952bb853af53aa50d1bfb"}},{"ruleId":"D2","level":"warning","message":{"text":"SymbolTable::enumerate_low32_data_for_wasm (cognitive 20): SymbolTable::enumerate_low32_data_for_wasm has cognitive complexity 20 (threshold 15). Drivers by points: match/switch 4 (8 pts), if/else 2 (6 pts), boolean chains 3, 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":"dll/src/web/symbol_table.rs"},"region":{"startLine":513}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0a99b42d9b6167fb1c173f1ef75b57c1bf683c5b2812d10a5f8ed65bfc6107d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::system_style::watch_portal_color_scheme (cognitive 20): azul_dll::desktop::shell2::linux::system_style::watch_portal_color_scheme has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (12 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":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":2778}}}],"partialFingerprints":{"codehealthFindingId/v1":"727bc0b632a7afee32a1224bea3eb7e2480a449e1d8a0a31d374b3da3352986f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::iroh::engine::send_messages (cognitive 20): azul_dll::desktop::extra::iroh::engine::send_messages has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (13 pts), match/switch 2 (5 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":"dll/src/desktop/extra/iroh/engine.rs"},"region":{"startLine":439}}}],"partialFingerprints":{"codehealthFindingId/v1":"9946c942adb5ba41237c7d994a425995170f1296efa3e64f59356ad351f82bb3"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::split_nonzero_runs (cognitive 20): azul_dll::web::transpiler_remill::split_nonzero_runs has cognitive complexity 20 (threshold 15). Drivers by points: loops 5 (11 pts), if/else 2 (5 pts), boolean chains 4 (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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":5096}}}],"partialFingerprints":{"codehealthFindingId/v1":"02f9b0cedca6b1b99bac6ad11927a6d794860e0ff3b9833f92635dd82232b3df"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::display::linux::x11::try_xrandr_displays (cognitive 20): azul_dll::desktop::display::linux::x11::try_xrandr_displays has cognitive complexity 20 (threshold 15). Drivers by points: if/else 12 (17 pts), boolean chains 2, 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":"dll/src/desktop/display.rs"},"region":{"startLine":653}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b1d763967c13601220499990cf97e2b33aa3dd63d2c75f6396b78f1aa216285"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::ios::layout_subviews (cognitive 20): azul_dll::desktop::shell2::ios::layout_subviews has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (17 pts), boolean chains 3 (nesting depth added 9). 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":"dll/src/desktop/shell2/ios/mod.rs"},"region":{"startLine":763}}}],"partialFingerprints":{"codehealthFindingId/v1":"c85387849977f2d3b6c5fbb77b293301ba5f739f4d2957130f2282df4deb1eec"}},{"ruleId":"D2","level":"warning","message":{"text":"CGenerator::generate_types (cognitive 20): CGenerator::generate_types has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 5, 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":"doc/src/codegen/v2/lang_c.rs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ba77158290df993a198e921a791616903b73018cdeae8a6bb0cbd33b80f0c16"}},{"ruleId":"D2","level":"warning","message":{"text":"CGenerator::generate_forward_declarations (cognitive 20): CGenerator::generate_forward_declarations has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (17 pts), loops 3 (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":"doc/src/codegen/v2/lang_c.rs"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"5567f241d25e14d3f321f487b176dd83c0edd0bb94b74acd6da927d4b3ebb6c8"}},{"ruleId":"D2","level":"warning","message":{"text":"Emitter::emit_trampolines (cognitive 20): Emitter::emit_trampolines has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (16 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":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":2513}}}],"partialFingerprints":{"codehealthFindingId/v1":"a310fb7656cf18a37ce1aff6b765e5537c6c9e88ea2d98753b4545f647e68910"}},{"ruleId":"D2","level":"warning","message":{"text":"PythonGenerator::function_refs_excluded_type (cognitive 20): PythonGenerator::function_refs_excluded_type has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (17 pts), boolean chains 2, 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":"doc/src/codegen/v2/lang_python.rs"},"region":{"startLine":3946}}}],"partialFingerprints":{"codehealthFindingId/v1":"77add2a6a888acc6e7e72a52a2156ec0fe31aa61b1c708f6d0ace8932b02ddfb"}},{"ruleId":"D2","level":"warning","message":{"text":"RustGenerator::generate_struct (cognitive 20): RustGenerator::generate_struct has cognitive complexity 20 (threshold 15). Drivers by points: if/else 12 (14 pts), loops 2 (4 pts), boolean chains 2 (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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2513}}}],"partialFingerprints":{"codehealthFindingId/v1":"8702f81816ef9c875ba199576d1610ccdba7b8cdaccb6248b9eeea4245658946"}},{"ruleId":"D2","level":"warning","message":{"text":"RustGenerator::generate_abi_derived_trait_impls (cognitive 20): RustGenerator::generate_abi_derived_trait_impls has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (13 pts), boolean chains 7 (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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":3586}}}],"partialFingerprints":{"codehealthFindingId/v1":"34ca69d431a9c00a18cfcb20476f808f2a7a61525bc3712e227fb0e8d6f13df9"}},{"ruleId":"D2","level":"warning","message":{"text":"WorkspaceIndex::build_with_verbosity (cognitive 20): WorkspaceIndex::build_with_verbosity has cognitive complexity 20 (threshold 15). Drivers by points: if/else 13 (15 pts), loops 2 (3 pts), boolean chains 1, match/switch 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":"doc/src/patch/index.rs"},"region":{"startLine":519}}}],"partialFingerprints":{"codehealthFindingId/v1":"6962e51b85e7fb8014f2c8c62e3d8c6ff867e9d9d37a36efd975f7287f5e67d2"}},{"ruleId":"D2","level":"warning","message":{"text":"InputChannel::start (cognitive 20): InputChannel::start has cognitive complexity 20 (threshold 15). Drivers by points: if/else 5 (14 pts), loops 2 (3 pts), match/switch 1 (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":"doc/src/reftest/telegram.rs"},"region":{"startLine":336}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca28cd29ab6a40c887232c8e30a68a2bca9285f9d48a874e108ee8aa64c4c12c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ruby::wrappers::emit_method_body_static (cognitive 20): azul_doc::codegen::v2::lang_ruby::wrappers::emit_method_body_static has cognitive complexity 20 (threshold 15). Drivers by points: loops 4 (9 pts), match/switch 3 (6 pts), if/else 3 (4 pts), boolean chains 1 (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":"doc/src/codegen/v2/lang_ruby/wrappers.rs"},"region":{"startLine":1335}}}],"partialFingerprints":{"codehealthFindingId/v1":"d271b9a74019991c60fc04c2e0b9e0a2564a2d050fa0c3d3d30f0a7a9658eb2d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_powershell::cmdlets::emit_shim (cognitive 20): azul_doc::codegen::v2::lang_powershell::cmdlets::emit_shim has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (14 pts), loops 3 (4 pts), boolean chains 2 (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":"doc/src/codegen/v2/lang_powershell/cmdlets.rs"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ec2caf925bc9a640eeb217c323473da15f68f7f24c887eee496ed009978fc1e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_pascal::managed::emit_enum_aliases (cognitive 20): azul_doc::codegen::v2::lang_pascal::managed::emit_enum_aliases has cognitive complexity 20 (threshold 15). Drivers by points: if/else 5 (9 pts), loops 6 (7 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":"doc/src/codegen/v2/lang_pascal/managed.rs"},"region":{"startLine":1031}}}],"partialFingerprints":{"codehealthFindingId/v1":"af3e3e4a20a1eacaa4ff2f744a674f985c3d84ea6593384499045c3f592f8d00"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::regression::diff_results_detailed (cognitive 20): azul_doc::reftest::regression::diff_results_detailed has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (18 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":"doc/src/reftest/regression.rs"},"region":{"startLine":1309}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5c9becbfa4c4c7645b5435820504d845bc0e6b53692e03ad408d9399585d5af"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::regression::generate_full_prompt (cognitive 20): azul_doc::reftest::regression::generate_full_prompt has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (16 pts), loops 2 (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":"doc/src/reftest/regression.rs"},"region":{"startLine":1676}}}],"partialFingerprints":{"codehealthFindingId/v1":"fae133a2f134f36aff3683e443f45c2033eeccbdd88e021173c281c3407f63a6"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_lisp::types::generate_types (cognitive 20): azul_doc::codegen::v2::lang_lisp::types::generate_types has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (12 pts), loops 5 (6 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":"doc/src/codegen/v2/lang_lisp/types.rs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"ede1122035104fdef92a6838d978eb5c5d927a59ecbddc6e2fe2cf793f452fc8"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::generate_combined_patch (cognitive 20): azul_doc::autofix::generate_combined_patch has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (17 pts), 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":"doc/src/autofix/mod.rs"},"region":{"startLine":839}}}],"partialFingerprints":{"codehealthFindingId/v1":"ada35e91f4d9a22f77f1974bacde4d1c48fabd630b1bfb6accdb94516c8c65a2"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::autodoc::write_outdated_report (cognitive 20): azul_doc::reftest::autodoc::write_outdated_report has cognitive complexity 20 (threshold 15). Drivers by points: loops 6 (16 pts), if/else 4 (nesting depth added 10). 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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":1359}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb63080ec7fcce3e29fbe68bf50f41abe4cca94a9e55adc3f21ce5de09256cf1"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::autodoc::run_autodoc_screenshots (cognitive 20): azul_doc::reftest::autodoc::run_autodoc_screenshots has cognitive complexity 20 (threshold 15). Drivers by points: match/switch 4 (11 pts), loops 4 (6 pts), if/else 2 (3 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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":1757}}}],"partialFingerprints":{"codehealthFindingId/v1":"800309fdbe5fd7eb8c6f334f56edcf4740b746010cb0473e9bb0d69f81dd188a"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::autoreview::run_midlevel_fixes (cognitive 20): azul_doc::reftest::autoreview::run_midlevel_fixes has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (16 pts), loops 2, 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":"doc/src/reftest/autoreview.rs"},"region":{"startLine":1970}}}],"partialFingerprints":{"codehealthFindingId/v1":"dab25fead377d6e8598976e689c762ee2429a6ab4758c6288ccf77087203d5e3"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_racket::types::generate_types (cognitive 20): azul_doc::codegen::v2::lang_racket::types::generate_types has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (12 pts), loops 5 (6 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":"doc/src/codegen/v2/lang_racket/types.rs"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"e91295589b8060d84ebe20d70a75dcf9c901a26f06ebd4d1ae324e364da5d0f2"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_java::wrappers::emit_option_return_body (cognitive 20): azul_doc::codegen::v2::lang_java::wrappers::emit_option_return_body has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (20 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":"doc/src/codegen/v2/lang_java/wrappers.rs"},"region":{"startLine":1732}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c9818a4002de4fff47fe2d55850be610a66233148c291ac50a8713fe62cd028"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_pascal::map_type_to_pascal (cognitive 20): azul_doc::codegen::v2::lang_pascal::map_type_to_pascal has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (17 pts), boolean chains 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":"doc/src/codegen/v2/lang_pascal/mod.rs"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab6e35df6e3e57246a8a16ae0094a434d2c751786257c604c1ec6e9595a03dd3"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::debug::analyze_function_dependencies::reaches_difficult (cognitive 20): azul_doc::autofix::debug::analyze_function_dependencies::reaches_difficult has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (14 pts), loops 2 (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. This shape REPEATS in the file: one other method here (azul_doc::autofix::debug::analyze_function_dependencies) 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":"doc/src/autofix/debug.rs"},"region":{"startLine":1098}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d349b672bfadb4c296708e16e848accd15ab5df7c9774f66372de3ad0b1c06a"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::debug::build_prompt (cognitive 20): azul_doc::reftest::debug::build_prompt has cognitive complexity 20 (threshold 15). Drivers by points: if/else 13 (15 pts), loops 3 (5 pts) (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":"doc/src/reftest/debug.rs"},"region":{"startLine":677}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0c3e535bd4105827083251846e5e03eacbfa4b91177cc67137ca9f57243f3a2"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::docgen::guide::preprocess_markdown_content (cognitive 20): azul_doc::docgen::guide::preprocess_markdown_content has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (17 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":"doc/src/docgen/guide.rs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d442cb9085ca10564a003a2b3d4e51144ac66b616f6d03a8d0ad8b8e272a46d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::docgen::guide::transform_german_quotes (cognitive 20): azul_doc::docgen::guide::transform_german_quotes has cognitive complexity 20 (threshold 15). Drivers by points: if/else 4 (9 pts), match/switch 2 (7 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":"doc/src/docgen/guide.rs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ba8543a08eedba502f9d17664e5520372a35b0f991c2b52df7658dad812bac6"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::docgen::guide::rewrite_md_links (cognitive 20): azul_doc::docgen::guide::rewrite_md_links has cognitive complexity 20 (threshold 15). Drivers by points: match/switch 3 (8 pts), loops 3 (5 pts), if/else 3 (4 pts), boolean chains 3 (nesting depth added 8). Of this number, 15 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":"doc/src/docgen/guide.rs"},"region":{"startLine":709}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c85827235efbd9722950decb3ffbe3ab7ed0ef77f20ee15ed04f0910039e371"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::config::apply_prefix_to_type (cognitive 20): azul_doc::codegen::v2::config::apply_prefix_to_type has cognitive complexity 20 (threshold 15). Drivers by points: if/else 15 (19 pts), boolean chains 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":"doc/src/codegen/v2/config.rs"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd64e402dfd1f7e34cc63146c9ae95ab73f0bf7d9462fa0adacb73213b879e24"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::ir_builder::is_callback_data_pair (cognitive 20): azul_doc::codegen::v2::ir_builder::is_callback_data_pair has cognitive complexity 20 (threshold 15). Drivers by points: if/else 4 (15 pts), loops 2 (3 pts), boolean chains 1, 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":"doc/src/codegen/v2/ir_builder.rs"},"region":{"startLine":2614}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ae45b33bab5f4d83a84dd2c89ccb3b3389d826d2e1a719e155339172f9c97af"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::apply_midlevel::run_apply_agent (cognitive 20): azul_doc::reftest::apply_midlevel::run_apply_agent has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (12 pts), boolean chains 5, match/switch 1 (2 pts), loops 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":"doc/src/reftest/apply_midlevel.rs"},"region":{"startLine":2842}}}],"partialFingerprints":{"codehealthFindingId/v1":"94f0e77a1d7eb893b870fe2e253ada8b052450ca7d0ea235a1519b81affd95b0"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_java::managed::data_typed_sam_info (cognitive 20): azul_doc::codegen::v2::lang_java::managed::data_typed_sam_info has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (13 pts), match/switch 2 (6 pts), 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":"doc/src/codegen/v2/lang_java/managed.rs"},"region":{"startLine":611}}}],"partialFingerprints":{"codehealthFindingId/v1":"543e7f46e08bd46b464871c0a13cbca4805227c19638d7a4c64ae9904af0878e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::patch::index::extract_implemented_traits_from_items (cognitive 20): azul_doc::patch::index::extract_implemented_traits_from_items has cognitive complexity 20 (threshold 15). Drivers by points: if/else 5 (18 pts), boolean chains 1, loops 1 (nesting depth added 13). 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":"doc/src/patch/index.rs"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"378c8d54f404b026f951c28d0249c87c0e55952f2fc0140b02b8759d820979ed"}},{"ruleId":"D2","level":"warning","message":{"text":"HoverManager::remap_node_ids (cognitive 20): HoverManager::remap_node_ids has cognitive complexity 20 (threshold 15). Drivers by points: if/else 3 (13 pts), loops 3 (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":"layout/src/managers/hover.rs"},"region":{"startLine":484}}}],"partialFingerprints":{"codehealthFindingId/v1":"7018d53dc6e9006de0555ef2ffadf928a70b908f5f0b2adf9e9c1182ab4712ca"}},{"ruleId":"D2","level":"warning","message":{"text":"CompactShapedEntry::build (cognitive 20): CompactShapedEntry::build has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (12 pts), boolean chains 4, loops 2 (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":"layout/src/text3/cache.rs"},"region":{"startLine":7057}}}],"partialFingerprints":{"codehealthFindingId/v1":"869fe34abe1e3467d230b72df56232d611d62e1318a2f1862d950b20741c95f6"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::scroll_selection_into_view (cognitive 20): LayoutWindow::scroll_selection_into_view has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (12 pts), match/switch 3 (5 pts), boolean chains 3 (nesting depth added 3). 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":"layout/src/window.rs"},"region":{"startLine":13589}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfa02d88d56c904f822304b9ef125ae39c698c6eea2217bb5345a92556224e48"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::dense::get_glyph_positions_dense (cognitive 20): azul_layout::text3::dense::get_glyph_positions_dense has cognitive complexity 20 (threshold 15). Drivers by points: loops 4 (8 pts), if/else 4 (7 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":"layout/src/text3/dense.rs"},"region":{"startLine":1197}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8b070dcd1a6d3f21ca9e8598ee2d6d60f22a7345a41953ea2953440eaa51c47"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::telemetry::strip_user_paths (cognitive 20): azul_layout::telemetry::strip_user_paths has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (13 pts), loops 2 (3 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":"layout/src/telemetry/mod.rs"},"region":{"startLine":1131}}}],"partialFingerprints":{"codehealthFindingId/v1":"fddcf552262cd152129691fc0e4be114ce84c2ae866335a1455469389b2648ef"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::display_list::get_scroll_content_size (cognitive 20): azul_layout::solver3::display_list::get_scroll_content_size has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (12 pts), loops 2 (7 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":"layout/src/solver3/display_list.rs"},"region":{"startLine":8401}}}],"partialFingerprints":{"codehealthFindingId/v1":"e19c49e01ff0e0b65084eb13fcaeea37953ed6558710517ea3b9e86552ff1a78"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::edit::delete_backward (cognitive 20): azul_layout::text3::edit::delete_backward has cognitive complexity 20 (threshold 15). Drivers by points: match/switch 4 (10 pts), if/else 6 (9 pts), boolean chains 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":"layout/src/text3/edit.rs"},"region":{"startLine":767}}}],"partialFingerprints":{"codehealthFindingId/v1":"f86ca49d3905545c9ec5f183967ccac069761d581223be28d80e1c1795d3137b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::shape::alpha_shape_rects_raw (cognitive 20): azul_layout::cpurender::shape::alpha_shape_rects_raw has cognitive complexity 20 (threshold 15). Drivers by points: loops 4 (9 pts), if/else 4 (8 pts), boolean chains 3 (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":"layout/src/cpurender/shape.rs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a54ede02a90f79ffedc043c0063300bff559de4ae954a9b3e542fdc9c980bb2"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::fc::get_border_info (cognitive 20): azul_layout::solver3::fc::get_border_info has cognitive complexity 20 (threshold 15). Drivers by points: if/else 14 (20 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":"layout/src/solver3/fc.rs"},"region":{"startLine":5788}}}],"partialFingerprints":{"codehealthFindingId/v1":"31df952573d01e91402d932b032203f57c339b8c3b6048074dbd1fbf38309f44"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::fc::generate_list_marker_text (cognitive 20): azul_layout::solver3::fc::generate_list_marker_text has cognitive complexity 20 (threshold 15). Drivers by points: if/else 16 (20 pts) (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":"layout/src/solver3/fc.rs"},"region":{"startLine":10414}}}],"partialFingerprints":{"codehealthFindingId/v1":"d07658b3d9d187671784cb4d1fdb6b3e374625b9378de1d3f6f93d1faa0fec0f"}},{"ruleId":"D2","level":"warning","message":{"text":"AlphaBatchList::set_params_and_get_batch (cognitive 20): AlphaBatchList::set_params_and_get_batch has cognitive complexity 20 (threshold 15). Drivers by points: if/else 4 (11 pts), match/switch 2 (5 pts), loops 1 (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":"webrender/core/src/batch.rs"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"c754b654f65413e09902f1094307e99f84ac4be80712f31ca3e8571ce2fbefdb"}},{"ruleId":"D2","level":"warning","message":{"text":"CompositeState::push_surface (cognitive 20): CompositeState::push_surface has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 4 (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":"webrender/core/src/composite.rs"},"region":{"startLine":734}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1c68e4f795bb423f30bb1ac687ba5dfdf08900f5e6d3f9573587dd1b8e24cc5"}},{"ruleId":"D2","level":"warning","message":{"text":"Device::bind_texture_impl (cognitive 20): Device::bind_texture_impl has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (11 pts), match/switch 2 (7 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":"webrender/core/src/device/gl.rs"},"region":{"startLine":2242}}}],"partialFingerprints":{"codehealthFindingId/v1":"4831f23c15e4898b82501451faf506aae1110ce4f086c4cfa2cba34dea34c103"}},{"ruleId":"D2","level":"warning","message":{"text":"TileCacheInstance::push_surface (cognitive 20): TileCacheInstance::push_surface has cognitive complexity 20 (threshold 15). Drivers by points: if/else 4 (12 pts), loops 2 (7 pts), boolean chains 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":"webrender/core/src/picture.rs"},"region":{"startLine":2968}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfb386bc86e627f1fca780f3ca7ffd1a9f67bc205179d648c22cae314e449e07"}},{"ruleId":"D2","level":"warning","message":{"text":"PicturePrimitive::propagate_bounding_rect (cognitive 20): PicturePrimitive::propagate_bounding_rect has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (19 pts), loops 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":"webrender/core/src/picture.rs"},"region":{"startLine":7185}}}],"partialFingerprints":{"codehealthFindingId/v1":"55a75a02454b3ab24dd4569c78b74f9eee3c3df1ca461a498b84dc19e6f9ed3f"}},{"ruleId":"D2","level":"warning","message":{"text":"Profiler::append_to_ui (cognitive 20): Profiler::append_to_ui has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (16 pts), match/switch 1 (2 pts), boolean chains 1, loops 1 (nesting depth added 7). 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, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"webrender/core/src/profiler.rs"},"region":{"startLine":1341}}}],"partialFingerprints":{"codehealthFindingId/v1":"d15406a7d66913034655663c18cf8923fe9bb011396cf677357972b58245c137"}},{"ruleId":"D2","level":"warning","message":{"text":"GpuCacheTexture::ensure_texture (cognitive 20): GpuCacheTexture::ensure_texture has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (10 pts), loops 1 (4 pts), boolean chains 3, match/switch 1 (3 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":"webrender/core/src/renderer/gpu_cache.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b0fe8ad8213e2dd2a07fd3247cfd6cf93994d57839d7008ef9e3cc3fe55b07e"}},{"ruleId":"D2","level":"warning","message":{"text":"Renderer::load_capture (cognitive 20): Renderer::load_capture has cognitive complexity 20 (threshold 15). Drivers by points: loops 5 (9 pts), match/switch 3 (8 pts), if/else 3 (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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":5839}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ffa98ee803766a1c37d61120f4c285cf2a5eb00ead09008e516c3abf060f8c7"}},{"ruleId":"D2","level":"warning","message":{"text":"webrender::picture::get_surface_rects (cognitive 20): webrender::picture::get_surface_rects has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (9 pts), match/switch 4 (7 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":"webrender/core/src/picture.rs"},"region":{"startLine":8022}}}],"partialFingerprints":{"codehealthFindingId/v1":"752751123720e149173ad33c5e4ca256a2e61a3e9acda3048b8260b4355b8e68"}},{"ruleId":"D2","level":"warning","message":{"text":"webrender::frame_builder::build_render_pass (cognitive 20): webrender::frame_builder::build_render_pass has cognitive complexity 20 (threshold 15). Drivers by points: loops 4 (12 pts), match/switch 3 (8 pts) (nesting depth added 13). 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":"webrender/core/src/frame_builder.rs"},"region":{"startLine":956}}}],"partialFingerprints":{"codehealthFindingId/v1":"57760ab11a41af77ae8385fb9daf01d5bab546e8dfa8212324222f4862da7336"}},{"ruleId":"D2","level":"warning","message":{"text":"webrender::quad::get_prim_render_strategy (cognitive 20): webrender::quad::get_prim_render_strategy has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (17 pts), boolean chains 3 (nesting depth added 10). 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":"webrender/core/src/quad.rs"},"region":{"startLine":708}}}],"partialFingerprints":{"codehealthFindingId/v1":"c020c490c29d6a1c6f71cb8a879d0ea89b1b3e6466186f85e4fad2d33d1cea10"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::styled_dom::collect_nodes_in_document_order (cognitive 19): azul_core::styled_dom::collect_nodes_in_document_order has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (10 pts), loops 3 (9 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":"core/src/styled_dom.rs"},"region":{"startLine":3207}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc4f619951ad3caa0185dbd0dd57d62b8ca90755da69eb9a2dad33495b62a3b9"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::xml::compile_node_c (cognitive 19): azul_core::xml::compile_node_c has cognitive complexity 19 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 3, match/switch 2 (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":"core/src/xml.rs"},"region":{"startLine":8637}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dc39bf3894dd54852a9fbcfd7cae586434eba9291d9d93df606f57f600f0cfe"}},{"ruleId":"D2","level":"warning","message":{"text":"CssPropertyWithConditionsVec::parse_media_feature_inline (cognitive 19): CssPropertyWithConditionsVec::parse_media_feature_inline has cognitive complexity 19 (threshold 15). Drivers by points: if/else 12 (16 pts), boolean chains 2, match/switch 1 (nesting depth added 4). 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":"css/src/dynamic_selector.rs"},"region":{"startLine":2490}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4a4371ef5022527b76d7c8d57dbb26143394dd032a76627c519714eae71dd78"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_css::props::layout::grid::parse_grid_track_owned (cognitive 19): azul_css::props::layout::grid::parse_grid_track_owned has cognitive complexity 19 (threshold 15). Drivers by points: if/else 11 (16 pts), boolean chains 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":"css/src/props/layout/grid.rs"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"2499de8019b8cc270fdf54015c21d479995c3ba60591606a9162dd761df3b86f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_css::props::style::transform::parse_style_transform (cognitive 19): azul_css::props::style::transform::parse_style_transform 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). Of this number, 17 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":"css/src/props/style/transform.rs"},"region":{"startLine":766}}}],"partialFingerprints":{"codehealthFindingId/v1":"8afedf582f93e5a2099670b626f8f55799290e82f14dbf63e6d87b7c23347ff4"}},{"ruleId":"D2","level":"warning","message":{"text":"MfCamera::read (cognitive 19): MfCamera::read has cognitive complexity 19 (threshold 15). Drivers by points: if/else 12 (17 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":"dll/src/desktop/extra/camera/windows.rs"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"64d3d458cae466c2a3dcb51714b82cd3c83e51329100513ca7d594f37aacb31a"}},{"ruleId":"D2","level":"warning","message":{"text":"WaylandWindow::handle_tablet_frame_for_seat (cognitive 19): WaylandWindow::handle_tablet_frame_for_seat has cognitive complexity 19 (threshold 15). Drivers by points: if/else 12 (17 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":4170}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6ca2a366c8432df6bda77f59147b67a9f3cac4c26608d5fbdd302f535172780"}},{"ruleId":"D2","level":"warning","message":{"text":"WaylandWindow::dispatch_scroll_delta (cognitive 19): WaylandWindow::dispatch_scroll_delta 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":4944}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bcee3f82b703064313e528a3845f632aeeca37af295e85b363923f919ba76d0"}},{"ruleId":"D2","level":"warning","message":{"text":"DpiFunctions::hwnd_dpi (cognitive 19): DpiFunctions::hwnd_dpi has cognitive complexity 19 (threshold 15). Drivers by points: if/else 11 (17 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":"dll/src/desktop/shell2/windows/dpi.rs"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"450247d5e2671c78138a71189db296aace5e2173df03b6979c85dc9102024d4f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::common::debug_server::platform::compile_and_send_zip (cognitive 19): azul_dll::desktop::shell2::common::debug_server::platform::compile_and_send_zip has cognitive complexity 19 (threshold 15). Drivers by points: if/else 5 (11 pts), loops 4 (6 pts), match/switch 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":"dll/src/desktop/shell2/common/debug_server/platform.rs"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d8d27c71f3df5fd1c833dbdc0708b5c7def3975eef6226ff4713aee1749add4"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::video_codec::provision::nvidia_plan (cognitive 19): azul_dll::desktop::extra::video_codec::provision::nvidia_plan has cognitive complexity 19 (threshold 15). Drivers by points: if/else 14 (18 pts), boolean chains 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":"dll/src/desktop/extra/video_codec/provision.rs"},"region":{"startLine":1532}}}],"partialFingerprints":{"codehealthFindingId/v1":"18d73cc8365cccae60d2a708ea964e4460ab446497eaf53010cc191d4c6b78ea"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::run_tool_once (cognitive 19): azul_dll::web::transpiler_remill::run_tool_once has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (11 pts), boolean chains 4, 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":11749}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bd40e88625e79aeac42c62bbbd0fdeb5936f0d6443d5c33ce56b788b9f1ea09"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::screencap::linux::read (cognitive 19): azul_dll::desktop::extra::screencap::linux::read has cognitive complexity 19 (threshold 15). Drivers by points: loops 5 (9 pts), if/else 6 (7 pts), boolean chains 2, match/switch 1 (nesting depth added 5). 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":"dll/src/desktop/extra/screencap/linux.rs"},"region":{"startLine":1182}}}],"partialFingerprints":{"codehealthFindingId/v1":"45a588721cd0dfcf28155de6ea8522ffbae81ffad05e0ea454b32c35b83e03a5"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::symbol_table::macho_image_text_data_range (cognitive 19): azul_dll::web::symbol_table::macho_image_text_data_range has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (18 pts), loops 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":"dll/src/web/symbol_table.rs"},"region":{"startLine":3013}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc952bb79a3c31e6f3bda2b004794b8a6b2ca8ff8d8b3f090776934abd147496"}},{"ruleId":"D2","level":"warning","message":{"text":"CGenerator::generate_union_match_helpers (cognitive 19): CGenerator::generate_union_match_helpers has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (13 pts), loops 2 (3 pts), match/switch 1 (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":"doc/src/codegen/v2/lang_c.rs"},"region":{"startLine":1374}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd8e91bf9aca04dd0aabb115074a2c8bad8e6ecd6ae13ea1884e87b92fddf8be"}},{"ruleId":"D2","level":"warning","message":{"text":"Emitter::emit_trampolines (cognitive 19): Emitter::emit_trampolines has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (15 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":"doc/src/codegen/v2/lang_crystal/wrappers.rs"},"region":{"startLine":1597}}}],"partialFingerprints":{"codehealthFindingId/v1":"60f6804d7987f11e8089b2817223f4f54d6d3af2849619340efef20c9db409b1"}},{"ruleId":"D2","level":"warning","message":{"text":"SmartCtor::emit_implementation (cognitive 19): SmartCtor::emit_implementation has cognitive complexity 19 (threshold 15). Drivers by points: match/switch 5 (8 pts), if/else 5 (7 pts), loops 4 (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":"doc/src/codegen/v2/lang_ocaml/wrappers.rs"},"region":{"startLine":1013}}}],"partialFingerprints":{"codehealthFindingId/v1":"49c07219d35a3b582ee0333952c53c9c8b87d05ac04abd63059a7245150bb16d"}},{"ruleId":"D2","level":"warning","message":{"text":"PythonGenerator::enum_needs_unsendable (cognitive 19): PythonGenerator::enum_needs_unsendable has cognitive complexity 19 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 3 (7 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":"doc/src/codegen/v2/lang_python.rs"},"region":{"startLine":3509}}}],"partialFingerprints":{"codehealthFindingId/v1":"7eb8d47fb2048bbdef498bb61de4ffcfd0e8e85724b7d7294b7f61e7b54466ae"}},{"ruleId":"D2","level":"warning","message":{"text":"SymbolCollector::current_module_path (cognitive 19): SymbolCollector::current_module_path has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (15 pts), boolean chains 2, loops 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":"doc/src/patch/parser.rs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc344acfab7d0f07b363cbd7f2c64c1fe6dd4a971718d2dcde346e2e44788fd1"}},{"ruleId":"D2","level":"warning","message":{"text":"SymbolCollector::visit_item_struct (cognitive 19): SymbolCollector::visit_item_struct has cognitive complexity 19 (threshold 15). Drivers by points: if/else 4 (13 pts), loops 2 (6 pts) (nesting depth added 13). 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":"doc/src/patch/parser.rs"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"adf5405bf6bbb84fb7d3889acd2a5a6e2727270d829cdf2c7eb309f2a548fe5d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::print_single_warning (cognitive 19): azul_doc::autofix::print_single_warning has cognitive complexity 19 (threshold 15). Drivers by points: if/else 5 (11 pts), loops 3 (6 pts), boolean chains 1, 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":"doc/src/autofix/mod.rs"},"region":{"startLine":2599}}}],"partialFingerprints":{"codehealthFindingId/v1":"f38b2b4111318aabba664269468f2756258916cffaae03b822e994811443b70c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::autodebug::generate_chrome_layout_with_timeout (cognitive 19): azul_doc::reftest::autodebug::generate_chrome_layout_with_timeout has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (16 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":"doc/src/reftest/autodebug.rs"},"region":{"startLine":1499}}}],"partialFingerprints":{"codehealthFindingId/v1":"827290420c8a53d6805b685d70cbca7ada0cfcd4a28dd97d22fb8ef5f69a8528"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_node::types::generate_type_registrations (cognitive 19): azul_doc::codegen::v2::lang_node::types::generate_type_registrations has cognitive complexity 19 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 5, boolean chains 2, 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":"doc/src/codegen/v2/lang_node/types.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc03f960ae43fdc1ab8281b7b6ec0768c4acb30dabb707884173b6c4ec6d2664"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_kotlin::managed::emit (cognitive 19): azul_doc::codegen::v2::lang_kotlin::managed::emit has cognitive complexity 19 (threshold 15). Drivers by points: loops 7 (9 pts), if/else 4 (8 pts), match/switch 1 (2 pts) (nesting depth added 7). 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":"doc/src/codegen/v2/lang_kotlin/managed.rs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8d92744fd12afb1df211574b5462cf47f515a723880bc121248e1653764972f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_haskell::module_scope_names (cognitive 19): azul_doc::codegen::v2::lang_haskell::module_scope_names has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (17 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":"doc/src/codegen/v2/lang_haskell/mod.rs"},"region":{"startLine":856}}}],"partialFingerprints":{"codehealthFindingId/v1":"5341558af4ec15608c95b49751bc372586c7cab1a4039cce8bf9315743de1822"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::autodoc::walk_collect (cognitive 19): azul_doc::reftest::autodoc::walk_collect has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (16 pts), boolean chains 1, loops 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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c10efcc767585e990db975bbcabca0fc51fe1197ac80c5719b2f3790dad0e6c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::lint_orphans::orphaned_wiring_functions (cognitive 19): azul_doc::lint_orphans::orphaned_wiring_functions has cognitive complexity 19 (threshold 15). Drivers by points: if/else 5 (14 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":"doc/src/lint_orphans.rs"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d75a54f413312dc56eb33c9983f0224bac5bd7023af86920170dc86c919dfdc"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_red::map_owned_type (cognitive 19): azul_doc::codegen::v2::lang_red::map_owned_type has cognitive complexity 19 (threshold 15). Drivers by points: if/else 11 (16 pts), boolean chains 2, 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":"doc/src/codegen/v2/lang_red/mod.rs"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"d82560a09052daf362d1d4726876bebf3a1e7d432365007026b2623f57cefda8"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::discovery::parallel::collect_files_recursive (cognitive 19): azul_doc::autofix::discovery::parallel::collect_files_recursive has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (15 pts), boolean chains 2, loops 1, 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":"doc/src/autofix/discovery/parallel.rs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"00b09c33dc1124daff5f248748ecf8812a2c97c13e515f97acfd375f92ad3b25"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::gene2e::plan (cognitive 19): azul_doc::gene2e::plan has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (11 pts), loops 3, 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":"doc/src/gene2e.rs"},"region":{"startLine":1673}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bb13e7715e18e2a4f51b68e6566692bb0e1b12b04130ae634048f1d39c80750"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_pascal::types::emit_monomorphized_alias (cognitive 19): azul_doc::codegen::v2::lang_pascal::types::emit_monomorphized_alias has cognitive complexity 19 (threshold 15). Drivers by points: loops 4 (8 pts), if/else 4 (7 pts), match/switch 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":"doc/src/codegen/v2/lang_pascal/types.rs"},"region":{"startLine":584}}}],"partialFingerprints":{"codehealthFindingId/v1":"c25303461cb503579fc5a85ae694b5f5c933ce037961d5c05a81b6a45c4c15db"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_cpp::common::generate_structured_binding_specs (cognitive 19): azul_doc::codegen::v2::lang_cpp::common::generate_structured_binding_specs has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (13 pts), match/switch 2 (3 pts), loops 2, boolean chains 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":"doc/src/codegen/v2/lang_cpp/common.rs"},"region":{"startLine":1425}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9e047c1abb5e4eb009490d6a816b91ea2e25e4afc7e932fa12462619517b846"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_racket::kebab (cognitive 19): azul_doc::codegen::v2::lang_racket::kebab has cognitive complexity 19 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 3 (5 pts), boolean chains 4 (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":"doc/src/codegen/v2/lang_racket/mod.rs"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"870abc2685eb84ba971a5910943ff433f189b80fc0e4044aac45f3656c601982"}},{"ruleId":"D2","level":"warning","message":{"text":"GlyphCache::get_or_build_cells_lcd (cognitive 19): GlyphCache::get_or_build_cells_lcd has cognitive complexity 19 (threshold 15). Drivers by points: if/else 13 (18 pts), boolean chains 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":"layout/src/glyph_cache.rs"},"region":{"startLine":496}}}],"partialFingerprints":{"codehealthFindingId/v1":"3aa90b88fda85035c15d6129ece1c664ae0dffc5f9033b4037d79e3f64cfeb43"}},{"ruleId":"D2","level":"warning","message":{"text":"GestureAndDragManager::detect_click_count_for (cognitive 19): GestureAndDragManager::detect_click_count_for has cognitive complexity 19 (threshold 15). Drivers by points: if/else 10 (16 pts), loops 2, 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":"layout/src/managers/gesture.rs"},"region":{"startLine":1810}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f38afa76541e14d3f0a0107c1af13a59229f7e7ed8a84d063d2d851d843d26c"}},{"ruleId":"D2","level":"warning","message":{"text":"PatchState::build (cognitive 19): PatchState::build has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (13 pts), loops 4 (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":"layout/src/solver3/display_list.rs"},"region":{"startLine":3787}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd6d913275fb6333fd49672b3c6b51c0e3f03335e3e85bdfd854c690d6032021"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutTreeBuilder::apply_range_suppression_preview (cognitive 19): LayoutTreeBuilder::apply_range_suppression_preview has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (12 pts), boolean chains 4, match/switch 1 (2 pts), 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":"layout/src/solver3/layout_tree.rs"},"region":{"startLine":3278}}}],"partialFingerprints":{"codehealthFindingId/v1":"05bf75b5c9b89fa834516207fd1b474c3e617668772eb1917c79e3169a200eb2"}},{"ruleId":"D2","level":"warning","message":{"text":"FontManager::register_variable_instances (cognitive 19): FontManager::register_variable_instances has cognitive complexity 19 (threshold 15). Drivers by points: if/else 10 (15 pts), loops 2 (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":"layout/src/text3/cache.rs"},"region":{"startLine":1562}}}],"partialFingerprints":{"codehealthFindingId/v1":"42a51bee0adf61f5a8777dbcbe169ec201996fb6cf48d025eb3c8c9bcd06a32c"}},{"ruleId":"D2","level":"warning","message":{"text":"DenseText::hittest_cursor (cognitive 19): DenseText::hittest_cursor has cognitive complexity 19 (threshold 15). Drivers by points: if/else 11 (16 pts), loops 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":"layout/src/text3/dense.rs"},"region":{"startLine":930}}}],"partialFingerprints":{"codehealthFindingId/v1":"b97222aa20b4d877ddc815bf1e67707afeaa9bdeaf800da121b0e82696c4e6d5"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::apply_content_change (cognitive 19): LayoutWindow::apply_content_change has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (16 pts), match/switch 3 (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":"layout/src/window.rs"},"region":{"startLine":7213}}}],"partialFingerprints":{"codehealthFindingId/v1":"3312c137b5926ea5fe873a266525fc0101fdcdf53be71890c2ca1d757ac30665"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::widgets::themes::flat::button (cognitive 19): azul_layout::widgets::themes::flat::button has cognitive complexity 19 (threshold 15). Drivers by points: if/else 11 (13 pts), boolean chains 3, match/switch 2 (3 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":567}}}],"partialFingerprints":{"codehealthFindingId/v1":"20147dcc304cb309a26007cd42c65a0ac4ea184e3f9ad8944bde2ffca40f04b3"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::sizing::apply_constraint_violation_table (cognitive 19): azul_layout::solver3::sizing::apply_constraint_violation_table has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (13 pts), match/switch 5, boolean chains 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":"layout/src/solver3/sizing.rs"},"region":{"startLine":2515}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d0c0b561148124827e20dfb80253da076cc3a2be175451ddb9f98c413f8be8e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::selection::find_word_boundaries (cognitive 19): azul_layout::text3::selection::find_word_boundaries has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (15 pts), boolean chains 2, loops 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":"layout/src/text3/selection.rs"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5d828199635d5e2f6ebd562174def1adf2b1d98d7c4267b9433b6bd76caa2f7"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::probe::rss_census (cognitive 19): azul_layout::probe::rss_census has cognitive complexity 19 (threshold 15). Drivers by points: if/else 11 (16 pts), boolean chains 2, 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":"layout/src/probe.rs"},"region":{"startLine":2368}}}],"partialFingerprints":{"codehealthFindingId/v1":"20de063f55f521c60b608105f63b7134f606ed9c05f74feb4c5d5a151b8ef6f7"}},{"ruleId":"D2","level":"warning","message":{"text":"SwCompositor::bind (cognitive 19): SwCompositor::bind has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (18 pts), boolean chains 1 (nesting depth added 11). 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":"webrender/core/src/compositor/sw_compositor.rs"},"region":{"startLine":1391}}}],"partialFingerprints":{"codehealthFindingId/v1":"65a14d5f4e682fc3d1416c37998daa3b2ccebd0a9f261c53a3380bf46e5913fb"}},{"ruleId":"D2","level":"warning","message":{"text":"AttribLocations::get_loc (cognitive 19): AttribLocations::get_loc has cognitive complexity 19 (threshold 15). Drivers by points: if/else 19. 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":"webrender/swgl/src/shaders/cs_clip_rectangle_fast_path.rs"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bf2adf3adadffea9696f86e6703e238f0a64ac293a6f343805d944a587511ca"}},{"ruleId":"D2","level":"warning","message":{"text":"preflight_contracts.check_sparse_checkout (cognitive 19): preflight_contracts.check_sparse_checkout has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (13 pts), loops 3 (4 pts), boolean chains 1, ternaries 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":"scripts/preflight_contracts.py"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"a237ec582cfa8ec025042b9f386a8dcf9d3fc3b2bd5fc5413ebb65bf81fbc45c"}},{"ruleId":"D2","level":"warning","message":{"text":"scan_build_scripts.classify (cognitive 19): scan_build_scripts.classify has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (10 pts), ternaries 2 (4 pts), loops 2 (3 pts), error handling 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":"scripts/supply-chain/scan_build_scripts.py"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a6c500bc100d59db3dae352774f9d21706fc110410b3025e26ba7eb27a71d0e"}},{"ruleId":"D2","level":"warning","message":{"text":"StyledDom::restyle_user_property (cognitive 18): StyledDom::restyle_user_property has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (13 pts), match/switch 1 (3 pts), boolean chains 1, loops 1 (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":"core/src/styled_dom.rs"},"region":{"startLine":2269}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff52af1d62d18fe940a148ff11c7069bdaf3ec9498324ecf8e818f5a5fff6a52"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::events::event_type_to_filters (cognitive 18): azul_core::events::event_type_to_filters has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 6 (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":"core/src/events.rs"},"region":{"startLine":3861}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7bf2a27c8f28cfc03554cbacd889f5ab2bd19ec45201454ca9db765892225db"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::xml::compile_node_fluent (cognitive 18): azul_core::xml::compile_node_fluent has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 3, match/switch 1 (2 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":"core/src/xml.rs"},"region":{"startLine":8351}}}],"partialFingerprints":{"codehealthFindingId/v1":"46c6bcf83cbf3ebc10c8adf2a12d7b374c9581cc170c84bc5cad5712d99a109f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_css::props::layout::dimensions::parse_calc_expression (cognitive 18): azul_css::props::layout::dimensions::parse_calc_expression has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (14 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":"css/src/props/layout/dimensions.rs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec201cf391d97e0eb86bdc174c1244b9a912d3b9496b24a4f2d801f5356557e2"}},{"ruleId":"D2","level":"warning","message":{"text":"X11Window::apply_event_result (cognitive 18): X11Window::apply_event_result has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (16 pts), loops 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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":5616}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a57bfc00ec24fcf72b52dc9906f5d77d45454b70b44bdcb83cc688bd2964586"}},{"ruleId":"D2","level":"warning","message":{"text":"SymbolTable::build_from_loaded_image (cognitive 18): SymbolTable::build_from_loaded_image has cognitive complexity 18 (threshold 15). Drivers by points: if/else 4 (9 pts), match/switch 3 (6 pts), loops 3 (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":"dll/src/web/symbol_table.rs"},"region":{"startLine":582}}}],"partialFingerprints":{"codehealthFindingId/v1":"4483b8cb57cb0f1135f94282242409204413928c172c0a263267dbe24aa64608"}},{"ruleId":"D2","level":"warning","message":{"text":"RemillTranspiler::link_objects_to_wasm (cognitive 18): RemillTranspiler::link_objects_to_wasm has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (11 pts), loops 4 (6 pts), match/switch 1 (nesting depth added 3). 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":1924}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0e73b7907c8d311de71a9bfd6290689839a8c38c907b43216e5a5963d88d9a0"}},{"ruleId":"D2","level":"warning","message":{"text":"RemillTranspiler::dispatcher_csynths (cognitive 18): RemillTranspiler::dispatcher_csynths has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 2 (3 pts), match/switch 1 (2 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":3306}}}],"partialFingerprints":{"codehealthFindingId/v1":"98f368b7b6bd761389e5c605d416d4ab7012ea0a88180d7ecb47ad85288e248b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::server::run_server (cognitive 18): azul_dll::web::server::run_server has cognitive complexity 18 (threshold 15). Drivers by points: match/switch 3 (8 pts), if/else 2 (6 pts), loops 3 (4 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":"dll/src/web/server.rs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ba784e0d25e4e323ca3b6cedde7ebf2a2526f4c13b7e00924844550651da434"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::system_style::discover (cognitive 18): azul_dll::desktop::shell2::linux::system_style::discover has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12 (13 pts), match/switch 3 (5 pts) (nesting depth added 3). 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":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":2430}}}],"partialFingerprints":{"codehealthFindingId/v1":"d364e61c009cb093f65d08fe7e513670552be2039743597a893df61e8579c52b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::common::event::auto_scroll_timer_callback (cognitive 18): azul_dll::desktop::shell2::common::event::auto_scroll_timer_callback has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (10 pts), match/switch 5, boolean chains 2, loops 1 (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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e605e6b80c2e87112f45455f44a5e93505892c0d4bca1bfec1d6a4db8d0fb14"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::x86_scan::rewrite_iat_calls (cognitive 18): azul_dll::web::transpiler_remill::x86_scan::rewrite_iat_calls has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (13 pts), boolean chains 2, loops 2, 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":6051}}}],"partialFingerprints":{"codehealthFindingId/v1":"bec33105d09d602c795e99e458363b6ba0bf2460f725e36e46ad65e1b797a388"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::macos::menu::build_menu_items (cognitive 18): azul_dll::desktop::shell2::macos::menu::build_menu_items has cognitive complexity 18 (threshold 15). Drivers by points: if/else 4 (12 pts), match/switch 2 (5 pts), loops 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":"dll/src/desktop/shell2/macos/menu.rs"},"region":{"startLine":415}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc94d6643a7a35adbb39ae908276c7118279c4b30d931d4612330c17bb3de17e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::video_codec::provision::vulkan_has_ext (cognitive 18): azul_dll::desktop::extra::video_codec::provision::vulkan_has_ext has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (12 pts), boolean chains 3, loops 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":"dll/src/desktop/extra/video_codec/provision.rs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"e32f1861f1a6f7297df07b3d9096c02aeb1409992ce239e2b40939fb3bd53d01"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::x11::query_modifier_masks (cognitive 18): azul_dll::desktop::shell2::linux::x11::query_modifier_masks has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (9 pts), loops 2 (5 pts), match/switch 1 (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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":762}}}],"partialFingerprints":{"codehealthFindingId/v1":"2da1e309cc282ce9d4206390989c68960c36af8ad166eb1987771b2ec233a185"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::native_screenshot::take_native_screenshot_macos_bytes (cognitive 18): azul_dll::desktop::native_screenshot::take_native_screenshot_macos_bytes has cognitive complexity 18 (threshold 15). Drivers by points: if/else 11 (13 pts), loops 2 (3 pts), boolean chains 2 (nesting depth added 3). 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":"dll/src/desktop/native_screenshot.rs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"83e7a7f7a4ec6401cd4973eccfb125d3f0fba1248f7db4781c2f9532c66d1887"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::wr_translate2::collect_font_resource_updates (cognitive 18): azul_dll::desktop::wr_translate2::collect_font_resource_updates has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 4 (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":"dll/src/desktop/wr_translate2.rs"},"region":{"startLine":886}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d45ea5b6dd8a8c4e55c1f0f076a7c152314be6f8947cf65c0446b1781ffac39"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::system_icons::icon_theme_parent (cognitive 18): azul_dll::desktop::shell2::linux::system_icons::icon_theme_parent has cognitive complexity 18 (threshold 15). Drivers by points: if/else 4 (14 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":"dll/src/desktop/shell2/linux/system_icons.rs"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9a945a724f2a16f4c468e14c81585d730d0ab901b8c1629ffc672b8911477c9"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::rewrite_sub_names_to_canonical (cognitive 18): azul_dll::web::transpiler_remill::rewrite_sub_names_to_canonical has cognitive complexity 18 (threshold 15). Drivers by points: if/else 3 (7 pts), loops 3 (6 pts), boolean chains 3, 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":11609}}}],"partialFingerprints":{"codehealthFindingId/v1":"592d2985dcf5d23a215976c5b4d3b184927c77df247fc4486f0d96c2bfdc2fd1"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::symbol_table::collect_macho_low32_sections (cognitive 18): azul_dll::web::symbol_table::collect_macho_low32_sections has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (14 pts), loops 2 (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":"dll/src/web/symbol_table.rs"},"region":{"startLine":3080}}}],"partialFingerprints":{"codehealthFindingId/v1":"e56d74451973ff0f74b352de6311028136f9de6df2e0c0f7f8dd93719c9af7b5"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::symbol_table::collect_macho_tlv_regions (cognitive 18): azul_dll::web::symbol_table::collect_macho_tlv_regions has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (11 pts), match/switch 2 (4 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":"dll/src/web/symbol_table.rs"},"region":{"startLine":3145}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba7919c496749fff186dc184e51ed3ea8f6f0ed78a7c266d4855b6db6cf03f22"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::media_keys::apple::set_system_audio_takeover (cognitive 18): azul_dll::desktop::extra::media_keys::apple::set_system_audio_takeover has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12 (17 pts), boolean chains 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":"dll/src/desktop/extra/media_keys/apple.rs"},"region":{"startLine":620}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c86e8125d13e3d10cc7a4e972b69cac679aa4fd0995c53bceb5d5b54d3fa4d4"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::sensors::linux::poll (cognitive 18): azul_dll::desktop::extra::sensors::linux::poll has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 2 (3 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":"dll/src/desktop/extra/sensors/linux.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"12416c4db73560ada560013c3d44a19267a7e05fba330b4cbe61c09133ba89de"}},{"ruleId":"D2","level":"warning","message":{"text":"IRBuilder::determine_method_kind (cognitive 18): IRBuilder::determine_method_kind has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (18 pts) (nesting depth added 10). 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":"doc/src/codegen/v2/ir_builder.rs"},"region":{"startLine":1752}}}],"partialFingerprints":{"codehealthFindingId/v1":"810b99031d077b2676ba118e2bf66f67386886f86f996f81323714f92304ab9c"}},{"ruleId":"D2","level":"warning","message":{"text":"RustGenerator::generate_auto_from_impls (cognitive 18): RustGenerator::generate_auto_from_impls has cognitive complexity 18 (threshold 15). Drivers by points: boolean chains 8, if/else 3 (6 pts), loops 2, 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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":1124}}}],"partialFingerprints":{"codehealthFindingId/v1":"112092b301404c75f6c4676de5f663ab9a6582474e8f3b26bf811283f7007fb0"}},{"ruleId":"D2","level":"warning","message":{"text":"RustGenerator::generate_enum (cognitive 18): RustGenerator::generate_enum has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8, loops 3 (6 pts), boolean chains 2, 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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2588}}}],"partialFingerprints":{"codehealthFindingId/v1":"69c6344bfc67bccb964f5295b5b09d7b731ded6682cf2e0b41b3ff3b5b659fce"}},{"ruleId":"D2","level":"warning","message":{"text":"RustGenerator::generate_tests (cognitive 18): RustGenerator::generate_tests has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (16 pts), loops 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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":4841}}}],"partialFingerprints":{"codehealthFindingId/v1":"f695decfb97a9c3872247191eaec0efb6c6cebde31cbb7c36784d5e5455f0bad"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ocaml::types::c_size_of_type (cognitive 18): azul_doc::codegen::v2::lang_ocaml::types::c_size_of_type has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (12 pts), match/switch 2 (5 pts), boolean chains 1 (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":"doc/src/codegen/v2/lang_ocaml/types.rs"},"region":{"startLine":644}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf1b79e3ab86926c0ed196e7fc6e03f941f31193b946c5ae7ad847c3be6978f3"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_haskell::functions::emit_inbound_trampoline_imports (cognitive 18): azul_doc::codegen::v2::lang_haskell::functions::emit_inbound_trampoline_imports has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (14 pts), match/switch 2 (3 pts), 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":"doc/src/codegen/v2/lang_haskell/functions.rs"},"region":{"startLine":691}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d065f1029d126e4f5435a65a28c484010a3c84ed57072ab98b79a916316fae8"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::autodebug::build_autodebug_prompt (cognitive 18): azul_doc::reftest::autodebug::build_autodebug_prompt has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (12 pts), loops 3 (5 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":"doc/src/reftest/autodebug.rs"},"region":{"startLine":1648}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa5b0ba033c68dbf97c3e21a2b20d5eb54b18a6e51c38480f797c5e01722f9ed"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_node::types::generate_constants (cognitive 18): azul_doc::codegen::v2::lang_node::types::generate_constants has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (11 pts), loops 4 (7 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":"doc/src/codegen/v2/lang_node/types.rs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"095869c87440d2ae00f2e8dc0b4df69c811e8138d9ee7a72d64d8a3cc22dd61b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::autoreview::run_summarize_highlevel (cognitive 18): azul_doc::reftest::autoreview::run_summarize_highlevel has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (10 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":"doc/src/reftest/autoreview.rs"},"region":{"startLine":2252}}}],"partialFingerprints":{"codehealthFindingId/v1":"7804d08e2bd875ab01263a77b6b2b88169d71dc85d125fa2270aa8ee37352c25"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_perl::types::emit_records_in_sort_order (cognitive 18): azul_doc::codegen::v2::lang_perl::types::emit_records_in_sort_order has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 4, 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":"doc/src/codegen/v2/lang_perl/types.rs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e7aa9d7b2bb7270edeceba86dfb68a5762990f164d2a499825a5a54ca6316c1"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_cpp::cpp20::emit_method_declarations (cognitive 18): azul_doc::codegen::v2::lang_cpp::cpp20::emit_method_declarations has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (13 pts), boolean chains 4, 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":"doc/src/codegen/v2/lang_cpp/cpp20.rs"},"region":{"startLine":922}}}],"partialFingerprints":{"codehealthFindingId/v1":"f85aef118e631201bd07d398bb52b045c38fb198e61369e5979e5992094388c2"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ocaml::wrappers::emit_class_entry_points (cognitive 18): azul_doc::codegen::v2::lang_ocaml::wrappers::emit_class_entry_points has cognitive complexity 18 (threshold 15). Drivers by points: if/else 4 (8 pts), loops 3 (5 pts), match/switch 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":"doc/src/codegen/v2/lang_ocaml/wrappers.rs"},"region":{"startLine":2180}}}],"partialFingerprints":{"codehealthFindingId/v1":"c46f4b84cbf2068c0ab4829957b13ee2b4485d1e3070df069b544b908040095a"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_java::wrappers::emit_app_factory (cognitive 18): azul_doc::codegen::v2::lang_java::wrappers::emit_app_factory has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (13 pts), match/switch 2 (4 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":"doc/src/codegen/v2/lang_java/wrappers.rs"},"region":{"startLine":619}}}],"partialFingerprints":{"codehealthFindingId/v1":"743cbfbca1223cb558517e9bfb59bb11c386afe2433bef383e23b66e9da08f50"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_fortran::types::emit_monomorphized_alias (cognitive 18): azul_doc::codegen::v2::lang_fortran::types::emit_monomorphized_alias has cognitive complexity 18 (threshold 15). Drivers by points: loops 6 (12 pts), if/else 2 (3 pts), match/switch 2 (3 pts) (nesting depth added 8). 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":"doc/src/codegen/v2/lang_fortran/types.rs"},"region":{"startLine":751}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b1e9b18d2db6e95083e01cf027e375db71e79d9686c970c28302678b73ba92c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::workspace::are_paths_synonyms (cognitive 18): azul_doc::autofix::workspace::are_paths_synonyms has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (11 pts), loops 3 (6 pts), boolean chains 1 (nesting depth added 9). Of this number, 12 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":"doc/src/autofix/workspace.rs"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e80614a8b21925759ce801a324eaef126d55203c8f5cb40482dffc175408e77"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::docgen::search::doc_to_text (cognitive 18): azul_doc::docgen::search::doc_to_text has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (12 pts), boolean chains 2, loops 2, 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":"doc/src/docgen/search.rs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c7c8dfc4e6d37d279f39926dc5d7a2789b582cbfd60e8e98230c9f208ec1704"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ada::managed::emit_managed_body (cognitive 18): azul_doc::codegen::v2::lang_ada::managed::emit_managed_body has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 4 (6 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":"doc/src/codegen/v2/lang_ada/managed.rs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fda40f26ce81b622941aa2bdc8fa6bac43f6a616a7593b3ee170a180d1aa747"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_zig::wrappers::classify_arg (cognitive 18): azul_doc::codegen::v2::lang_zig::wrappers::classify_arg has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (14 pts), boolean chains 3, 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":"doc/src/codegen/v2/lang_zig/wrappers.rs"},"region":{"startLine":1268}}}],"partialFingerprints":{"codehealthFindingId/v1":"e71399876f6ce624d578778432d0927369c19b95894c80e7deb9e9a5a03d3ccb"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_php::wrappers::emit_enum_wrapper (cognitive 18): azul_doc::codegen::v2::lang_php::wrappers::emit_enum_wrapper has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (7 pts), loops 3 (5 pts), match/switch 2 (5 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":"doc/src/codegen/v2/lang_php/wrappers.rs"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"b14a517cec679a7ecfd42dfd46fa51f4342cd44fe2a92961c7135f9f15ef8b7e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::mobile::install::ios_plan (cognitive 18): azul_doc::mobile::install::ios_plan has cognitive complexity 18 (threshold 15). Drivers by points: if/else 16 (18 pts) (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":"doc/src/mobile/install.rs"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a3448cb40c58ab27e8d2e5540d2b4e4996c92292dcd175c854d816983bc5168"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_cpp::common::ffi_alias_pairs (cognitive 18): azul_doc::codegen::v2::lang_cpp::common::ffi_alias_pairs has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (10 pts), boolean chains 4, loops 4 (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":"doc/src/codegen/v2/lang_cpp/common.rs"},"region":{"startLine":618}}}],"partialFingerprints":{"codehealthFindingId/v1":"841ced4edbb040fdf8cd00efca4783b0d12e02beb48732398b2f96f8d378e7aa"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_cpp::common::generate_module_partition (cognitive 18): azul_doc::codegen::v2::lang_cpp::common::generate_module_partition has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (9 pts), loops 5 (6 pts), boolean chains 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":"doc/src/codegen/v2/lang_cpp/common.rs"},"region":{"startLine":1310}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6c61d78f059f08ecb3424571bf3c0e862e7002d1aa23a37adb1d104f6d818d4"}},{"ruleId":"D2","level":"warning","message":{"text":"FluentLocalizerHandle::load_from_zip_with_locale (cognitive 18): FluentLocalizerHandle::load_from_zip_with_locale has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (11 pts), match/switch 3 (5 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":"layout/src/fluent.rs"},"region":{"startLine":505}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ea356c89f742ef19a574c7df1d4e3a0797cf10f0c79afd203c51da77563946a"}},{"ruleId":"D2","level":"warning","message":{"text":"ContentOverlay::gc_converged_text (cognitive 18): ContentOverlay::gc_converged_text has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 1 (3 pts) (nesting depth added 10). 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":"layout/src/overlay.rs"},"region":{"startLine":476}}}],"partialFingerprints":{"codehealthFindingId/v1":"821f35ed35d6ed8f8fca367cda9d7364093247aed818cd33ed4726d255ab046b"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolvedContent::children_for_node (cognitive 18): ResolvedContent::children_for_node has cognitive complexity 18 (threshold 15). Drivers by points: loops 4 (9 pts), if/else 3 (7 pts), match/switch 1 (2 pts) (nesting depth added 10). 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":"layout/src/overlay.rs"},"region":{"startLine":593}}}],"partialFingerprints":{"codehealthFindingId/v1":"b534b4fbdfdc04d76bf898c15b68fff8035886ffc3dd01c28a11a72790c2a54b"}},{"ruleId":"D2","level":"warning","message":{"text":"DisplayListGenerator::push_node_clips (cognitive 18): DisplayListGenerator::push_node_clips has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (10 pts), boolean chains 8 (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":"layout/src/solver3/display_list.rs"},"region":{"startLine":5545}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb2eae8a8abfd6a3dd93b3d44292b920ad091b90411ed82a4ab807d4fb3fa6a6"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutTreeBuilder::process_block_children (cognitive 18): LayoutTreeBuilder::process_block_children has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (15 pts), loops 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":"layout/src/solver3/layout_tree.rs"},"region":{"startLine":2408}}}],"partialFingerprints":{"codehealthFindingId/v1":"023c4485a353d24a7047f194d904dcf8654c3d3316aa7d8dd3c549854e6dfdf3"}},{"ruleId":"D2","level":"warning","message":{"text":"StyleProperties::apply_override (cognitive 18): StyleProperties::apply_override has cognitive complexity 18 (threshold 15). Drivers by points: if/else 18. 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":"layout/src/text3/cache.rs"},"region":{"startLine":4979}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d74dc2b79d1b5189e6fc2ecab47b17e42202b1ae924a1ad23a87e2aa35f88f2"}},{"ruleId":"D2","level":"warning","message":{"text":"UnifiedLayout::move_cursor_to_next_word (cognitive 18): UnifiedLayout::move_cursor_to_next_word has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (16 pts), 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":"layout/src/text3/cache.rs"},"region":{"startLine":6688}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3ed2eed13cfb53ed4576268e57179d7984e946aa2bd2b0ebeb38565fe894fb9"}},{"ruleId":"D2","level":"warning","message":{"text":"TextShapingCache::layout_flow (cognitive 18): TextShapingCache::layout_flow has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (14 pts), match/switch 1 (2 pts), boolean chains 1, 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":"layout/src/text3/cache.rs"},"region":{"startLine":7897}}}],"partialFingerprints":{"codehealthFindingId/v1":"11dbebb418097f1c394057109c689b2b01ef1c2541e8293b54f195b0854cb4e0"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::compute_edit_resume_point (cognitive 18): LayoutWindow::compute_edit_resume_point has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 2 (3 pts), match/switch 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":"layout/src/window.rs"},"region":{"startLine":4092}}}],"partialFingerprints":{"codehealthFindingId/v1":"652d92b08184a0908e51069a090e5112e99117506cef5b1ecc2bb26f94ab0813"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::apply_selection_op_for_seat (cognitive 18): LayoutWindow::apply_selection_op_for_seat has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (9 pts), loops 2 (7 pts), match/switch 2 (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":"layout/src/window.rs"},"region":{"startLine":10283}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0f9bcb4cba5e325cbcc5e4a3508a42ac6faecea929a105ef8091ae3116c14a8"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::process_selection_handle_drag (cognitive 18): LayoutWindow::process_selection_handle_drag has cognitive complexity 18 (threshold 15). Drivers by points: if/else 11 (17 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":"layout/src/window.rs"},"region":{"startLine":12907}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb6b579caade695cd637200461146d72aec25aacf1d9052a2867fff35b34e5b7"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::svg::svg_multi_polygon_to_path_storage (cognitive 18): azul_layout::cpurender::svg::svg_multi_polygon_to_path_storage has cognitive complexity 18 (threshold 15). Drivers by points: if/else 3 (12 pts), loops 2 (3 pts), match/switch 1 (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":"layout/src/cpurender/svg.rs"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5a3bc58f79f3d243743073cdc5cf5402489bca1f906854ae7b861de0b7ffb2a"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::widgets::node_graph::render_connections (cognitive 18): azul_layout::widgets::node_graph::render_connections has cognitive complexity 18 (threshold 15). Drivers by points: if/else 2 (7 pts), loops 3 (6 pts), match/switch 2 (5 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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":2886}}}],"partialFingerprints":{"codehealthFindingId/v1":"59194909d5149a17f56696d8dbff2bcb9667168a50e3fd043aa7cbd839d141c5"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::pixmap::svg_path_to_agg (cognitive 18): azul_layout::cpurender::pixmap::svg_path_to_agg has cognitive complexity 18 (threshold 15). Drivers by points: if/else 3 (12 pts), loops 2 (3 pts), match/switch 1 (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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":1233}}}],"partialFingerprints":{"codehealthFindingId/v1":"94addf5210f05107fe08268bd635f2e26ade706dbbeda448a85de10ad435e01f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::widgets::combobox::on_combobox_dismissed (cognitive 18): azul_layout::widgets::combobox::on_combobox_dismissed has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (18 pts) (nesting depth added 10). 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":"layout/src/widgets/combobox.rs"},"region":{"startLine":872}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ac84a7f8721809c42d77825cf465e6caa5a101b18fbbcd9d23c39c37c81de77"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::cache::path_segments_line_intersection (cognitive 18): azul_layout::text3::cache::path_segments_line_intersection has cognitive complexity 18 (threshold 15). Drivers by points: if/else 4 (9 pts), loops 3 (4 pts), boolean chains 3, 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":"layout/src/text3/cache.rs"},"region":{"startLine":13211}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cc6f28067b8eeff5101c43276b0616432ce871443d7d03392dc11ef3ec1b752"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::xml::svg::rasterize_multi_polygon (cognitive 18): azul_layout::xml::svg::rasterize_multi_polygon has cognitive complexity 18 (threshold 15). Drivers by points: if/else 3 (12 pts), loops 2 (3 pts), match/switch 1 (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":"layout/src/xml/svg.rs"},"region":{"startLine":2019}}}],"partialFingerprints":{"codehealthFindingId/v1":"67d600aace320b6bf1f2686f280e98843e3521dde06841884fcb60a3206bfb85"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::compositor::find_matching_pop (cognitive 18): azul_layout::cpurender::compositor::find_matching_pop has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (15 pts), match/switch 1 (2 pts), loops 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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":1262}}}],"partialFingerprints":{"codehealthFindingId/v1":"143c1d8e37b3abc0683393abf718db2bfbcb6ab1379989e2a931947e90e22c5f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::compositor::coalesce_damage_rects (cognitive 18): azul_layout::cpurender::compositor::coalesce_damage_rects has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 3 (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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":3456}}}],"partialFingerprints":{"codehealthFindingId/v1":"9abb51244a5ab0fcd0b963d5eaa7e2ae5afb122161f2b3e3c5180ca1cbef7133"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::dialogs::gpu_check::dialog_layout (cognitive 18): azul_layout::dialogs::gpu_check::dialog_layout has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (16 pts), match/switch 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":"layout/src/dialogs/gpu_check.rs"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1bd7d3e073f9090c7dc28ca7baf8d0b409577a3efafe5f23836bf71c309a7f2"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::layout_tree::compute_layout_style (cognitive 18): azul_layout::solver3::layout_tree::compute_layout_style has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (9 pts), match/switch 7, 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":"layout/src/solver3/layout_tree.rs"},"region":{"startLine":3600}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f43d867d0f85fa0d712c5cbe85c0f53fc456e0390ab699b3477bbb721173cc7"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::get_containing_block_for_node (cognitive 18): azul_layout::solver3::get_containing_block_for_node has cognitive complexity 18 (threshold 15). Drivers by points: match/switch 2 (9 pts), if/else 3 (6 pts), loops 1 (3 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":"layout/src/solver3/mod.rs"},"region":{"startLine":1907}}}],"partialFingerprints":{"codehealthFindingId/v1":"79a6edc626e9ca73d02f4c6878dfe81be12fe0f83a90442fd2a75f0e3dd70ef9"}},{"ruleId":"D2","level":"warning","message":{"text":"ClipItemKind::get_clip_result (cognitive 18): ClipItemKind::get_clip_result has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (9 pts), match/switch 6 (9 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":"webrender/core/src/clip.rs"},"region":{"startLine":1938}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f344b3719640bbf1ffed2ef55a00fe309694280869eb0ddd7804a172f15332d"}},{"ruleId":"D2","level":"warning","message":{"text":"SwCompositeThread::take_job (cognitive 18): SwCompositeThread::take_job has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (17 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":"webrender/core/src/compositor/sw_compositor.rs"},"region":{"startLine":652}}}],"partialFingerprints":{"codehealthFindingId/v1":"26dabedba2400c34605b9f8d9de8dc1bc7841650951f65ca82675c72df6927bb"}},{"ruleId":"D2","level":"warning","message":{"text":"ConicGradientTemplate::from (cognitive 18): ConicGradientTemplate::from has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (16 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":"webrender/core/src/prim_store/gradient/conic.rs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4e3b5b88354f9a031fce3838e72c4354f9616668cace9f92280cca32edf6f1a"}},{"ruleId":"D2","level":"warning","message":{"text":"LinearGradientTemplate::from (cognitive 18): LinearGradientTemplate::from has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (14 pts), boolean chains 4 (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":"webrender/core/src/prim_store/gradient/linear.rs"},"region":{"startLine":358}}}],"partialFingerprints":{"codehealthFindingId/v1":"89c783df5d99b4a4b3a1465e444bd46232a17991fd88d7161d651a57ce747f3d"}},{"ruleId":"D2","level":"warning","message":{"text":"GradientGpuBlockBuilder::build (cognitive 18): GradientGpuBlockBuilder::build has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 3 (5 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":"webrender/core/src/prim_store/gradient/mod.rs"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc8db9725c5ec131247262d7ebd8646ec3819b29c9d037d6b193d7b2349c1adc"}},{"ruleId":"D2","level":"warning","message":{"text":"TextRunPrimitive::update_font_instance (cognitive 18): TextRunPrimitive::update_font_instance has cognitive complexity 18 (threshold 15). Drivers by points: if/else 13 (15 pts), boolean chains 3 (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":"webrender/core/src/prim_store/text_run.rs"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7b67c67b7a69ec1e1650aef7799a7feb68aeafd095dc1cc546f6ae5c81fee6a"}},{"ruleId":"D2","level":"warning","message":{"text":"RenderBackend::process_scene_builder_result (cognitive 18): RenderBackend::process_scene_builder_result has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 2 (5 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":"webrender/core/src/render_backend.rs"},"region":{"startLine":1139}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5adac8ef2be0a748e283fa730364cc52166f1848e480abe43a9f92f624fde57"}},{"ruleId":"D2","level":"warning","message":{"text":"SceneBuilderThread::forward_built_transactions (cognitive 18): SceneBuilderThread::forward_built_transactions has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (15 pts), match/switch 2, boolean chains 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":"webrender/core/src/scene_builder_thread.rs"},"region":{"startLine":676}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f9bfb9f43cd79a4e76ecc64fe1372853f6bff2a5d51617512adff3470b08e46"}},{"ruleId":"D2","level":"warning","message":{"text":"SceneBuilder::pop_all_shadows (cognitive 18): SceneBuilder::pop_all_shadows has cognitive complexity 18 (threshold 15). Drivers by points: if/else 3 (8 pts), match/switch 2 (6 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":"webrender/core/src/scene_building.rs"},"region":{"startLine":2721}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffe45c32b01e2fd582dca54689f57a25e3a7e00861bf4b670c306c2b64219faa"}},{"ruleId":"D2","level":"warning","message":{"text":"webrender::border::write_dotted_corner_instances (cognitive 18): webrender::border::write_dotted_corner_instances has cognitive complexity 18 (threshold 15). Drivers by points: if/else 11 (14 pts), loops 3, boolean chains 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, 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":"webrender/core/src/border.rs"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"f550366aa6ff4f23c187f7415ef30c93269e890615961a8cb1b0af13294c3387"}},{"ruleId":"D2","level":"warning","message":{"text":"webrender::filterdata::push_component_transfer_data (cognitive 18): webrender::filterdata::push_component_transfer_data has cognitive complexity 18 (threshold 15). Drivers by points: match/switch 2 (6 pts), if/else 2 (5 pts), loops 2 (5 pts), boolean chains 2 (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":"webrender/core/src/filterdata.rs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"8eff033fda6bc3f58c4573196df9fc7cef46441709f5648f67ec6137f49e3370"}},{"ruleId":"D2","level":"warning","message":{"text":"webrender::prepare::prepare_prim_for_render (cognitive 18): webrender::prepare::prepare_prim_for_render has cognitive complexity 18 (threshold 15). Drivers by points: if/else 4 (7 pts), match/switch 3 (6 pts), boolean chains 5 (nesting depth added 6). 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, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"webrender/core/src/prepare.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"10b42c99219f35b36ed914e0dfac791e6bf0c2693ade908036783c37cb66a09b"}},{"ruleId":"D2","level":"warning","message":{"text":"webrender::prepare::update_clip_task_for_brush (cognitive 18): webrender::prepare::update_clip_task_for_brush has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (15 pts), 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":"webrender/core/src/prepare.rs"},"region":{"startLine":1313}}}],"partialFingerprints":{"codehealthFindingId/v1":"11a52614cc7e815113990d991e24b35b04ff271dd620fe72d159fc0d829bca8d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul-search.compositeAdapter (cognitive 18): azul-search.compositeAdapter has cognitive complexity 18 (threshold 15). Drivers by points: boolean chains 8, if/else 4 (6 pts), loops 3 (4 pts) (nesting depth added 3). Most of this is not in the body itself: 0 of the 18 points are its own statements and the rest belongs to 5 function literals inside it that branch (lines 344, 362, 369, \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":"doc/templates/azul-search.js"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"a305b18a0d62cac0bd9216787c5241fcb929f1775313fbb6b604f6871acfdf31"}},{"ruleId":"D2","level":"warning","message":{"text":"render::buildNode (cognitive 18): render::buildNode has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (10 pts), boolean chains 4, ternaries 2 (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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":4121}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d61c43a5a35ca8d84d927db01a9e799c27a93f63a35746f7d050f50006a79cb"}},{"ruleId":"D2","level":"warning","message":{"text":"runAllServerSide (cognitive 18): runAllServerSide has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (13 pts), boolean chains 2, ternaries 1 (2 pts), error handling 1 (nesting depth added 8). Most of this is not in the body itself: 5 of the 18 points are its own statements and the rest belongs to 4 function literals inside it that branch (lines 4698, 4693, 4701, \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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":4687}}}],"partialFingerprints":{"codehealthFindingId/v1":"07d820d9c146a97da5cdbec9fb49b1a9a648046137c1f0af12b21a208bccb7a4"}},{"ruleId":"D2","level":"warning","message":{"text":"CssMatcher::matches (cognitive 17): CssMatcher::matches has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (12 pts), loops 2 (3 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":"core/src/xml.rs"},"region":{"startLine":7047}}}],"partialFingerprints":{"codehealthFindingId/v1":"a577f71f739083a182fdbf14c5eb1f6b128556d964dfb156c6f8b9ef2797af61"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::xml::user_defined_compile_fn (cognitive 17): azul_core::xml::user_defined_compile_fn has cognitive complexity 17 (threshold 15). Drivers by points: match/switch 5 (9 pts), loops 4 (8 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":"core/src/xml.rs"},"region":{"startLine":3180}}}],"partialFingerprints":{"codehealthFindingId/v1":"73dd082ec9f94ad120467f7860212b791b6bb06effc99ce3754ebd7e16933368"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::xml::xml_node_to_dom_fast (cognitive 17): azul_core::xml::xml_node_to_dom_fast has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 3 (4 pts), match/switch 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":"core/src/xml.rs"},"region":{"startLine":6305}}}],"partialFingerprints":{"codehealthFindingId/v1":"58e8a8b8e5b0b903761926c158c6fcf126174cca280eb60649cb665ef3f4e14b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::path_parser::arc_to_cubics (cognitive 17): azul_core::path_parser::arc_to_cubics has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11 (12 pts), boolean chains 4, loops 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":"core/src/path_parser.rs"},"region":{"startLine":620}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdc10d71609bc44b020c7797209cc2d49f52495448728e6248acf2b72e2ddaf0"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_css::parser2::parse_media_conditions (cognitive 17): azul_css::parser2::parse_media_conditions has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (15 pts), boolean chains 1, 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":"css/src/parser2.rs"},"region":{"startLine":1136}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ab2b1444fdc4f057394eb1f2eef3e3f3de781e12e447e101109b3ee46991d37"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_css::props::style::border::parse_border_side (cognitive 17): azul_css::props::style::border::parse_border_side has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (16 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":"css/src/props/style/border.rs"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ff854b0141e9abe309f3accfe40c8e539e005c851456fbe26b91e583e4b044f"}},{"ruleId":"D2","level":"warning","message":{"text":"VtEncoder::encode (cognitive 17): VtEncoder::encode has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (9 pts), loops 3 (5 pts), boolean chains 2, match/switch 1 (nesting depth added 3). 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":"dll/src/desktop/extra/video_codec/videotoolbox.rs"},"region":{"startLine":633}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dc33c4c3f0f1a7b8454fe0b33d0cbb6839d249768251662212acb7e169dd59d"}},{"ruleId":"D2","level":"warning","message":{"text":"WaylandWindow::apply_seat_text_input_done (cognitive 17): WaylandWindow::apply_seat_text_input_done 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":10692}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fae924b0779411b1e5ef893b31354cecb75d049701388c46c8aab073af05ef3"}},{"ruleId":"D2","level":"warning","message":{"text":"WindowsMenuBar::recursive_construct_menu (cognitive 17): WindowsMenuBar::recursive_construct_menu has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (10 pts), match/switch 2 (6 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":"dll/src/desktop/shell2/windows/menu.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5a911ffdbb19a07356e62aa262076f475f467da451ac6c24fdb5e65ac26e462"}},{"ruleId":"D2","level":"warning","message":{"text":"Win32Window::regenerate_layout_inner (cognitive 17): Win32Window::regenerate_layout_inner has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10 (15 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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":1815}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbaf12287e81b0d3535512eb085ef6a792b0d1999b6e03f589b98aa9d4523023"}},{"ruleId":"D2","level":"warning","message":{"text":"RenderContext::build_node_attrs (cognitive 17): RenderContext::build_node_attrs has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (15 pts), loops 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":"dll/src/web/html_render.rs"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3d75cedf8bc8db1a03558867e10ef5ffd64e57ddbcdc9e831c05793f1681542"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::file_picker::android::Java_com_azul_picker_AzulFilePicker_nativeOnResult (cognitive 17): azul_dll::desktop::extra::file_picker::android::Java_com_azul_picker_AzulFilePicker_nativeOnResult has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (11 pts), match/switch 4 (5 pts), 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, 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":"dll/src/desktop/extra/file_picker/android.rs"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"56b0a943ded2f1e006ccc32f4e51ea32cd3be54f24b70b9cdfaf7a1ad7398270"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::system_style::parse_pywal_colors (cognitive 17): azul_dll::desktop::shell2::linux::system_style::parse_pywal_colors has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11 (17 pts) (nesting depth added 6). 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, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":2069}}}],"partialFingerprints":{"codehealthFindingId/v1":"53ae49d90fecf2082eab59146d5f86fd7b29bb2caf70ac959223075e008ee65b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::system_style::color_scheme_from_message (cognitive 17): azul_dll::desktop::shell2::linux::system_style::color_scheme_from_message has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (12 pts), boolean chains 2, match/switch 1 (2 pts), 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":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":3058}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef64b81f4072871d4badbc82d453aa6d289d61dbe88ec5b3406c630676cad21a"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::resolve_fn_ptr (cognitive 17): azul_dll::web::resolve_fn_ptr has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (17 pts) (nesting depth added 9). 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":"dll/src/web/mod.rs"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"eedc052d177522817e6c8f52c2a1a6e6fded3bf84b99acf7857b0bc0157b54c1"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::camera::windows::media_foundation::pick_native_type (cognitive 17): azul_dll::desktop::extra::camera::windows::media_foundation::pick_native_type has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (14 pts), boolean chains 2, 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":"dll/src/desktop/extra/camera/windows.rs"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"5488383d65123161d18efeb94899cffebb4df52f3dec30f40d4918f02a003385"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::iroh::engine::receive_stream (cognitive 17): azul_dll::desktop::extra::iroh::engine::receive_stream has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (12 pts), match/switch 2 (3 pts), loops 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":"dll/src/desktop/extra/iroh/engine.rs"},"region":{"startLine":480}}}],"partialFingerprints":{"codehealthFindingId/v1":"f23506217f94cd117416a9bef92d37a2e9d8612467d2d7a562030003fd3ab371"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::patch_wasm_sp_init (cognitive 17): azul_dll::web::transpiler_remill::patch_wasm_sp_init has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (15 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":5440}}}],"partialFingerprints":{"codehealthFindingId/v1":"244815f5d83a0a8776b73fe3c8f4adc2b8ef8f096ef305020bf8e21b70c64803"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::scan_arm64_adrp_pages (cognitive 17): azul_dll::web::transpiler_remill::scan_arm64_adrp_pages has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (15 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":10931}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab4423a073e443de2133485f5e93ead8fde1128dc582fb085fd34751466c41f4"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::web::transpiler_remill::rewrite_fp80_literals (cognitive 17): azul_dll::web::transpiler_remill::rewrite_fp80_literals has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (14 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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":11519}}}],"partialFingerprints":{"codehealthFindingId/v1":"69ed16f27511d276d3c357abf16cb6e75d549de67f390efc858694c28cbf014d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::media_keys::apple::install_interruption_observer (cognitive 17): azul_dll::desktop::extra::media_keys::apple::install_interruption_observer has cognitive complexity 17 (threshold 15). Drivers by points: if/else 15 (17 pts) (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":"dll/src/desktop/extra/media_keys/apple.rs"},"region":{"startLine":701}}}],"partialFingerprints":{"codehealthFindingId/v1":"8603ff88a1c6fc10c40bbecdd71fc7c4acaaf19bdfacc9f096c8c510b28b73f7"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::audio::coreaudio_device_names (cognitive 17): azul_dll::desktop::extra::audio::coreaudio_device_names has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (10 pts), boolean chains 3, match/switch 2 (3 pts), loops 1 (nesting depth added 3). 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, 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":"dll/src/desktop/extra/audio/mod.rs"},"region":{"startLine":439}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ede2d822fa308487c9872b99ddf1921caa515950c60609082bd9938eac4c731"}},{"ruleId":"D2","level":"warning","message":{"text":"CGenerator::generate_function_declaration (cognitive 17): CGenerator::generate_function_declaration has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (11 pts), match/switch 3 (4 pts), loops 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":"doc/src/codegen/v2/lang_c.rs"},"region":{"startLine":869}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6780cc5b071b69bd8219bb0fb4e6b7cb5f36132597b4e57501d08708dd7a917"}},{"ruleId":"D2","level":"warning","message":{"text":"Cpp17Generator::generate_method_declarations (cognitive 17): Cpp17Generator::generate_method_declarations has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (12 pts), boolean chains 3, 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":"doc/src/codegen/v2/lang_cpp/cpp17.rs"},"region":{"startLine":804}}}],"partialFingerprints":{"codehealthFindingId/v1":"f14b84996be9adf12257db6397d221d8cefb5cd8184577337a3290bb6ccc7961"}},{"ruleId":"D2","level":"warning","message":{"text":"Emitter::emit_struct (cognitive 17): Emitter::emit_struct has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (12 pts), loops 1 (2 pts), match/switch 2, boolean chains 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":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":858}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa1f2090ea6a4ebc76a5c5c1fa4e70930e62c0952d7b01f7c3f3bd0f5657a7de"}},{"ruleId":"D2","level":"warning","message":{"text":"Emitter::emit_traits (cognitive 17): Emitter::emit_traits has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11 (14 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":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":1488}}}],"partialFingerprints":{"codehealthFindingId/v1":"64d19df9cfbc4af6804e2acaa39c6b9326aa5d4e7263600a549203e8409bf385"}},{"ruleId":"D2","level":"warning","message":{"text":"ChromeCdp::send_command (cognitive 17): ChromeCdp::send_command has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (16 pts), loops 1 (nesting depth added 11). 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":"doc/src/reftest/autodebug.rs"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"e817de158780bb7eb2885960859c713c414967b242fcf1c34f5940f5a279596b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::types::ffi::is_ffi_safe (cognitive 17): azul_doc::autofix::types::ffi::is_ffi_safe has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (13 pts), loops 1 (3 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":"doc/src/autofix/types/ffi.rs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"07ae92867f06974a0892e5c2984a32615eabe8f5af60b1ecee5e951e385b9c95"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::patch::locatesource::determine_effective_root_and_qname_with_metadata (cognitive 17): azul_doc::patch::locatesource::determine_effective_root_and_qname_with_metadata has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (14 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":"doc/src/patch/locatesource.rs"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7ef445e1418862274c1899a6225588b1522be8e02c768058dae192327a57b61"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_odin::types::emit_monomorphized_alias (cognitive 17): azul_doc::codegen::v2::lang_odin::types::emit_monomorphized_alias has cognitive complexity 17 (threshold 15). Drivers by points: loops 5 (9 pts), if/else 3 (7 pts), match/switch 1 (nesting depth added 8). 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":"doc/src/codegen/v2/lang_odin/types.rs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bda74313c557b28c23ac95e71e729434b8462a07ee99272305febab1d61468e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::regression::collect_processed_commits (cognitive 17): azul_doc::reftest::regression::collect_processed_commits has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 2 (4 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":"doc/src/reftest/regression.rs"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"906ef91ea39489d16dd94de6c42fc152ba28d0e7f928a3d0690490ecb2e6ee2f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_julia::types::emit_monomorphized_alias (cognitive 17): azul_doc::codegen::v2::lang_julia::types::emit_monomorphized_alias has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (9 pts), loops 4 (7 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":"doc/src/codegen/v2/lang_julia/types.rs"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b330465891234c3aa28627722ca0df88baec620f26d32cc711a027edbda70d4"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_kotlin::managed::kt_data_typed_sam_shape (cognitive 17): azul_doc::codegen::v2::lang_kotlin::managed::kt_data_typed_sam_shape has cognitive complexity 17 (threshold 15). Drivers by points: if/else 12 (15 pts), loops 1, match/switch 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, 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":"doc/src/codegen/v2/lang_kotlin/managed.rs"},"region":{"startLine":633}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb495ca027d80a1b23a3c867f261e699181b5f1325fc863e84c3f98360563ff2"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_lua::byref_routes (cognitive 17): azul_doc::codegen::v2::lang_lua::byref_routes has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (10 pts), boolean chains 6, 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":"doc/src/codegen/v2/lang_lua/mod.rs"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"d00777d1eb8a7a5dfc4e88f22adcc2b31cb301d3039a214e6dae88d0666ea568"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::print::print_all_modules (cognitive 17): azul_doc::print::print_all_modules has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (11 pts), loops 3 (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":"doc/src/print.rs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"8580558e80a8fa3e8259e41703a42c663b5954852eff2cdfa3f9517ba4b0e140"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_node::wrappers::emit_alias_wrapper (cognitive 17): azul_doc::codegen::v2::lang_node::wrappers::emit_alias_wrapper has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (8 pts), loops 3 (5 pts), match/switch 3 (4 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":"doc/src/codegen/v2/lang_node/wrappers.rs"},"region":{"startLine":1097}}}],"partialFingerprints":{"codehealthFindingId/v1":"52ca5ccd670a7813c8facd457c6b4c57e4c994f31983d6ef0a278a1faa9faf81"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::compare_images (cognitive 17): azul_doc::reftest::compare_images has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 4 (6 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":"doc/src/reftest/mod.rs"},"region":{"startLine":1067}}}],"partialFingerprints":{"codehealthFindingId/v1":"54134a68c1c8c1f8eb72adf22d7d6579e2a96f21cdeb754910793b9f64a08aa6"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::autodoc::run_autodoc_agent (cognitive 17): azul_doc::reftest::autodoc::run_autodoc_agent has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (9 pts), match/switch 5 (6 pts), boolean chains 1, 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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":987}}}],"partialFingerprints":{"codehealthFindingId/v1":"aafc3b79393675712b3639e9ca63ee121250904ad4267d4f8099a8ac3ae0979c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::autoreview::run_smallfixes_agent (cognitive 17): azul_doc::reftest::autoreview::run_smallfixes_agent has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (9 pts), match/switch 5 (6 pts), boolean chains 1, 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. This shape REPEATS in the file: one other method here (azul_doc::reftest::autoreview::run_midlevel_agent) 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":"doc/src/reftest/autoreview.rs"},"region":{"startLine":607}}}],"partialFingerprints":{"codehealthFindingId/v1":"674c8e20b24187757495995f84d79db733887300a2dc603ff558639d7db17478"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::autoreview::run_midlevel_agent (cognitive 17): azul_doc::reftest::autoreview::run_midlevel_agent has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (9 pts), match/switch 5 (6 pts), boolean chains 1, 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. This shape REPEATS in the file: one other method here (azul_doc::reftest::autoreview::run_smallfixes_agent) 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":"doc/src/reftest/autoreview.rs"},"region":{"startLine":1760}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cfc492e948913769fbb8c0b2b316454fbe4cca5ad80bd6c37d11046f0b13b7e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::assemble_context::run (cognitive 17): azul_doc::assemble_context::run has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (14 pts), 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":"doc/src/assemble_context.rs"},"region":{"startLine":978}}}],"partialFingerprints":{"codehealthFindingId/v1":"b81455ca13bd1ca92ff3926ecb15b5f0f270770063a1a5c641a8e576f222ef1b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_perl::types::nested_struct_name (cognitive 17): azul_doc::codegen::v2::lang_perl::types::nested_struct_name has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (13 pts), boolean chains 3, 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":"doc/src/codegen/v2/lang_perl/types.rs"},"region":{"startLine":491}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f80c2da6d2f1e69f84b168a952e3f1b766f6c63e780eb2c40deae969e90ab0d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_lisp::managed::emit_per_kind_invoker (cognitive 17): azul_doc::codegen::v2::lang_lisp::managed::emit_per_kind_invoker has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10 (14 pts), match/switch 1 (2 pts), 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":"doc/src/codegen/v2/lang_lisp/managed.rs"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"21f8d968ba1cc13a36fe08503b2b5910c6bc4e8feb9e551f0680a8992d6b4ac5"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_racket::types::emit_monomorphized_alias (cognitive 17): azul_doc::codegen::v2::lang_racket::types::emit_monomorphized_alias has cognitive complexity 17 (threshold 15). Drivers by points: loops 5 (10 pts), if/else 3 (6 pts), match/switch 1 (nesting depth added 8). 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":"doc/src/codegen/v2/lang_racket/types.rs"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"14a02a30af20044fdf215c8824eebbaf387377f2e7f2730e513766b28a9c2e8c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ocaml::wrappers::emit_union_variant_interface (cognitive 17): azul_doc::codegen::v2::lang_ocaml::wrappers::emit_union_variant_interface has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (11 pts), loops 2 (3 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":"doc/src/codegen/v2/lang_ocaml/wrappers.rs"},"region":{"startLine":1928}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c98e97991c37dfcdbe30f4da848e526889e591c5f5c5435c53febd649990e08"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::debug::debug_api_type (cognitive 17): azul_doc::autofix::debug::debug_api_type has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (14 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":"doc/src/autofix/debug.rs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"26d79ebdb2abbd24a5c5c79bdf5af4960a0970b24eeed64e87be494e609d4e61"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::debug::show_wrong_module_types (cognitive 17): azul_doc::autofix::debug::show_wrong_module_types has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (9 pts), loops 5 (7 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":"doc/src/autofix/debug.rs"},"region":{"startLine":944}}}],"partialFingerprints":{"codehealthFindingId/v1":"52424fbc77915386a64012efedd6e3968d2286296c6990fcf78903a73c8e6fb5"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_pascal::wrappers::emit_wrapper_class_impl (cognitive 17): azul_doc::codegen::v2::lang_pascal::wrappers::emit_wrapper_class_impl has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 5 (7 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":"doc/src/codegen/v2/lang_pascal/wrappers.rs"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8eec62facb7f1b8655805c1d762ee29e6e7ce565b13db36d61e87b1c1ae7f08"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_lisp::wrappers::idiomatic_method_name (cognitive 17): azul_doc::codegen::v2::lang_lisp::wrappers::idiomatic_method_name has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (11 pts), loops 2 (4 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":"doc/src/codegen/v2/lang_lisp/wrappers.rs"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"aeae9fa514431633fac35c751d41ac9da641dd6a67917638e17deeb15f56eebc"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_java::derives::emit_member_facade (cognitive 17): azul_doc::codegen::v2::lang_java::derives::emit_member_facade has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (10 pts), loops 2 (4 pts), match/switch 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":"doc/src/codegen/v2/lang_java/derives.rs"},"region":{"startLine":630}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ae1e6c727c62c3a41da28fe23bc42313adf403e9b8c608384e848667376d8f4"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::apply_midlevel::prompt_user (cognitive 17): azul_doc::reftest::apply_midlevel::prompt_user has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (14 pts), 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":"doc/src/reftest/apply_midlevel.rs"},"region":{"startLine":1914}}}],"partialFingerprints":{"codehealthFindingId/v1":"440b195c64d31fa0b988cbc2aec767e43bee4bdf75d86c0541604737be5723c3"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_pascal::types::emit_unscoped_enum_aliases (cognitive 17): azul_doc::codegen::v2::lang_pascal::types::emit_unscoped_enum_aliases has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (9 pts), loops 5 (7 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":"doc/src/codegen/v2/lang_pascal/types.rs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0ab507489a5bbbb3746bf79b54c16c020a2c46ebc9ca2a39b0c246e4a9de635"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_haskell::types::emit_type_decls_for (cognitive 17): azul_doc::codegen::v2::lang_haskell::types::emit_type_decls_for has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (11 pts), loops 4, 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":"doc/src/codegen/v2/lang_haskell/types.rs"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8b28777607d0bf291c9756f556d66e6c362c4db7580eeb4fdfc746bb4b2da33"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_cpp::common::enum_holder_function_signature (cognitive 17): azul_doc::codegen::v2::lang_cpp::common::enum_holder_function_signature has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10 (12 pts), boolean chains 3, match/switch 1 (2 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":"doc/src/codegen/v2/lang_cpp/common.rs"},"region":{"startLine":808}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b65f30317cb7f58a0b8b82f21a1b74eef1fe4a12a973fceda09254a94f42f19"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_cpp::common::get_cpp_return_type (cognitive 17): azul_doc::codegen::v2::lang_cpp::common::get_cpp_return_type has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (16 pts), 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":"doc/src/codegen/v2/lang_cpp/common.rs"},"region":{"startLine":1803}}}],"partialFingerprints":{"codehealthFindingId/v1":"277148631fb329ec4d8da585575efa83a3d24d3c9868a2aa34fa9647df49d874"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_v::types::emit_monomorphized_alias (cognitive 17): azul_doc::codegen::v2::lang_v::types::emit_monomorphized_alias has cognitive complexity 17 (threshold 15). Drivers by points: loops 5 (9 pts), if/else 3 (7 pts), match/switch 1 (nesting depth added 8). 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":"doc/src/codegen/v2/lang_v/types.rs"},"region":{"startLine":273}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbad83bce5229d8bcd1645e911ab8d09fd41d9a73cc78335f618e56e5ce8ee02"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::patch::index::extract_derives (cognitive 17): azul_doc::patch::index::extract_derives has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (12 pts), loops 2 (5 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":"doc/src/patch/index.rs"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"43c1ab7a22a3607be3d51e499e62983f06a37f472577ee1c646093dd7bbd4f0f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_lisp::ident_to_kebab (cognitive 17): azul_doc::codegen::v2::lang_lisp::ident_to_kebab has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (10 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":"doc/src/codegen/v2/lang_lisp/mod.rs"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"9535eeab5c6cd58c3e4e0fd498e0d7219fca164dad84be03ca211bd7c51321fe"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::diff::build_element_to_option_map (cognitive 17): azul_doc::autofix::diff::build_element_to_option_map has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (13 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":"doc/src/autofix/diff.rs"},"region":{"startLine":2494}}}],"partialFingerprints":{"codehealthFindingId/v1":"542e6dd0127d3c08a6f54c808437ea6dea9d178d881fef11683011b110848c27"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_crystal::types::emit_monomorphized_alias (cognitive 17): azul_doc::codegen::v2::lang_crystal::types::emit_monomorphized_alias has cognitive complexity 17 (threshold 15). Drivers by points: loops 5 (9 pts), if/else 3 (7 pts), match/switch 1 (nesting depth added 8). 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":"doc/src/codegen/v2/lang_crystal/types.rs"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"2425cf83b2de8bb91466b89b7be6c018ec5352bdbdcf64422bfec09b2b438e81"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::patch::apply_patches_from_directory (cognitive 17): azul_doc::patch::apply_patches_from_directory has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 2 (5 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":"doc/src/patch/mod.rs"},"region":{"startLine":361}}}],"partialFingerprints":{"codehealthFindingId/v1":"e28f2c201693b18bb8911ecd87413e1560550903dd3d12d6b52823bfa792b68a"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_kotlin::derives::emit_passthrough (cognitive 17): azul_doc::codegen::v2::lang_kotlin::derives::emit_passthrough has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11 (12 pts), boolean chains 3, loops 1, 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":"doc/src/codegen/v2/lang_kotlin/derives.rs"},"region":{"startLine":500}}}],"partialFingerprints":{"codehealthFindingId/v1":"d441a1e28dfff12d08d2ef3a56388ef77f84de3417c1f0c9cb7a2ed7d9dc8b35"}},{"ruleId":"D2","level":"warning","message":{"text":"ScrollbarState::hit_test_component (cognitive 17): ScrollbarState::hit_test_component 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":"layout/src/managers/scroll_state.rs"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"95f53d1e155866b78caeebc1af6c34d281d8485645298e56af41883c3912e211"}},{"ruleId":"D2","level":"warning","message":{"text":"DisplayListBuilder::push_inline_backgrounds_and_border (cognitive 17): DisplayListBuilder::push_inline_backgrounds_and_border has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (13 pts), match/switch 1 (2 pts), boolean chains 1, 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":"layout/src/solver3/display_list.rs"},"region":{"startLine":2898}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef2bfe2bb0adff04ba907b31ebf7b20ea8e226142d91df2e9a32c3ea18b0d3a6"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutTree::get_ifc_root_layout_index (cognitive 17): LayoutTree::get_ifc_root_layout_index has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (10 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":"layout/src/solver3/layout_tree.rs"},"region":{"startLine":1842}}}],"partialFingerprints":{"codehealthFindingId/v1":"3dfcb155a2669b310a36e403703fd1d9da6356eb91c3729bffbb3b6642bb978a"}},{"ruleId":"D2","level":"warning","message":{"text":"InstrumentKey::with_labels (cognitive 17): InstrumentKey::with_labels has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (10 pts), loops 2 (4 pts), match/switch 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":"layout/src/telemetry/metrics.rs"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"d30622a894fed451227a60f29ba2e03a2fbc7a97077c25f37abb04e64b4acffb"}},{"ruleId":"D2","level":"warning","message":{"text":"FontManager::register_named_font_in_tier (cognitive 17): FontManager::register_named_font_in_tier has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11 (15 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":"layout/src/text3/cache.rs"},"region":{"startLine":1425}}}],"partialFingerprints":{"codehealthFindingId/v1":"09a307dce7774e5556733715f42ae7107eeb35d8b2cc9c0c3e0c6c2ab0fdbdeb"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::ifc_candidate_children (cognitive 17): LayoutWindow::ifc_candidate_children has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (14 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":"layout/src/window.rs"},"region":{"startLine":17307}}}],"partialFingerprints":{"codehealthFindingId/v1":"da118182f7659414646accc5b655ea9ff45117566525a23db13be3bd0bc102e4"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::raster::blend_masked_region (cognitive 17): azul_layout::cpurender::raster::blend_masked_region has cognitive complexity 17 (threshold 15). Drivers by points: if/else 3 (8 pts), loops 3 (6 pts), boolean chains 3 (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":"layout/src/cpurender/raster.rs"},"region":{"startLine":1017}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e16b47d3031785f3e0a6071ca2b79d6b675f259bce7efc906b43509e132743c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::cache::split_text_by_font_coverage (cognitive 17): azul_layout::text3::cache::split_text_by_font_coverage has cognitive complexity 17 (threshold 15). Drivers by points: if/else 3 (7 pts), match/switch 2 (7 pts), boolean chains 2, 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":"layout/src/text3/cache.rs"},"region":{"startLine":9077}}}],"partialFingerprints":{"codehealthFindingId/v1":"847dc75d0330dc33b897d5fa6d1dd03cdba05f0de934dca5d9037550500624a3"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::dialogs::report::redact_png (cognitive 17): azul_layout::dialogs::report::redact_png has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (8 pts), loops 3 (6 pts), boolean chains 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":"layout/src/dialogs/report.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"729746e3cef1e60b0651721cb6720626241ae8bc48f3f2d00198d096d6f2938d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::page_breaks::compute_page_breaks_from_forced (cognitive 17): azul_layout::solver3::page_breaks::compute_page_breaks_from_forced has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (8 pts), boolean chains 4, loops 3, match/switch 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":"layout/src/solver3/page_breaks.rs"},"region":{"startLine":795}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4b08e7d1f32001bd693585db130afd1ff56f9a835bf20716cd66f64b07f54ee"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::http::http_request_with_config (cognitive 17): azul_layout::http::http_request_with_config has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (8 pts), match/switch 3 (5 pts), loops 2 (4 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":"layout/src/http.rs"},"region":{"startLine":1177}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1004aa35a1ee8470a1020b8522f4839ba99bd1bc07760a14fadb4412edcdb33"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::edit::delete_forward (cognitive 17): azul_layout::text3::edit::delete_forward has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (9 pts), match/switch 3 (7 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":"layout/src/text3/edit.rs"},"region":{"startLine":907}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d1df434d80dc5498046d29f3c70901fe3749f363b864de8991f14cbb056a236"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::fc::compute_cell_baseline (cognitive 17): azul_layout::solver3::fc::compute_cell_baseline has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (16 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":"layout/src/solver3/fc.rs"},"region":{"startLine":7668}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4c9f1ce846f6fa1031800cae2843cca8822d11d37270fea2286a61cfbcb397e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::layout_tree::establishes_new_block_formatting_context (cognitive 17): azul_layout::solver3::layout_tree::establishes_new_block_formatting_context has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10 (16 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":"layout/src/solver3/layout_tree.rs"},"region":{"startLine":4444}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc1d713f2ff5e6ebe795d8df3f752eddc90bb0b72fbfc4fe5b31cacb5704af5a"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::pagination::collect_table_headers (cognitive 17): azul_layout::solver3::pagination::collect_table_headers has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (11 pts), loops 3, match/switch 1 (2 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":"layout/src/solver3/pagination.rs"},"region":{"startLine":1033}}}],"partialFingerprints":{"codehealthFindingId/v1":"52eed37d063363b6b255c0123287202e6d3ef8fcdbf74829946b4944784cce0c"}},{"ruleId":"D2","level":"warning","message":{"text":"Renderer::composite_simple (cognitive 17): Renderer::composite_simple has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (12 pts), match/switch 2 (3 pts), boolean chains 1, 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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":3419}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c11fde84ac454dcb55ed3c5f48dd6703971325de6de974b9e57cc3dcf85a423"}},{"ruleId":"D2","level":"warning","message":{"text":"UploadTexturePool::end_frame (cognitive 17): UploadTexturePool::end_frame has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (11 pts), loops 4 (6 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":"webrender/core/src/renderer/upload.rs"},"region":{"startLine":764}}}],"partialFingerprints":{"codehealthFindingId/v1":"30fb2c5672ab9b59acf1ccd88fa95d4bf49fecc450749d6f9646575badfc3230"}},{"ruleId":"D2","level":"warning","message":{"text":"AttribLocations::get_loc (cognitive 17): AttribLocations::get_loc has cognitive complexity 17 (threshold 15). Drivers by points: if/else 13 (17 pts) (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":"webrender/swgl/src/shaders/cs_scale_texture_2d.rs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"283a2a3158f347b1867b9cdc3bcd18b05e656af680d485b4b85b5e6ace3ea688"}},{"ruleId":"D2","level":"warning","message":{"text":"AttribLocations::get_loc (cognitive 17): AttribLocations::get_loc has cognitive complexity 17 (threshold 15). Drivers by points: if/else 13 (17 pts) (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":"webrender/swgl/src/shaders/cs_scale_texture_rect.rs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8b11740aad39596104865a3036806cb6e62603bc2a12c80f58555e76f66ccc7"}},{"ruleId":"D2","level":"warning","message":{"text":"AttribLocations::get_loc (cognitive 17): AttribLocations::get_loc has cognitive complexity 17 (threshold 15). Drivers by points: if/else 13 (17 pts) (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":"webrender/swgl/src/shaders/ps_copy.rs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd4315fb83a74c7a0ee819f6edf0a6070e23ed11e7d092d973fdef1ae1ec6a7c"}},{"ruleId":"D2","level":"warning","message":{"text":"scan_build_scripts.collect (cognitive 17): scan_build_scripts.collect has cognitive complexity 17 (threshold 15). Drivers by points: ternaries 5 (10 pts), boolean chains 4, if/else 1 (2 pts), 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":"scripts/supply-chain/scan_build_scripts.py"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9a7479dda12da3151289b9af1b1a9ab0b09219a77121ae1551f6ce461f96a0e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul-search.pagefindAdapter (cognitive 17): azul-search.pagefindAdapter has cognitive complexity 17 (threshold 15). Drivers by points: boolean chains 6, if/else 5 (6 pts), loops 2 (4 pts), ternaries 1 (nesting depth added 3). Most of this is not in the body itself: 2 of the 17 points are its own statements and the rest belongs to 4 function literals inside it that branch (lines 254, 235, 248, \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":"doc/templates/azul-search.js"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"3312ef7ef73be1169d2ad318bf3ab294fb109cc607a3ff2b31c438adfb476ed6"}},{"ruleId":"D2","level":"warning","message":{"text":"SystemStyleDependencies::dom_depends_on_change (cognitive 16): SystemStyleDependencies::dom_depends_on_change has cognitive complexity 16 (threshold 15). Drivers by points: boolean chains 9, if/else 7. 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":"core/src/callbacks.rs"},"region":{"startLine":1217}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1c5a53d61304dfa370c3a70fc14ebc243e5d7cdeb68c85659f72c2c97ea16f6"}},{"ruleId":"D2","level":"warning","message":{"text":"ChangeAccumulator::classify_change_scope (cognitive 16): ChangeAccumulator::classify_change_scope has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (13 pts), loops 1 (2 pts), boolean chains 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":"core/src/diff.rs"},"region":{"startLine":1929}}}],"partialFingerprints":{"codehealthFindingId/v1":"19eb3d315c15cb38a33f25e93eac7e6988d454b6d75db4688dcc40f4b47d2083"}},{"ruleId":"D2","level":"warning","message":{"text":"NodeData::calculate_structural_hash (cognitive 16): NodeData::calculate_structural_hash has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (9 pts), match/switch 2 (4 pts), loops 3 (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":"core/src/dom.rs"},"region":{"startLine":3578}}}],"partialFingerprints":{"codehealthFindingId/v1":"f005be930c371ac5755a67b17becad93c455ce4136e124190453ec4b22c32b8f"}},{"ruleId":"D2","level":"warning","message":{"text":"DragContext::remap_node_ids (cognitive 16): DragContext::remap_node_ids has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (15 pts), 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":"core/src/drag.rs"},"region":{"startLine":708}}}],"partialFingerprints":{"codehealthFindingId/v1":"752a93c35ac1d349387dbdc2d436a4171bc27962580fb461c8d7ba185a2bdd12"}},{"ruleId":"D2","level":"warning","message":{"text":"GlShader::draw (cognitive 16): GlShader::draw has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (9 pts), loops 4 (6 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":"core/src/gl.rs"},"region":{"startLine":4236}}}],"partialFingerprints":{"codehealthFindingId/v1":"c22008f86bbbf9e7d082f6d2a8d3ceb9a2d1a8a56cc29ad35edf61434c965aa0"}},{"ruleId":"D2","level":"warning","message":{"text":"StyledDom::append_child_with_index (cognitive 16): StyledDom::append_child_with_index has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (10 pts), loops 5 (6 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":"core/src/styled_dom.rs"},"region":{"startLine":1553}}}],"partialFingerprints":{"codehealthFindingId/v1":"c863d06d2522af200a52b6c1ed310c739811c535deefe39cc95bd4e1bf789827"}},{"ruleId":"D2","level":"warning","message":{"text":"StyledDom::get_html_string (cognitive 16): StyledDom::get_html_string has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (8 pts), loops 5 (8 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":"core/src/styled_dom.rs"},"region":{"startLine":2661}}}],"partialFingerprints":{"codehealthFindingId/v1":"f96d540d5ab05e9b72cab0924c0f779390d9bbdc8b261ed663d1a9d9383135e5"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_core::xml::get_body_node (cognitive 16): azul_core::xml::get_body_node has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (15 pts), loops 1 (nesting depth added 6). Most of this is not in the body itself: 6 of the 16 points are its own statements and the rest belongs to one function item inside it that branches (find_body_recursive). 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":"core/src/xml.rs"},"region":{"startLine":5272}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca3bf78b7b70eb0a757e88748fcb712a70c6f3bf22bb32d9022341bf945f41e5"}},{"ruleId":"D2","level":"warning","message":{"text":"ColorU::apca_contrast (cognitive 16): ColorU::apca_contrast has cognitive complexity 16 (threshold 15). Drivers by points: if/else 14 (16 pts) (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":"css/src/props/basic/color.rs"},"region":{"startLine":777}}}],"partialFingerprints":{"codehealthFindingId/v1":"88cdd63b93fb217a781a833e8e1c1f7719cdd22e6429e02d9cf2d96a43483c27"}},{"ruleId":"D2","level":"warning","message":{"text":"EglBackend::init (cognitive 16): EglBackend::init has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12 (14 pts), boolean chains 1, match/switch 1 (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":"dll/src/desktop/extra/screencap/dmabuf.rs"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8c053e39be418e41666122ab86e5e4a66919e75cc7852aa3c1dbe954f5df1ff"}},{"ruleId":"D2","level":"warning","message":{"text":"VideoDecoder::flush (cognitive 16): VideoDecoder::flush has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (10 pts), loops 2 (6 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":"dll/src/desktop/extra/video_codec/mod.rs"},"region":{"startLine":730}}}],"partialFingerprints":{"codehealthFindingId/v1":"041b85ec1dc677206c4d850dbbc2539d2ce9dcc786aa3e72069c399e2d070cbf"}},{"ruleId":"D2","level":"warning","message":{"text":"AndroidAccessibilityAdapter::describe_node (cognitive 16): AndroidAccessibilityAdapter::describe_node has cognitive complexity 16 (threshold 15). Drivers by points: if/else 14, boolean chains 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":"dll/src/desktop/shell2/android/accessibility.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfe9d56a67d06ccdc8eea4a2b9a5df47f1e265d5fc81d63e45e3f7d075708fa8"}},{"ruleId":"D2","level":"warning","message":{"text":"KdeIni::parse (cognitive 16): KdeIni::parse has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (14 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":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":897}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bc1546caef32e7a624243e8e5cbebf32f8cc833bb2d376de6d6f182954ce757"}},{"ruleId":"D2","level":"warning","message":{"text":"GlContext::new (cognitive 16): GlContext::new has cognitive complexity 16 (threshold 15). Drivers by points: if/else 14 (15 pts), boolean chains 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":"dll/src/desktop/shell2/linux/wayland/gl.rs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"97c93b4c796fdce92ac6680dee819408f1f72a99d1b9c0045cf283f3a4b1ffa6"}},{"ruleId":"D2","level":"warning","message":{"text":"MacOSWindow::update_keyboard_state (cognitive 16): MacOSWindow::update_keyboard_state has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (13 pts), loops 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":"dll/src/desktop/shell2/macos/events.rs"},"region":{"startLine":1205}}}],"partialFingerprints":{"codehealthFindingId/v1":"9de714ce5f41aa4b150e366529cdca16fdabe205d78f2aa04628348c9c879989"}},{"ruleId":"D2","level":"warning","message":{"text":"Win32Window::route_main_window_result (cognitive 16): Win32Window::route_main_window_result has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (12 pts), loops 1 (3 pts), 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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":2008}}}],"partialFingerprints":{"codehealthFindingId/v1":"27a9bf402058072a65de50faf161157094499d4759d2455811be596ecb1a9d65"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::linux::system_style::discover_shared_behaviour (cognitive 16): azul_dll::desktop::shell2::linux::system_style::discover_shared_behaviour has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11 (14 pts), match/switch 1 (2 pts) (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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":780}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9271a7118608f332c54f72cc8131ff0c60d16a363e3f4025f8b9a556a6cfff1"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::android::handle_poll_event (cognitive 16): azul_dll::desktop::shell2::android::handle_poll_event has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (13 pts), match/switch 2 (3 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":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":1113}}}],"partialFingerprints":{"codehealthFindingId/v1":"79f008ddf985ade9e17e3cd4e0f49386bb23dece3b898be1c56895fa1423138d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::pdf::engine::resolve_raw_images (cognitive 16): azul_dll::desktop::extra::pdf::engine::resolve_raw_images has cognitive complexity 16 (threshold 15). Drivers by points: if/else 3 (9 pts), match/switch 1 (4 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":"dll/src/desktop/extra/pdf/mod.rs"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"66369689042249dce0ac63aaaabfdacf19a417e500ee1a6ed945170598e35cd0"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::map::svg::emit_polygon (cognitive 16): azul_dll::desktop::extra::map::svg::emit_polygon has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (13 pts), loops 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":"dll/src/desktop/extra/map/svg.rs"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"b44bf83df8eb5a45ad159c9b9e82d302b30657ea1b0c46bf210cc6edb443c846"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::native_screenshot::take_native_screenshot_windows_bytes (cognitive 16): azul_dll::desktop::native_screenshot::take_native_screenshot_windows_bytes has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12, boolean chains 2, loops 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":"dll/src/desktop/native_screenshot.rs"},"region":{"startLine":364}}}],"partialFingerprints":{"codehealthFindingId/v1":"2505d93be8d12100f1a3a0982841497d13e8188a07266f3db14d699557a4d643"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::wr_translate2::register_frame_resources (cognitive 16): azul_dll::desktop::wr_translate2::register_frame_resources has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (12 pts), loops 2, 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":"dll/src/desktop/wr_translate2.rs"},"region":{"startLine":1328}}}],"partialFingerprints":{"codehealthFindingId/v1":"14d3ac45ab5e444b4cd48126ce55f5db35e4b0ce1e5e7ca10aa5821940dfe557"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::tray::linux::build_pixmaps (cognitive 16): azul_dll::desktop::tray::linux::build_pixmaps has cognitive complexity 16 (threshold 15). Drivers by points: if/else 3 (10 pts), loops 2 (4 pts), boolean chains 1, 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":"dll/src/desktop/tray/linux.rs"},"region":{"startLine":1038}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bb89cef60a3e5b21eb7f7847f8cd998269af50d27cff9372c73db2f8feb3604"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::extra::gamepad::desktop::poll (cognitive 16): azul_dll::desktop::extra::gamepad::desktop::poll has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (9 pts), loops 3 (4 pts), match/switch 1 (2 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":"dll/src/desktop/extra/gamepad/desktop.rs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"61568ea750e92742c102a1c58ac46e719c0b9e69fe27000b7056d6ecf623d249"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_dll::desktop::shell2::windows::system_style::discover (cognitive 16): azul_dll::desktop::shell2::windows::system_style::discover has cognitive complexity 16 (threshold 15). Drivers by points: if/else 13 (15 pts), match/switch 1 (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":"dll/src/desktop/shell2/windows/system_style.rs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"35a4a9444be940b61daa9de50fc102def3b24c11ea43893609150d0bba37d217"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeParser::parse_inner (cognitive 16): TypeParser::parse_inner has cognitive complexity 16 (threshold 15). Drivers by points: if/else 13 (15 pts), boolean chains 1 (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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/autofix/types/parser.rs"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"360c47bcc0a558f5aa2d7b864ba198f8e2185605abd5d8ffea0d432cd23741d5"}},{"ruleId":"D2","level":"warning","message":{"text":"Emitter::emit_enums (cognitive 16): Emitter::emit_enums has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (14 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":"doc/src/codegen/v2/lang_crystal/wrappers.rs"},"region":{"startLine":384}}}],"partialFingerprints":{"codehealthFindingId/v1":"55dc8d6067e054acb14a843dc284016f562a9921e7a1ff768f56bf096d9de38b"}},{"ruleId":"D2","level":"warning","message":{"text":"Emitter::emit_vec_conv (cognitive 16): Emitter::emit_vec_conv has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11 (14 pts), match/switch 2 (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":"doc/src/codegen/v2/lang_crystal/wrappers.rs"},"region":{"startLine":1801}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0b82a61cfef7bd26f36316b9170c5805a5284fbe918e6abaa18942ae86b9ce8"}},{"ruleId":"D2","level":"warning","message":{"text":"Model::classify (cognitive 16): Model::classify has cognitive complexity 16 (threshold 15). Drivers by points: if/else 3 (8 pts), loops 2 (3 pts), match/switch 1 (3 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":"doc/src/codegen/v2/lang_d/model.rs"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"102fc2921612f718331868b5d07711bddcac5362b92707f4c52d52f3fa650798"}},{"ruleId":"D2","level":"warning","message":{"text":"MethodPlan::implementation (cognitive 16): MethodPlan::implementation has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (12 pts), match/switch 1 (2 pts), boolean chains 1, 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, 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":"doc/src/codegen/v2/lang_ocaml/wrappers.rs"},"region":{"startLine":623}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a0500490b1fa46ceaba1128d2226bdcbf24c39832c6a3fd8a8b7a835d33c84f"}},{"ruleId":"D2","level":"warning","message":{"text":"PythonGenerator::generate_derive_dunders (cognitive 16): PythonGenerator::generate_derive_dunders has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (11 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":"doc/src/codegen/v2/lang_python.rs"},"region":{"startLine":1903}}}],"partialFingerprints":{"codehealthFindingId/v1":"899133a899a50ca1a8264abb369347b05556786a0db8d134ae624264a5ac3fb2"}},{"ruleId":"D2","level":"warning","message":{"text":"RustGenerator::generate_functions (cognitive 16): RustGenerator::generate_functions has cognitive complexity 16 (threshold 15). Drivers by points: if/else 3 (9 pts), loops 2 (4 pts), boolean chains 2, 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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"e282e701a7f02131a37bc8134ed2e47dd6ac8be971534756d7a96431bcf2513a"}},{"ruleId":"D2","level":"warning","message":{"text":"RustGenerator::generate_vec_ref_convenience_methods (cognitive 16): RustGenerator::generate_vec_ref_convenience_methods has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (11 pts), boolean chains 2, match/switch 1 (2 pts), 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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":1888}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f9c8a84cde0e7d660be557e62937c9b4bd83b6a4227ab93cc5784b9a8278090"}},{"ruleId":"D2","level":"warning","message":{"text":"RustGenerator::emit_byref_twin (cognitive 16): RustGenerator::emit_byref_twin has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (10 pts), match/switch 1 (3 pts), boolean chains 2, loops 1 (nesting depth added 3). 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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":4565}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebda059d498ce59ec160076b9df07e1dfe1c61a54bcdc2796b8d3d8543760084"}},{"ruleId":"D2","level":"warning","message":{"text":"Emitter::count (cognitive 16): Emitter::count has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (12 pts), boolean chains 4 (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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":478}}}],"partialFingerprints":{"codehealthFindingId/v1":"169bf787e9f8cfa50e63361f307258a68d6cfb2dd7018b0f710fae4565bac739"}},{"ruleId":"D2","level":"warning","message":{"text":"Emitter::emit_to_raw (cognitive 16): Emitter::emit_to_raw has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (11 pts), loops 2 (3 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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":909}}}],"partialFingerprints":{"codehealthFindingId/v1":"c589fe33522d887bb971c476820f5ae3e8f7c2e197950e5c1e09285237276271"}},{"ruleId":"D2","level":"warning","message":{"text":"Emitter::emit_union_ctors (cognitive 16): Emitter::emit_union_ctors has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (15 pts), 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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":1111}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb13beb47bf4234b651429437e47752331834246d6551b4d7d85000f9643624c"}},{"ruleId":"D2","level":"warning","message":{"text":"Plan::header (cognitive 16): Plan::header has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12 (15 pts), match/switch 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, 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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":3746}}}],"partialFingerprints":{"codehealthFindingId/v1":"a963c72e4f3ecc4d1513f418defa42d3773aadf7869852033eef95324e49a77f"}},{"ruleId":"D2","level":"warning","message":{"text":"SymbolHierarchy::format (cognitive 16): SymbolHierarchy::format has cognitive complexity 16 (threshold 15). Drivers by points: if/else 3 (10 pts), loops 2 (3 pts), match/switch 1 (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":"doc/src/patch/parser.rs"},"region":{"startLine":815}}}],"partialFingerprints":{"codehealthFindingId/v1":"6123cb5153b490f37ebb071bb220150b8c278b1a630eef287e42adf9cb5171bd"}},{"ruleId":"D2","level":"warning","message":{"text":"DebugData::format (cognitive 16): DebugData::format has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (13 pts), loops 1 (2 pts), boolean chains 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":"doc/src/reftest/mod.rs"},"region":{"startLine":1668}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd7cb0843f1f7c5119f0bfbe2525c4d4d749853416c9358f4f168764a5efd0f7"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ocaml::types::emit_struct_fields_and_enums (cognitive 16): azul_doc::codegen::v2::lang_ocaml::types::emit_struct_fields_and_enums has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 4, 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":"doc/src/codegen/v2/lang_ocaml/types.rs"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1680291c056dcd9c097259a89ea060c3a8ffe4a4812bdb2181e3558bd30627e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_powershell::cmdlets::pick_verb (cognitive 16): azul_doc::codegen::v2::lang_powershell::cmdlets::pick_verb has cognitive complexity 16 (threshold 15). Drivers by points: boolean chains 7, if/else 7, match/switch 2. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_powershell/cmdlets.rs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef2dc066706fb1e151695245280ad1ab38e8f490bdc6ea0fe5671339e8715f8f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::patch::locatesource::find_item_in_ast (cognitive 16): azul_doc::patch::locatesource::find_item_in_ast has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (15 pts), loops 1 (nesting depth added 9). Most of this is not in the body itself: 1 of the 16 points is its own statement and the rest belongs to one function item inside it that branches (find_item_recursive). 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":"doc/src/patch/locatesource.rs"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"551bf3db494c75d62674d81e8efd97cb3a88d6446df98e7491a4eb6c9367c38d"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::type_index::extract_doc_comments (cognitive 16): azul_doc::autofix::type_index::extract_doc_comments has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (15 pts), loops 1 (nesting depth added 10). 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":"doc/src/autofix/type_index.rs"},"region":{"startLine":3393}}}],"partialFingerprints":{"codehealthFindingId/v1":"02f8ad1c632077bbea4ac0aa48502eec2b4468c1b0e8dc1f3175a7b76fa606c3"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_odin::types::emit_tagged_union (cognitive 16): azul_doc::codegen::v2::lang_odin::types::emit_tagged_union has cognitive complexity 16 (threshold 15). Drivers by points: loops 5 (9 pts), if/else 2 (5 pts), match/switch 1 (2 pts) (nesting depth added 8). 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":"doc/src/codegen/v2/lang_odin/types.rs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"fad3c835791d3c256039fcb5fe8d9a65d520bb2e0aac6ee7e4e7407067bedb82"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_nim::types::emit_tagged_union (cognitive 16): azul_doc::codegen::v2::lang_nim::types::emit_tagged_union has cognitive complexity 16 (threshold 15). Drivers by points: loops 5 (10 pts), if/else 2 (4 pts), match/switch 1 (2 pts) (nesting depth added 8). 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":"doc/src/codegen/v2/lang_nim/types.rs"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3ae41cb9363c79fe823bb4f9a0c3149eadfb1c56d64bb733ffe29b79191c715"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::contains_unit_type (cognitive 16): azul_doc::autofix::contains_unit_type has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (13 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":"doc/src/autofix/mod.rs"},"region":{"startLine":1534}}}],"partialFingerprints":{"codehealthFindingId/v1":"65b557f1e183daca5ab9ac6643795efd32ea7c8d79ce8ac21ce93211d8b0650b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_julia::types::emit_tagged_union (cognitive 16): azul_doc::codegen::v2::lang_julia::types::emit_tagged_union has cognitive complexity 16 (threshold 15). Drivers by points: loops 4 (8 pts), if/else 3 (6 pts), match/switch 1 (2 pts) (nesting depth added 8). 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":"doc/src/codegen/v2/lang_julia/types.rs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcd6e9d69bfa945192e0afd26428c52212b7ee4eab5b7ae8ff23d5779126a31c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_cobol::types::generate_records (cognitive 16): azul_doc::codegen::v2::lang_cobol::types::generate_records has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 4, 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":"doc/src/codegen/v2/lang_cobol/types.rs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3a6c0363454bbefbdae3b9bb04f542444f205497e36dd24314f48224e33bbb7"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::print::print_module (cognitive 16): azul_doc::print::print_module has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 2 (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":"doc/src/print.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f76dcc965327aeca3ed9a6aff621b8d1b1781521e63c12c26506b5f4d939149"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::reftest::autoreview::run_review_agent (cognitive 16): azul_doc::reftest::autoreview::run_review_agent has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (9 pts), match/switch 5 (6 pts), 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":"doc/src/reftest/autoreview.rs"},"region":{"startLine":836}}}],"partialFingerprints":{"codehealthFindingId/v1":"a14995648f40f20b0178c601b9999a94f33819badd6bf2f2cba8d6019ef2411c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::assemble_context::machine_checks (cognitive 16): azul_doc::assemble_context::machine_checks has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (11 pts), loops 3 (4 pts), 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":"doc/src/assemble_context.rs"},"region":{"startLine":478}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bc1d2c1f2fcb22bf1793144ae2f0e0a7a21a41d9c2edc515637b877ef80f559"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_racket::types::emit_tagged_union (cognitive 16): azul_doc::codegen::v2::lang_racket::types::emit_tagged_union has cognitive complexity 16 (threshold 15). Drivers by points: loops 5 (10 pts), if/else 2 (4 pts), match/switch 1 (2 pts) (nesting depth added 8). 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":"doc/src/codegen/v2/lang_racket/types.rs"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3d77528316604bf1aff4293cbd388aed3882d416c6069d148c02efe98e5ac8e"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_cpp::cpp20::emit_cpp23_result_extras (cognitive 16): azul_doc::codegen::v2::lang_cpp::cpp20::emit_cpp23_result_extras has cognitive complexity 16 (threshold 15). Drivers by points: if/else 14, match/switch 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":"doc/src/codegen/v2/lang_cpp/cpp20.rs"},"region":{"startLine":751}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2c43ed6adce1ea541c9df0ed620ec47fecc02b7dbdb9080dee7ad7a2a5a673c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_ocaml::wrappers::emit_enum_modules_for (cognitive 16): azul_doc::codegen::v2::lang_ocaml::wrappers::emit_enum_modules_for has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (13 pts), loops 2, 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":"doc/src/codegen/v2/lang_ocaml/wrappers.rs"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"198b9d6e652008c244b858325ec0de9fb8fa4fa36af1c355325670de7b7a337c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_cobol::to_cobol_case (cognitive 16): azul_doc::codegen::v2::lang_cobol::to_cobol_case has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (10 pts), boolean chains 4, loops 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":"doc/src/codegen/v2/lang_cobol/mod.rs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"78c7b4a99787e3b0b8d0d1eddbef7f2fa0440051f795053627ef9b026267b98b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::debug::show_internal_only_types (cognitive 16): azul_doc::autofix::debug::show_internal_only_types has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (8 pts), loops 4 (6 pts), match/switch 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":"doc/src/autofix/debug.rs"},"region":{"startLine":884}}}],"partialFingerprints":{"codehealthFindingId/v1":"4941fc70733fba745913a7ffe3ef99d0d8cd3afed4d4661d6e0d13094970cef1"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::rust::shared::generate_struct (cognitive 16): azul_doc::codegen::v2::rust::shared::generate_struct has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (12 pts), loops 2 (4 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":"doc/src/codegen/v2/rust/shared.rs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"49340749846294749d7d4f37444bf26e3ec8a48b2c10f1a242df802e0294d0ee"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_d::types::emit_monomorphized_alias (cognitive 16): azul_doc::codegen::v2::lang_d::types::emit_monomorphized_alias has cognitive complexity 16 (threshold 15). Drivers by points: loops 4 (8 pts), if/else 3 (7 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":"doc/src/codegen/v2/lang_d/types.rs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2c1c65c79df633cdf9349d2060abbf764b2eed82c32b6349b11da463f73b25a"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autofix::workspace::convert_type_info_to_class_patch (cognitive 16): azul_doc::autofix::workspace::convert_type_info_to_class_patch has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (15 pts), 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":"doc/src/autofix/workspace.rs"},"region":{"startLine":1722}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a4138438750e2211dd719078f1d66fd8d0abc74920ad8e9f54bf196b9fc7034"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::docgen::search::function_signature (cognitive 16): azul_doc::docgen::search::function_signature has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (9 pts), match/switch 1 (4 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":"doc/src/docgen/search.rs"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"f783c3fd7c318cf3f73979143d1718deaf562facd87e76eab679906c170b16bc"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_zig::c_decls::emit_tagged_union (cognitive 16): azul_doc::codegen::v2::lang_zig::c_decls::emit_tagged_union has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (7 pts), loops 3 (7 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":"doc/src/codegen/v2/lang_zig/c_decls.rs"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"84b96ce26b368df785847f84b3cd46526bfefad199e919c0c1a32bafe1f1d51c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_zig::wrappers::emit_struct_wrapper (cognitive 16): azul_doc::codegen::v2::lang_zig::wrappers::emit_struct_wrapper has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (8 pts), loops 3 (4 pts), match/switch 2 (4 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":"doc/src/codegen/v2/lang_zig/wrappers.rs"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"33d5447c28009608ccdd0a62fbef0dae6810d9d621ec402a8271467c6816098f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_smalltalk::types::generate_tagged_union (cognitive 16): azul_doc::codegen::v2::lang_smalltalk::types::generate_tagged_union has cognitive complexity 16 (threshold 15). Drivers by points: loops 5 (10 pts), if/else 2 (4 pts), match/switch 1 (2 pts) (nesting depth added 8). 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":"doc/src/codegen/v2/lang_smalltalk/types.rs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fd6313348a61add9a835ffe4eb35874472b0d9e315d5a0a1ec555181e05b413"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::autotest::extract::extract_doc_comments (cognitive 16): azul_doc::autotest::extract::extract_doc_comments has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (15 pts), loops 1 (nesting depth added 10). 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":"doc/src/autotest/extract.rs"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"50bd0ac35c3b0ea3c239478b3f738d7ce9c503d428aa354cb69be2d7be936cea"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_v::types::emit_tagged_union (cognitive 16): azul_doc::codegen::v2::lang_v::types::emit_tagged_union has cognitive complexity 16 (threshold 15). Drivers by points: loops 5 (9 pts), if/else 2 (5 pts), match/switch 1 (2 pts) (nesting depth added 8). 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":"doc/src/codegen/v2/lang_v/types.rs"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"51d6eabc5d2b4277bd030b64fc0e9bf74c5e648b9ab8b7d243468f2e1195dc2f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_kotlin::wrappers::idiomatic_method_name (cognitive 16): azul_doc::codegen::v2::lang_kotlin::wrappers::idiomatic_method_name has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (12 pts), loops 1 (2 pts), match/switch 1 (2 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":"doc/src/codegen/v2/lang_kotlin/wrappers.rs"},"region":{"startLine":2083}}}],"partialFingerprints":{"codehealthFindingId/v1":"129e2326363f9acf2d4cdb136776236b9c98616407e698481e96532e4ffc2e64"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::lint_links::check_guide_links (cognitive 16): azul_doc::lint_links::check_guide_links has cognitive complexity 16 (threshold 15). Drivers by points: loops 4 (9 pts), if/else 2 (5 pts), match/switch 1 (2 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":"doc/src/lint_links.rs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c6dcf110bc96f4ec619c7fc5c8328ae1b831bca5be3c947582e7a362b3db514"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::docgen::apidocs::commonly_used (cognitive 16): azul_doc::docgen::apidocs::commonly_used has cognitive complexity 16 (threshold 15). Drivers by points: loops 6 (10 pts), if/else 2 (6 pts) (nesting depth added 8). 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":"doc/src/docgen/apidocs.rs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf7864ba27eaf86d023d523e73e8a4e66f29b3eefd41b1834a7c11046012a479"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_crystal::types::emit_tagged_union (cognitive 16): azul_doc::codegen::v2::lang_crystal::types::emit_tagged_union has cognitive complexity 16 (threshold 15). Drivers by points: loops 5 (9 pts), if/else 2 (5 pts), match/switch 1 (2 pts) (nesting depth added 8). 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":"doc/src/codegen/v2/lang_crystal/types.rs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"02e28617c19476740d31f2e055812b40aa5a9d279cfae230c0b48f4afd44aa43"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_doc::codegen::v2::lang_nim::map_type_to_nim (cognitive 16): azul_doc::codegen::v2::lang_nim::map_type_to_nim has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (13 pts), boolean chains 2, 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":"doc/src/codegen/v2/lang_nim/mod.rs"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"8524a982b530f943fe45d92b78540635f89a844d3bc4705d086fbc997a7a9c25"}},{"ruleId":"D2","level":"warning","message":{"text":"VirtualViewState::scroll_demand (cognitive 16): VirtualViewState::scroll_demand has cognitive complexity 16 (threshold 15). Drivers by points: boolean chains 9, if/else 7. 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":"layout/src/managers/virtual_view.rs"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"49e01692185c1fbee7c03a2fbd9274e901e86c422ef2496fd31e63d6fe1dda4d"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutTreeBuilder::process_table_level_children (cognitive 16): LayoutTreeBuilder::process_table_level_children has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (9 pts), loops 3 (7 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":"layout/src/solver3/layout_tree.rs"},"region":{"startLine":2505}}}],"partialFingerprints":{"codehealthFindingId/v1":"28aa46eebdfbed0912afe16293a0043f0f8cae6ba708f074b1dd44f3f377e5df"}},{"ruleId":"D2","level":"warning","message":{"text":"ShapeBoundary::from_css_shape (cognitive 16): ShapeBoundary::from_css_shape 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":"layout/src/text3/cache.rs"},"region":{"startLine":4232}}}],"partialFingerprints":{"codehealthFindingId/v1":"159b93ca569d57d9390f3f4e61166bf8c6abc56f520f114ca71c5649cb4a48da"}},{"ruleId":"D2","level":"warning","message":{"text":"ClusterFlags::classify (cognitive 16): ClusterFlags::classify has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (14 pts), boolean chains 1, 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":"layout/src/text3/cache.rs"},"region":{"startLine":5322}}}],"partialFingerprints":{"codehealthFindingId/v1":"6260cbc1652a5dc1a58a9d7aa0638950a4d7d58626834eb00a82be409c52c6ef"}},{"ruleId":"D2","level":"warning","message":{"text":"UnifiedLayout::hittest_cursor (cognitive 16): UnifiedLayout::hittest_cursor has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (14 pts), 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":"layout/src/text3/cache.rs"},"region":{"startLine":5687}}}],"partialFingerprints":{"codehealthFindingId/v1":"63a2c340368f508a26539103d5ae030e39877c9551cd35fbdca17b57a0b2f647"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::seat_selected_text (cognitive 16): LayoutWindow::seat_selected_text has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (13 pts), boolean chains 1, loops 1, match/switch 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, 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":"layout/src/window.rs"},"region":{"startLine":10422}}}],"partialFingerprints":{"codehealthFindingId/v1":"be92b5a4d93dd6a9fb83879f8ac0d62ce84ce34ce39ae3eb39393c7aa1c76461"}},{"ruleId":"D2","level":"warning","message":{"text":"LayoutWindow::byte_offset_to_cursor (cognitive 16): LayoutWindow::byte_offset_to_cursor has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (11 pts), loops 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":"layout/src/window.rs"},"region":{"startLine":18916}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e7d4a68cc522f2cb04229256002b18f5f573152be36b3189d7324c2e3c661c6"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::managers::a11y_snapshot::supported_actions (cognitive 16): azul_layout::managers::a11y_snapshot::supported_actions has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (12 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":"layout/src/managers/a11y_snapshot.rs"},"region":{"startLine":508}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bd8c3f4befde4dd71f126be6acc9f723c75510a8d9a28087cadc070861453a6"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::svg::build_agg_path (cognitive 16): azul_layout::cpurender::svg::build_agg_path has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (10 pts), boolean chains 3, loops 1 (2 pts), 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":"layout/src/cpurender/svg.rs"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"bea1c04e955d669d43ed6f18311d10b7571e4f8d58d350fb58cdcad2fde03528"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::raster::render_rect (cognitive 16): azul_layout::cpurender::raster::render_rect has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (14 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":"layout/src/cpurender/raster.rs"},"region":{"startLine":2882}}}],"partialFingerprints":{"codehealthFindingId/v1":"8637208d997de9fb21f9038416f78819a63e98483fb059d0deecdf6dbc05f191"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::form::input_purpose (cognitive 16): azul_layout::form::input_purpose has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12 (15 pts), 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, 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":"layout/src/form.rs"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7e6f2b471c98d73e23ec67f8679a557b36a527d144ea72773acc2a3b09f59f4"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::getters::get_css_left (cognitive 16): azul_layout::solver3::getters::get_css_left has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (16 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. This shape REPEATS in the file: 15 other methods here (azul_layout::solver3::getters::get_css_right, azul_layout::solver3::getters::get_css_top, azul_layout::solver3::getters::get_css_bottom, \u2026) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 16 times rather than 16 independent problems. Splitting this body alone leaves the other 15 exactly as they are. Where these are variations on one operation, the change that clears all 16 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":"layout/src/solver3/getters.rs"},"region":{"startLine":3511}}}],"partialFingerprints":{"codehealthFindingId/v1":"091cd4460d50ad3fc7157941a0cf8fa6bf67e067817657533e89f70127e59150"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::getters::get_css_right (cognitive 16): azul_layout::solver3::getters::get_css_right has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (16 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. This shape REPEATS in the file: 15 other methods here (azul_layout::solver3::getters::get_css_left, azul_layout::solver3::getters::get_css_top, azul_layout::solver3::getters::get_css_bottom, \u2026) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 16 times rather than 16 independent problems. Splitting this body alone leaves the other 15 exactly as they are. Where these are variations on one operation, the change that clears all 16 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":"layout/src/solver3/getters.rs"},"region":{"startLine":3517}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0901167b4cd300551272f83ef2ec51fc24624ed434e41203fc512b7034e5041"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::getters::get_css_top (cognitive 16): azul_layout::solver3::getters::get_css_top has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (16 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. This shape REPEATS in the file: 15 other methods here (azul_layout::solver3::getters::get_css_left, azul_layout::solver3::getters::get_css_right, azul_layout::solver3::getters::get_css_bottom, \u2026) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 16 times rather than 16 independent problems. Splitting this body alone leaves the other 15 exactly as they are. Where these are variations on one operation, the change that clears all 16 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":"layout/src/solver3/getters.rs"},"region":{"startLine":3523}}}],"partialFingerprints":{"codehealthFindingId/v1":"684d525ac65885c5e901bdd14e8d6f61faf7f1492e8460678d2c732b9560b178"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::getters::get_css_bottom (cognitive 16): azul_layout::solver3::getters::get_css_bottom has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (16 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. This shape REPEATS in the file: 15 other methods here (azul_layout::solver3::getters::get_css_left, azul_layout::solver3::getters::get_css_right, azul_layout::solver3::getters::get_css_top, \u2026) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 16 times rather than 16 independent problems. Splitting this body alone leaves the other 15 exactly as they are. Where these are variations on one operation, the change that clears all 16 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":"layout/src/solver3/getters.rs"},"region":{"startLine":3529}}}],"partialFingerprints":{"codehealthFindingId/v1":"45e9dbeec9b2acf2ac9d9b233ff516c6bc403fc896534db765c07b0d5c9ca561"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::getters::get_css_margin_left (cognitive 16): azul_layout::solver3::getters::get_css_margin_left has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (16 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. This shape REPEATS in the file: 15 other methods here (azul_layout::solver3::getters::get_css_left, azul_layout::solver3::getters::get_css_right, azul_layout::solver3::getters::get_css_top, \u2026) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 16 times rather than 16 independent problems. Splitting this body alone leaves the other 15 exactly as they are. Where these are variations on one operation, the change that clears all 16 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":"layout/src/solver3/getters.rs"},"region":{"startLine":3537}}}],"partialFingerprints":{"codehealthFindingId/v1":"653e86273556f0f73de06e6507e6cd078e0ae4c609370026b2e29b3e829825d5"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::getters::get_css_margin_right (cognitive 16): azul_layout::solver3::getters::get_css_margin_right has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (16 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. This shape REPEATS in the file: 15 other methods here (azul_layout::solver3::getters::get_css_left, azul_layout::solver3::getters::get_css_right, azul_layout::solver3::getters::get_css_top, \u2026) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 16 times rather than 16 independent problems. Splitting this body alone leaves the other 15 exactly as they are. Where these are variations on one operation, the change that clears all 16 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":"layout/src/solver3/getters.rs"},"region":{"startLine":3543}}}],"partialFingerprints":{"codehealthFindingId/v1":"aedda316ff63baa96909b5121242a2a583d79e691bec37883be8f8373d2a8c1b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::getters::get_css_margin_top (cognitive 16): azul_layout::solver3::getters::get_css_margin_top has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (16 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. This shape REPEATS in the file: 15 other methods here (azul_layout::solver3::getters::get_css_left, azul_layout::solver3::getters::get_css_right, azul_layout::solver3::getters::get_css_top, \u2026) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 16 times rather than 16 independent problems. Splitting this body alone leaves the other 15 exactly as they are. Where these are variations on one operation, the change that clears all 16 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":"layout/src/solver3/getters.rs"},"region":{"startLine":3549}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d7649abe14f4a462ddb9e18640659fab797aed1b4692420d17a3474fb491c20"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::getters::get_css_margin_bottom (cognitive 16): azul_layout::solver3::getters::get_css_margin_bottom has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (16 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. This shape REPEATS in the file: 15 other methods here (azul_layout::solver3::getters::get_css_left, azul_layout::solver3::getters::get_css_right, azul_layout::solver3::getters::get_css_top, \u2026) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 16 times rather than 16 independent problems. Splitting this body alone leaves the other 15 exactly as they are. Where these are variations on one operation, the change that clears all 16 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":"layout/src/solver3/getters.rs"},"region":{"startLine":3555}}}],"partialFingerprints":{"codehealthFindingId/v1":"96ea9b51186afe209b3455ecf848d11608d122c1653394a28efa17e349627b22"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::getters::get_css_padding_left (cognitive 16): azul_layout::solver3::getters::get_css_padding_left has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (16 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. This shape REPEATS in the file: 15 other methods here (azul_layout::solver3::getters::get_css_left, azul_layout::solver3::getters::get_css_right, azul_layout::solver3::getters::get_css_top, \u2026) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 16 times rather than 16 independent problems. Splitting this body alone leaves the other 15 exactly as they are. Where these are variations on one operation, the change that clears all 16 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":"layout/src/solver3/getters.rs"},"region":{"startLine":3563}}}],"partialFingerprints":{"codehealthFindingId/v1":"260218e8475bc66af17962c1440435262f557d4ea8c0d5d76871c0be55e2155f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::getters::get_css_padding_right (cognitive 16): azul_layout::solver3::getters::get_css_padding_right has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (16 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. This shape REPEATS in the file: 15 other methods here (azul_layout::solver3::getters::get_css_left, azul_layout::solver3::getters::get_css_right, azul_layout::solver3::getters::get_css_top, \u2026) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 16 times rather than 16 independent problems. Splitting this body alone leaves the other 15 exactly as they are. Where these are variations on one operation, the change that clears all 16 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":"layout/src/solver3/getters.rs"},"region":{"startLine":3569}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfb1aeded7a9bcbced9fe0e95d358a0b807ac04f3e8f578d109b45124af4d4b3"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::getters::get_css_padding_top (cognitive 16): azul_layout::solver3::getters::get_css_padding_top has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (16 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. This shape REPEATS in the file: 15 other methods here (azul_layout::solver3::getters::get_css_left, azul_layout::solver3::getters::get_css_right, azul_layout::solver3::getters::get_css_top, \u2026) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 16 times rather than 16 independent problems. Splitting this body alone leaves the other 15 exactly as they are. Where these are variations on one operation, the change that clears all 16 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":"layout/src/solver3/getters.rs"},"region":{"startLine":3575}}}],"partialFingerprints":{"codehealthFindingId/v1":"5124b48a52bf2d16a636a7c02a3acc79413d4bb3a76f20910347ab9e4c261f2f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::getters::get_css_padding_bottom (cognitive 16): azul_layout::solver3::getters::get_css_padding_bottom has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (16 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. This shape REPEATS in the file: 15 other methods here (azul_layout::solver3::getters::get_css_left, azul_layout::solver3::getters::get_css_right, azul_layout::solver3::getters::get_css_top, \u2026) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 16 times rather than 16 independent problems. Splitting this body alone leaves the other 15 exactly as they are. Where these are variations on one operation, the change that clears all 16 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":"layout/src/solver3/getters.rs"},"region":{"startLine":3581}}}],"partialFingerprints":{"codehealthFindingId/v1":"73afe5e8e92ee48830d5b8429a5092c3f9b75082ee1c86f2cbf5fdb60db4943b"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::getters::get_css_border_left_width (cognitive 16): azul_layout::solver3::getters::get_css_border_left_width has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (16 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. This shape REPEATS in the file: 15 other methods here (azul_layout::solver3::getters::get_css_left, azul_layout::solver3::getters::get_css_right, azul_layout::solver3::getters::get_css_top, \u2026) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 16 times rather than 16 independent problems. Splitting this body alone leaves the other 15 exactly as they are. Where these are variations on one operation, the change that clears all 16 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":"layout/src/solver3/getters.rs"},"region":{"startLine":3622}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcb933b8650783a2b8d413339cf1eddb164295cb6ac71229c6c89837256a5dee"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::getters::get_css_border_right_width (cognitive 16): azul_layout::solver3::getters::get_css_border_right_width has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (16 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. This shape REPEATS in the file: 15 other methods here (azul_layout::solver3::getters::get_css_left, azul_layout::solver3::getters::get_css_right, azul_layout::solver3::getters::get_css_top, \u2026) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 16 times rather than 16 independent problems. Splitting this body alone leaves the other 15 exactly as they are. Where these are variations on one operation, the change that clears all 16 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":"layout/src/solver3/getters.rs"},"region":{"startLine":3628}}}],"partialFingerprints":{"codehealthFindingId/v1":"33d5f6f7662a6b3b594bc977ccd117986c52ac04d58d17e9e1c6248b602e52b6"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::getters::get_css_border_top_width (cognitive 16): azul_layout::solver3::getters::get_css_border_top_width has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (16 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. This shape REPEATS in the file: 15 other methods here (azul_layout::solver3::getters::get_css_left, azul_layout::solver3::getters::get_css_right, azul_layout::solver3::getters::get_css_top, \u2026) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 16 times rather than 16 independent problems. Splitting this body alone leaves the other 15 exactly as they are. Where these are variations on one operation, the change that clears all 16 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":"layout/src/solver3/getters.rs"},"region":{"startLine":3634}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d8f9e386326b4b5a87de4aa0de2cb682426e8089f4e866a9069267c0d6e6797"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::getters::get_css_border_bottom_width (cognitive 16): azul_layout::solver3::getters::get_css_border_bottom_width has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (16 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. This shape REPEATS in the file: 15 other methods here (azul_layout::solver3::getters::get_css_left, azul_layout::solver3::getters::get_css_right, azul_layout::solver3::getters::get_css_top, \u2026) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 16 times rather than 16 independent problems. Splitting this body alone leaves the other 15 exactly as they are. Where these are variations on one operation, the change that clears all 16 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":"layout/src/solver3/getters.rs"},"region":{"startLine":3640}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd3f424874d1adce0c25804040789ed037bbac2308bc23751d728a6ce202090c"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::cpurender::pixmap::shift_pixbuf (cognitive 16): azul_layout::cpurender::pixmap::shift_pixbuf has cognitive complexity 16 (threshold 15). Drivers by points: loops 6 (12 pts), match/switch 2, boolean chains 1, if/else 1 (nesting depth added 6). 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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbdcbe736dbcf97f55b6ad71f4d3de67d59e7dbec69d79ce77f900d1d3a0dec7"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::widgets::combobox::on_combobox_option_click (cognitive 16): azul_layout::widgets::combobox::on_combobox_option_click 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":"layout/src/widgets/combobox.rs"},"region":{"startLine":984}}}],"partialFingerprints":{"codehealthFindingId/v1":"7936b308d1a0f22c77f0356c5e6872fb5d7efe46b30e694e29fcc7a49d364dea"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::display_list::apply_text_overflow_ellipsis (cognitive 16): azul_layout::solver3::display_list::apply_text_overflow_ellipsis has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (12 pts), loops 2 (4 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":"layout/src/solver3/display_list.rs"},"region":{"startLine":10610}}}],"partialFingerprints":{"codehealthFindingId/v1":"81f4a4d43a125b5c7a8ccda5cbb1f1accb465efe9385d04e59f2400647504c9f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::cache::faces_covering (cognitive 16): azul_layout::text3::cache::faces_covering has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9, loops 3 (5 pts), boolean chains 2 (nesting depth added 2). 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, 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":"layout/src/text3/cache.rs"},"region":{"startLine":645}}}],"partialFingerprints":{"codehealthFindingId/v1":"690eb598c35bf8ab03347fa9f9e27ab48315a0d6478de281c8a5d6a03da87be8"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::dom_lint::warn_div_used_as_text_container (cognitive 16): azul_layout::dom_lint::warn_div_used_as_text_container 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":"layout/src/dom_lint.rs"},"region":{"startLine":770}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f47ec014c32bc218d91e38833c0f1fe59db47f46d57fc7b6af4f6fadc267de9"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::text3::glyphs::get_glyph_runs_simple (cognitive 16): azul_layout::text3::glyphs::get_glyph_runs_simple has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 2 (3 pts), match/switch 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":"layout/src/text3/glyphs.rs"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"39075b650a345179be787aca3eecb50b8b4a3c85032b5e10152ebce2bed6dcab"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::widgets::text_input::default_on_text_input_inner (cognitive 16): azul_layout::widgets::text_input::default_on_text_input_inner has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (10 pts), match/switch 3 (4 pts), boolean chains 2 (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":"layout/src/widgets/text_input.rs"},"region":{"startLine":1092}}}],"partialFingerprints":{"codehealthFindingId/v1":"29f61aebc514e897e24c73d543649f583dd43f6d8d08dc94394d5f9c1b3e9b62"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::widgets::map::map_on_pointer_move (cognitive 16): azul_layout::widgets::map::map_on_pointer_move has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (12 pts), boolean chains 3, 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":"layout/src/widgets/map.rs"},"region":{"startLine":1527}}}],"partialFingerprints":{"codehealthFindingId/v1":"04c779bbfc918f92efffa15ca61e4e5e7e8c385c446abe83efea83942d34b88f"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::managers::focus_cursor::resolve_focus_target (cognitive 16): azul_layout::managers::focus_cursor::resolve_focus_target has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (13 pts), 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":"layout/src/managers/focus_cursor.rs"},"region":{"startLine":746}}}],"partialFingerprints":{"codehealthFindingId/v1":"06f7168fa128add31df8127643829864ac2a5a494d630026f1b9290b3f064578"}},{"ruleId":"D2","level":"warning","message":{"text":"azul_layout::solver3::fc::collect_inline_span_recursive (cognitive 16): azul_layout::solver3::fc::collect_inline_span_recursive has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (13 pts), 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":"layout/src/solver3/fc.rs"},"region":{"startLine":9720}}}],"partialFingerprints":{"codehealthFindingId/v1":"31b82d55b47854bbb1a4249a6b722522f5aac501eba466913a6d5a600e48fe4a"}},{"ruleId":"D2","level":"warning","message":{"text":"ClipBatcher::add (cognitive 16): ClipBatcher::add has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (13 pts), 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":"webrender/core/src/batch.rs"},"region":{"startLine":3871}}}],"partialFingerprints":{"codehealthFindingId/v1":"296013e66405fb024155260c7e5f04613342561bf3cc3b8c2994455825124ea0"}},{"ruleId":"D2","level":"warning","message":{"text":"Occluders::area (cognitive 16): Occluders::area has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (8 pts), loops 3 (5 pts), match/switch 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":"webrender/core/src/composite.rs"},"region":{"startLine":1408}}}],"partialFingerprints":{"codehealthFindingId/v1":"33eed1de669c8a3bb55e9ebe2c3b15eac3bf11958ca7d8e5f6fcfc4db14a5d1a"}},{"ruleId":"D2","level":"warning","message":{"text":"SwCompositor::end_frame (cognitive 16): SwCompositor::end_frame has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (8 pts), loops 2 (8 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":"webrender/core/src/compositor/sw_compositor.rs"},"region":{"startLine":1618}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff17b3802e018b598ef91eb6837ac4c86f7bda4db3f3473b1d7dc778b88eed3e"}},{"ruleId":"D2","level":"warning","message":{"text":"Texture::evict_old_blocks (cognitive 16): Texture::evict_old_blocks has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (8 pts), match/switch 2 (7 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":"webrender/core/src/gpu_cache.rs"},"region":{"startLine":546}}}],"partialFingerprints":{"codehealthFindingId/v1":"e883645ecb649aa0e1a38e215164a75302a632f4be7cd885f177e8e317b10621"}},{"ruleId":"D2","level":"warning","message":{"text":"PictureCompositeKey::from (cognitive 16): PictureCompositeKey::from has cognitive complexity 16 (threshold 15). Drivers by points: match/switch 5 (10 pts), loops 2 (6 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":"webrender/core/src/prim_store/picture.rs"},"region":{"startLine":1086}}}],"partialFingerprints":{"codehealthFindingId/v1":"67ebc8cbd00a9f2076b480b0124077d0095c506a97acdf0bb52d15823d7fc366"}},{"ruleId":"D2","level":"warning","message":{"text":"TextureCache::evict_items_from_cache_if_required (cognitive 16): TextureCache::evict_items_from_cache_if_required has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (13 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":"webrender/core/src/texture_cache.rs"},"region":{"startLine":1273}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc5eefe069df4e014378fcf481f2834949277d32698e28c5c61967e899028415"}},{"ruleId":"D2","level":"warning","message":{"text":"webrender::render_task_graph::dump_render_tasks_as_svg (cognitive 16): webrender::render_task_graph::dump_render_tasks_as_svg has cognitive complexity 16 (threshold 15). Drivers by points: loops 7 (9 pts), if/else 3 (7 pts) (nesting depth added 6). 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":"webrender/core/src/render_task_graph.rs"},"region":{"startLine":856}}}],"partialFingerprints":{"codehealthFindingId/v1":"d06e18b72883f6c58f080b54ed62d84bcd12eee039a2bee26f484dbec479c3f0"}},{"ruleId":"D2","level":"warning","message":{"text":"webrender::clip::polygon_contains_point (cognitive 16): webrender::clip::polygon_contains_point has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (14 pts), loops 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":"webrender/core/src/clip.rs"},"region":{"startLine":2128}}}],"partialFingerprints":{"codehealthFindingId/v1":"3047264ef95d590e77b288d9ce46524f2e4c2a5649f379a87b0a07efa77d4600"}},{"ruleId":"D2","level":"warning","message":{"text":"AttribLocations::bind_loc (cognitive 16): AttribLocations::bind_loc has cognitive complexity 16 (threshold 15). Drivers by points: if/else 16. 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":"webrender/swgl/src/shaders/cs_clip_rectangle.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ef138b64d414c794f7c47ca62f45b606991b0c0b301f1137bc21a7d5b298aec"}},{"ruleId":"D2","level":"warning","message":{"text":"AttribLocations::bind_loc (cognitive 16): AttribLocations::bind_loc has cognitive complexity 16 (threshold 15). Drivers by points: if/else 16. 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":"webrender/swgl/src/shaders/cs_clip_rectangle_fast_path.rs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"02275de9d72ffe74bef6efe69ad84b8fa8e57978531a91fa9ac1fa77816a6ff1"}},{"ruleId":"D2","level":"warning","message":{"text":"PsQuadConicGradientVert::quad_primive_info (cognitive 16): PsQuadConicGradientVert::quad_primive_info has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11 (15 pts), 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":"webrender/swgl/src/shaders/ps_quad_conic_gradient.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"6104599b824efc01b4a54b008a684f5db5d27cc99d9602fc960396f8e01af399"}},{"ruleId":"D2","level":"warning","message":{"text":"PsQuadMaskVert::quad_primive_info (cognitive 16): PsQuadMaskVert::quad_primive_info has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11 (15 pts), 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":"webrender/swgl/src/shaders/ps_quad_mask.rs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae978885f9dc536934904029ee83dfebd087170fb95fad2b3fa48d864606db89"}},{"ruleId":"D2","level":"warning","message":{"text":"PsQuadRadialGradientVert::quad_primitive_info (cognitive 16): PsQuadRadialGradientVert::quad_primitive_info has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11 (15 pts), 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":"webrender/swgl/src/shaders/ps_quad_radial_gradient.rs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"78866831d45ad1f562c98a4d1755ea0475c86727c8bde3e778f14268296fcb90"}},{"ruleId":"D2","level":"warning","message":{"text":"AzulFilePicker.onActivityResultProxy (cognitive 16): AzulFilePicker.onActivityResultProxy has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (11 pts), boolean chains 2, loops 1 (2 pts), error handling 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":"scripts/android/AzulFilePicker.java"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc92e36c128812641485e27b3770aa1426149ac45725dc0031b916b6535e484c"}},{"ruleId":"D2","level":"warning","message":{"text":"sc_common.build_dependency_closure (cognitive 16): sc_common.build_dependency_closure has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (9 pts), loops 4 (6 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":"scripts/supply-chain/sc_common.py"},"region":{"startLine":395}}}],"partialFingerprints":{"codehealthFindingId/v1":"29d32add046e08414d6da9fbd13475ed08088d5e360c0437da0e14a59cb1c6be"}},{"ruleId":"D2","level":"warning","message":{"text":"_loadNodeBoxModel (cognitive 16): _loadNodeBoxModel has cognitive complexity 16 (threshold 15). Drivers by points: boolean chains 12, if/else 2, error handling 1, ternaries 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":1204}}}],"partialFingerprints":{"codehealthFindingId/v1":"2147043e1d981d983392b087fd0228a0d5390d469fb1c904e11a75fa6430d664"}},{"ruleId":"D2","level":"warning","message":{"text":"_loadNodeCssProperties (cognitive 16): _loadNodeCssProperties has cognitive complexity 16 (threshold 15). Drivers by points: ternaries 4 (8 pts), if/else 4, boolean chains 3, error handling 1 (nesting depth added 4). Of this number, 8 points are the body\u0027s own statements and 8 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":1266}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d6ab747a93e818e9ed51515d42f004278d1f66708f548b9ec858e4ec3b319d4"}},{"ruleId":"D2","level":"warning","message":{"text":"_autoResolvePointers (cognitive 16): _autoResolvePointers has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (9 pts), boolean chains 3, error handling 1 (2 pts), ternaries 1 (2 pts) (nesting depth added 5). Of this number, 11 points are the body\u0027s own statements and 5 belong to 3 function literals 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":1351}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f97533ea8906ff6b419dd64401d6930a4b65c4f4434ef4beb6e252cd495d654"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/window.rs: FileTooLong \u2014 11355 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 43 free functions. The bar is 500 significant lines; this is 10855 over it, 22.71\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":"layout/src/window.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1135067d35dc5f51631670d4f51b1f6f0ac992d8d3dbf37cda5b3b0a7f4bcdb0"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: BatchBuilder.add_prim_to_batch: MethodTooLong \u2014 add_prim_to_batch runs 1836 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 1736 over it, 18.36\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":"webrender/core/src/batch.rs"},"region":{"startLine":815}}}],"partialFingerprints":{"codehealthFindingId/v1":"607a4e04764114f165d322035df93ebea97b10b039087a1d490b1a3421584b51"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: text3/cache.rs: FileTooLong \u2014 7600 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 7100 over it, 15.20\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":"layout/src/text3/cache.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cfed2a46e45d028447c1ece4e09885023383e821955b16c59a1e6310805c12f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::compositor2::translate_displaylist_to_wr: FunctionTooLong \u2014 azul_dll::desktop::compositor2::translate_displaylist_to_wr runs 1483 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 1383 over it, 14.83\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":"dll/src/desktop/compositor2.rs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b236aa646f9dd42aa976afe240a6ccef87b73e26cc736052488abca65acd66a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CssProperty: TooManyMethods \u2014 426 methods. The bar is 30 methods; this is 396 over it, 14.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":"css/src/props/property.rs"},"region":{"startLine":662}}}],"partialFingerprints":{"codehealthFindingId/v1":"306c0f4962e2b11e6d7423916d44a698d035b2e5b4fde9e8eaa197d07d8837a2"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::main: FunctionTooLong \u2014 azul_doc::main runs 1375 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 1275 over it, 13.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":"doc/src/main.rs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"406415b6ca129b9a6540c3616fe737c2352bb757e5302491b3dad33add811665"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::shell2::windows::window_proc: FunctionTooLong \u2014 azul_dll::desktop::shell2::windows::window_proc runs 1359 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 1259 over it, 13.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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":4025}}}],"partialFingerprints":{"codehealthFindingId/v1":"1eef03bfd6a5bd76c878a0415c512c84f27765d376d824db798e1fdfb6794220"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: props/property.rs: FileTooLong \u2014 6726 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 6226 over it, 13.45\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":"css/src/props/property.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1b8d07984ac309b806661fc480130de3cf5db3958fa69ffca85a50f91ad08cf"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: common/event.rs: FileTooLong \u2014 6645 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 37 free functions. The bar is 500 significant lines; this is 6145 over it, 13.29\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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"095b1278cf9db844893def90373ae5b307e09ff62a6fa36b8175dbc4dd7bb120"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: solver3/display_list.rs: FileTooLong \u2014 6562 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 51 free functions. The bar is 500 significant lines; this is 6062 over it, 13.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":"layout/src/solver3/display_list.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"57151d64dd9be1a2e009f05f2a2a249f8fc5e09236b5cc5f7790c203b05950e7"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CallbackInfo: TooManyMethods \u2014 384 methods. The bar is 30 methods; this is 354 over it, 12.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":"layout/src/callbacks.rs"},"region":{"startLine":1290}}}],"partialFingerprints":{"codehealthFindingId/v1":"8aa83fbf0022ba314a17e398f8bd0adc03cc7afcfa982e1e9f84725d5d19263d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: web/transpiler_remill.rs: FileTooLong \u2014 6346 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 98 free functions. The bar is 500 significant lines; this is 5846 over it, 12.69\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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b43fd3a8169dd523762ba8e51ea8ba542d89d8a9363d87396dc9a3f2a2015247"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: solver3/fc.rs: FileTooLong \u2014 6174 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 73 free functions. The bar is 500 significant lines; this is 5674 over it, 12.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":"layout/src/solver3/fc.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b4a9ad229c3af7924b1ef61301a390e4c89e3e4d05ef72928712fd1508ab0e6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: wayland/mod.rs: FileTooLong \u2014 6037 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 79% of them inside a single declaration: WaylandWindow (7 blocks, 544-11092). The bar is 500 significant lines; this is 5537 over it, 12.07\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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae14d9b076c1107efc53561c4441d8edeea91d89ff2b5f8dd8058258104ef01c"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: WaylandWindow: ClassTooLong \u2014 4755 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), 132 methods, 7 blocks, lines 544-11092. The bar is 400 significant lines; this is 4355 over it, 11.89\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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"0620c49e70e467c68dd074ed9e49f330a36458f6cf662ca88180d82cae18724c"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::fc::layout_bfc: FunctionTooLong \u2014 azul_layout::solver3::fc::layout_bfc runs 1127 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 1027 over it, 11.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":"layout/src/solver3/fc.rs"},"region":{"startLine":1214}}}],"partialFingerprints":{"codehealthFindingId/v1":"c72b1f8452f888d2418f530496680b86ff7b448768bab493fa8139632569fe7c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/xml.rs: FileTooLong \u2014 5574 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 85 free functions. The bar is 500 significant lines; this is 5074 over it, 11.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":"core/src/xml.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"14fb02d35618a41f3fde886db56995d5c22e694b33aef996990a3ae61ac6bfaa"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::widgets::node_graph::render_node: FunctionTooLong \u2014 azul_layout::widgets::node_graph::render_node runs 1082 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 982 over it, 10.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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":1291}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc01f2fbbb85b1639949e2c5b75c73e313948554eb0e115189905d1f2ae48e8b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: LayoutWindow: TooManyMethods \u2014 322 methods. The bar is 30 methods; this is 292 over it, 10.73\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":"layout/src/window.rs"},"region":{"startLine":1184}}}],"partialFingerprints":{"codehealthFindingId/v1":"73ffeb370608c2e22d8dc809311a431fbbc89a0c15731fada4b9183009842df0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: macos/mod.rs: FileTooLong \u2014 4973 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 4473 over it, 9.95\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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0712bd307ad0dc3232f32188523f1d25e7ebc51ab3eabf41d8951b1159231da6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: x11/mod.rs: FileTooLong \u2014 4866 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 71% of them inside a single declaration: X11Window (11 blocks, 1743-8843), declaring 34 free functions. The bar is 500 significant lines; this is 4366 over it, 9.73\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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d92dd96e6adc153f22aa95a25be9f20d939601ff4a2b106997aeb635a250fb70"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/picture.rs: FileTooLong \u2014 4641 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 4141 over it, 9.28\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":"webrender/core/src/picture.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a45b1a7c0145e4d77cdce1bc868b17545bea0b7802760993311a4c7dfcd5cd4f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PicturePrimitive.take_context: MethodTooLong \u2014 take_context runs 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) in one body. The bar is 100 significant lines; this is 785 over it, 8.85\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":"webrender/core/src/picture.rs"},"region":{"startLine":5302}}}],"partialFingerprints":{"codehealthFindingId/v1":"52f0ee763b5e82331fe9194a0a12d84aaff5dd1134e81adb05970a03f9dbea9a"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: X11Window: ClassTooLong \u2014 3445 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), 84 methods, 11 blocks, lines 1743-8843. The bar is 400 significant lines; this is 3045 over it, 8.61\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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":2593}}}],"partialFingerprints":{"codehealthFindingId/v1":"68d82df1d7a03178213221194dfb581d34ff79eac7b85b57579404546f42e423"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: windows/mod.rs: FileTooLong \u2014 4127 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 3627 over it, 8.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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b879635c950e5cf68015b50520ef2286d2a4423cac8b4a2d08bde9215fe17347"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Dom: TooManyMethods \u2014 247 methods. The bar is 30 methods; this is 217 over it, 8.23\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":"core/src/dom.rs"},"region":{"startLine":4237}}}],"partialFingerprints":{"codehealthFindingId/v1":"c32b7af992ccbe79c1e8a56400c573f908a5774027834ea2ca46db4a6aa14167"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/dom.rs: FileTooLong \u2014 4042 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 3542 over it, 8.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":"core/src/dom.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"747f4727bbae7f0cadc53b5643eb23a5582ebb483466e5552d02cb232b4c08ab"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: solver3/getters.rs: FileTooLong \u2014 4040 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 195 free functions. The bar is 500 significant lines; this is 3540 over it, 8.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":"layout/src/solver3/getters.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1c0f4ffb8ac2d53591582a0f346bf1d46a629fcdc1eee3cc6705e6de205f37d"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Renderer: ClassTooLong \u2014 3144 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), 86 methods, 3 blocks, lines 761-5971. The bar is 400 significant lines; this is 2744 over it, 7.86\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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":761}}}],"partialFingerprints":{"codehealthFindingId/v1":"c82fbdd1c86eb2301c03bbf03940c35f377837ad5d671c0d0c08cccafd9ea2b6"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: GlContextPtr: TooManyMethods \u2014 229 methods. The bar is 30 methods; this is 199 over it, 7.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":"core/src/gl.rs"},"region":{"startLine":985}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea68d1e2c975e1e9e1b9c1c4663f0d1277c37c31eb93e32b499fca6105728450"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: renderer/mod.rs: FileTooLong \u2014 3739 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 84% of them inside a single declaration: Renderer (3 blocks, 761-5971). The bar is 500 significant lines; this is 3239 over it, 7.48\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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a57f4660a0e53c7bc239988f55da903055156242c7936d73dae78e094eb181c5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: cpurender/raster.rs: FileTooLong \u2014 3522 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 60 free functions. The bar is 500 significant lines; this is 3022 over it, 7.04\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":"layout/src/cpurender/raster.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1277a295078e32521fd01ce9567f06444ff785ff1aa33fef148de75449cb2c40"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: debugger/debugger.js: FileTooLong \u2014 3378 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 2878 over it, 6.76\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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8d00bcb15cd51f4cf306f549ee7b1896d58abbb443d39714aa842a8f8f2fd20"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::fc::collect_and_measure_inline_content_impl: FunctionTooLong \u2014 azul_layout::solver3::fc::collect_and_measure_inline_content_impl runs 671 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 571 over it, 6.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":"layout/src/solver3/fc.rs"},"region":{"startLine":8628}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b13d72ce88218c9f4ecb572779028be740abd59524bfe55fefc18ff7c94641e"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CssProperty: ClassTooLong \u2014 2666 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), 426 methods, 2 blocks, lines 662-7908. The bar is 400 significant lines; this is 2266 over it, 6.67\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":"css/src/props/property.rs"},"region":{"startLine":662}}}],"partialFingerprints":{"codehealthFindingId/v1":"a23e8a7528483c76461c12db60a365f145cf1369a357a1ae55064052bb5084e1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/prop_cache.rs: FileTooLong \u2014 3300 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 77% of them inside a single declaration: CssPropertyCache (5 blocks, 1017-5395). The bar is 500 significant lines; this is 2800 over it, 6.60\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":"core/src/prop_cache.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e626b0e97744a41c7a0e810bc9713d20da2325b46090e61bd9d2f3773e34603f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::cpurender::raster::render_single_item: FunctionTooLong \u2014 azul_layout::cpurender::raster::render_single_item runs 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) in one body. The bar is 100 significant lines; this is 560 over it, 6.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":"layout/src/cpurender/raster.rs"},"region":{"startLine":1830}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2c0cd99792cdee76db2f5c7ae526cbed97d59c3c69bc4005463bdadb00c3950"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: MacOSWindow: ClassTooLong \u2014 2625 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), 99 methods, 7 blocks, lines 4009-9323. The bar is 400 significant lines; this is 2225 over it, 6.56\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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":4009}}}],"partialFingerprints":{"codehealthFindingId/v1":"61cf253e491f9547d250834b6c847963da403865c7dcce4589d088e1aec712fa"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::shell2::common::layout::regenerate_layout: FunctionTooLong \u2014 azul_dll::desktop::shell2::common::layout::regenerate_layout runs 639 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 539 over it, 6.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":"dll/src/desktop/shell2/common/layout.rs"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcfd57823489d202e76cb146815c05a6cc752043476b5e9d2dcaaa3a81fb95ec"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CssPropertyCache: ClassTooLong \u2014 2526 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), 75 methods, 5 blocks, lines 1017-5395. The bar is 400 significant lines; this is 2126 over it, 6.32\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":"core/src/prop_cache.rs"},"region":{"startLine":1017}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3e2ad861142d97b8d4ad2a3956c23dda75ffa771b44c73d362ecc56813c6e28"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::event_determination::determine_all_events: FunctionTooLong \u2014 azul_layout::event_determination::determine_all_events runs 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) in one body. The bar is 100 significant lines; this is 530 over it, 6.30\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":"layout/src/event_determination.rs"},"region":{"startLine":599}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9d2e4c4fcdeedfd28a5a607029993ee1eb647bfdaaa469a983191f97a2d84cf"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MacOSWindow.new_with_options_internal: MethodTooLong \u2014 new_with_options_internal runs 629 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 529 over it, 6.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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":4965}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6d451d09af30d86ba777ae1820395765ce81a0c125c7e81daa238645c580189"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: SceneBuilder: ClassTooLong \u2014 2511 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), 50 methods, 2 blocks, lines 434-4302. The bar is 400 significant lines; this is 2111 over it, 6.28\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":"webrender/core/src/scene_building.rs"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"23667d2d2221393a99489595eff909635439c7ccc768640f448d4d087b701921"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/callbacks.rs: FileTooLong \u2014 3105 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 77% of them inside a single declaration: CallbackInfo (3 blocks, 1162-7027). The bar is 500 significant lines; this is 2605 over it, 6.21\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":"layout/src/callbacks.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c265cb6d2bd41ff47a05773b941296370c518daabb9036ba097152cc2d758f94"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: X11Window.new_with_resources: MethodTooLong \u2014 new_with_resources runs 610 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 510 over it, 6.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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":3227}}}],"partialFingerprints":{"codehealthFindingId/v1":"14c509612d691f24fc33abaf2efed117df91a55b9e39daad5f8a618a079dd900"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/gl.rs: FileTooLong \u2014 3001 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 2501 over it, 6.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":"core/src/gl.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"85b0421f7b5a74d8bb671ffc344ffb5911c3650eb807eb8e366ffddff19f19c0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/scene_building.rs: FileTooLong \u2014 3001 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 84% of them inside a single declaration: SceneBuilder (2 blocks, 434-4302). The bar is 500 significant lines; this is 2501 over it, 6.00\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":"webrender/core/src/scene_building.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2377a8ddf60c786e2e557b5a6b021ee376c7e073e86e3cd92c4c36c807d585a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: WaylandWindow.generate_frame_if_needed: MethodTooLong \u2014 generate_frame_if_needed runs 598 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 498 over it, 5.98\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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":7011}}}],"partialFingerprints":{"codehealthFindingId/v1":"c71e7e7e0ad5399e6dea6862c95df311ed3a6a41a991545304cb0068bde9aff0"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CallbackInfo: ClassTooLong \u2014 2382 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), 384 methods, 3 blocks, lines 1162-7027. The bar is 400 significant lines; this is 1982 over it, 5.96\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":"layout/src/callbacks.rs"},"region":{"startLine":1290}}}],"partialFingerprints":{"codehealthFindingId/v1":"e37d111f60b00dce66441cf57759c3e9a3ffcf50330194ce32584e70e5a32359"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Profiler.new: MethodTooLong \u2014 new runs 595 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 495 over it, 5.95\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":"webrender/core/src/profiler.rs"},"region":{"startLine":401}}}],"partialFingerprints":{"codehealthFindingId/v1":"43b92ab8134b431c91cd1aa1ece28f248286ed05420d2aeb6b9a76a9626e5a51"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: webrender::prepare::prepare_interned_prim_for_render: FunctionTooLong \u2014 webrender::prepare::prepare_interned_prim_for_render runs 594 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 494 over it, 5.94\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":"webrender/core/src/prepare.rs"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"214a86f232eebdefd327496907dc7dae498356e816a8eded22c00a3827ee9152"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Win32Window: ClassTooLong \u2014 2366 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), 62 methods, 8 blocks, lines 147-7844. The bar is 400 significant lines; this is 1966 over it, 5.92\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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"32b3e2b134506d1e54cedea710b16091809bd2a0f029374993eb42c471dc7464"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::autofix::type_index::extract_macro_generated_types: FunctionTooLong \u2014 azul_doc::autofix::type_index::extract_macro_generated_types runs 586 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 486 over it, 5.86\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":"doc/src/autofix/type_index.rs"},"region":{"startLine":1990}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ec274105c9d9d72c0dffa0e245b2662778ec349be70f5e4f8418d1efebf4211"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: WaylandWindow.new: MethodTooLong \u2014 new runs 585 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 485 over it, 5.85\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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":1972}}}],"partialFingerprints":{"codehealthFindingId/v1":"abcdb84300101703ae8d933cacf3b22140812ff1ec2f5ea35bb3800ce2dcd504"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: device/gl.rs: FileTooLong \u2014 2917 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 2417 over it, 5.83\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":"webrender/core/src/device/gl.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2872ed0ae73d4cdfc1bff3630d02620f607753a8329deb6941a27d08ea70a94"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::reftest::regression::generate_visual_html_report: FunctionTooLong \u2014 azul_doc::reftest::regression::generate_visual_html_report runs 583 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 483 over it, 5.83\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":"doc/src/reftest/regression.rs"},"region":{"startLine":2056}}}],"partialFingerprints":{"codehealthFindingId/v1":"76d72256d1d260d2e919452eb1c64657ba5edadc0499c9efb942fa96f18ee32a"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_css::props::property::format_static_css_prop: FunctionTooLong \u2014 azul_css::props::property::format_static_css_prop runs 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) in one body. The bar is 100 significant lines; this is 475 over it, 5.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":"css/src/props/property.rs"},"region":{"startLine":7917}}}],"partialFingerprints":{"codehealthFindingId/v1":"d73f4d0895bb1008e2d3e9b4a77894ebea2a0990849bf782b03f8834cfbb7595"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::fc::translate_to_text3_constraints: FunctionTooLong \u2014 azul_layout::solver3::fc::translate_to_text3_constraints runs 563 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 463 over it, 5.63\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":"layout/src/solver3/fc.rs"},"region":{"startLine":4623}}}],"partialFingerprints":{"codehealthFindingId/v1":"65884ce5a74e6ebac5952a6e561418e3a70f63e6d5a1622cff7e6928988b2f1d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: wayland/events.rs: FileTooLong \u2014 2811 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 169 free functions. The bar is 500 significant lines; this is 2311 over it, 5.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":"dll/src/desktop/shell2/linux/wayland/events.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b09289c5bd02d9807c6297111ecc44434c20eba29099c7804d5fe841ba1b72b"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::reftest::apply_midlevel::run: FunctionTooLong \u2014 azul_doc::reftest::apply_midlevel::run runs 562 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 462 over it, 5.62\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":"doc/src/reftest/apply_midlevel.rs"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"6044b72fc4c1507006f72c2fcaf8059ce1757d13ac5c78d226971b7173eed37c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/batch.rs: FileTooLong \u2014 2766 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: BatchBuilder (2 blocks, 729-3635). The bar is 500 significant lines; this is 2266 over it, 5.53\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":"webrender/core/src/batch.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"92070ec349cc80215df78b84e8ed231f3a31cb1866cdcee5555c9e74b18ea355"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/events.rs: FileTooLong \u2014 2734 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 44 free functions. The bar is 500 significant lines; this is 2234 over it, 5.47\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":"core/src/events.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8adc702428b6194a1c49c21f18afeee1b5dd7b187b643b92b7b0b299f1a7089"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_css::props::property::parse_combined_css_property: FunctionTooLong \u2014 azul_css::props::property::parse_combined_css_property runs 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) in one body. The bar is 100 significant lines; this is 444 over it, 5.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":"css/src/props/property.rs"},"region":{"startLine":3689}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb3ea4202c090d7e0095b3bc161cb0a478936175eb7e3edd1ce321a321df1402"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: autofix/mod.rs: FileTooLong \u2014 2661 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 2161 over it, 5.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":"doc/src/autofix/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d0afaac544f4d815846082d231e20401846ed88c8c40515da49e327b19ec078"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: widgets/node_graph.rs: FileTooLong \u2014 2584 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 51 free functions. The bar is 500 significant lines; this is 2084 over it, 5.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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"131f49805d7c90c87e791302717f70d9a635aea29382d16a8a08a9087bb1a878"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: BatchBuilder: ClassTooLong \u2014 2061 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, 2 blocks, lines 729-3635. The bar is 400 significant lines; this is 1661 over it, 5.15\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":"webrender/core/src/batch.rs"},"region":{"startLine":729}}}],"partialFingerprints":{"codehealthFindingId/v1":"00b2fde54fef0ccec832cf84800c43ebe52816f62399a27738f44ecfb3ddc9b6"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::autofix::autofix_api: FunctionTooLong \u2014 azul_doc::autofix::autofix_api runs 510 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 410 over it, 5.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":"doc/src/autofix/mod.rs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"8414f2e2683e0112f5b4ee5505ac73ad17fede6b9ff338a4b1e48aad6269d9f6"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CpuBackend.render_frame: MethodTooLong \u2014 render_frame runs 497 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 397 over it, 4.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":"dll/src/desktop/shell2/headless/mod.rs"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ed53eebbc0cf2fc7ca536f0869d6f1f2c2028175662bd1eccd561780e42af6d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: solver3/layout_tree.rs: FileTooLong \u2014 2456 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 1956 over it, 4.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":"layout/src/solver3/layout_tree.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"24f2164bfc8428cbdea02cc83c4e51cae3a02cb53aa8e77654c5bda4b7f8da0d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: widgets/ribbon.rs: FileTooLong \u2014 2454 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 92 free functions. The bar is 500 significant lines; this is 1954 over it, 4.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":"layout/src/widgets/ribbon.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e7c0f47a63f3af8a41708457b30460c231ee514622f5bafcc2b027e01639ea8"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: Wayland: TooManyFields \u2014 145 stored fields beside 1 method. The bar is 30 stored fields; this is 115 over it, 4.83\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":"dll/src/desktop/shell2/linux/wayland/dlopen.rs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6945b438dff1cad2c7da8c589482af5298fb854531d22bde72fed2efed7fc07"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TaffyBridge.translate_style_to_taffy: MethodTooLong \u2014 translate_style_to_taffy runs 471 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 371 over it, 4.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":"layout/src/solver3/taffy_bridge.rs"},"region":{"startLine":734}}}],"partialFingerprints":{"codehealthFindingId/v1":"59197d42e89ef88f6ac3a32cd2741c00fe9a083bc3470de9d026695a983e2a4d"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::scroll_timer::scroll_physics_timer_callback: FunctionTooLong \u2014 azul_layout::scroll_timer::scroll_physics_timer_callback runs 469 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 369 over it, 4.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":"layout/src/scroll_timer.rs"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a0aca1e83edbbafea0d2f61ca70d6ae07d9c21bbc09007f3227e4a931330f03"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: HeadlessWindow.run: MethodTooLong \u2014 run runs 468 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 368 over it, 4.68\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":"dll/src/desktop/shell2/headless/mod.rs"},"region":{"startLine":2258}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea239defebfff3be0bdb259defbd97ca31f48c3b4a9a47cef42ef5ff2220f58b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ColorU: TooManyMethods \u2014 140 methods. The bar is 30 methods; this is 110 over it, 4.67\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":"css/src/props/basic/color.rs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbcbb132e651209690d9cb47f1a6d954849f54cbae22cd064233666b4801ad18"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: reftest/apply_midlevel.rs: FileTooLong \u2014 2324 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 59 free functions. The bar is 500 significant lines; this is 1824 over it, 4.65\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":"doc/src/reftest/apply_midlevel.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7df7167afe6afc57f2d5ded24596fa2a77c90109640fdbfba99b86f43b6e1b7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: style/text.rs: FileTooLong \u2014 2286 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 34 free functions. The bar is 500 significant lines; this is 1786 over it, 4.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":"css/src/props/style/text.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bd8fab50e1daec8d9b625801eb3787db00909580dd5543d83d23f59a000be2b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Win32Window.new: MethodTooLong \u2014 new runs 452 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 352 over it, 4.52\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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"5146e3a0da6c01473881989495a6155b81594a4ea5d26d7835ee70c1ad59ef25"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SceneBuilder.wrap_prim_with_filters: MethodTooLong \u2014 wrap_prim_with_filters runs 451 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 351 over it, 4.51\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":"webrender/core/src/scene_building.rs"},"region":{"startLine":3599}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fd0e7ab3d0bc5b1d9b58fc2f06346209336b1ee75cd06ff0e7a739b337e065e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::autofix::check_ffi_safety: FunctionTooLong \u2014 azul_doc::autofix::check_ffi_safety runs 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) in one body. The bar is 100 significant lines; this is 348 over it, 4.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":"doc/src/autofix/mod.rs"},"region":{"startLine":1828}}}],"partialFingerprints":{"codehealthFindingId/v1":"fee915e1af95a75011eca096ffcf7ba0b2ff031002d24e7888abe4fec92fe790"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Device: TooManyMethods \u2014 133 methods. The bar is 30 methods; this is 103 over it, 4.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":"webrender/core/src/device/gl.rs"},"region":{"startLine":1076}}}],"partialFingerprints":{"codehealthFindingId/v1":"d37cd48ba022583d7b2557edb4c055e9fe21f16d0d4d1974a9dbcf963d3c06bb"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: WaylandWindow: TooManyMethods \u2014 132 methods. The bar is 30 methods; this is 102 over it, 4.40\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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"467e2ee2f63213b7f78894bb69130181162e29a73173994138859992186bf530"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Filter.from: MethodTooLong \u2014 from runs 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) in one body. The bar is 100 significant lines; this is 340 over it, 4.40\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":"webrender/core/src/internal_types.rs"},"region":{"startLine":995}}}],"partialFingerprints":{"codehealthFindingId/v1":"51bf6549c5b05663406e1649fff76d430ecb0af52be2464705a9fba8a2199d20"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Shaders.new: MethodTooLong \u2014 new runs 437 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 337 over it, 4.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":"webrender/core/src/renderer/shade.rs"},"region":{"startLine":630}}}],"partialFingerprints":{"codehealthFindingId/v1":"f22451bcf9526e65d0bff60c1d8655502debaece09738719d3bd838c26e1fb23"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: wayland/defines.rs: FileTooLong \u2014 2164 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 40 free functions. The bar is 500 significant lines; this is 1664 over it, 4.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":"dll/src/desktop/shell2/linux/wayland/defines.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b07f642d074fc31385a905501e390e1abe606029aa34d78c962775e5975f30c"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Device: ClassTooLong \u2014 1725 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), 133 methods, 2 blocks, lines 1076-4154. The bar is 400 significant lines; this is 1325 over it, 4.31\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":"webrender/core/src/device/gl.rs"},"region":{"startLine":1076}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3b557a13f178185438586f958025913e8c921ceaa5725f0510061e6787fbf58"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/resources.rs: FileTooLong \u2014 2123 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 1623 over it, 4.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":"core/src/resources.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cda074749a8579905a749d04344b672ddf8b3dbad1ad4a41f1769f4dde43c63c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: autofix/type_index.rs: FileTooLong \u2014 2105 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 34 free functions. The bar is 500 significant lines; this is 1605 over it, 4.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":"doc/src/autofix/type_index.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8873b1ee218843692860b7c66046a0174c1220f057ce2cfb64c904bd3cec3510"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::text3::cache::shape_visual_items: FunctionTooLong \u2014 azul_layout::text3::cache::shape_visual_items runs 415 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 315 over it, 4.15\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":"layout/src/text3/cache.rs"},"region":{"startLine":9473}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc38345958f81f059124302cbd846311bff0a08aac4f6cce04a6998c61ea5f87"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: webrender::quad::prepare_quad: FunctionTooLong \u2014 webrender::quad::prepare_quad runs 415 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 315 over it, 4.15\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":"webrender/core/src/quad.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecaa51b01d60cbb0497f5e05dbae6554d11823728013dddf5f455760f4073e0a"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::fc::layout_ifc: FunctionTooLong \u2014 azul_layout::solver3::fc::layout_ifc runs 413 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 313 over it, 4.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":"layout/src/solver3/fc.rs"},"region":{"startLine":3570}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c2092284860afbb8f4704f620869b25f61a1f25865cea002363dd755f58d10a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/profiler.rs: FileTooLong \u2014 2059 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: Profiler (2 blocks, 364-2052). The bar is 500 significant lines; this is 1559 over it, 4.12\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":"webrender/core/src/profiler.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"403619a8ebdaaf66f30047d93e3c74e7543a68530a1cdae9d88f6582fd68e34e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: cpurender/compositor.rs: FileTooLong \u2014 2050 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 45 free functions. The bar is 500 significant lines; this is 1550 over it, 4.10\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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b2b7baa028f77d4ab089d1ffe2f8090214fa5fa14dcf705f1c3d96fb7a6017b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: WaylandWindow: TooManyFields \u2014 122 stored fields beside 132 methods. The bar is 30 stored fields; this is 92 over it, 4.07\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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a67d698e245ba7093e8ad1a2eb3375369c9d2521f705cdbf565d83f203fd8f4"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Win32Window.render_and_present: MethodTooLong \u2014 render_and_present runs 406 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 306 over it, 4.06\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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":1139}}}],"partialFingerprints":{"codehealthFindingId/v1":"5867f179ad7a750947a098b81cbf77aa2a324d14fc33b483476321da1bedb417"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::cache::reconcile_recursive: FunctionTooLong \u2014 azul_layout::solver3::cache::reconcile_recursive runs 406 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 306 over it, 4.06\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":"layout/src/solver3/cache.rs"},"region":{"startLine":1540}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa1f64849d30513cc223cef41268019694f8e04b1f236840fae3877bd5e20dc9"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TileCacheInstance.update_prim_dependencies: MethodTooLong \u2014 update_prim_dependencies runs 405 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 305 over it, 4.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":"webrender/core/src/picture.rs"},"region":{"startLine":3038}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f91b686794361259a52e6f567f614c81c46d67c25b0878b624ea9476d2dea93"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/render_task.rs: FileTooLong \u2014 1999 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 1499 over it, 4.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":"webrender/core/src/render_task.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5ee3a718d9a2f9bb5a0c38329659dceeae02406bf670db7b5ec5ae635ad1a73"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: android/mod.rs: FileTooLong \u2014 1984 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 1484 over it, 3.97\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":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5393c5bdcb48952a1d3580cbcc0f1984cecde7fdceedbb4e2ec33d594a01936"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_core::compact::apply_css_property_to_compact: FunctionTooLong \u2014 azul_core::compact::apply_css_property_to_compact runs 394 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 294 over it, 3.94\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":"core/src/compact.rs"},"region":{"startLine":1305}}}],"partialFingerprints":{"codehealthFindingId/v1":"043db91f978b7e80744bfbd4a3adf6f2dc1a0e73329bee58caf1faaad101498e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::autofix::print_single_warning: FunctionTooLong \u2014 azul_doc::autofix::print_single_warning runs 394 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 294 over it, 3.94\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":"doc/src/autofix/mod.rs"},"region":{"startLine":2599}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e4a17cc21eb7b3ef1568f239d5730340c1e20f32494d8947c9d78bf869b0502"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::dllgen::deploy::generate_release_html: FunctionTooLong \u2014 azul_doc::dllgen::deploy::generate_release_html runs 392 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 292 over it, 3.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":"doc/src/dllgen/deploy.rs"},"region":{"startLine":2019}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e7006d44f2754969b6ad7b72c2f1aac1a782f52961b49013b8f763b364c49a6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: solver3/cache.rs: FileTooLong \u2014 1959 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 33 free functions. The bar is 500 significant lines; this is 1459 over it, 3.92\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":"layout/src/solver3/cache.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5da748f9e8eacfe3fb79835c888b463db1fbff33f5e16c9aae447df1005f6b4"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MacOSWindow.render_and_present_in_draw_rect: MethodTooLong \u2014 render_and_present_in_draw_rect 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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":7700}}}],"partialFingerprints":{"codehealthFindingId/v1":"6be610b989d9b72ca8d1ec20b0775c96270bf2663919f694ff56798776b004f6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: reftest/regression.rs: FileTooLong \u2014 1944 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 1444 over it, 3.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":"doc/src/reftest/regression.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2541324f79c7cf9eb49491bb6048e37de8555fd7fd108806c7dc6058a7a1c78e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: reftest/autoreview.rs: FileTooLong \u2014 1933 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 41 free functions. The bar is 500 significant lines; this is 1433 over it, 3.87\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":"doc/src/reftest/autoreview.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5e22388ebcd2c1a58383675d5ec4fe7b12702b6d0e2556564850e9bd64615d3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: themes/flat.rs: FileTooLong \u2014 1925 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 1425 over it, 3.85\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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"deb18b8422ae055774efa04453daf6a4cfe623aab93cd91b035a7900fd647772"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/system.rs: FileTooLong \u2014 1919 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 1419 over it, 3.84\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":"css/src/system.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"20440b53701264d956c1a73c3c5dbe1385d939a3eea390e779b462c689c3a7f7"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: X11Window.render_and_present: MethodTooLong \u2014 render_and_present runs 382 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 282 over it, 3.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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":6380}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f8e568be6d406168f929dfe216ae9d51823c2b842752f5abab74782a743314c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NodeData: TooManyMethods \u2014 113 methods. The bar is 30 methods; this is 83 over it, 3.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":"core/src/dom.rs"},"region":{"startLine":1689}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd05bc62be5b1d6bc6cc8675124075efda6e876bf6fa5b6a67c4e9ff438627e9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dllgen/deploy.rs: FileTooLong \u2014 1869 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 1369 over it, 3.74\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":"doc/src/dllgen/deploy.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa16b406c9462ecb8677074421c7de7ed3a610c6f4383e26608d26271de3748d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/styled_dom.rs: FileTooLong \u2014 1865 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 1365 over it, 3.73\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":"core/src/styled_dom.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccede8b5a454dab3d25779ad419d7607b0ac07c8bd65781d1ed2d30dc5d8c483"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CssPropertyCache.build_compact_cache_with_inheritance_debug: MethodTooLong \u2014 build_compact_cache_with_inheritance_debug runs 371 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 271 over it, 3.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":"core/src/compact.rs"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"6da5d9c90c14566ded54cca453b3855700fbb241c6082974ff47e5b4ff6309c8"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::autofix::reserved_keywords::get_all_keywords: FunctionTooLong \u2014 azul_doc::autofix::reserved_keywords::get_all_keywords runs 370 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 270 over it, 3.70\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":"doc/src/autofix/mod.rs"},"region":{"startLine":3266}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf7fdd2843baa629c2d4c7e591444124734c90f3b5649dff4588fdb1ba7c9531"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Dom: ClassTooLong \u2014 1461 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), 247 methods, 8 blocks, lines 4237-7478. The bar is 400 significant lines; this is 1061 over it, 3.65\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":"core/src/dom.rs"},"region":{"startLine":4237}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc398eaa9d0b2216fefdd250262846ea7ad958810b0970cefdc7e756704fa2cb"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: X11Window.handle_event: MethodTooLong \u2014 handle_event runs 364 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 264 over it, 3.64\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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":4836}}}],"partialFingerprints":{"codehealthFindingId/v1":"24ee76289d9f60283103ca70a518d900d9c0a321e273623f96007bb8d6153f35"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/main.rs: FileTooLong \u2014 1811 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 1311 over it, 3.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":"doc/src/main.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ab8204fec2470af9f1526e20c5fc7171ab25e39e40b45b26f919149f673286e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::sizing::calculate_used_size_for_node: FunctionTooLong \u2014 azul_layout::solver3::sizing::calculate_used_size_for_node runs 361 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 261 over it, 3.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":"layout/src/solver3/sizing.rs"},"region":{"startLine":1730}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b78c94ef12f6be9c435ed6cc97b342adba4f6810a4298f3b6d57555cbf7ffed"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CompactLayoutCache: TooManyMethods \u2014 108 methods. The bar is 30 methods; this is 78 over it, 3.60\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":"css/src/compact_cache.rs"},"region":{"startLine":1645}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ba58b39d42a029989bd46a94f6bae106de28a7c991339e28c1b76dc64c87176"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: linux/system_style.rs: FileTooLong \u2014 1777 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 65 free functions. The bar is 500 significant lines; this is 1277 over it, 3.55\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":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e00e22b9d5c0a05af57c329c71db2e582c1d398fe6dbb3f12ce29a1b714d246"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: desktop/wr_translate2.rs: FileTooLong \u2014 1756 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 1256 over it, 3.51\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":"dll/src/desktop/wr_translate2.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a57bc24a2484c15ccecff414394015c3780685f462b2cb2c5484ebcc060cf026"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/gene2e.rs: FileTooLong \u2014 1752 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 42 free functions. The bar is 500 significant lines; this is 1252 over it, 3.50\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":"doc/src/gene2e.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c28f9cb7bb1133ab3757588a03670aa44eb08e53faf7a456312e7c269b76a6ca"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: webrender::renderer::init::create_webrender_instance: FunctionTooLong \u2014 webrender::renderer::init::create_webrender_instance runs 350 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 250 over it, 3.50\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":"webrender/core/src/renderer/init.rs"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"41eb86b99b977cdd41bda71d877c42b8b46037e78f7b6409798c0e0d396dc639"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: desktop/compositor2.rs: FileTooLong \u2014 1748 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 1248 over it, 3.50\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":"dll/src/desktop/compositor2.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5505fe6060325c71e529b91675e0f8f4fd1abe0c6865d4878c9c5a404b11053"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::shell2::run::run: FunctionTooLong \u2014 azul_dll::desktop::shell2::run::run runs 348 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 248 over it, 3.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":"dll/src/desktop/shell2/run.rs"},"region":{"startLine":620}}}],"partialFingerprints":{"codehealthFindingId/v1":"be99099861bbe410051a54f4a1ae944ccfcf5d6e670dd450fe2c5d9889c9b2bb"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: LayoutWindow: TooManyFields \u2014 104 stored fields beside 322 methods. The bar is 30 stored fields; this is 74 over it, 3.47\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":"layout/src/window.rs"},"region":{"startLine":1184}}}],"partialFingerprints":{"codehealthFindingId/v1":"286715d0a76e052438905ff05fc660b10e130ffc8a17df13752423368c8f8a02"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/window.rs: FileTooLong \u2014 1732 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 1232 over it, 3.46\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":"core/src/window.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"528cded7f7969d1e74bf6bcb415de6f94dc0321ac94470d4e9596a80e615fb58"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FilterGraphOpKey.from: MethodTooLong \u2014 from runs 344 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 244 over it, 3.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":"webrender/core/src/prim_store/picture.rs"},"region":{"startLine":619}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bb430ea7b90b67871259dca717929b37ddac71c4c3b89054620725b00bf7200"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::positioning::position_out_of_flow_elements: FunctionTooLong \u2014 azul_layout::solver3::positioning::position_out_of_flow_elements runs 341 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 241 over it, 3.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":"layout/src/solver3/positioning.rs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"b495227a2e3d3527b73eeaa0711554c642f64e303cacba40cb33ef1cc930d8d3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: xml/svg.rs: FileTooLong \u2014 1682 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 56 free functions. The bar is 500 significant lines; this is 1182 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":"layout/src/xml/svg.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8b3c610c39e364c8f38a9e2fcb004d3e7e2b17c710217c4171dbe4b2470c11e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::shell2::android::drain_input: FunctionTooLong \u2014 azul_dll::desktop::shell2::android::drain_input runs 336 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 236 over it, 3.36\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":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":1262}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c345f464a09a7bc4da162aa483801abe25fdfe753aedb1a6bd09de5a3b188b3"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MacOSWindow: TooManyMethods \u2014 99 methods, declared across 2 files: macos/mod.rs (73), macos/events.rs (26). The bar is 30 methods; this is 69 over it, 3.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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":4009}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fc28a98ecce72d74ffa8b650af56cb7abbb67164d292f8542e61d20cef2be4d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: GestureAndDragManager: TooManyMethods \u2014 99 methods. The bar is 30 methods; this is 69 over it, 3.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":"layout/src/managers/gesture.rs"},"region":{"startLine":720}}}],"partialFingerprints":{"codehealthFindingId/v1":"d248042394a461a78d74defacf6f428a0ccd7fed5f76a2692f7f6ba680a58598"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_css::props::property::parse_css_property: FunctionTooLong \u2014 azul_css::props::property::parse_css_property runs 330 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 230 over it, 3.30\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":"css/src/props/property.rs"},"region":{"startLine":3216}}}],"partialFingerprints":{"codehealthFindingId/v1":"46d474b45b0d4aeae9677f64f33300dfcb30a8980b45b42135a12ac29d3050c5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: web/symbol_table.rs: FileTooLong \u2014 1644 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 1144 over it, 3.29\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":"dll/src/web/symbol_table.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"592a4f1093f09a5ab6611fbc9649cb165bbe5bdb110681d0d2d6477efc0eacba"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: PicturePrimitive: ClassTooLong \u2014 1309 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 5154-7373. The bar is 400 significant lines; this is 909 over it, 3.27\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":"webrender/core/src/picture.rs"},"region":{"startLine":5154}}}],"partialFingerprints":{"codehealthFindingId/v1":"972bbbfdbdd8b6135cf3ac4ad10e87547afd4c0cc45ae465b04d041420e0df45"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: reftest/autodebug.rs: FileTooLong \u2014 1624 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 1124 over it, 3.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":"doc/src/reftest/autodebug.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bb78049571956be1a0670f740d3fb9cbcd4e7db2ccf446f3586f29d25ff7c01"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: TileCacheInstance: ClassTooLong \u2014 1298 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, 2 blocks, lines 1689-4048. The bar is 400 significant lines; this is 898 over it, 3.25\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":"webrender/core/src/picture.rs"},"region":{"startLine":1689}}}],"partialFingerprints":{"codehealthFindingId/v1":"a22db78fbf8d333a5a841932e2dc61fc24cc2ae40879500a962736fd83a019cf"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SceneBuilder.build_item: MethodTooLong \u2014 build_item runs 320 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 220 over it, 3.20\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":"webrender/core/src/scene_building.rs"},"region":{"startLine":1332}}}],"partialFingerprints":{"codehealthFindingId/v1":"000c842d82183123e849649f5da5f36b9a222cc37817a3efe019d55a4bd36680"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/compact_cache.rs: FileTooLong \u2014 1594 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 90 free functions. The bar is 500 significant lines; this is 1094 over it, 3.19\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":"css/src/compact_cache.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"010f292ecd2316e5276f9765ddb4237cf36d6a3b23638c8f0117d875dd3158c3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: solver3/taffy_bridge.rs: FileTooLong \u2014 1588 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: TaffyBridge (8 blocks, 673-2545), declaring 37 free functions. The bar is 500 significant lines; this is 1088 over it, 3.18\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":"layout/src/solver3/taffy_bridge.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc21c7238f4452b71e1e4ac3c41623b708d18ff3003721673166c07b268e6528"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: headless/mod.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). The bar is 500 significant lines; this is 1078 over it, 3.16\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":"dll/src/desktop/shell2/headless/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"54ff37605765fd1bc880d66a497e54e26f957e722eefa45ac12351d3591047a3"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Profiler: ClassTooLong \u2014 1256 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 364-2052. The bar is 400 significant lines; this is 856 over it, 3.14\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":"webrender/core/src/profiler.rs"},"region":{"startLine":364}}}],"partialFingerprints":{"codehealthFindingId/v1":"e75f8e4c54c784143c9bb6f2f0f566ae6a04934029e6c560523687d44c777384"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::shell2::linux::wayland::events::registry_global_handler: FunctionTooLong \u2014 azul_dll::desktop::shell2::linux::wayland::events::registry_global_handler runs 314 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 214 over it, 3.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":"dll/src/desktop/shell2/linux/wayland/events.rs"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce1326da215fbd5777c2bc71ea346d86194a351864019089cc9cb2bc5a8eb093"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: GlContextPtr: ClassTooLong \u2014 1255 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), 229 methods, 10 blocks, lines 985-2935. The bar is 400 significant lines; this is 855 over it, 3.14\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":"core/src/gl.rs"},"region":{"startLine":985}}}],"partialFingerprints":{"codehealthFindingId/v1":"f336eb29e2dad15676a5e6e75429004d3f757a2baf7e09fb189061b91acf2592"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: themes/flora.rs: FileTooLong \u2014 1565 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 1065 over it, 3.13\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":"layout/src/widgets/themes/flora.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"15b3c1e55c53f1772bfcb7b654e9ccf8c0ed5f2667e9e01dc7c290fdb3582912"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/api.rs: FileTooLong \u2014 1556 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 34 free functions. The bar is 500 significant lines; this is 1056 over it, 3.11\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":"doc/src/api.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"09290dc94c4517945d408daa0eccfb0bf011395059f4287dbc56583bf92541d3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: autofix/diff.rs: FileTooLong \u2014 1518 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 34 free functions. The bar is 500 significant lines; this is 1018 over it, 3.04\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":"doc/src/autofix/diff.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c4b9aafdc5aaed2636b84c668e071bca8714a00e10504f6b57cc4fac300738d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: widgets/map.rs: FileTooLong \u2014 1515 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 53 free functions. The bar is 500 significant lines; this is 1015 over it, 3.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":"layout/src/widgets/map.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0f97090d1b3edabd105761023cffec05b550c6b1149e219b966fe2a2b236680"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::text3::cache::perform_fragment_layout: FunctionTooLong \u2014 azul_layout::text3::cache::perform_fragment_layout runs 303 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 203 over it, 3.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":"layout/src/text3/cache.rs"},"region":{"startLine":10761}}}],"partialFingerprints":{"codehealthFindingId/v1":"797de701950e4353ec4e962e7db9a6f8c9c017c65b2bd911a1ab5a0239ba786d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/dynamic_selector.rs: FileTooLong \u2014 1510 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 1010 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":"css/src/dynamic_selector.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"909a81dced9c5163ce127d67cbaf61c3ba4cc35416e4ea71cc37301673e9a68e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Device.new: MethodTooLong \u2014 new runs 301 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 201 over it, 3.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":"webrender/core/src/device/gl.rs"},"region":{"startLine":1440}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6bd6d82ce508968a996d6f7da8ab73bbc0b392f0149ae0ae64494021aa3a108"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::shell2::run::run: FunctionTooLong \u2014 azul_dll::desktop::shell2::run::run runs 295 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 195 over it, 2.95\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":"dll/src/desktop/shell2/run.rs"},"region":{"startLine":1963}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef6a5ba1773dcb732ac776e52513d7afca0a3adae532ae90113ecbe3b1e6217e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::patch::index::extract_types_from_file: FunctionTooLong \u2014 azul_doc::patch::index::extract_types_from_file runs 294 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 194 over it, 2.94\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":"doc/src/patch/index.rs"},"region":{"startLine":1196}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f443f278930e539a4e0d3f1a7bd209675d762b326f8ce7ab8054b62bb99732f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::patch::apply_class_patch: FunctionTooLong \u2014 azul_doc::patch::apply_class_patch runs 291 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 191 over it, 2.91\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":"doc/src/patch/mod.rs"},"region":{"startLine":1100}}}],"partialFingerprints":{"codehealthFindingId/v1":"45ce6879f794d34f595687cfe905ad0a8e8cafc225c080144f4810b306a2ffe6"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::fc::position_table_cells: FunctionTooLong \u2014 azul_layout::solver3::fc::position_table_cells runs 291 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 191 over it, 2.91\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":"layout/src/solver3/fc.rs"},"region":{"startLine":7936}}}],"partialFingerprints":{"codehealthFindingId/v1":"f49690fff8e4cfeaac2010fcd6fe332d3490064c33f36c7615f073b5f72822eb"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::shell2::windows::wcreate::create_gl_context: FunctionTooLong \u2014 azul_dll::desktop::shell2::windows::wcreate::create_gl_context 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":"dll/src/desktop/shell2/windows/wcreate.rs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"231e45319db9f65d2ab19129fd8215fba6cb83873a3abbfbd25a29e6281b3917"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::autofix::debug::analyze_function_dependencies: FunctionTooLong \u2014 azul_doc::autofix::debug::analyze_function_dependencies 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":"doc/src/autofix/debug.rs"},"region":{"startLine":1010}}}],"partialFingerprints":{"codehealthFindingId/v1":"d617554d5cf02f2533d1fd1a85f01545da38180f45a404d9ed742eeedf9e8b34"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Renderer: TooManyMethods \u2014 86 methods, declared across 3 files: renderer/mod.rs (77), src/screen_capture.rs (6), renderer/gpu_cache.rs (3). The bar is 30 methods; this is 56 over it, 2.87\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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":761}}}],"partialFingerprints":{"codehealthFindingId/v1":"614dfbc314ef5d572cf955a456161aae032fbd49c56b44899a18581504f1ca18"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: shell2/run.rs: FileTooLong \u2014 1428 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 928 over it, 2.86\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":"dll/src/desktop/shell2/run.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3c02d531d04d2fac2b3ae93f0911286d8765355eeed0fe7ac1bc9a3e5f76ae2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: solver3/paged_layout.rs: FileTooLong \u2014 1415 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 915 over it, 2.83\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":"layout/src/solver3/paged_layout.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0199ac906b8d2a86099d14b93597acd5bfbb38ce1fd7ffaabfe5b945c076d08"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/display_list.rs: FileTooLong \u2014 1415 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 915 over it, 2.83\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":"webrender/api/src/display_list.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2c1eda89b95e24c5a6e8bd3ac9aa94e2e0445760645798ad582de9cd26ab569"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::autofix::workspace::generate_patches: FunctionTooLong \u2014 azul_doc::autofix::workspace::generate_patches runs 282 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 182 over it, 2.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":"doc/src/autofix/workspace.rs"},"region":{"startLine":432}}}],"partialFingerprints":{"codehealthFindingId/v1":"931d0f506dab73df241f30db5839ee2a0e3be37019bfa1db0f38fa8a83ee6809"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ios/mod.rs: FileTooLong \u2014 1409 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 54 free functions. The bar is 500 significant lines; this is 909 over it, 2.82\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":"dll/src/desktop/shell2/ios/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5dbeb2d6f86ff41ef688ba98c962bb3eb46322d6899245d5d4891b839f061ff"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/resource_cache.rs: FileTooLong \u2014 1405 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 79% of them inside a single declaration: ResourceCache (4 blocks, 442-2293). The bar is 500 significant lines; this is 905 over it, 2.81\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":"webrender/core/src/resource_cache.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9657780100d1f721644b045d493a769b35b2229b072aa2e5e1fb380280045e92"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::web::run_web: FunctionTooLong \u2014 azul_dll::web::run_web runs 281 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 181 over it, 2.81\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":"dll/src/web/mod.rs"},"region":{"startLine":1007}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b60ab4317e6ff66c1a1f22d4805fb1423b3b9d962e9462dbb83b3a5d4fee01a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: X11Window: TooManyMethods \u2014 84 methods, declared across 2 files: x11/mod.rs (64), x11/events.rs (20). The bar is 30 methods; this is 54 over it, 2.80\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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":2593}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7fa01943d3049499079e39b1e93949738f09ebb050e278801469d172877d692"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: Xlib: TooManyFields \u2014 84 stored fields beside 1 method. The bar is 30 stored fields; this is 54 over it, 2.80\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":"dll/src/desktop/shell2/linux/x11/dlopen.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f3ee58eeb393ccbf2a3db8728c3e4e33bf602482597e066f6b3f8088390e3c1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: solver3/sizing.rs: FileTooLong \u2014 1400 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 900 over it, 2.80\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":"layout/src/solver3/sizing.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"981ed62fc9bea13269be2f408158c47d9f841e32b76c46351e7b90a11b8627f1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/updater.rs: FileTooLong \u2014 1400 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 44 free functions. The bar is 500 significant lines; this is 900 over it, 2.80\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":"layout/src/updater.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"37466dc5b615c002e62e9ede5ee3bfde2260afdecbcb78d0d6d0100b6c761ae2"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::text3::cache::position_one_line: FunctionTooLong \u2014 azul_layout::text3::cache::position_one_line 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":"layout/src/text3/cache.rs"},"region":{"startLine":11839}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bd3cdfae93e5c1c87ac0ab56021031fafcef1169f8c3163ba396698390a7768"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::xml::parse_xml_to_fast_dom_with_css: FunctionTooLong \u2014 azul_layout::xml::parse_xml_to_fast_dom_with_css 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":"layout/src/xml/mod.rs"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"c718320c7b9f797e1b53330d18d5d8659d51594bb1f2a0e82cbf5e8d3d8f3022"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: basic/color.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":"css/src/props/basic/color.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e876d3e8a99cc79fa7dee5fe6951f65430a0fa4ae124db6206ed7248bf3bd2f2"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ResourceCache: ClassTooLong \u2014 1113 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), 56 methods, 4 blocks, lines 442-2293. The bar is 400 significant lines; this is 713 over it, 2.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":"webrender/core/src/resource_cache.rs"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcea0b8d8286dd68eb5a7c198af021c5202fcfe22135d5951b5c43459a5de4d9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: reftest/autodoc.rs: FileTooLong \u2014 1388 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 41 free functions. The bar is 500 significant lines; this is 888 over it, 2.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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d87d0f40db81a2676c343f7d03c642c8a13a83a1ecf418261dbe31133037b2b1"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::cache::calculate_layout_for_subtree_fragment: FunctionTooLong \u2014 azul_layout::solver3::cache::calculate_layout_for_subtree_fragment runs 276 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 176 over it, 2.76\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":"layout/src/solver3/cache.rs"},"region":{"startLine":3020}}}],"partialFingerprints":{"codehealthFindingId/v1":"af348fe68affec3b506bcd4ef02ec3488356b40a7b24ecd35447e29ca655df9b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/compact.rs: FileTooLong \u2014 1362 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 862 over it, 2.72\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":"core/src/compact.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fde4bb84d9a884be86ee17436bd25556ba872bce5a26de5f74e79ef152b2f1c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/font.rs: FileTooLong \u2014 1357 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 857 over it, 2.71\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":"layout/src/font.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cec47b82321c65a971b6190dfd8df92e3a396652ac3a79a6fac797e5c103acb8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: managers/gesture.rs: FileTooLong \u2014 1351 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: GestureAndDragManager (5 blocks, 720-4554). The bar is 500 significant lines; this is 851 over it, 2.70\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":"layout/src/managers/gesture.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cdf2e2923b50e1ed723b7927e38b77861f812db8cbe5d98b9b332134461bd3b"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: TaffyBridge: ClassTooLong \u2014 1077 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), 8 methods, 8 blocks, lines 673-2545. The bar is 400 significant lines; this is 677 over it, 2.69\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":"layout/src/solver3/taffy_bridge.rs"},"region":{"startLine":673}}}],"partialFingerprints":{"codehealthFindingId/v1":"05fc6969af01a6fd2e7b14d4dce1ee801bdbd2df8e1dc42a752fdca0d0612111"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CssPropertyCache.build_compact_cache: MethodTooLong \u2014 build_compact_cache runs 268 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 168 over it, 2.68\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":"core/src/compact.rs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"e93ef812094cc54c004716823bf6ee909914f8d9f12cbe70ed9e31ae286b738d"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::widgets::themes::flora::progressbar_render_bar_impl: FunctionTooLong \u2014 azul_layout::widgets::themes::flora::progressbar_render_bar_impl runs 267 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 167 over it, 2.67\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":"layout/src/widgets/themes/flora.rs"},"region":{"startLine":1305}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce959cb407ee6fceb302aa989702883c4307137e84c3915835b938f1684290aa"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/parser2.rs: FileTooLong \u2014 1330 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 830 over it, 2.66\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":"css/src/parser2.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad84f0c6f07981668ddd683ffe3041fc7b1b3067bfbf981d5eb4d0296075981f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/display_item.rs: FileTooLong \u2014 1325 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 825 over it, 2.65\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":"webrender/api/src/display_item.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"76fe87d7fb599c4ac57f0c3f5b24ce4b54fd768bd62a75b85248fee60afca66a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/css.rs: FileTooLong \u2014 1317 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 817 over it, 2.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":"css/src/css.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed858726d6464a9474321a5edaad7beef2778f95c22e29c2e0a329b5df65ee8e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::fc::collect_inline_span_recursive: FunctionTooLong \u2014 azul_layout::solver3::fc::collect_inline_span_recursive runs 263 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 163 over it, 2.63\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":"layout/src/solver3/fc.rs"},"region":{"startLine":9720}}}],"partialFingerprints":{"codehealthFindingId/v1":"de3b49d5f2e9d700e50e140f09be6434c6a9349219b6ead73c2d79fb44251462"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TileCacheInstance.pre_update: MethodTooLong \u2014 pre_update runs 263 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 163 over it, 2.63\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":"webrender/core/src/picture.rs"},"region":{"startLine":2047}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d5d1602a1f6ee995e660aa2491416f9af68ff03ff818699bec7822c2153b162"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::shell2::linux::x11::init_xinput2: FunctionTooLong \u2014 azul_dll::desktop::shell2::linux::x11::init_xinput2 runs 262 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 162 over it, 2.62\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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":866}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a869431b8d257c1bfc217ce00735563cdebb3558e08b578d854ea74a6b0d170"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: autofix/workspace.rs: FileTooLong \u2014 1293 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 793 over it, 2.59\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":"doc/src/autofix/workspace.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"20db501a278347e4fe9cd5e856d4206656f8050a262a46a9c12e38e86ee542f5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/clip.rs: FileTooLong \u2014 1292 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 792 over it, 2.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":"webrender/core/src/clip.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4d4ebfea1a051bee90c4a3a0709886f8aef7b5da229322e4747fc7f12905351"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::paged_layout::layout_document_paged_impl: FunctionTooLong \u2014 azul_layout::solver3::paged_layout::layout_document_paged_impl runs 258 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 158 over it, 2.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":"layout/src/solver3/paged_layout.rs"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c9f399885d96815fc1bba22b856db84bf86713a47c1ff52060c09470f183aa6"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: GestureAndDragManager: ClassTooLong \u2014 1019 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), 99 methods, 5 blocks, lines 720-4554. The bar is 400 significant lines; this is 619 over it, 2.55\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":"layout/src/managers/gesture.rs"},"region":{"startLine":720}}}],"partialFingerprints":{"codehealthFindingId/v1":"96134a3f43917b9683f82bf070e5ff11221c5c235a380bb5794adb85daebf819"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TypeDefinition.expand_macro_generated: MethodTooLong \u2014 expand_macro_generated runs 254 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 154 over it, 2.54\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":"doc/src/autofix/type_index.rs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e925348a2704f1e3133114b5cca823baa716d9c33d088b6c9ecc11f6aaf59a1"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Ribbon.build_chrome: MethodTooLong \u2014 build_chrome runs 254 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 154 over it, 2.54\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":"layout/src/widgets/ribbon.rs"},"region":{"startLine":3210}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cc97a298558904b6091d72dadb635678001baf5adf6c9832d45f912e261d643"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: sqlite/mod.rs: FileTooLong \u2014 1261 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 37 free functions. The bar is 500 significant lines; this is 761 over it, 2.52\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":"dll/src/desktop/extra/sqlite/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b3a59ca4b00c7de9f77025849dd897111e93eb536587640b79a1c7b189738a3"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CssPropertyCache: TooManyMethods \u2014 75 methods, declared across 2 files: src/prop_cache.rs (72), src/compact.rs (3). The bar is 30 methods; this is 45 over it, 2.50\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":"core/src/prop_cache.rs"},"region":{"startLine":1017}}}],"partialFingerprints":{"codehealthFindingId/v1":"61b2024dc751000942e53bdf0b965aa6e883fb5f5e4fc5ed2e2688ddb52aca9f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/render_backend.rs: FileTooLong \u2014 1246 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: RenderBackend (3 blocks, 701-1974). The bar is 500 significant lines; this is 746 over it, 2.49\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":"webrender/core/src/render_backend.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c19c34d8fc4fd92e8489aab82d1102f5303a9d932b36fb4bef6d342ef7b0274e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ParsedFont.from_provider: MethodTooLong \u2014 from_provider runs 249 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 149 over it, 2.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":"layout/src/font.rs"},"region":{"startLine":1011}}}],"partialFingerprints":{"codehealthFindingId/v1":"0422e5a554438ed0bddd88e265f5fe1bb6577a92b32fb98f2a77b471047585c5"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TaffyBridge.compute_non_flex_layout: MethodTooLong \u2014 compute_non_flex_layout runs 249 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 149 over it, 2.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":"layout/src/solver3/taffy_bridge.rs"},"region":{"startLine":1990}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb334dc1ee1c7798b5c12a6c30300a4a176f8fa3635ed94bdd2119e756167f27"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: StyledDom: ClassTooLong \u2014 994 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), 41 methods, 3 blocks, lines 994-2826. The bar is 400 significant lines; this is 594 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":"core/src/styled_dom.rs"},"region":{"startLine":994}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6bf98193a74cd6c7259a566c55cdb4139e2632e5462d9688cf5b750073acaad"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/prepare.rs: FileTooLong \u2014 1238 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 738 over it, 2.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":"webrender/core/src/prepare.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea99a72578a72652fd0a95272110c6cafa7a86f55369217c8d510529f69b06a0"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: User32Functions: TooManyFields \u2014 74 stored fields. The bar is 30 stored fields; this is 44 over it, 2.47\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":"dll/src/desktop/shell2/windows/dlopen.rs"},"region":{"startLine":595}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdfde4e82c33f937b6b683680c8b794ed351a3e24e9d95536971379a34d6b273"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: x11/defines.rs: FileTooLong \u2014 1231 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 731 over it, 2.46\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":"dll/src/desktop/shell2/linux/x11/defines.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fc0a782cec9dcfff2d870e73e7df0ebb8908a25838be81ae6da9b5ed5f814da"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::autofix::function_diff::generate_add_type_patches: FunctionTooLong \u2014 azul_doc::autofix::function_diff::generate_add_type_patches runs 243 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 143 over it, 2.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":"doc/src/autofix/function_diff.rs"},"region":{"startLine":1192}}}],"partialFingerprints":{"codehealthFindingId/v1":"b49007abf4531f76a335da0c34ceab3a08011712e2f11ab93cb028cebe4221ba"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::autofix::module_map::get_module_keywords: FunctionTooLong \u2014 azul_doc::autofix::module_map::get_module_keywords runs 241 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 141 over it, 2.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":"doc/src/autofix/module_map.rs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d6a23a186a390d8060928397f3e02466b41e3d2fdea33b405c46e2a96797b8f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::cpurender::raster::render_box_shadow: FunctionTooLong \u2014 azul_layout::cpurender::raster::render_box_shadow runs 241 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 141 over it, 2.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":"layout/src/cpurender/raster.rs"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec815e2dc9b6192eb2366ea29de8dd2013112d73c3df239b5980eac278f37e6a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: X11Window: TooManyFields \u2014 72 stored fields beside 84 methods. The bar is 30 stored fields; this is 42 over it, 2.40\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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":2593}}}],"partialFingerprints":{"codehealthFindingId/v1":"212491ad80ed6976ed2cb8b8f08d1f51123d39577dbd5108d4a7b563d487c62b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/diff.rs: FileTooLong \u2014 1183 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 683 over it, 2.37\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":"core/src/diff.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"42c747026fd97b6ae747c0d63a0dea32180279c0843fd0cbd9524d0baa8fd576"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/render_target.rs: FileTooLong \u2014 1182 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 682 over it, 2.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":"webrender/core/src/render_target.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fd6fdf334dfc38607a5780e33c48609c01b871a53b98fd96e686cef069ed4b0"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::fc::layout_table_fc: FunctionTooLong \u2014 azul_layout::solver3::fc::layout_table_fc runs 236 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 136 over it, 2.36\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":"layout/src/solver3/fc.rs"},"region":{"startLine":6282}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3af0fa1a94cda6aa12c805da760baad32c78b60ddb201b834a440f30cec7f43"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: style/background.rs: FileTooLong \u2014 1169 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 669 over it, 2.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":"css/src/props/style/background.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"089d1f843a13d7d3d4c04b0a2c82d9bd284f9e1d1eee997ce83ac082ef2c063b"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::getters::get_style_properties_for_state: FunctionTooLong \u2014 azul_layout::solver3::getters::get_style_properties_for_state runs 232 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 132 over it, 2.32\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":"layout/src/solver3/getters.rs"},"region":{"startLine":3042}}}],"partialFingerprints":{"codehealthFindingId/v1":"434f99eab682add508d4a439386782229a7f638ed394ce3a62d9f78a1bebf6d0"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AutofixPatch.modify_to_class_patch: MethodTooLong \u2014 modify_to_class_patch runs 231 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 131 over it, 2.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":"doc/src/autofix/patch_format.rs"},"region":{"startLine":951}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6d2207ffd9ab6c959f04f255225057f36b70867672fde60164a03a9cb98c41f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_core::ua_css::get_ua_property: FunctionTooLong \u2014 azul_core::ua_css::get_ua_property runs 230 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 130 over it, 2.30\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":"core/src/ua_css.rs"},"region":{"startLine":620}}}],"partialFingerprints":{"codehealthFindingId/v1":"8da6c0e4a7e856d43dcf9e34894dab65e95b4cd2f3a03a320481642a7fe39516"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::shell2::run::run: FunctionTooLong \u2014 azul_dll::desktop::shell2::run::run runs 230 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 130 over it, 2.30\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":"dll/src/desktop/shell2/run.rs"},"region":{"startLine":1477}}}],"partialFingerprints":{"codehealthFindingId/v1":"daee92f71895379baeab3259f0095bee090b474fef5bf8df10bf4b9c52423b72"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::layout_tree::collect_box_props: FunctionTooLong \u2014 azul_layout::solver3::layout_tree::collect_box_props runs 230 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 130 over it, 2.30\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":"layout/src/solver3/layout_tree.rs"},"region":{"startLine":3814}}}],"partialFingerprints":{"codehealthFindingId/v1":"27b029e4561f3777263c6aca673bbf0e081adb8886e7a5de89fb87c1563313a2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: renderer/shade.rs: FileTooLong \u2014 1149 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 649 over it, 2.30\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":"webrender/core/src/renderer/shade.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"71df18e5f631d453f12d9bbff6a02e681b9e9d75ab4c3ce4bf737d475f2fba56"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: reftest/mod.rs: FileTooLong \u2014 1147 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 647 over it, 2.29\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":"doc/src/reftest/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"37621539be52896c837db573d46134cc1670555b6071dba8ee3064f7ea76dba8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/internal_types.rs: FileTooLong \u2014 1145 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 645 over it, 2.29\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":"webrender/core/src/internal_types.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"48d16f3035139b004d04c34ad2e0ed741f2c354aea4beb8b758dbd8558306c3a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Wayland.new: MethodTooLong \u2014 new runs 229 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 129 over it, 2.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":"dll/src/desktop/shell2/linux/wayland/dlopen.rs"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"61797c53e1b89e36bac096f601f404eb7c8a4df4677456b5fc8f8ac9d0e93457"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: wayland/dlopen.rs: FileTooLong \u2014 1140 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 64 free functions. The bar is 500 significant lines; this is 640 over it, 2.28\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":"dll/src/desktop/shell2/linux/wayland/dlopen.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b764e0441353ad78cd98030dbe7d4b08d2e0db0b26dea5dad362962832d92b98"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CssProperty.is_initial: MethodTooLong \u2014 is_initial runs 227 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 127 over it, 2.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":"css/src/props/property.rs"},"region":{"startLine":7240}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc14e007c482668f04e8a601dbaf0e8a61d8a5987b3d8aaf77d78a0645174196"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::shell2::ios::handle_touch: FunctionTooLong \u2014 azul_dll::desktop::shell2::ios::handle_touch 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":"dll/src/desktop/shell2/ios/mod.rs"},"region":{"startLine":331}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb4f1480483330901748be17e66560d437299e1518f0c8ae973b7570fac14d79"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::widgets::map::map_widget_render: FunctionTooLong \u2014 azul_layout::widgets::map::map_widget_render runs 221 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 121 over it, 2.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":"layout/src/widgets/map.rs"},"region":{"startLine":2590}}}],"partialFingerprints":{"codehealthFindingId/v1":"ade003e4d56ecad9ffa20dfd673984beaa1a67591dff3baa4fe47fe8390857ab"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: webrender::render_target::add_svg_filter_node_instances: FunctionTooLong \u2014 webrender::render_target::add_svg_filter_node_instances runs 218 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 118 over it, 2.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":"webrender/core/src/render_target.rs"},"region":{"startLine":1009}}}],"partialFingerprints":{"codehealthFindingId/v1":"6823b3eb6b0c0063f9da028207016b5e31989083372cfa4a4fd8dcff71938452"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: patch/index.rs: FileTooLong \u2014 1079 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 579 over it, 2.16\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":"doc/src/patch/index.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"642fb5a720093763e61e24fc9b954c27016428be4c509f9dd70c471997ec8522"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::autofix::generate_combined_patch: FunctionTooLong \u2014 azul_doc::autofix::generate_combined_patch runs 214 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 114 over it, 2.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":"doc/src/autofix/mod.rs"},"region":{"startLine":839}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b3dc1566edaf32be2907964925b69dc7d408341cec415c8d33cfd427b29eae6"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::gene2e::run: FunctionTooLong \u2014 azul_doc::gene2e::run runs 214 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 114 over it, 2.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":"doc/src/gene2e.rs"},"region":{"startLine":1812}}}],"partialFingerprints":{"codehealthFindingId/v1":"e200e8b74093927d126fc6b2c16ed4f0891123f7d1684284e640682234c97912"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: patch/mod.rs: FileTooLong \u2014 1069 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 569 over it, 2.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":"doc/src/patch/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3e76272ce2943f60ee96a9a79c89f2f3de27e31a48b5b80921596cd0de30626"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DisplayListBuilder: TooManyMethods \u2014 64 methods. The bar is 30 methods; this is 34 over it, 2.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":"webrender/api/src/display_list.rs"},"region":{"startLine":1036}}}],"partialFingerprints":{"codehealthFindingId/v1":"2356cc67b8d74032dafdc01d3552b3e4aa306f43f408abc33ba0c92adea61926"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CssPropertyCache.restyle: MethodTooLong \u2014 restyle runs 213 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 113 over it, 2.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":"core/src/prop_cache.rs"},"region":{"startLine":1570}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6e2c3652748a7a1a51f9bcbd6ea81caef982c1f24af87bb618d4b776f1c9e8f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::native_screenshot::take_native_screenshot_xlib_bytes: FunctionTooLong \u2014 azul_dll::desktop::native_screenshot::take_native_screenshot_xlib_bytes runs 213 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 113 over it, 2.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":"dll/src/desktop/native_screenshot.rs"},"region":{"startLine":770}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5a919b8a57e48d0bc5db21c87fb172eb52602c6a25ddf8731f2f3db0c52e6d9"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: NodeData: ClassTooLong \u2014 850 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, 13 blocks, lines 1689-4150. The bar is 400 significant lines; this is 450 over it, 2.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":"core/src/dom.rs"},"region":{"startLine":1689}}}],"partialFingerprints":{"codehealthFindingId/v1":"729130c57f96d265febf8d6a4426bdaec1c7b798d25eadacca7500cd690f5190"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: HeadlessWindow: ClassTooLong \u2014 850 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), 26 methods, 3 blocks, lines 1493-3196. The bar is 400 significant lines; this is 450 over it, 2.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":"dll/src/desktop/shell2/headless/mod.rs"},"region":{"startLine":1493}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfb95338b71d541dc845d246b0d0ce0c7ab1c1245923fce0e09027c6c2a75c7b"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: LayoutTreeBuilder: ClassTooLong \u2014 850 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 2028-3482. The bar is 400 significant lines; this is 450 over it, 2.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":"layout/src/solver3/layout_tree.rs"},"region":{"startLine":2028}}}],"partialFingerprints":{"codehealthFindingId/v1":"e800f177935e870d66eda80c3ace7f3d58006428758d00667956da8e1142aaea"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CssPropertyCache.get_property_slow: MethodTooLong \u2014 get_property_slow runs 212 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 112 over it, 2.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":"core/src/prop_cache.rs"},"region":{"startLine":2783}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3e24173acf1265cef65bf8a651e28996b9c7f408ef2bbcf96b1f5fbeafc3dc8"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Win32Libraries.load: MethodTooLong \u2014 load runs 212 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 112 over it, 2.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":"dll/src/desktop/shell2/windows/dlopen.rs"},"region":{"startLine":1107}}}],"partialFingerprints":{"codehealthFindingId/v1":"a164da48b1d6d9301143a9746f07fb13eb6c8276429cfe6fbdfa5f84d856a4cd"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: webrender::renderer::upload::upload_to_texture_cache: FunctionTooLong \u2014 webrender::renderer::upload::upload_to_texture_cache runs 212 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 112 over it, 2.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":"webrender/core/src/renderer/upload.rs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d38563b2a80802c36d72bebe005aaca317b923329a98ee0f2249498d5b7715b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CssProperty.interpolate: MethodTooLong \u2014 interpolate runs 211 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 111 over it, 2.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":"css/src/props/property.rs"},"region":{"startLine":4900}}}],"partialFingerprints":{"codehealthFindingId/v1":"032fa50de0292ae5eddcd9364a3d7f13af7bc8037a50cd1b3f30d5b3c0a7f372"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_css::props::style::transform::parse_style_transform: FunctionTooLong \u2014 azul_css::props::style::transform::parse_style_transform runs 211 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 111 over it, 2.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":"css/src/props/style/transform.rs"},"region":{"startLine":766}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1d2e651f532ca30aae4b5c1d4d1b2d151dfbc18e4f7064f5f81a25b9f550a0a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: cpurender/pixmap.rs: FileTooLong \u2014 1052 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 552 over it, 2.10\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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"54df95bb299972a23ed616568b247142cff1e85ec15b8118f12b7e82fb0df237"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: Renderer: TooManyFields \u2014 63 stored fields beside 86 methods. The bar is 30 stored fields; this is 33 over it, 2.10\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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":761}}}],"partialFingerprints":{"codehealthFindingId/v1":"14017e06407bfeaaa17656b0fcb1ee9343f0247df5b50c85baad93bc8deff7d5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/svg.rs: FileTooLong \u2014 1050 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 550 over it, 2.10\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":"core/src/svg.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"82279bd7eaccb0729ab21ae5b86b4dbec420e2c87b8bf925139c3f413d7d6de4"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CssParsingError.to_contained: MethodTooLong \u2014 to_contained runs 208 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 108 over it, 2.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":"css/src/props/property.rs"},"region":{"startLine":2764}}}],"partialFingerprints":{"codehealthFindingId/v1":"92f4651be5016820e31cf94ccacc243623374687e4483cc0f2dad2d4101d60e4"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ColorU: ClassTooLong \u2014 829 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), 140 methods, 5 blocks, lines 35-1375. The bar is 400 significant lines; this is 429 over it, 2.07\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":"css/src/props/basic/color.rs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"e612302adc77c8e42b7af5d8674332f87c13739d7ac99e212155f4523d54fae0"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: NodeType.to_library_owned_nodetype: MethodTooLong \u2014 to_library_owned_nodetype 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":"core/src/dom.rs"},"region":{"startLine":692}}}],"partialFingerprints":{"codehealthFindingId/v1":"b33c7a82eaa573d0effb957c17d4154ed1ea5b250ed5c8f7e0fad06bf76f13a6"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::autofix::diff::generate_diff_v2: FunctionTooLong \u2014 azul_doc::autofix::diff::generate_diff_v2 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":"doc/src/autofix/diff.rs"},"region":{"startLine":1111}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec67f2142d64a03ab69e42bd428b9da25d42e981ae99089ac93709c92356f5d2"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: webrender::border::create_border_segments: FunctionTooLong \u2014 webrender::border::create_border_segments 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":"webrender/core/src/border.rs"},"region":{"startLine":622}}}],"partialFingerprints":{"codehealthFindingId/v1":"42e2107d9dbaa532c964f69a5e3cc4d047cf26d886277f81c76e3fb84ea2a17a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Win32Window: TooManyMethods \u2014 62 methods. The bar is 30 methods; this is 32 over it, 2.07\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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fcdb97e7f39d40044f365374f9fa3d917d572a92f0b3f32626ee3a34bc07579"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CssPropertyType: ClassTooLong \u2014 824 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, 5 blocks, lines 930-1905. The bar is 400 significant lines; this is 424 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":"css/src/props/property.rs"},"region":{"startLine":930}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc3571a648ef6f2439f6bedf528d9a2c5f9de7218f50336b58cd063020ce2aed"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: solver3/mod.rs: FileTooLong \u2014 1030 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 530 over it, 2.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":"layout/src/solver3/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0d6fe17cb4cba945275d6800665e4c44a64d5fb51ab4a648fa84239bdac24f4"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::widgets::color_input::picker_panel: FunctionTooLong \u2014 azul_layout::widgets::color_input::picker_panel runs 206 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 106 over it, 2.06\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":"layout/src/widgets/color_input.rs"},"region":{"startLine":731}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2920ff9e8e4c867e2c41dce3b0d47d09e8c19d4074a2a079a92d29e3d7d488f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: video_codec/provision.rs: FileTooLong \u2014 1028 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 528 over it, 2.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":"dll/src/desktop/extra/video_codec/provision.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"219f6b3cc9e3a245f2dd8ba34203b6b7c3740925528589c270020ee5bcb95302"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::shell2::linux::x11::handle_xi_device_event: FunctionTooLong \u2014 azul_dll::desktop::shell2::linux::x11::handle_xi_device_event runs 205 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 105 over it, 2.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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":2048}}}],"partialFingerprints":{"codehealthFindingId/v1":"be819348be3ae8bcd51b475d1ec8e1b2f9b749052977535bd10221eeaa3eaaa5"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: webrender::render_target::build_mask_tasks: FunctionTooLong \u2014 webrender::render_target::build_mask_tasks runs 204 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 104 over it, 2.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":"webrender/core/src/render_target.rs"},"region":{"startLine":1340}}}],"partialFingerprints":{"codehealthFindingId/v1":"16a3c02eed2a8576159b6aa45b114f05f1929f084f6f7877cca6e36dd0028bf7"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: RenderBackend: ClassTooLong \u2014 810 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, 3 blocks, lines 701-1974. The bar is 400 significant lines; this is 410 over it, 2.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":"webrender/core/src/render_backend.rs"},"region":{"startLine":701}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b9100e040ea2c9da3112d76cafe55ddd7190c832babd26f716c4da28e6ed562"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: text3/dense.rs: FileTooLong \u2014 1003 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: DenseText (2 blocks, 161-1182). The bar is 500 significant lines; this is 503 over it, 2.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":"layout/src/text3/dense.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b0750e97db623ec4fefe42edf29d3d640a32d0f5d445b8f4835dce6b8c0f95c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/lint_derives.rs: FileTooLong \u2014 1002 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 502 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":"doc/src/lint_derives.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"69cba5e207ea60a5a9d2dffa4f34c31229c9e7469160fe907f1945c3210b4933"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_core::diff::reconcile_dom: FunctionTooLong \u2014 azul_core::diff::reconcile_dom runs 200 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 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":"core/src/diff.rs"},"region":{"startLine":569}}}],"partialFingerprints":{"codehealthFindingId/v1":"817081d0158011afb3dfd0447c5aea999e933f62739bb2a447afd8922953835b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: common/layout.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":"dll/src/desktop/shell2/common/layout.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"71a1d55691ddd45c1e4824df5038516fe25fb173dae8b9c78a03c08a754ef543"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/icu.rs: FileTooLong \u2014 991 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 491 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":"layout/src/icu.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c63e123134e2f87902aff5bc2f935e694b613c9f7380850b92d30e7d8849955"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::cpurender::compositor::compute_display_list_damage_impl: FunctionTooLong \u2014 azul_layout::cpurender::compositor::compute_display_list_damage_impl runs 198 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 98 over it, 1.98\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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":2982}}}],"partialFingerprints":{"codehealthFindingId/v1":"112997b239641db26b3585bf0a9903b8d49ed23ac943d2be88e0d4998e86dd96"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::shell2::linux::wayland::screencopy::capture_toplevel: FunctionTooLong \u2014 azul_dll::desktop::shell2::linux::wayland::screencopy::capture_toplevel 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":"dll/src/desktop/shell2/linux/wayland/screencopy.rs"},"region":{"startLine":684}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dacf46c5f45de012861c3607e14a5a222b67099ececd127320a09a31ecbc104"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::web::symbol_table::classify_for_name: FunctionTooLong \u2014 azul_dll::web::symbol_table::classify_for_name 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":"dll/src/web/symbol_table.rs"},"region":{"startLine":2437}}}],"partialFingerprints":{"codehealthFindingId/v1":"1388d877f7dca87eb90faf66d17d9bc2fdf0cbd2d2d87c58e8912a6d4141ef6c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: x11/events.rs: FileTooLong \u2014 984 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 484 over it, 1.97\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":"dll/src/desktop/shell2/linux/x11/events.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"78dce3c2768737f41798e7c876c37861884b92aaeae6c9bc254c6be45eb182e1"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: A11yManager.update_tree: MethodTooLong \u2014 update_tree runs 195 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 95 over it, 1.95\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":"layout/src/managers/a11y.rs"},"region":{"startLine":470}}}],"partialFingerprints":{"codehealthFindingId/v1":"3da902b6520978234dbf9eabb55af97ec4f7327b1417ebf2794a9516663dd1fc"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: widgets/statusbar.rs: FileTooLong \u2014 974 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 38 free functions. The bar is 500 significant lines; this is 474 over it, 1.95\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":"layout/src/widgets/statusbar.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb97519b401888162b3097c938db452783d5393a4d84d214725c63c2fe43a03e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/border.rs: FileTooLong \u2014 965 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 465 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":"webrender/core/src/border.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcb6a63726c685d39355b32477735be85bd02b809bdeb1da95d3c19c26ea22bb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/texture_cache.rs: FileTooLong \u2014 965 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 62% of them inside a single declaration: TextureCache (2 blocks, 552-1630). The bar is 500 significant lines; this is 465 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":"webrender/core/src/texture_cache.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"28b0f078dcfcadce9987057faa90701a2eac4277b586543d1f9cdb481ff51b11"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CssPropertyType.to_str: MethodTooLong \u2014 to_str runs 193 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 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":"css/src/props/property.rs"},"region":{"startLine":1370}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa69bdbb94761e2fccfe9b5a2cc5653b1d0f8056e322f1f9125b807e384ee67d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CssProperty.get_type: MethodTooLong \u2014 get_type runs 193 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 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":"css/src/props/property.rs"},"region":{"startLine":5197}}}],"partialFingerprints":{"codehealthFindingId/v1":"35b8c22db1b8c0f0a0a5e62a6ff143269e96cacc40058a8e754925784bcef582"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Renderer.render_impl: MethodTooLong \u2014 render_impl runs 193 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 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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":1417}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ef1432904022579fdb919435ce16aa1fd08e68f15165cbdb00f6403d125d1b8"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CssProperty.value: MethodTooLong \u2014 value 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":"css/src/props/property.rs"},"region":{"startLine":4696}}}],"partialFingerprints":{"codehealthFindingId/v1":"8500327c8e36691635b58ce3747d2282470e5747bf7439e69930eb38e19b5dd9"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Win32Window.sync_window_state: MethodTooLong \u2014 sync_window_state runs 191 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 91 over it, 1.91\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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":2724}}}],"partialFingerprints":{"codehealthFindingId/v1":"115032c1341cc520dbf1400ce97384ef1398e8d10a3247b63e5f6baccd47a950"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: autofix/patch_format.rs: FileTooLong \u2014 951 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 451 over it, 1.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":"doc/src/autofix/patch_format.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fef0fea8c9d088eb1ffc04bc16efc54f9415b1952ea532adf8f8884825aeb08"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/event_determination.rs: FileTooLong \u2014 947 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 447 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":"layout/src/event_determination.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f7d2e708fce12e5513b07e46f944ef5479fd0176fff09829504bd58be797e69"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: widgets/color_input.rs: FileTooLong \u2014 947 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 45 free functions. The bar is 500 significant lines; this is 447 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":"layout/src/widgets/color_input.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"baf31f6ea3167af41d9bdb90daef4fb5c579a0aef0401920236bbe83a19076a6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: desktop/display.rs: FileTooLong \u2014 945 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 445 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":"dll/src/desktop/display.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b489304cf614869c557a0224b40e5fe5b7567fa94c9960a4e4599fc6ac2ab3de"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AutofixPatch.to_api_patch_with_context: MethodTooLong \u2014 to_api_patch_with_context 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":"doc/src/autofix/patch_format.rs"},"region":{"startLine":675}}}],"partialFingerprints":{"codehealthFindingId/v1":"a689e2da87266e8816854d76d1f88fd7772acc82b9c04807d836603a916b2316"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DisplayListBuilder: ClassTooLong \u2014 752 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), 64 methods, 2 blocks, lines 1036-2204. The bar is 400 significant lines; this is 352 over it, 1.88\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":"webrender/api/src/display_list.rs"},"region":{"startLine":1036}}}],"partialFingerprints":{"codehealthFindingId/v1":"a146ae3073766db632c2c36ffd8c270ea7a3791386a88c3666bad88694a4897c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: NodeTypeTag.from_str: MethodTooLong \u2014 from_str runs 187 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 87 over it, 1.87\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":"css/src/css.rs"},"region":{"startLine":1308}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7c8c1719768d10bf3017a988877be858e3f16920e5ce6481d7cb2cb6aeec852"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::shell2::android::android_main: FunctionTooLong \u2014 azul_dll::desktop::shell2::android::android_main runs 187 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 87 over it, 1.87\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":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":670}}}],"partialFingerprints":{"codehealthFindingId/v1":"21b5595b3ae784e47b45eeabfb53c9c6ddf72b2c357b2a004887b969125fa7a4"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::reftest::regression::generate_html_report: FunctionTooLong \u2014 azul_doc::reftest::regression::generate_html_report runs 187 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 87 over it, 1.87\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":"doc/src/reftest/regression.rs"},"region":{"startLine":632}}}],"partialFingerprints":{"codehealthFindingId/v1":"22e745b69fdfad7e35c4fff9bc36dd79384be356dfa995115b6009be2472c662"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ResourceCache: TooManyMethods \u2014 56 methods. The bar is 30 methods; this is 26 over it, 1.87\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":"webrender/core/src/resource_cache.rs"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"b00abac8bc441c549a24b78916615cf9f948d5cc096943ad7827ae03f84ca964"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: NodeType.get_path: MethodTooLong \u2014 get_path runs 186 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 86 over it, 1.86\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":"core/src/dom.rs"},"region":{"startLine":934}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c487af911e7039bfda5b314f6a3244437ead68bde6ba40f4efb3e7eb8e25086"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: NodeTypeTag.fmt: MethodTooLong \u2014 fmt runs 186 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 86 over it, 1.86\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":"css/src/css.rs"},"region":{"startLine":1545}}}],"partialFingerprints":{"codehealthFindingId/v1":"848aebbbb1209867178e6ecc505f4a80782a30a51fe0af99e30a8c4e6e54c918"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::reftest::autodoc::build_autodoc_prompt: FunctionTooLong \u2014 azul_doc::reftest::autodoc::build_autodoc_prompt runs 186 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 86 over it, 1.86\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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"94dd1358bb995fc4445ab3fccf58a0c9dd17eff319d8a8543c3ae24097a0797e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SceneBuilder.pop_stacking_context: MethodTooLong \u2014 pop_stacking_context runs 186 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 86 over it, 1.86\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":"webrender/core/src/scene_building.rs"},"region":{"startLine":2192}}}],"partialFingerprints":{"codehealthFindingId/v1":"7285d92bf0136e2525afc584933ddd35a12faae2df335aec6b84883c17a64b87"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: autofix/function_diff.rs: FileTooLong \u2014 926 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 42 free functions. The bar is 500 significant lines; this is 426 over it, 1.85\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":"doc/src/autofix/function_diff.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0ca62010290903744413ed0d301b6082ba2d26d00812cf0790f585398c9dad7"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::fc::get_border_info: FunctionTooLong \u2014 azul_layout::solver3::fc::get_border_info runs 185 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 85 over it, 1.85\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":"layout/src/solver3/fc.rs"},"region":{"startLine":5788}}}],"partialFingerprints":{"codehealthFindingId/v1":"e988c6e0f87881b1e01e3adac908391ffafb3586fdf2b6c6090342642621977f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::autofix::workspace::generate_vec_functions: FunctionTooLong \u2014 azul_doc::autofix::workspace::generate_vec_functions 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":"doc/src/autofix/workspace.rs"},"region":{"startLine":1052}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcc1d083e63aa41b95a6ea3671754d776b4448ad0b40ea05e8ae5675d93e6886"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: compositor/sw_compositor.rs: FileTooLong \u2014 918 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 418 over it, 1.84\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":"webrender/core/src/compositor/sw_compositor.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2719d5db461d826a6c933e7a10208f880541b3581817ca3ffeef84a3b1a10fe9"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::widgets::themes::flat::progressbar_render_bar_impl: FunctionTooLong \u2014 azul_layout::widgets::themes::flat::progressbar_render_bar_impl runs 183 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 83 over it, 1.83\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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":1033}}}],"partialFingerprints":{"codehealthFindingId/v1":"0791bd021fe1db5831a907468fd8866b09de44dfed4009a72bc7cd87a61db728"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: windows/dlopen.rs: FileTooLong \u2014 911 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 411 over it, 1.82\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":"dll/src/desktop/shell2/windows/dlopen.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f24de513eea097e9b8e6d75d4cd25e10a9c1f504f478dbc317eea3c7e676bf6a"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::extra::screencap::macos::open: FunctionTooLong \u2014 azul_dll::desktop::extra::screencap::macos::open 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":"dll/src/desktop/extra/screencap/macos.rs"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"834574d86c70c9135e72d5e3cb0c3d4f7145dfa20b63e2414c2dd5c95cdc8b99"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::web::server::handle_connection: FunctionTooLong \u2014 azul_dll::web::server::handle_connection 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":"dll/src/web/server.rs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3c4a2e611117dcc2343dc141b1fe57320e79e0a309925e71a8d0f1f0db71f89"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::paged_layout::layout_document_tokenized_from: FunctionTooLong \u2014 azul_layout::solver3::paged_layout::layout_document_tokenized_from 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":"layout/src/solver3/paged_layout.rs"},"region":{"startLine":2492}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e56449eb436f1ef419f44bbb1ccf66e15870f4bfb84ac5020e02e3b5dcf5263"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::widgets::node_graph::nodegraph_drag_graph_or_nodes: FunctionTooLong \u2014 azul_layout::widgets::node_graph::nodegraph_drag_graph_or_nodes runs 181 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 81 over it, 1.81\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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":3109}}}],"partialFingerprints":{"codehealthFindingId/v1":"1679ed7960f30d8a7c78afa0fd26f17098908498179a6b53708e57fbcbd3c094"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/callbacks.rs: FileTooLong \u2014 901 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 401 over it, 1.80\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":"core/src/callbacks.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2314b68e7771ee559102d0f6ec57f7140ab798f07754197f561a3a3191686053"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Renderer.draw_texture_cache_target: MethodTooLong \u2014 draw_texture_cache_target 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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":3949}}}],"partialFingerprints":{"codehealthFindingId/v1":"3651c6edcea6f2afa2edeba61b80e62e8f79990d10e4d7228e7b1fb9cc79f72f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/ua_css.rs: FileTooLong \u2014 898 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 398 over it, 1.80\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":"core/src/ua_css.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"894693bb8132de193fe31535e54c10931f197431d4b746ed4366004442284067"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: tray/linux.rs: FileTooLong \u2014 898 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 398 over it, 1.80\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":"dll/src/desktop/tray/linux.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f0051b95b5573724ed36332626edc39cd261fb18a72eda91e509e77652c4d78"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::paged_layout::compute_layout_with_fragmentation: FunctionTooLong \u2014 azul_layout::solver3::paged_layout::compute_layout_with_fragmentation 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":"layout/src/solver3/paged_layout.rs"},"region":{"startLine":713}}}],"partialFingerprints":{"codehealthFindingId/v1":"db2cccead327e09a17e68a56a966bbdf06951b81c7d50d45195ba99b71ed84e5"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::reftest::autoreview::build_review_prompt: FunctionTooLong \u2014 azul_doc::reftest::autoreview::build_review_prompt runs 178 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 78 over it, 1.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":"doc/src/reftest/autoreview.rs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d275d004dfd79b3e8b5214e85713e80949a886cbeb05b2f2723b82b575cbf49"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::reftest::regression::generate_diff_report_string: FunctionTooLong \u2014 azul_doc::reftest::regression::generate_diff_report_string runs 178 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 78 over it, 1.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":"doc/src/reftest/regression.rs"},"region":{"startLine":1748}}}],"partialFingerprints":{"codehealthFindingId/v1":"b11019121cffd1b237d610f52593d8d37f1a773b6671ec0a863db52e1a4008bc"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::xml::svg::render_node_clipmask_cpu: FunctionTooLong \u2014 azul_layout::xml::svg::render_node_clipmask_cpu runs 178 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 78 over it, 1.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":"layout/src/xml/svg.rs"},"region":{"startLine":1766}}}],"partialFingerprints":{"codehealthFindingId/v1":"73375f6ff48252fe4cef1e5a209850c34f93181e5efe071f55153fb05346a04c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Renderer.draw_frame: MethodTooLong \u2014 draw_frame runs 178 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 78 over it, 1.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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":4534}}}],"partialFingerprints":{"codehealthFindingId/v1":"7caa28edcfcec43af122de2361c60b04988562873ca78954a4198aad50ce7df3"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: UnifiedLayout: ClassTooLong \u2014 710 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 5571-6754. The bar is 400 significant lines; this is 310 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":"layout/src/text3/cache.rs"},"region":{"startLine":5571}}}],"partialFingerprints":{"codehealthFindingId/v1":"433f56bcc5f9f45694897c15d2e3e241093ec6aa7cf64d7565d75b8dfb10c9b1"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::reftest::regression::generate_diff_report: FunctionTooLong \u2014 azul_doc::reftest::regression::generate_diff_report runs 177 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 77 over it, 1.77\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":"doc/src/reftest/regression.rs"},"region":{"startLine":958}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b5e6fca0db176500b3e88d6cd19b031e275ad77963f54236fae5eb29c190f2d"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ComputedTransform3D: ClassTooLong \u2014 705 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 57-1090. The bar is 400 significant lines; this is 305 over it, 1.76\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":"core/src/transform.rs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"990c0755ff508052000b0d940c57eb88950d5c146d6a66998672ec1c70c0371f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CssPropertyCache.get_computed_css_style_string: MethodTooLong \u2014 get_computed_css_style_string runs 176 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 76 over it, 1.76\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":"core/src/prop_cache.rs"},"region":{"startLine":2149}}}],"partialFingerprints":{"codehealthFindingId/v1":"c62cdcc72b4a87533666d85664e8f3ed1fa8117d7db99eb6721babcc7762e83f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CompositorState.allocate_layers_from_display_list: MethodTooLong \u2014 allocate_layers_from_display_list runs 176 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 76 over it, 1.76\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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d818eb57c3153682fdfab81474e8ca32df7ab7dcea672205c0e38d7b0976146"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul-search.mount: FunctionTooLong \u2014 mount runs 175 significant lines (blank, comment-only and punctuation-only lines excluded) 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":"doc/templates/azul-search.js"},"region":{"startLine":559}}}],"partialFingerprints":{"codehealthFindingId/v1":"c86fa4e7398797d0a4465d287852420f06146493d52e8c0ae3304eecfbb9533c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FrameBuilder.build: MethodTooLong \u2014 build 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":"webrender/core/src/frame_builder.rs"},"region":{"startLine":489}}}],"partialFingerprints":{"codehealthFindingId/v1":"c77754cdf033a38e95a355c723adf405ccfdff3acb1cef275a8a8c6a0d406e05"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: screencap/linux.rs: FileTooLong \u2014 871 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 371 over it, 1.74\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":"dll/src/desktop/extra/screencap/linux.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0df36f654b13d6feaac7f61f6d103c93e7da9f94de61d03b5d608df14bd87a2"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: WaylandPopup.new: MethodTooLong \u2014 new runs 174 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 74 over it, 1.74\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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":9281}}}],"partialFingerprints":{"codehealthFindingId/v1":"35bc48f3d319f92e52949b2fe68853cb4c8b8d4bda800237c6bad91aedfa65d7"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FilePath: TooManyMethods \u2014 52 methods. The bar is 30 methods; this is 22 over it, 1.73\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":"layout/src/file.rs"},"region":{"startLine":685}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d8d0bf0d72e506b67297bfaa3db2ba202768e9422acf6105b83849ad31a0e76"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TimerCallbackInfo: TooManyMethods \u2014 52 methods. The bar is 30 methods; this is 22 over it, 1.73\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":"layout/src/timer.rs"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"19e0534a262d181d865eac793cce3ab01cbdd6fbb70440b8f1204cb7f914658f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::gene2e::build_prompt: FunctionTooLong \u2014 azul_doc::gene2e::build_prompt runs 173 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 73 over it, 1.73\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":"doc/src/gene2e.rs"},"region":{"startLine":1154}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d86e24e16b19ec66fe3f02065cf937ca6d5b46d298125b2b62c4e030983cbce"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::wr_translate2::get_webrender_border: FunctionTooLong \u2014 azul_dll::desktop::wr_translate2::get_webrender_border runs 172 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 72 over it, 1.72\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":"dll/src/desktop/wr_translate2.rs"},"region":{"startLine":2149}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7306fabb6ae0fafce1c1358386b1a83ccb400b7bbdef7e16f346f8a5026851b"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::text3::cache::create_logical_items: FunctionTooLong \u2014 azul_layout::text3::cache::create_logical_items runs 172 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 72 over it, 1.72\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":"layout/src/text3/cache.rs"},"region":{"startLine":8352}}}],"partialFingerprints":{"codehealthFindingId/v1":"db141316d93747d98cf98b1660363db610e7344c4a33bf879ed275e83ef8d348"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: renderer/vertex.rs: FileTooLong \u2014 854 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 354 over it, 1.71\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":"webrender/core/src/renderer/vertex.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ab3fbe508bc906569e9600ca0dcab5689974a8b56d7be5eee18da91ea226a9c"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::tray::linux::menu_message: FunctionTooLong \u2014 azul_dll::desktop::tray::linux::menu_message runs 170 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 70 over it, 1.70\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":"dll/src/desktop/tray/linux.rs"},"region":{"startLine":778}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a71c1ad333c5865ab2d630cd5092c3529d2f557d83f0a73e954fc448adc8777"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FrameBuilder.build_layer_screen_rects_and_cull_layers: MethodTooLong \u2014 build_layer_screen_rects_and_cull_layers runs 170 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 70 over it, 1.70\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":"webrender/core/src/frame_builder.rs"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"184afbf7149257cba6db5d8d2a29fe88d4c65f85cb1cbcdd2add3d8cb938d7fb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: docgen/mod.rs: FileTooLong \u2014 847 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 347 over it, 1.69\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":"doc/src/docgen/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"23fdd87c59855192054541853c2f2b0196246b45d8c30122aa30be65a096d6e2"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::reftest::autoreview::run_review_agent: FunctionTooLong \u2014 azul_doc::reftest::autoreview::run_review_agent 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":"doc/src/reftest/autoreview.rs"},"region":{"startLine":836}}}],"partialFingerprints":{"codehealthFindingId/v1":"82966af2327d5b0a725c5e9189f26f81c4172e9990c995d09469a8078a6e3761"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: LayoutTreeBuilder.process_node: MethodTooLong \u2014 process_node 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":"layout/src/solver3/layout_tree.rs"},"region":{"startLine":2062}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fd53ba8db5951e296f53acb4b2bec47e77e824e5086e00abe60ed8452e58a1e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::text3::default::shape_text_internal: FunctionTooLong \u2014 azul_layout::text3::default::shape_text_internal runs 168 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 68 over it, 1.68\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":"layout/src/text3/default.rs"},"region":{"startLine":762}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1010429c8558c9dbbcb707c4399e6fcab90f5bbea961b0a28d9d56cd3eb2b6d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: managers/text_edit.rs: FileTooLong \u2014 836 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: TextEditManager (7 blocks, 436-3555). The bar is 500 significant lines; this is 336 over it, 1.67\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":"layout/src/managers/text_edit.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c0cc3e98241466180fe30249f9b7155f5cf0aa26ed76476eea88bbe6075ca81"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ComputedTransform3D.from_style_transform: MethodTooLong \u2014 from_style_transform runs 167 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 67 over it, 1.67\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":"core/src/transform.rs"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"809601e0bbcafd3058184b7aba4f0e7a300a713f3906eb110451667b22f486bf"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Renderer.draw_tile_list: MethodTooLong \u2014 draw_tile_list runs 167 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 67 over it, 1.67\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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":3173}}}],"partialFingerprints":{"codehealthFindingId/v1":"60f2f88a1f69abfda5e4b9437c7c8bcd72928c6b69fe7537231bb6158c4bd408"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/probe.rs: FileTooLong \u2014 834 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 334 over it, 1.67\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":"layout/src/probe.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b5aca6e88fb3d0caac956779264f92078fbef17f0e3237daa466fc934463da1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/spatial_tree.rs: FileTooLong \u2014 834 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 334 over it, 1.67\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":"webrender/core/src/spatial_tree.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2955ec57c487e7e8d4051b18edaf010159f23c7fdf7cff91d5e5e612714f346"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SceneBuilder: TooManyMethods \u2014 50 methods, declared across 3 files: src/scene_building.rs (48), src/border.rs (1), src/box_shadow.rs (1). The bar is 30 methods; this is 20 over it, 1.67\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":"webrender/core/src/scene_building.rs"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"4de4d2b21b7e7c4e671b992f9e3ce0fda30638e39f47fbaa75c04ed4b6ee0dea"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: VtLib: TooManyFields \u2014 50 stored fields beside 1 method. The bar is 30 stored fields; this is 20 over it, 1.67\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":"dll/src/desktop/extra/video_codec/videotoolbox.rs"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e0c116cb44f3e6890997e3056f839b73aac13a003ec84ed86b317197bffbe79"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: managers/a11y.rs: FileTooLong \u2014 831 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 79% of them inside a single declaration: A11yManager (5 blocks, 239-1437). The bar is 500 significant lines; this is 331 over it, 1.66\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":"layout/src/managers/a11y.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"001cda1408ebe089775dd4f9f3b37e86d3c357e66d4f09e146d468cc3d86ace0"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: VirtualKeyCode.from_u32: MethodTooLong \u2014 from_u32 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":"core/src/window.rs"},"region":{"startLine":2410}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d806c22f088ba2461cc65a1a6be57897768bb078635c7f9df45105977d5e05a"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::cpurender::raster::render_component_preview: FunctionTooLong \u2014 azul_layout::cpurender::raster::render_component_preview 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":"layout/src/cpurender/raster.rs"},"region":{"startLine":5174}}}],"partialFingerprints":{"codehealthFindingId/v1":"951af0ec2e5863ee3b04d00ae24a42dacbb1f21f15f56a0db4fc01816421502d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: widgets/tabs.rs: FileTooLong \u2014 827 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 327 over it, 1.65\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":"layout/src/widgets/tabs.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8cbbe78250c3eb29140aced88df3ed2b1b0b3c606efd5307e0b9069f4b3355f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/frame_builder.rs: FileTooLong \u2014 826 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 60% of them inside a single declaration: FrameBuilder (2 blocks, 139-949). The bar is 500 significant lines; this is 326 over it, 1.65\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":"webrender/core/src/frame_builder.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"95fa989c88cf2726766da47db20adf7ceaa901234adac456394a1370af792a8e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: managers/scroll_state.rs: FileTooLong \u2014 825 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: ScrollManager (5 blocks, 363-4547). The bar is 500 significant lines; this is 325 over it, 1.65\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":"layout/src/managers/scroll_state.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0c3d73b689c9a0ab54115960567f71dbff3fe25d961077193be2ba3884be204"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::extra::gamepad::apple::poll: FunctionTooLong \u2014 azul_dll::desktop::extra::gamepad::apple::poll 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":"dll/src/desktop/extra/gamepad/apple.rs"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"266d6c8b621643780d724f6e9cad1184aaa32098fb87861e487a7a2d5a7463f0"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::shell2::macos::system_style::discover: FunctionTooLong \u2014 azul_dll::desktop::shell2::macos::system_style::discover 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":"dll/src/desktop/shell2/macos/system_style.rs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c9771d8b0c50ba87fe9cea960ab92158110292cd4d5c1e057958f43f2d6a451"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::cpurender::raster::render_text_prerendered_lcd: FunctionTooLong \u2014 azul_layout::cpurender::raster::render_text_prerendered_lcd runs 164 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 64 over it, 1.64\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":"layout/src/cpurender/raster.rs"},"region":{"startLine":3486}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2b69e3587e14f0e92a7bacd102bda128627f27366b818f0ca53213c5cf99dbf"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RibbonStyle: TooManyMethods \u2014 49 methods. The bar is 30 methods; this is 19 over it, 1.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":"layout/src/widgets/ribbon.rs"},"region":{"startLine":1643}}}],"partialFingerprints":{"codehealthFindingId/v1":"e105a19c59e7f56d5c210eb4ad06bde4f5ed63c1eca5ba77bb6aaa08435587e0"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::reftest::autoreview::run_smallfixes_agent: FunctionTooLong \u2014 azul_doc::reftest::autoreview::run_smallfixes_agent runs 163 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 63 over it, 1.63\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":"doc/src/reftest/autoreview.rs"},"region":{"startLine":607}}}],"partialFingerprints":{"codehealthFindingId/v1":"486c840b22557241998a1a4d20a82bc9043dffee473178a95312990d65e1b545"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: webrender::frame_builder::build_render_pass: FunctionTooLong \u2014 webrender::frame_builder::build_render_pass runs 163 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 63 over it, 1.63\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":"webrender/core/src/frame_builder.rs"},"region":{"startLine":956}}}],"partialFingerprints":{"codehealthFindingId/v1":"e33d2c09254f00d68ec85cd1bceac2513187caeea0fc8dcae09f0ebfac699c8b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: prim_store/picture.rs: FileTooLong \u2014 814 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 63% of them inside a single declaration: FilterGraphOpKey (2 blocks, 122-1004). The bar is 500 significant lines; this is 314 over it, 1.63\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":"webrender/core/src/prim_store/picture.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f91981664f68e3d1418d815d6b84757e23087d3f1070ec497eb7d370e85c3c4"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DenseText: ClassTooLong \u2014 647 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 161-1182. The bar is 400 significant lines; this is 247 over it, 1.62\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":"layout/src/text3/dense.rs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"0120f4b494683ec84072d1cf92df667e46185ce61a2bdb5378585c02c83501c4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: prim_store/mod.rs: FileTooLong \u2014 808 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 308 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":"webrender/core/src/prim_store/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"04e024e10c542aca5753ba6722cd68dbe72550d078067f879f12ee56fae467d1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/quad.rs: FileTooLong \u2014 806 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 306 over it, 1.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":"webrender/core/src/quad.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0091cb81bf193ad04238246e412f99bb6bb53646160845ec5fa906e07873999"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::generate_release_pages: FunctionTooLong \u2014 azul_doc::generate_release_pages 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":"doc/src/main.rs"},"region":{"startLine":2354}}}],"partialFingerprints":{"codehealthFindingId/v1":"139d22c2a79f05dcc985a1fc7ec9e3b84e94bde85efb9089187fd870a9d52a62"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: WebRenderOptions: TooManyFields \u2014 48 stored fields. The bar is 30 stored fields; this is 18 over it, 1.60\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":"webrender/core/src/renderer/init.rs"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"246ac541faf57c8d0450ea6663896fd381f0352716dd4f05fcdabc0a574abc3e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/composite.rs: FileTooLong \u2014 797 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 297 over it, 1.59\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":"webrender/core/src/composite.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c03ee28c323c233148e4d9ea3113c0f9de90b5f834d0b9a5f98995b628c517eb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: macos/events.rs: FileTooLong \u2014 796 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 93% of them inside a single declaration: MacOSWindow (2 blocks, 117-1617). The bar is 500 significant lines; this is 296 over it, 1.59\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":"dll/src/desktop/shell2/macos/events.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2383dfda540f580286a6304ba39252c2afc07b147eba20c1bed27e2cb5b34f6"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::shell2::linux::system_style::dump_discovered_style: FunctionTooLong \u2014 azul_dll::desktop::shell2::linux::system_style::dump_discovered_style 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":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":3215}}}],"partialFingerprints":{"codehealthFindingId/v1":"54de31b491b0e3a5ab3158180ac9f80a303eaf5921c02b04d04089191dbac0b8"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: GlContext.new: MethodTooLong \u2014 new 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":"dll/src/desktop/shell2/linux/wayland/gl.rs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca175ab04341124c7c22e9676f4d92b82454d3211d8a68336ad21f962867ee16"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: xml/mod.rs: FileTooLong \u2014 792 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 292 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":"layout/src/xml/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5117c714fd72f62526f25297fba41c9a15bbe46231d72da918a82173a9da3456"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::cpurender::raster::render_display_list_damaged: FunctionTooLong \u2014 azul_layout::cpurender::raster::render_display_list_damaged 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":"layout/src/cpurender/raster.rs"},"region":{"startLine":1559}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d81a0b571bdea5c3f32ebb3bb52794304ac4c371ea32551f22b1ae8fbd65d4a"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::shell2::linux::system_style::discover_kde_style: FunctionTooLong \u2014 azul_dll::desktop::shell2::linux::system_style::discover_kde_style runs 157 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 57 over it, 1.57\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":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":1642}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e79662bcb4fe3ea98c72b0baa1a4200f0690ec63c66e10c70d0d332979043d3"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DenseText.from_unified_with_content: MethodTooLong \u2014 from_unified_with_content runs 157 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 57 over it, 1.57\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":"layout/src/text3/dense.rs"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"904d078b4ac08d02854bd99286acc82b60b6a252528441182a1c7014c8b37a95"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/http.rs: FileTooLong \u2014 778 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 278 over it, 1.56\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":"layout/src/http.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"950eba31388671e99c08f2a1eab2a7456aebdebf0a3324efb8d56856b098f96f"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: NodeType: ClassTooLong \u2014 617 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), 4 methods, 2 blocks, lines 262-1154. The bar is 400 significant lines; this is 217 over it, 1.54\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":"core/src/dom.rs"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecb6223357efd5ffd39078dc066e902c0bab89649a3ade6c67b8227525961858"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: widgets/list_view.rs: FileTooLong \u2014 771 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 271 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":"layout/src/widgets/list_view.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"888275b7ac71bc597127686286a24343c65e6c9e70252c264cdfe72e462868c1"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: WaylandWindow.set_prevent_system_sleep: MethodTooLong \u2014 set_prevent_system_sleep runs 154 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 54 over it, 1.54\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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":10845}}}],"partialFingerprints":{"codehealthFindingId/v1":"6609107f5b93dd81420a0ad0efa48f2ac815683daf0fe7fe5e0bc0e6746dcf24"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::mobile::handle_mobile_command: FunctionTooLong \u2014 azul_doc::mobile::handle_mobile_command runs 154 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 54 over it, 1.54\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":"doc/src/mobile/mod.rs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"6710da8347b328c742def96fa293301eb8a203ffe48349a1424741a70866c3f9"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ImageData.update: MethodTooLong \u2014 update runs 154 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 54 over it, 1.54\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":"webrender/core/src/prim_store/image.rs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4502c844246cee0626f70bc26c9fbb01e3d29bcfce109a53fab7090327b263c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SurfaceBuilder.pop_surface: MethodTooLong \u2014 pop_surface runs 154 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 54 over it, 1.54\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":"webrender/core/src/surface.rs"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0e9227ee09cc92691254f7f32318162b46e22a75cc9ae4be0b2285405c2bda8"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: WaylandPopup: ClassTooLong \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), 16 methods, 4 blocks, lines 952-10202. The bar is 400 significant lines; this is 215 over it, 1.54\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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":952}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b4e2e57f1820005104aee37acae7acca6eb496796a18d811521ead45421b57c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: style/transform.rs: FileTooLong \u2014 768 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 268 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":"css/src/props/style/transform.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"54c97c38f5abe37959f58b3712b950e45d1701ec5a77f5ab7a6b478bd7b0cd91"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/render_api.rs: FileTooLong \u2014 767 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 267 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":"webrender/core/src/render_api.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4bcece526971c8b46d23fd646037dc3615708ff65a64f8059787a738a91c680"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TextEditManager: TooManyMethods \u2014 46 methods. The bar is 30 methods; this is 16 over it, 1.53\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":"layout/src/managers/text_edit.rs"},"region":{"startLine":436}}}],"partialFingerprints":{"codehealthFindingId/v1":"b96410432a2aadcb6e9256a32d25d6128bd992a9737af43534133d68ea034a15"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: web/eventloop.rs: FileTooLong \u2014 766 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 48 free functions. The bar is 500 significant lines; this is 266 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":"dll/src/web/eventloop.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a5446d72a400693f49291f4dea873c6836626c25899f6ee073b3b2729a0bcdb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: autofix/debug.rs: FileTooLong \u2014 766 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 266 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":"doc/src/autofix/debug.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c10288d053e6bdd260fe8d110d85c645c234fb1ee6137f8e532c4ec524ab6188"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TileCacheInstance.setup_compositor_surfaces_impl: MethodTooLong \u2014 setup_compositor_surfaces_impl runs 153 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 53 over it, 1.53\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":"webrender/core/src/picture.rs"},"region":{"startLine":2710}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0252254d2fcbe3e9f92deb2d9dbd111ec9bc1fa4b9e62338ea8b41a0a9d6e5a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: web/mod.rs: FileTooLong \u2014 764 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 264 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":"dll/src/web/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6192e744d1fab778785c4da0b835f9fa8c10a74eaaac7ab933d6845612f47c0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/headless.rs: FileTooLong \u2014 762 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 262 over it, 1.52\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":"layout/src/headless.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"009234f81a20c5a7aec2465e65f82879cf4e41c7e088bbec3298912592be43c0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: style/scrollbar.rs: FileTooLong \u2014 759 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 259 over it, 1.52\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":"css/src/props/style/scrollbar.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1377dda6aea4472388e35a73b13221ad032f6eb2e81672754fdc38c54feffd6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: patch/parser.rs: FileTooLong \u2014 758 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 258 over it, 1.52\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":"doc/src/patch/parser.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d97023edb3d273749108063e69e5510475c1714e547f6d5f26d1408336c84bbf"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::reftest::autodoc::run_autodoc_agent: FunctionTooLong \u2014 azul_doc::reftest::autodoc::run_autodoc_agent runs 151 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 51 over it, 1.51\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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":987}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbdefc60c8ca6c8aff0d4daabc822fce672e7d10f9ec46b9a5338e60059056d4"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::reftest::autoreview::run_midlevel_agent: FunctionTooLong \u2014 azul_doc::reftest::autoreview::run_midlevel_agent runs 151 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 51 over it, 1.51\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":"doc/src/reftest/autoreview.rs"},"region":{"startLine":1760}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd6bf6953bde76617f1035032a0200148fa8999a2148834976c5ad45f813ced5"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: RibbonStyle: TooManyFields \u2014 45 stored fields beside 49 methods. The bar is 30 stored fields; this is 15 over it, 1.50\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":"layout/src/widgets/ribbon.rs"},"region":{"startLine":1643}}}],"partialFingerprints":{"codehealthFindingId/v1":"820df8fc79b582f19f30108d14deb16d8d4448db66142c5e8a60e16543d867f1"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ScrollManager: ClassTooLong \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), 44 methods, 5 blocks, lines 363-4547. The bar is 400 significant lines; this is 200 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":"layout/src/managers/scroll_state.rs"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"99a4434d01e79a639eb45ac235b9834e098a734b5b598c8a59f06b23822e2a10"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DBusLib.new: MethodTooLong \u2014 new runs 150 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 50 over it, 1.50\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":"dll/src/desktop/shell2/linux/dbus/dlopen.rs"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc62a8367232345e1d8e33a8e28abce69cb862d160d6081da2ea5a168180e160"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Shaders: ClassTooLong \u2014 597 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), 7 methods, 2 blocks, lines 572-1323. The bar is 400 significant lines; this is 197 over it, 1.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":"webrender/core/src/renderer/shade.rs"},"region":{"startLine":572}}}],"partialFingerprints":{"codehealthFindingId/v1":"379aba0c5b09a4d9cbac4c5d2df628370afaaa3e78b9b3c8dcecfea461014d62"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::print_cli_help: FunctionTooLong \u2014 azul_doc::print_cli_help 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":"doc/src/main.rs"},"region":{"startLine":2670}}}],"partialFingerprints":{"codehealthFindingId/v1":"30fcaae9379dfea8084f02ee73522ddb84df354b3c9eac06bd1e3fb037b802bd"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::cpurender::raster::render_border_sides: FunctionTooLong \u2014 azul_layout::cpurender::raster::render_border_sides 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":"layout/src/cpurender/raster.rs"},"region":{"startLine":4152}}}],"partialFingerprints":{"codehealthFindingId/v1":"8436a2b81965bb8fa74f09096878417ea717b60d93efb2d4ac1e66a13e4bbea1"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::xml::parse_xml_string: FunctionTooLong \u2014 azul_layout::xml::parse_xml_string 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":"layout/src/xml/mod.rs"},"region":{"startLine":849}}}],"partialFingerprints":{"codehealthFindingId/v1":"9db734e439b20b401dbfd36fc6031c73aefb14d25adefe644182d49429e3315e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ResourceCache.save_capture: MethodTooLong \u2014 save_capture 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":"webrender/core/src/resource_cache.rs"},"region":{"startLine":1931}}}],"partialFingerprints":{"codehealthFindingId/v1":"9735ca56c9fa02cad905714778f7781538be4d2662ee01c391a5d0778e3c9588"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: TextureCache: ClassTooLong \u2014 595 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, 2 blocks, lines 552-1630. The bar is 400 significant lines; this is 195 over it, 1.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":"webrender/core/src/texture_cache.rs"},"region":{"startLine":552}}}],"partialFingerprints":{"codehealthFindingId/v1":"179a2ff060f18fd23f40635b6a0e69925a03b4c128938a738b2acf0630922d6d"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CpuBackend: ClassTooLong \u2014 592 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), 4 methods, 3 blocks, lines 255-1472. The bar is 400 significant lines; this is 192 over it, 1.48\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":"dll/src/desktop/shell2/headless/mod.rs"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"22a2707efee06d78d4ac5f962f1e645f201a04b96931ca89f0dcedf4b77cfe79"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CssParsingErrorOwned.to_shared: MethodTooLong \u2014 to_shared runs 148 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 48 over it, 1.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":"css/src/props/property.rs"},"region":{"startLine":3049}}}],"partialFingerprints":{"codehealthFindingId/v1":"f56c86c4a5f066ca0c24cfcb4110de2dd80b0ae9a1bb95bb004c9693c6771273"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: X11Window.set_prevent_system_sleep: MethodTooLong \u2014 set_prevent_system_sleep runs 148 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 48 over it, 1.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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":8606}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4c2f39fb15547ed11deb39ed07c4eed0ead47e09a24fcb0d39eca966ad260d4"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: EglBackend.init: MethodTooLong \u2014 init runs 147 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 47 over it, 1.47\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":"dll/src/desktop/extra/screencap/dmabuf.rs"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e8b32edf9105a1e6e84dd55987da0fc28b7d1f1c0b438f3933be3b60d6f37de"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: A11yManager.build_node: MethodTooLong \u2014 build_node runs 147 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 47 over it, 1.47\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":"layout/src/managers/a11y.rs"},"region":{"startLine":851}}}],"partialFingerprints":{"codehealthFindingId/v1":"aed62560959734e600f51a8b842a2e6e78a412448956ab38fc10c905dcf82843"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: VirtualKeyCodeVec: 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":"core/src/window.rs"},"region":{"startLine":656}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5dfa7604c57172951329635d96988aff80d392bb3ecd6ed29efa0024305d5a3"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ScanCodeVec: 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":"core/src/window.rs"},"region":{"startLine":679}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bfaff858842b85935812d8944a96761bec2ca272b623cc2374e4bc4c5ab0a68"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: StringPairVec: 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":"core/src/window.rs"},"region":{"startLine":1926}}}],"partialFingerprints":{"codehealthFindingId/v1":"9291d8c983dd82195e4eb0b289f46e9152f2a453610bb416576ccf2a5c0764bf"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ScrollManager: 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":"layout/src/managers/scroll_state.rs"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"da2bf1392bea0025610e6e2a803c7ee49899804bd2960bb462aa5eda210a6413"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: TileCacheInstance: TooManyFields \u2014 44 stored fields beside 18 methods. The bar is 30 stored fields; this is 14 over it, 1.47\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":"webrender/core/src/picture.rs"},"region":{"startLine":1689}}}],"partialFingerprints":{"codehealthFindingId/v1":"501fe6dd9f724fdd1e1717c3c6a2c4c500e1f1aef44d56f503216d84ec8ed6d6"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: WaylandTheme: TooManyFields \u2014 44 stored fields. The bar is 30 stored fields; this is 14 over it, 1.47\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":"core/src/window.rs"},"region":{"startLine":2046}}}],"partialFingerprints":{"codehealthFindingId/v1":"c767ee0bc9539f4ef145fa179a400c3f35d0576e34eb4b78c52807fad5a1ce79"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: desktop/native_screenshot.rs: FileTooLong \u2014 731 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 231 over it, 1.46\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":"dll/src/desktop/native_screenshot.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"98f19909618cbca48c437394899245fa280bbce6bd11047fc7e4af03a685f172"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: WaylandWindow.wait_for_events: MethodTooLong \u2014 wait_for_events runs 146 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 46 over it, 1.46\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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":2971}}}],"partialFingerprints":{"codehealthFindingId/v1":"b57664ed2431ce34972fd5c07f81a3aa181b6db1900d218e9d05ac6e50d0acd4"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::web::html_render::node_type_to_html_tag: FunctionTooLong \u2014 azul_dll::web::html_render::node_type_to_html_tag runs 146 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 46 over it, 1.46\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":"dll/src/web/html_render.rs"},"region":{"startLine":822}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a56ab4987411e348af605cb6911cab8f7c0ba74064243824a68a6c65b7e2640"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: solver3/positioning.rs: FileTooLong \u2014 721 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 221 over it, 1.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":"layout/src/solver3/positioning.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"16eb08199cfb8eaf0b651032f2bece921713fb74f71e18f0a5f3741099071d97"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/assemble_context.rs: FileTooLong \u2014 720 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 220 over it, 1.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":"doc/src/assemble_context.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"520ca75a5831dbd83155186ac3a8b6d2cfc8f6575f833b35d2970e805d8f8be0"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::wr_translate2::synchronize_gpu_values: FunctionTooLong \u2014 azul_dll::desktop::wr_translate2::synchronize_gpu_values 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":"dll/src/desktop/wr_translate2.rs"},"region":{"startLine":1744}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2452614d0f71f7106a0c2e93f57026e9ca669090806fc4ee31684d343f11fd5"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::autofix::debug::debug_type_in_index: FunctionTooLong \u2014 azul_doc::autofix::debug::debug_type_in_index 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":"doc/src/autofix/debug.rs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"d59b2045ab5f42fe5d83d22a7b59a98a3af8d4d44c7a512adf3e0d39b80b5a51"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/transform.rs: FileTooLong \u2014 717 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: ComputedTransform3D (2 blocks, 57-1090). The bar is 500 significant lines; this is 217 over it, 1.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":"core/src/transform.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca0a2626f17abceb3b848b33093fe79b6ddea970955d591ec2f3843100e33c00"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: layout/grid.rs: FileTooLong \u2014 717 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 217 over it, 1.43\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":"css/src/props/layout/grid.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed337077f2b45b72af9dbaa539e4d566841449727ee60915bea769869b3f7c69"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: video_codec/videotoolbox.rs: FileTooLong \u2014 717 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 217 over it, 1.43\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":"dll/src/desktop/extra/video_codec/videotoolbox.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aaa290e9f3b1dc390d4afb20507ff56cef21ee7426095e59545d7d0078a5662"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: text3/edit.rs: FileTooLong \u2014 717 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 217 over it, 1.43\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":"layout/src/text3/edit.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"339cbf9dd33acb50e361d8a604bf9600a5850ec383760da2ae4ed50a8df1b231"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CoreCallbackDataVec: 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":"core/src/callbacks.rs"},"region":{"startLine":1922}}}],"partialFingerprints":{"codehealthFindingId/v1":"279dbf920d5b8addd9991be01d056b87b5ddc6c91459481b442bfea5d162ec1e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NodeDataVec: 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":"core/src/dom.rs"},"region":{"startLine":2507}}}],"partialFingerprints":{"codehealthFindingId/v1":"7918c06106c875ab672d942e5861dc734034bb795cbeca86b4f0101f5842ceb5"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: StyledNodeVec: 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":"core/src/styled_dom.rs"},"region":{"startLine":385}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cd112a385be826dcb42539f0d1b2e0972fa13ac8dca234138c80485b1aca60b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NodeHierarchyItemVec: 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":"core/src/styled_dom.rs"},"region":{"startLine":832}}}],"partialFingerprints":{"codehealthFindingId/v1":"df5adbe7a91990e3bbbb1b9bd6de6b84e69e92f27b17b1d5ba56dea66fbbb72f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: widgets/text_input.rs: FileTooLong \u2014 716 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 216 over it, 1.43\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":"layout/src/widgets/text_input.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a90b5004db96fa0a71976410b65740a5249e986a3649c5a41e3caac8492dc43"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: web/html_render.rs: FileTooLong \u2014 715 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 215 over it, 1.43\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":"dll/src/web/html_render.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8cae71e492df85f239da192874fee1c4e1038c3d15300628969f89370e5c2c1"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::autofix::patch_format::explain_change: FunctionTooLong \u2014 azul_doc::autofix::patch_format::explain_change 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":"doc/src/autofix/patch_format.rs"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"603ea31b43f2d582afebcdefc40b3c110c9b47f2b533ea6520daa75dfcbcac7b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/selection.rs: FileTooLong \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). The bar is 500 significant lines; this is 213 over it, 1.43\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":"core/src/selection.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb0abedd7909eb92b80f3c93c471278bbbb784360c722ae4fff6d4f90f0ab445"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::text3::cache::justify_kashida_and_rebuild: FunctionTooLong \u2014 azul_layout::text3::cache::justify_kashida_and_rebuild 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":"layout/src/text3/cache.rs"},"region":{"startLine":12524}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb70d812cc22f0ab5fd1238ba353a41f89da986dc3f5cd4c950a28ef22eb0896"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: NodeTypeTag: ClassTooLong \u2014 562 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), 1 methods, 3 blocks, lines 963-1772. The bar is 400 significant lines; this is 162 over it, 1.41\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":"css/src/css.rs"},"region":{"startLine":963}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6eb27769e7cdfa8e24aefb48a73befe92674d8db7592ca509fdf055fc2cd503"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: JsonVec: TooManyMethods \u2014 42 methods. The bar is 30 methods; this is 12 over it, 1.40\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":"core/src/json.rs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d9585755f96697b94e71b49e4d1ff536215349912a28c0a324a4e226e862794"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CascadeInfoVec: TooManyMethods \u2014 42 methods. The bar is 30 methods; this is 12 over it, 1.40\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":"core/src/style.rs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4dabb8c0d6879bf9946506a77b13c663e565e59647001488bb2d804fbeb2f42"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: U8Vec: TooManyMethods \u2014 42 methods. The bar is 30 methods; this is 12 over it, 1.40\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":"css/src/corety.rs"},"region":{"startLine":522}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d5f18dbdc1fb40099d350b205387effa68f9ab3d1427112229023fe4150b653"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ParsedFont: TooManyMethods \u2014 42 methods, declared across 2 files: src/font.rs (37), text3/default.rs (5). 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":"layout/src/font.rs"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"af4cd701cb229902dda542f0d8b8732d423b3c193376c32d558c71838a75ac07"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DisplayListBuilder: TooManyMethods \u2014 42 methods. The bar is 30 methods; this is 12 over it, 1.40\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":"layout/src/solver3/display_list.rs"},"region":{"startLine":2532}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f1c29d2d904e054b02ee17ad23666007046d011c3dc5ef91fdd0dace56f48c0"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::mobile::install::android_plan: FunctionTooLong \u2014 azul_doc::mobile::install::android_plan runs 140 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 40 over it, 1.40\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":"doc/src/mobile/install.rs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0bda5d967577dd4193c304a5b21059e59cb3fda3018f400c46d917c891b0a0d"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: chrome_layout_extractor.allElements.forEach(): FunctionTooLong \u2014 allElements.forEach() runs 140 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 40 over it, 1.40\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":"doc/src/reftest/chrome_layout_extractor.js"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c2c907a0dc239dd5f8761d3f9a85b26f4b13cba9da2266da34fad66d8582b33"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SceneBuilder.add_box_shadow: MethodTooLong \u2014 add_box_shadow runs 140 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 40 over it, 1.40\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":"webrender/core/src/box_shadow.rs"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"86537462ab0cb3ec86f650abab16e753aad9297d3e3d093358b82e7e88616407"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: solver3/pagination.rs: FileTooLong \u2014 698 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 198 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":"layout/src/solver3/pagination.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"57cb2bb855411d428d360f99f0991eeaff70b4d714d17931aaf7ea50a572e0fa"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: IntrinsicSizeCalculator: ClassTooLong \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), 7 methods, 2 blocks, lines 251-1298. The bar is 400 significant lines; this is 158 over it, 1.40\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":"layout/src/solver3/sizing.rs"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"913528155b29816475b052d89954864ba2329f836accebab1ed2f6118241a069"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: TextEditManager: ClassTooLong \u2014 556 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), 46 methods, 7 blocks, lines 436-3555. The bar is 400 significant lines; this is 156 over it, 1.39\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":"layout/src/managers/text_edit.rs"},"region":{"startLine":436}}}],"partialFingerprints":{"codehealthFindingId/v1":"691576fa60149d16eb698fb553b9173a2874c8c5e63a1e8e062357fb6ecec905"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::shell2::common::transient::sync_parent: FunctionTooLong \u2014 azul_dll::desktop::shell2::common::transient::sync_parent runs 139 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 39 over it, 1.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":"dll/src/desktop/shell2/common/transient.rs"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ca2eb0d8d2646a1cd6a4d5abf7d8b60317c800adf62aa3d386c9be6000d104c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RenderBackend.update_document: MethodTooLong \u2014 update_document runs 139 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 39 over it, 1.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":"webrender/core/src/render_backend.rs"},"region":{"startLine":1327}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd0787f01f3f4701fe971477b4bf95421cc6c50c69117aefa3581747d8c346db"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::wr_translate2::build_webrender_transaction: FunctionTooLong \u2014 azul_dll::desktop::wr_translate2::build_webrender_transaction 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":"dll/src/desktop/wr_translate2.rs"},"region":{"startLine":2359}}}],"partialFingerprints":{"codehealthFindingId/v1":"d82d2f9229a42facfe79c1478207cdf0fb75afa3d03e7d4b975604776cc5629c"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::xml::svg::svg_path_offset: FunctionTooLong \u2014 azul_layout::xml::svg::svg_path_offset 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":"layout/src/xml/svg.rs"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"335bb4db2b43828b947cb02763c295a2b7b7cf8e8cc7d2b226c26e3ae9074ffd"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::xml::svg::apply_fxaa_with_config: FunctionTooLong \u2014 azul_layout::xml::svg::apply_fxaa_with_config 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":"layout/src/xml/svg.rs"},"region":{"startLine":1565}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad8d65703da4274f89fe97bb2c24722cb3099622d3b53f8528d5f7af3a90ddc7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: basic/animation.rs: FileTooLong \u2014 686 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 186 over it, 1.37\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":"css/src/props/basic/animation.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3219fd7afdda13b3220885269ad7caf3600cc211b84b1e654edcb0e968cac5c"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::fc::split_text_for_whitespace: FunctionTooLong \u2014 azul_layout::solver3::fc::split_text_for_whitespace 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":"layout/src/solver3/fc.rs"},"region":{"startLine":10820}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e700a8f44c10ce61fe43914bb5823bc667b5a9fa954e20c98ad949af50b7750"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: UnifiedLayout.get_selection_rects: MethodTooLong \u2014 get_selection_rects 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":"layout/src/text3/cache.rs"},"region":{"startLine":5767}}}],"partialFingerprints":{"codehealthFindingId/v1":"23c890c3b2a5f60b2f73d228b97dc21367462d8e92ed0fc32e90c27ef733ba8e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CssWithNodeIdVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"core/src/dom.rs"},"region":{"startLine":4275}}}],"partialFingerprints":{"codehealthFindingId/v1":"727cb1e3fed553e1f67d626fcfafc4b9ead0faedc7d17dbbb4e2d74864d513aa"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DomVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"core/src/dom.rs"},"region":{"startLine":4349}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3db274dde8c9acb385b33c271dbab3bc47a53e3389128fbef6d4f1b3a0109b8"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MimeTypeDataVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"core/src/drag.rs"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec70664ffde734f04b456242e7c84c76b552b718d14ef38715ff8ae882a14d62"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NamedFontVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"core/src/resources.rs"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"87cc86fe90964009999bb2540746f582ba8d414e4c43c5ba8ebcc5e6719b8997"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: LoadedFontVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"core/src/resources.rs"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a8f224b29f0da8312b3f9590bd68a221824fde0aa5cc962efc57f90b696d82d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RouteVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"core/src/resources.rs"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d3c2f11c3f922badd346c6065e9c374f8b7e5f7547d50cca200ac8022df3000"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NodeHierarchyItemIdVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"core/src/styled_dom.rs"},"region":{"startLine":656}}}],"partialFingerprints":{"codehealthFindingId/v1":"af7e3b27251aa41fe33eda8d523bbe3cbf482f0fd97c285f430bda2cfb96a3c7"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ParentWithNodeDepthVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"core/src/styled_dom.rs"},"region":{"startLine":907}}}],"partialFingerprints":{"codehealthFindingId/v1":"eddb79cdaebbd7dceeb40b4bba5db7628e6be5ee4d31360becdd46afb828209e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TagIdToNodeIdMappingVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"core/src/styled_dom.rs"},"region":{"startLine":943}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1c9461e5ecb8d450eec9526957ce0e360257fa91cba8b8f2c7cd59367f777ce"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ContentGroupVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"core/src/styled_dom.rs"},"region":{"startLine":978}}}],"partialFingerprints":{"codehealthFindingId/v1":"90c29e47e49bc50248ac20cc62d1ad82abdbc671d14302433d346c910aeb1d23"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: StyledDom: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"core/src/styled_dom.rs"},"region":{"startLine":994}}}],"partialFingerprints":{"codehealthFindingId/v1":"7070fa83b8cdabf0aeaed94b3f8736bfde140c16ad6540617f26831e907c4a41"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: PointerSeatVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"core/src/window.rs"},"region":{"startLine":829}}}],"partialFingerprints":{"codehealthFindingId/v1":"efe7484bb45bb703f236b994c5ebcd91605b3f99f756a6810a0b2688c7ab73ed"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: KeyboardSeatVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"core/src/window.rs"},"region":{"startLine":870}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b5795becc79568438074c08d1998b4f4d4993d871b463fd2feffcc13a30e71f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ComponentArgumentVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"core/src/xml.rs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"283380b072da64277cfa0d3400babf3e06787663e3e5276f6c0314602f8940db"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ExternalResourceVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"core/src/xml.rs"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d2bfcc9d9dcbd2147bca535c179b585f733159837c626a871cf02ecff442689"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ComponentDataModelVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"core/src/xml.rs"},"region":{"startLine":1999}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8f3a614d106af1ef579711a628057ada78b39c0bd20f3cf94ded0e0ce5389d1"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ComponentDefVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"core/src/xml.rs"},"region":{"startLine":2545}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4b8304f714575f08619ebdbded4ca89c87a11df8255de604c34b633821355b7"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ComponentLibraryVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"core/src/xml.rs"},"region":{"startLine":2583}}}],"partialFingerprints":{"codehealthFindingId/v1":"f70eedfa352c5bed5dcdbf9b47882007dfdd0a040b20e13bc55c58f0e5dd7f8a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: XmlNodeChildVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"core/src/xml.rs"},"region":{"startLine":4757}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0298eeb2bd11be631576da08a20d320b09041364a42461b8f214c7d0dad5247"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: XmlNodeVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"core/src/xml.rs"},"region":{"startLine":4829}}}],"partialFingerprints":{"codehealthFindingId/v1":"62596d2faa97b74d9d230a79e854962e57b9f3e6c5f4f3249006f5e2ebf4a242"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: U32Vec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"css/src/corety.rs"},"region":{"startLine":602}}}],"partialFingerprints":{"codehealthFindingId/v1":"26e208d8efe38d65c602fd85800e788ac7c06dbeb28aa471dfd16d0d46b65ad9"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: KeyframeStopVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"css/src/css.rs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"874fcaf07e555c9ae481c3abf6126ed9b77b4185bbb3cca1919fc082d5fed642"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: KeyframesVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"css/src/css.rs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d26ec6d8328fd3974005cee064a3a8bb893b439f872ee68ff3621774cbc0b87"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CssVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"css/src/css.rs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"09633ee26f8ad47d7ba0f237aeac5a8c536211133fdba3438fbea6d4efa1be61"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CssRuleBlockVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"css/src/css.rs"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcb97028d277ad7cbbcbc33bad0b7edf7643c1cbc13479dde3b604f73f9f0ace"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CssDeclarationVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"css/src/css.rs"},"region":{"startLine":910}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a7f322325238990dbe1d3824b89f6775fa51504fea006391a5de7eda394e66c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: LayoutRectVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"css/src/props/basic/geometry.rs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"f02778ff297a3e125987ab0e1bf232da22e3dddd9b43a05a734e1e4de0766a6d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CalcAstItemVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"css/src/props/layout/dimensions.rs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"be38856839b35df2d673a704ba93551377baf1752c970e49e3b35c42799d0eae"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: GridTrackSizingVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"css/src/props/layout/grid.rs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"7839dd39f9e1781bb48c698c38abe86f60a85e2ddfe81e352faaffd5cc89fb9d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: GridAreaDefinitionVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"css/src/props/layout/grid.rs"},"region":{"startLine":1308}}}],"partialFingerprints":{"codehealthFindingId/v1":"86904bb058374946964f8f5cb35e45feb16df50381a16583ffcd538f28be30aa"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DirEntryVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"layout/src/file.rs"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"777c71c66f614e7263ed83de3e1266849cbbc20670116d7691d05a6116d2f699"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FilePathVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"layout/src/file.rs"},"region":{"startLine":706}}}],"partialFingerprints":{"codehealthFindingId/v1":"e20a35f132e3aa3ebd283a33e29ca7d9c105628404f00472ca9c658fa3818fe6"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: HttpHeaderVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"layout/src/http.rs"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"91f1253e7561e44acf66bf5740a56f58b6828e050f7ce752e2e331b9f974aeac"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DisplayListGenerator: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"layout/src/solver3/display_list.rs"},"region":{"startLine":3515}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5c1040be2f23c3f09b85991a7a2c643a0905a17130d5c11b3e9c7dc2ea6c623"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AccordionSectionVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"layout/src/widgets/accordion.rs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"02df14462d1fa104c58c92178560a8648e18c501860589a900042a5c81b47d32"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BackstageNavItemVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"layout/src/widgets/backstage.rs"},"region":{"startLine":714}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b08f76ed89ebb30b133148ee5251c60daea2ae6033134d0ad8a6978e05828f1"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ListViewRowVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"layout/src/widgets/list_view.rs"},"region":{"startLine":840}}}],"partialFingerprints":{"codehealthFindingId/v1":"b991568ce955e92812afc713a60f9fd803f2151a0839e600f8d60978f5f6831e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NodeTypeIdInfoMapVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"d525b7b79a7a21d98bea0b5f31e43bf3afc0ee25e2c1703ba69e44c6be605c8c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InputOutputTypeIdInfoMapVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"63b1d355b58cee1b6adf99b317253a981353ce2830b358facaac835e0fc43f9f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NodeIdNodeMapVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"66b90f75c96b4840ba91407aaaff00b16c13cb866bd8f5d746b2eacd85c7385b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InputOutputTypeIdVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"889009383bf0afac28097cee24cbe45f93aba2fd91f29895856a10a61cc7480e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NodeTypeFieldVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":492}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8620e1cf91fcbbab7fdccb827c39cf01be3fe666557ff71dfb042564c39db80"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InputConnectionVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":529}}}],"partialFingerprints":{"codehealthFindingId/v1":"da8355fe7053c9a2304eb359bce63830ec21fd8e33aca811a6e6589c83b90ad8"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: OutputNodeAndIndexVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":559}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdd1931204712e1a95e937731cfabf12eac273f1c63ec75a916cae90c7596d3e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: OutputConnectionVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":589}}}],"partialFingerprints":{"codehealthFindingId/v1":"19e40121de5ad917dbc71e118a041db3d2d81dd9193c290dd64c7f54979e5d08"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InputNodeAndIndexVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":619}}}],"partialFingerprints":{"codehealthFindingId/v1":"c829bc1187577f59abcd503bc22d3563d0309cde24aec89fa99f5baf7de0d7a9"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: QuickAccessActionVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"layout/src/widgets/quick_access.rs"},"region":{"startLine":710}}}],"partialFingerprints":{"codehealthFindingId/v1":"18ef41c652e407a7437324720c82dacb78b698dfdadea9ca1ae3aa07c13bdf76"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RibbonTabVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"layout/src/widgets/ribbon.rs"},"region":{"startLine":2754}}}],"partialFingerprints":{"codehealthFindingId/v1":"c204c3424d3e19ae9f214db222d0cfa7ca2f091e9785b5b7489849a9714fe1fd"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RibbonGroupVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"layout/src/widgets/ribbon.rs"},"region":{"startLine":2766}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a724e352900ef8e753cd7b0c36ae599adb6441cc7134203a4c89b7816405383"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RibbonItemVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"layout/src/widgets/ribbon.rs"},"region":{"startLine":2778}}}],"partialFingerprints":{"codehealthFindingId/v1":"69573bad09db82b3836fbb49a55bbf9ac51e0a0593d1be645509142db345146e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RibbonGalleryCellVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"layout/src/widgets/ribbon.rs"},"region":{"startLine":2790}}}],"partialFingerprints":{"codehealthFindingId/v1":"1121910440625dd04ab6d05fcf129133899bf509ba8c07b554a6aaf30a87e038"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: StatusBarSegmentVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"layout/src/widgets/statusbar.rs"},"region":{"startLine":1085}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5eda48bdfc828ba8d33acfc8af321d097e5f38ec9fb6a02a861da5979ff871d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: StatusBarViewVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"layout/src/widgets/statusbar.rs"},"region":{"startLine":1123}}}],"partialFingerprints":{"codehealthFindingId/v1":"e88965bd327a659c7d437eaa4bc209091c80f2e71e18898f3cf3a94ae378cef2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TreeViewNodeVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"layout/src/widgets/tree_view.rs"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae6113b4530d05855ae148c54d4caf1450e7bdb14428aa8a181423239dcf25bd"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: WindowCreateOptionsVec: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"layout/src/window_state.rs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"501bbd506b484a98bbbb92e452a41c74883810acc2c016a89b53325af551d701"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: widgets/date_picker.rs: FileTooLong \u2014 682 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 182 over it, 1.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":"layout/src/widgets/date_picker.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d200cc7ac7ce89c9677b352c1dda1610b8bfcffb5498be994d9e74000d725fee"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/util.rs: FileTooLong \u2014 680 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 180 over it, 1.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":"webrender/core/src/util.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c3d82662539591b5c5e44e4f808514bab1e54144b92312338ef6f28fad2798f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::shell2::windows::system_style::discover: FunctionTooLong \u2014 azul_dll::desktop::shell2::windows::system_style::discover runs 136 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 36 over it, 1.36\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":"dll/src/desktop/shell2/windows/system_style.rs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"86582fd97b6a5fd3088a7eb8e54122434dbd478890a9e97de19c94037a2c01f7"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: webrender::picture::get_surface_rects: FunctionTooLong \u2014 webrender::picture::get_surface_rects runs 136 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 36 over it, 1.36\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":"webrender/core/src/picture.rs"},"region":{"startLine":8022}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4319c1699f9658264edf9fea7b599c14858e3c1898cd59f2521eef2d29f0f6f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SpatialNode.update_transform: MethodTooLong \u2014 update_transform runs 136 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 36 over it, 1.36\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":"webrender/core/src/spatial_node.rs"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"b61123e2abd76a20ae519cfd5c321bd2e0f2849c9bb07d3274f0f23a8b6f3790"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: telemetry/mod.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), declaring 62 free functions. 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":"layout/src/telemetry/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e1194153d924ffab8c8e791b3f989f8c09412c83b22209b52f01b6be9c509bc"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::autofix::type_index::extract_custom_impls_from_items: FunctionTooLong \u2014 azul_doc::autofix::type_index::extract_custom_impls_from_items 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":"doc/src/autofix/type_index.rs"},"region":{"startLine":2890}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddecb3aca75fa799e3fb878033e0c2be386ae3aa05fcad369348d4d5c9382586"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::getters::get_border_info: FunctionTooLong \u2014 azul_layout::solver3::getters::get_border_info 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":"layout/src/solver3/getters.rs"},"region":{"startLine":2195}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a160ee9addbedbfdbd36a841222aa6ad88ada2d5a18cc7552418abf8bdc6869"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: webrender::prim_store::gradient::linear::optimize_linear_gradient: FunctionTooLong \u2014 webrender::prim_store::gradient::linear::optimize_linear_gradient 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":"webrender/core/src/prim_store/gradient/linear.rs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa20f8f0af19c19f8e7f087eda43e7eec451c35742de4c3a1efb165a97a2c2a5"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::native_screenshot::take_native_screenshot_kwin_bytes: FunctionTooLong \u2014 azul_dll::desktop::native_screenshot::take_native_screenshot_kwin_bytes 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":"dll/src/desktop/native_screenshot.rs"},"region":{"startLine":528}}}],"partialFingerprints":{"codehealthFindingId/v1":"4eb72b9bd73920edd77c2cc0509dd8df89dcfa43117e505431531cdabe97d045"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: Device: TooManyFields \u2014 40 stored fields beside 133 methods. The bar is 30 stored fields; this is 10 over it, 1.33\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":"webrender/core/src/device/gl.rs"},"region":{"startLine":1076}}}],"partialFingerprints":{"codehealthFindingId/v1":"09d1ac5562b4233eea49ede736de7c5bafc25320545a7524b3c04dda8b1b3283"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFunctions: azul_layout::widgets::capture_common: TooManyFunctions \u2014 40 free functions. The bar is 30 free functions; this is 10 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":"layout/src/widgets/capture_common.rs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"c681cac39e90eb7d7f59a1c87a40e5f4c760f536df26b3df308ea02990e0c0ce"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CompositorState: 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), 10 methods, 2 blocks, lines 83-1215. 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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"a73187ffbb368a0f28ec8cc5eda910866115268e5ba317b740bce30b88970ba7"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::shell2::linux::x11::events::keysym_to_virtual_keycode: FunctionTooLong \u2014 azul_dll::desktop::shell2::linux::x11::events::keysym_to_virtual_keycode 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":"dll/src/desktop/shell2/linux/x11/events.rs"},"region":{"startLine":1755}}}],"partialFingerprints":{"codehealthFindingId/v1":"a39aed3e3f187aaab92a2527713c16cc93641dc3189cb1260c7aa5fc2ecd2406"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Renderer.update_texture_cache: MethodTooLong \u2014 update_texture_cache 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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":1796}}}],"partialFingerprints":{"codehealthFindingId/v1":"beda79625774c4328454a2e3f6f6e434e789473b8b61e9267a75f0841cc60958"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CPUView: ClassTooLong \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), 6 methods, 3 blocks, lines 1814-2826. The bar is 400 significant lines; this is 129 over it, 1.32\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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":1809}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a6161068352875dac6b9d44ac0d849f604b5a4089af3c5c7a301d48346c9969"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Filter: ClassTooLong \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), 3 methods, 3 blocks, lines 885-1511. The bar is 400 significant lines; this is 129 over it, 1.32\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":"webrender/core/src/internal_types.rs"},"region":{"startLine":885}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff968a34c99b484dc30d753d880b0e32bb2ef5dd76098cb0dd0f2dae26ca12ab"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/task.rs: FileTooLong \u2014 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). The bar is 500 significant lines; this is 161 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":"core/src/task.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"eeec997641c730457cd48011ab9626b11aecb1a3a402c1cde9e7c7260f731ba9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/file.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":"layout/src/file.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"31051a82af0c323125cb6a3c6d5cbfd8b61d3eb2fa1c38a6b2f4aa9fa5f65ba4"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::web::symbol_table::ingest_macho_stubs: FunctionTooLong \u2014 azul_dll::web::symbol_table::ingest_macho_stubs runs 132 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 32 over it, 1.32\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":"dll/src/web/symbol_table.rs"},"region":{"startLine":2026}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e9aa19bf6bc253017e22b75b08b9636b4ad0305eb9963a0355f669924543aa1"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::gene2e::parse_schema: FunctionTooLong \u2014 azul_doc::gene2e::parse_schema runs 132 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 32 over it, 1.32\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":"doc/src/gene2e.rs"},"region":{"startLine":641}}}],"partialFingerprints":{"codehealthFindingId/v1":"56b766d22612668e4f99a3501ae15437c9ecedd7389c69bc0f61cca9d9b6a071"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/scroll_timer.rs: FileTooLong \u2014 659 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 159 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":"layout/src/scroll_timer.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e10c8e1866d2e632d47f358322774eee7d529e4164fc167558fb32aa358f9629"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/thread.rs: FileTooLong \u2014 657 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 157 over it, 1.31\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":"layout/src/thread.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"71ee83040da004c4257846a1db228df454af62cd5800a6bb34a340567fbdd783"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: style/effects.rs: FileTooLong \u2014 655 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 155 over it, 1.31\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":"css/src/props/style/effects.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2028231e03026bcffebdde79b09f28f556f865f0cf585d387b1d544c00fc6f9"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: GlContext.new: MethodTooLong \u2014 new 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":"dll/src/desktop/shell2/linux/x11/gl.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"d76ede74182ddd611bd77b478308f576e7516822ab2f9c06bcdd8b9887f677c7"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::reftest::apply_midlevel::build_agent_prompt: FunctionTooLong \u2014 azul_doc::reftest::apply_midlevel::build_agent_prompt 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":"doc/src/reftest/apply_midlevel.rs"},"region":{"startLine":3081}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5e7813994b6e34e1d8de5b1730fadbf693be2bb26353bcdff2fccc2e2d729fa"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: style/filter.rs: FileTooLong \u2014 651 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 151 over it, 1.30\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":"css/src/props/style/filter.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e57d2039a28e03865bf364eaa66f2540c159c1d231ad5586444a959717b31490"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: Win32Window: TooManyFields \u2014 39 stored fields beside 62 methods. The bar is 30 stored fields; this is 9 over it, 1.30\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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cfb9c916ad559a2e1fc351a745859caa0b652a6bd9fba8f0fdd4b845f11d637"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TextureCache: 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":"webrender/core/src/texture_cache.rs"},"region":{"startLine":552}}}],"partialFingerprints":{"codehealthFindingId/v1":"355adb7fb3f8f1d44ca41cbcfd1518c066b0940f2dba75c1eef35976e69bd8cf"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::reftest::autoreview::run_summarize_highlevel: FunctionTooLong \u2014 azul_doc::reftest::autoreview::run_summarize_highlevel runs 130 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 30 over it, 1.30\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":"doc/src/reftest/autoreview.rs"},"region":{"startLine":2252}}}],"partialFingerprints":{"codehealthFindingId/v1":"fee55e0b9f5ff6d1838f54b434fb310c8e48fd4441f94eb48c97fd678af397ea"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: IntrinsicSizeCalculator.calculate_node_intrinsic_sizes: MethodTooLong \u2014 calculate_node_intrinsic_sizes runs 130 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 30 over it, 1.30\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":"layout/src/solver3/sizing.rs"},"region":{"startLine":512}}}],"partialFingerprints":{"codehealthFindingId/v1":"4eb42ce6d10f56c3e6a18f140be2c38d9ec9e37bcc388fbdf96637c1fde4cce9"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: SwCompositor: ClassTooLong \u2014 516 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), 10 methods, 3 blocks, lines 754-1675. The bar is 400 significant lines; this is 116 over it, 1.29\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":"webrender/core/src/compositor/sw_compositor.rs"},"region":{"startLine":754}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fbc7a6a30561931106f443100265114e883e758cf5c2cfe989f19deaff93e51"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Wayland: ClassTooLong \u2014 516 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), 1 methods, 2 blocks, lines 24-684. The bar is 400 significant lines; this is 116 over it, 1.29\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":"dll/src/desktop/shell2/linux/wayland/dlopen.rs"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"be2e7693d63a39e97a71a90b526eb6bf21586ee1c6e197a050e202949440fcb7"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: GlShader.draw: MethodTooLong \u2014 draw 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":"core/src/gl.rs"},"region":{"startLine":4236}}}],"partialFingerprints":{"codehealthFindingId/v1":"1849a15c1aadc150f34a2b47d81712e34c02286d2b6224186ef61397f621055f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::text3::knuth_plass::convert_items_to_nodes: FunctionTooLong \u2014 azul_layout::text3::knuth_plass::convert_items_to_nodes 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":"layout/src/text3/knuth_plass.rs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"98322858fda1aba2fbdbec12358d8e9f7cf1e462002ee6b0d73c484aa35d4a91"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: webrender::visibility::update_prim_visibility: FunctionTooLong \u2014 webrender::visibility::update_prim_visibility 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":"webrender/core/src/visibility.rs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"374cb74431d3f5a16eae98cc5e95c3094ba254179bd4a1d7beac91499ff37886"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FilterGraphOpKey: ClassTooLong \u2014 513 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), 0 methods, 2 blocks, lines 122-1004. The bar is 400 significant lines; this is 113 over it, 1.28\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":"webrender/core/src/prim_store/picture.rs"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"a578ddd5bad249429736514315bfb18727082ccac45ea1a344e3960b4bee1bf8"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: X11Window.wait_for_events: MethodTooLong \u2014 wait_for_events 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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":4486}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ff1c67d2ec0db73d9cc0a9ab541dc7b94fcb0f4a313fb65afff42ca88a60f77"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MacOSWindow.handle_scroll_wheel: MethodTooLong \u2014 handle_scroll_wheel 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":"dll/src/desktop/shell2/macos/events.rs"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa386d0bff8225b520552e39cffeca550ed84fa1065e80d8b67f9bfa0564f5d1"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::default_actions::determine_keyboard_default_action_with_editing: FunctionTooLong \u2014 azul_layout::default_actions::determine_keyboard_default_action_with_editing 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":"layout/src/default_actions.rs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f627e3cd85d6c3324159b73d8e0a6dd5d569a13902868188aee429420bf6767"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: wayland/screencopy.rs: FileTooLong \u2014 638 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 32 free functions. The bar is 500 significant lines; this is 138 over it, 1.28\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":"dll/src/desktop/shell2/linux/wayland/screencopy.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ac4b11e167751a11e81f34680045b23d8c2b1d21e9b2d282c405da8f06f7398"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: WaylandPopup.render_if_ready: MethodTooLong \u2014 render_if_ready 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":9622}}}],"partialFingerprints":{"codehealthFindingId/v1":"d74a6a9fd34e462b5f0915d6913cf2138a216230dd4b76906749dd65b0ae4129"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::autofix::workspace::convert_type_info_to_class_patch: FunctionTooLong \u2014 azul_doc::autofix::workspace::convert_type_info_to_class_patch 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":"doc/src/autofix/workspace.rs"},"region":{"startLine":1722}}}],"partialFingerprints":{"codehealthFindingId/v1":"add499704cb57b4af15cc64577dd19788fbe2bf22d352df42826f0553cf3d54b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PictureCompositeKey.from: MethodTooLong \u2014 from 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":"webrender/core/src/prim_store/picture.rs"},"region":{"startLine":1086}}}],"partialFingerprints":{"codehealthFindingId/v1":"a75894a4b9de2f733c8ba9798132759b26d99dfbc38f58103a96cbdca11936fb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/path_parser.rs: FileTooLong \u2014 631 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 131 over it, 1.26\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":"core/src/path_parser.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9f007c2146c9c4db2fac1a3349c05eac6e1d93f923554261b3948fdbdebec28"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: WaylandWindow.handle_key: MethodTooLong \u2014 handle_key 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":3450}}}],"partialFingerprints":{"codehealthFindingId/v1":"83af5fbbb81dc61c22b88fae36c91f8840c24008ac4e53e782047cf7c567ed3a"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::fc::calculate_column_widths_auto_with_width: FunctionTooLong \u2014 azul_layout::solver3::fc::calculate_column_widths_auto_with_width 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":"layout/src/solver3/fc.rs"},"region":{"startLine":7238}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd5bebb7625b0a3a654861d788ee8defc6c0492875dfb5293f4cc21c50f6855a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PicturePrimitive.assign_surface: MethodTooLong \u2014 assign_surface 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":"webrender/core/src/picture.rs"},"region":{"startLine":6945}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ac35e3c5c8973a85d3abd9d78a2cc89a77c21353728f47dee0427414b0821d7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ios/text_input.rs: FileTooLong \u2014 629 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 129 over it, 1.26\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":"dll/src/desktop/shell2/ios/text_input.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bec359cbca5e06fd981714b0865ee6a3c62f3f243b1f79102f5143ffb8c709c9"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::event_determination::pointer_seat_events: FunctionTooLong \u2014 azul_layout::event_determination::pointer_seat_events 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":"layout/src/event_determination.rs"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf69d9d45db490307d0ef08795900ae7711c4171eb1854e74a3d9c9d6aa94ba1"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TextShapingCache.layout_flow: MethodTooLong \u2014 layout_flow 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":"layout/src/text3/cache.rs"},"region":{"startLine":7897}}}],"partialFingerprints":{"codehealthFindingId/v1":"cea0cb5cc9134c39a3d522eb6aedd83838d2ce9c97ed56789834cb5077ba9865"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RenderBackend.load_capture: MethodTooLong \u2014 load_capture 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":"webrender/core/src/render_backend.rs"},"region":{"startLine":1790}}}],"partialFingerprints":{"codehealthFindingId/v1":"183dc1451394377d9a358f3144c4b21ef3cd0f0d86086f2268adac6cdc4f8c49"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SceneBuilder.push_stacking_context: MethodTooLong \u2014 push_stacking_context 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":"webrender/core/src/scene_building.rs"},"region":{"startLine":1972}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7ce9e220d276453203ce1082550c014d6a2d33818c97672963654d909ae79b5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: autofix/type_resolver.rs: FileTooLong \u2014 622 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 122 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":"doc/src/autofix/type_resolver.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e9774a1568c2be691ec3fe538e635fe7f1379e687672dea06d57fd23eca680f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: widgets/backstage.rs: FileTooLong \u2014 620 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 120 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":"layout/src/widgets/backstage.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"74351add4f5d82d8446c019a8bd6ec03b0f220d88468e2da4c1342d6494c31f0"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::getters::get_scrollbar_style: FunctionTooLong \u2014 azul_layout::solver3::getters::get_scrollbar_style 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":"layout/src/solver3/getters.rs"},"region":{"startLine":5616}}}],"partialFingerprints":{"codehealthFindingId/v1":"04f150a08e484ae7c8347d96fae8588b84cd58a81edd41d19e50c1123dcca077"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::text3::dense::get_glyph_runs_pdf_dense: FunctionTooLong \u2014 azul_layout::text3::dense::get_glyph_runs_pdf_dense 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":"layout/src/text3/dense.rs"},"region":{"startLine":1451}}}],"partialFingerprints":{"codehealthFindingId/v1":"18a8c8df72203710ccf9ce31945fecf23a663b5f609b9fb694e0d9edd6227708"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FrameBuilder: ClassTooLong \u2014 495 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), 5 methods, 2 blocks, lines 139-949. The bar is 400 significant lines; this is 95 over it, 1.24\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":"webrender/core/src/frame_builder.rs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"9664798140f3fd3b0a8d1d244378a231f6c6c04e42c27c1b23b715cf5685173a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: basic/pixel.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":"css/src/props/basic/pixel.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"25945232ff0e9b003b70d412a11eab98030cbf71b494293e68b90dd29f210a25"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: text3/default.rs: FileTooLong \u2014 617 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 117 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":"layout/src/text3/default.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"09f77ec6f891d87fe76ff5dd300398eeba4cca14ed8659cf1144cf78b266863f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: UnifiedConstraints: TooManyFields \u2014 37 stored fields beside 3 methods. The bar is 30 stored fields; this is 7 over it, 1.23\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":"layout/src/text3/cache.rs"},"region":{"startLine":2280}}}],"partialFingerprints":{"codehealthFindingId/v1":"79e0d5125c08fa9bff59be0bbc0ff306a73faaccb62187967ddc5f0ea89cd926"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: basic/font.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":"css/src/props/basic/font.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a73291b030364f125fbda96d737278f3ba0c0f9952c21653b6ef7801d5889cd"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: StyledDom.create_from_compact_dom: MethodTooLong \u2014 create_from_compact_dom 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":"core/src/styled_dom.rs"},"region":{"startLine":1301}}}],"partialFingerprints":{"codehealthFindingId/v1":"9729730b19969f1f2814b61a003d1b28677d8b0e9bac02c03db7663998e4be53"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::extra::video_codec::stream::decode_stream: FunctionTooLong \u2014 azul_dll::desktop::extra::video_codec::stream::decode_stream 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":"dll/src/desktop/extra/video_codec/stream.rs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"82350f3dfb01a31857f1c1eed3aeb1d1b86fcc67edb790468febbc1f63c8e04d"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::cpurender::raster::blit_sampled_image: FunctionTooLong \u2014 azul_layout::cpurender::raster::blit_sampled_image 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":"layout/src/cpurender/raster.rs"},"region":{"startLine":4727}}}],"partialFingerprints":{"codehealthFindingId/v1":"a167815c5ad374c6100326943c24a9fb5fc73db2e8a4899319b6a65d544fa44f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: webrender::prepare::update_clip_task_for_brush: FunctionTooLong \u2014 webrender::prepare::update_clip_task_for_brush 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":"webrender/core/src/prepare.rs"},"region":{"startLine":1313}}}],"partialFingerprints":{"codehealthFindingId/v1":"2deeff5aaecd035773d98af127cfd6a400c190804d786ba4ce7aee7582147009"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RenderBackend.save_capture: MethodTooLong \u2014 save_capture 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":"webrender/core/src/render_backend.rs"},"region":{"startLine":1604}}}],"partialFingerprints":{"codehealthFindingId/v1":"22f271e37a9a0a5bff3e745ba4ce624a53606b1479e2fd0861d96b828db195bb"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::extra::audio::coreaudio_device_names: FunctionTooLong \u2014 azul_dll::desktop::extra::audio::coreaudio_device_names runs 122 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 22 over it, 1.22\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":"dll/src/desktop/extra/audio/mod.rs"},"region":{"startLine":439}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe9107a57b77a5d88a578f6ba0f21e561622832b2e1e638b762690f71d0bedd3"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: AutofixPatch: ClassTooLong \u2014 485 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), 10 methods, 3 blocks, lines 30-1309. The bar is 400 significant lines; this is 85 over it, 1.21\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":"doc/src/autofix/patch_format.rs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e43097c56873e64431c03ab0bb90dd16a54d0a6e28758e793c304d17118d27c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: common/transient.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":"dll/src/desktop/shell2/common/transient.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c02d92149a7a2ef80bf9a8cdd45fed5697c77bfab940f837d55c28e8f16c9304"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SvgNodeData.eq: MethodTooLong \u2014 eq 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":"core/src/dom.rs"},"region":{"startLine":1946}}}],"partialFingerprints":{"codehealthFindingId/v1":"61860b9724118c1c1328feedc1f34bf5a74fc905b1fee58f95a7b82920f22d36"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::gene2e::render_facts: FunctionTooLong \u2014 azul_doc::gene2e::render_facts 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":"doc/src/gene2e.rs"},"region":{"startLine":2324}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2336cbd63f7f7b5f6f2c5a97177152ca523b4e1ccd3241107f9406666941f45"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::icu::plural_for: FunctionTooLong \u2014 azul_layout::icu::plural_for 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":"layout/src/icu.rs"},"region":{"startLine":242}}}],"partialFingerprints":{"codehealthFindingId/v1":"21610655483b454343e0adcb632dacc859aa6120c302154b6774b1175eca945b"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::text3::cache::shape_text_correctly: FunctionTooLong \u2014 azul_layout::text3::cache::shape_text_correctly 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":"layout/src/text3/cache.rs"},"region":{"startLine":10152}}}],"partialFingerprints":{"codehealthFindingId/v1":"f39b5560d835c2ed1c19a696326dc36e536cf06ff593f466fb07bcecd3c69445"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ColorRenderTarget.add_task: MethodTooLong \u2014 add_task 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":"webrender/core/src/render_target.rs"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cc0ac40ef642ee02f50218fed34c5e941629a8ca58ae7b35b07705cc2fd676b"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CompactLayoutCache: ClassTooLong \u2014 483 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), 108 methods, 2 blocks, lines 1645-2440. The bar is 400 significant lines; this is 83 over it, 1.21\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":"css/src/compact_cache.rs"},"region":{"startLine":1645}}}],"partialFingerprints":{"codehealthFindingId/v1":"895da144d607cfd1db399656db79af95d89772ae1bbb62977ded9fd7d2264ea4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: widgets/titlebar.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). The bar is 500 significant lines; this is 101 over it, 1.20\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":"layout/src/widgets/titlebar.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e249993f93617c3d6c545003540c42b7fad0cc1209fd4172e3593a668d570925"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: LayoutCallbackInfo: 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":"core/src/callbacks.rs"},"region":{"startLine":928}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2f7a25eb9904a63b66e1e85cc6b8170caa3ba4a15c3bd93899fc59982686adb"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::native_screenshot::take_native_screenshot_macos_bytes: FunctionTooLong \u2014 azul_dll::desktop::native_screenshot::take_native_screenshot_macos_bytes runs 120 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 20 over it, 1.20\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":"dll/src/desktop/native_screenshot.rs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9cfe29e89337b13946eca28dee6dbd5ba3d64f3806bd129207b2e33f8f85644"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: WaylandWindow.set_cursor_for: MethodTooLong \u2014 set_cursor_for runs 120 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 20 over it, 1.20\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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":8284}}}],"partialFingerprints":{"codehealthFindingId/v1":"5491a1a989fff8e22b5bc0b03eed5cc998685b4b43f99ce9beb3fba3fb8bad86"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: webrender::prepare::prepare_prim_for_render: FunctionTooLong \u2014 webrender::prepare::prepare_prim_for_render runs 120 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 20 over it, 1.20\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":"webrender/core/src/prepare.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"0706338eaa97e1931e74a928cc1f7995ec9ab88f413a1de48c1765b086a9e724"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::shell2::common::debug_server::platform::handle_http_connection: FunctionTooLong \u2014 azul_dll::desktop::shell2::common::debug_server::platform::handle_http_connection 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":"dll/src/desktop/shell2/common/debug_server/platform.rs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"d22b6eb6eedd322264d42eaf9c0d33cb8a05e0768e469d2d740290fd60cad37a"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::reftest::telegram::setup_interactive: FunctionTooLong \u2014 azul_doc::reftest::telegram::setup_interactive 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":"doc/src/reftest/telegram.rs"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"0854b84a5392bb0281af16b5694f1e7e5f357ef3dad0af80db01381381cedc0e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::fc::layout_cell_for_height: FunctionTooLong \u2014 azul_layout::solver3::fc::layout_cell_for_height 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":"layout/src/solver3/fc.rs"},"region":{"startLine":7493}}}],"partialFingerprints":{"codehealthFindingId/v1":"b39e8d44ef2879245996763cea1ffcd7d55b812f978aaf9b7ee93f7f144c7e68"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::page_breaks::compute_page_breaks_impl: FunctionTooLong \u2014 azul_layout::solver3::page_breaks::compute_page_breaks_impl 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":"layout/src/solver3/page_breaks.rs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e1246296d9d9dd35da47c94922ff70cf3dbbd06649b505ced7d2525182312aa"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: IntrinsicSizeCalculator.calculate_intrinsic_recursive: MethodTooLong \u2014 calculate_intrinsic_recursive 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":"layout/src/solver3/sizing.rs"},"region":{"startLine":279}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f56474bccc257ba756b0631d5e4eaf7bcc3367487fd0a0c2e0c1abfe150901e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: BrushImageAdvancedBlendAlphaPassTexture2DVert.brush_vs: MethodTooLong \u2014 brush_vs 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":"webrender/swgl/src/shaders/brush_image_advanced_blend_alpha_pass_texture_2d.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"96f42161ae8b5d78076b16f9c25d7e04401236f4f1699b505fe87e0ef0fadc4c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Vert.brush_vs: MethodTooLong \u2014 brush_vs 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":"webrender/swgl/src/shaders/brush_image_alpha_pass_antialiasing_dual_source_blending_repetition_texture_2d.rs"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"b512e94ff9fffbc47b6b82d1b0861382bafb753f13733992be9917d4a624e225"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::api::find_unused_types_simulating_removal: FunctionTooLong \u2014 azul_doc::api::find_unused_types_simulating_removal 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":"doc/src/api.rs"},"region":{"startLine":2278}}}],"partialFingerprints":{"codehealthFindingId/v1":"2243f1eea9e60f9cad88fc2f05e96fd71d9d54506b5c15ee18d129339972076e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::gene2e::review_batch: FunctionTooLong \u2014 azul_doc::gene2e::review_batch 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":"doc/src/gene2e.rs"},"region":{"startLine":2783}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fb9aaed84a2d34db2e2f00fc5c28403a193531832de0d59dabf31f40767687c"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::reftest::apply_midlevel::run_refresh_pending: FunctionTooLong \u2014 azul_doc::reftest::apply_midlevel::run_refresh_pending 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":"doc/src/reftest/apply_midlevel.rs"},"region":{"startLine":1015}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d9e2ad220443d70e9166b958f4c026290d3689fcb93ce8874f70331164d8790"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TextShapingCache.measure_intrinsic_widths: MethodTooLong \u2014 measure_intrinsic_widths 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":"layout/src/text3/cache.rs"},"region":{"startLine":8146}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3cc625115e58508d8ab1d65be08ae7e51983049a7fb8a73cfe3ca84a345dfa4"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SceneBuilder.build_all: MethodTooLong \u2014 build_all 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":"webrender/core/src/scene_building.rs"},"region":{"startLine":856}}}],"partialFingerprints":{"codehealthFindingId/v1":"c211fed038d7b9a72ee1d9e65b76172b63ccb2563668a03afaa556543ba83ca1"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: BrushImageAdvancedBlendAlphaPassAntialiasingRepetitionTexture2DVert.brush_vs: MethodTooLong \u2014 brush_vs 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":"webrender/swgl/src/shaders/brush_image_advanced_blend_alpha_pass_antialiasing_repetition_texture_2d.rs"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"497cd05f3ddf6f3e5531c9ed5f0b9460cb5c20977870d94d658fbe45658b1f74"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Json: 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":"core/src/json.rs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"b90037c40b6b387a1b67b79c0bc6b8a3a969f5c8f3afdb85e7b1ac3ff8e3a5ab"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Transaction: 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":"webrender/core/src/render_api.rs"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e704163f51608939475b13124cc612fbb4732bde33319e17b3933ce9da9c3a8"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: Shaders: TooManyFields \u2014 35 stored fields beside 7 methods. The bar is 30 stored fields; this is 5 over it, 1.17\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":"webrender/core/src/renderer/shade.rs"},"region":{"startLine":572}}}],"partialFingerprints":{"codehealthFindingId/v1":"de0962e462356b143431728e5f10cf043e13b8ce8ae16846d5f9004e60569677"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::extra::camera::v4l2::open: FunctionTooLong \u2014 azul_dll::desktop::extra::camera::v4l2::open 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":"dll/src/desktop/extra/camera/v4l2.rs"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2aa61b941c04775f66e9caa67e899ae1b2208d08e5874a33d8e31caa4c1b6d4"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CompositorState.render_layers: MethodTooLong \u2014 render_layers 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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":706}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6b335486389079ba72b94fbbd8e7e05cdf1a98b54995fe58bb8fd48e30d6bf2"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: A11ySnapshot.build: MethodTooLong \u2014 build 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":"layout/src/managers/a11y_snapshot.rs"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"849289371e465d341cf582bb50a032b899d0e04e66bbfcdd551991d85b9753ef"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::fc::layout_formatting_context: FunctionTooLong \u2014 azul_layout::solver3::fc::layout_formatting_context 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":"layout/src/solver3/fc.rs"},"region":{"startLine":423}}}],"partialFingerprints":{"codehealthFindingId/v1":"012fe9dc6a1e1994dd36ffdbe88e05ec50a176a1ee2ae39c44998c0372891153"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PictureCompositeMode.get_coverage_target_svgfe: MethodTooLong \u2014 get_coverage_target_svgfe 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":"webrender/core/src/picture.rs"},"region":{"startLine":4634}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d57f1da5da830bdfe0740e389da658c6c5637e325d9aee96d9a7dd9e6a0c8ca"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: widgets/quick_access.rs: FileTooLong \u2014 577 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 77 over it, 1.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":"layout/src/widgets/quick_access.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5433105a1ad97127090129e47741319221f8fa9748266d18ffb37bfa410b5aed"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/glyph_cache.rs: FileTooLong \u2014 576 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: GlyphCache (5 blocks, 125-1906). The bar is 500 significant lines; this is 76 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":"layout/src/glyph_cache.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"423f816392f1582a690f8b65e475b01e3129ef170ed09a68e043d24ea4442bb0"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::extra::pdf::engine::styled_dom_to_bytes_with: FunctionTooLong \u2014 azul_dll::desktop::extra::pdf::engine::styled_dom_to_bytes_with runs 115 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 15 over it, 1.15\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":"dll/src/desktop/extra/pdf/mod.rs"},"region":{"startLine":681}}}],"partialFingerprints":{"codehealthFindingId/v1":"291b4d249f206fe528cb39055daade86e94019647a8d9d09bdc8244fc9ebeb72"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::logging::set_up_panic_hooks: FunctionTooLong \u2014 azul_dll::desktop::logging::set_up_panic_hooks runs 115 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 15 over it, 1.15\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":"dll/src/desktop/logging.rs"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"7433bd995d8b0eb4c6cba7b1603dae7d0fc8bc352041a478df406f680fdbb579"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Example.load: MethodTooLong \u2014 load runs 115 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 15 over it, 1.15\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":"doc/src/api.rs"},"region":{"startLine":824}}}],"partialFingerprints":{"codehealthFindingId/v1":"50cc6c321ea142d00d93046a6e825b90f5281671d37172f9a328cf3cf74d3c3e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::docgen::generate_installation_json: FunctionTooLong \u2014 azul_doc::docgen::generate_installation_json runs 115 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 15 over it, 1.15\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":"doc/src/docgen/mod.rs"},"region":{"startLine":511}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb956b2a08303ac242f342c692c6e27bbae317ca2606c3b07ce66a9aebe64f5a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/gpu_types.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). The bar is 500 significant lines; this is 72 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":"webrender/core/src/gpu_types.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b1edaac8e259a4e73b2e503c6c93fc875cdd336e1f3f93d5dd8b36bf19b515b"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::shell2::ios::text_input::register: FunctionTooLong \u2014 azul_dll::desktop::shell2::ios::text_input::register 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":"dll/src/desktop/shell2/ios/text_input.rs"},"region":{"startLine":964}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6902735b7cb54a7b41fbc3aa481e13f47d536c3d21119cd784c55188410a392"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CpuFallbackState.new: MethodTooLong \u2014 new 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":8738}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b82dbd7b16b4abc811e9f5567672f739ca111f6c38954106333fddf01a9c323"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::web::html_render::render_initial_page: FunctionTooLong \u2014 azul_dll::web::html_render::render_initial_page 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":"dll/src/web/html_render.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"163f1d85695de102ed2e8fde0820b2f87169e27d8b7c624ea69809489b2f8c1e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::cpurender::compositor::gpu_value_damage: FunctionTooLong \u2014 azul_layout::cpurender::compositor::gpu_value_damage 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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":1934}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ba0671cac6e26b231d5be584a0183cd421a5480e4db3652a2ce0e22b54d3c53"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Renderer.draw_alpha_batch_container: MethodTooLong \u2014 draw_alpha_batch_container 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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":2837}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd2aebcf694c9859c209c3b7b01431e86f4d23349fa6017b61b02efcaa6308ac"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Renderer.save_capture: MethodTooLong \u2014 save_capture 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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":5683}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c7ec13970577f7cdc3701e34052f82877e728f3b43182f5330ffe132ab157c3"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CommonWindowState: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":2674}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8cfef616f7a3cd436e8c35d6ef57677df3a23d0f8a42ea18428a4d4b48460ba"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: layout/flex.rs: FileTooLong \u2014 565 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 65 over it, 1.13\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":"css/src/props/layout/flex.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f556d901cd2111f2d87440e7b9e01aaafba0920a11c78642f7c7dc1f89bd5ce6"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::api::find_unused_types: FunctionTooLong \u2014 azul_doc::api::find_unused_types 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":"doc/src/api.rs"},"region":{"startLine":2009}}}],"partialFingerprints":{"codehealthFindingId/v1":"89a85c2e3d770328e292141b7bbb42cba13e0cda94a6584be34c8adab08ccb5e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::dllgen::deploy::verify_examples: FunctionTooLong \u2014 azul_doc::dllgen::deploy::verify_examples 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":"doc/src/dllgen/deploy.rs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"5edd77dbd945fc7ae7e877bf26d4ab768585215c90272edc3685cc18d4623c5e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::docgen::apidocs::render_class: FunctionTooLong \u2014 azul_doc::docgen::apidocs::render_class 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":"doc/src/docgen/apidocs.rs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"88f74f51a7ef9884f78953c5be945ad337147af5afeb2cb91cdfe94e72131771"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::text3::knuth_plass::position_lines_from_breaks: FunctionTooLong \u2014 azul_layout::text3::knuth_plass::position_lines_from_breaks 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":"layout/src/text3/knuth_plass.rs"},"region":{"startLine":570}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc0cebcd27e57422159a0b8eb4913b6cbf673bb256198c458b22659586017e88"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RenderBackend.process_api_msg: MethodTooLong \u2014 process_api_msg 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":"webrender/core/src/render_backend.rs"},"region":{"startLine":953}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4da9ec823c151c26960b4af70d47f83fd8efd15c36cb1a87c53035adee544d2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/scene_builder_thread.rs: FileTooLong \u2014 564 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 64% of them inside a single declaration: SceneBuilderThread (2 blocks, 240-774). The bar is 500 significant lines; this is 64 over it, 1.13\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":"webrender/core/src/scene_builder_thread.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a655cfa4b5f7ab1f9df018a33b0c0bd30f9b053868744e71ed9cfc26218cc356"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_core::path_parser::parse_svg_path_d: FunctionTooLong \u2014 azul_core::path_parser::parse_svg_path_d 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":"core/src/path_parser.rs"},"region":{"startLine":423}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1552a7037b86f5fa02c56df855c3ca21c813f8d342e4c0f870d0ccaade7a11e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::cpurender::pixmap::blit_pixmap_projective_clipped: FunctionTooLong \u2014 azul_layout::cpurender::pixmap::blit_pixmap_projective_clipped 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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"151619d498bbcaeaf9813c9400aafd43bb9ab9990e22e3a52688abdf88e3bf99"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::managers::scroll_registration::register_scroll_nodes: FunctionTooLong \u2014 azul_layout::managers::scroll_registration::register_scroll_nodes 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":"layout/src/managers/scroll_registration.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2d243eb1e36d9c4c450da5439af696312f205cfeed01ece8661b6c5d3bcbbb9"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::fc::layout_flex_grid: FunctionTooLong \u2014 azul_layout::solver3::fc::layout_flex_grid 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":"layout/src/solver3/fc.rs"},"region":{"startLine":646}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d11d211134d3b8d7573b9f78741b29a46953a5980684beee583b624d93b396d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ClipBatcher.add: MethodTooLong \u2014 add 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":"webrender/core/src/batch.rs"},"region":{"startLine":3871}}}],"partialFingerprints":{"codehealthFindingId/v1":"9447f4c3e28c4199958ba7abdca3c2e9e9e9ced353e50ae4d3d48ad220bb131f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PictureCompositeMode.get_coverage: MethodTooLong \u2014 get_coverage 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":"webrender/core/src/picture.rs"},"region":{"startLine":4450}}}],"partialFingerprints":{"codehealthFindingId/v1":"688e7be68f02a2f84a636491a2663df2b36159bb4da45797ab362f64ae14b7eb"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: BrushImageAdvancedBlendAlphaPassAntialiasingRepetitionTextureRectVert.brush_vs: MethodTooLong \u2014 brush_vs 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":"webrender/swgl/src/shaders/brush_image_advanced_blend_alpha_pass_antialiasing_repetition_texture_rect.rs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"eef423ff32d511d851656d8b2f237448177b341ec76de1e7b5a31a2c3aaae74b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: web/server.rs: FileTooLong \u2014 555 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 55 over it, 1.11\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":"dll/src/web/server.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1cfb1a1d531aa1fc922d616e10afddde3dffb458b8c2256b814ba5c3a65a784"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: widgets/combobox.rs: FileTooLong \u2014 555 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 55 over it, 1.11\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":"layout/src/widgets/combobox.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ebb741ffb04c505f468ff6572159cd13d6b26f3efb3d96032fbf15e71704a1c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: VtLib.get: MethodTooLong \u2014 get 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":"dll/src/desktop/extra/video_codec/videotoolbox.rs"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"434150633276939905ff329699a30432df413ad660f30c4b517b3236f877ac63"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::web::lift_audit::run: FunctionTooLong \u2014 azul_dll::web::lift_audit::run 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":"dll/src/web/lift_audit.rs"},"region":{"startLine":409}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff0b0de1f14c1a615a0254b4e12a62e05cb969aa2bbfc02c62aa75281bbdfab7"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::assemble_context::run: FunctionTooLong \u2014 azul_doc::assemble_context::run 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":"doc/src/assemble_context.rs"},"region":{"startLine":978}}}],"partialFingerprints":{"codehealthFindingId/v1":"b85d2c1c0f934c55cbecb9e145e616e9bb906049f0191bf706b16febb39b750d"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::autofix::debug::analyze_ffi_difficulty: FunctionTooLong \u2014 azul_doc::autofix::debug::analyze_ffi_difficulty 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":"doc/src/autofix/debug.rs"},"region":{"startLine":706}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c839385e2cd89a93ac52d47734ed2066e35bcef11cb40a1d5910134b5f24672"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::mobile::install::ios_plan: FunctionTooLong \u2014 azul_doc::mobile::install::ios_plan 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":"doc/src/mobile/install.rs"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fae84b8f89655d565686a49833febb2a022eccb11be8b2c33f29651ac87dfba"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::text3::cache::break_one_line: FunctionTooLong \u2014 azul_layout::text3::cache::break_one_line 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":"layout/src/text3/cache.rs"},"region":{"startLine":11352}}}],"partialFingerprints":{"codehealthFindingId/v1":"b19a70406519a20af9ddb8cee3b5e8c2dfcdd7af82857c49650b1eb1677895f1"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: MacOSWindow: TooManyFields \u2014 33 stored fields beside 99 methods. The bar is 30 stored fields; this is 3 over it, 1.10\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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":4009}}}],"partialFingerprints":{"codehealthFindingId/v1":"77821f5cc6762e2cef89e28d4c4d9a97fdc8bd90527264b9b22aee00b9d0ef4d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFunctions: azul_layout::text3::script: TooManyFunctions \u2014 33 free functions. The bar is 30 free functions; this is 3 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":"layout/src/text3/script.rs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5586b3d99108fb333f8735a461b9deaec41585ff8b6472456a532781a524e99"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RenderApi: TooManyMethods \u2014 33 methods. The bar is 30 methods; this is 3 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":"webrender/core/src/render_api.rs"},"region":{"startLine":1051}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d134d9871c34302c257b3b0ac660d4f022f6e01a51299b0c5deb148249a9a08"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::web::symbol_table::ingest_macho: FunctionTooLong \u2014 azul_dll::web::symbol_table::ingest_macho 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":"dll/src/web/symbol_table.rs"},"region":{"startLine":1745}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea3d40648537e54d97d8d47d598ab2e44328371353c53631838afae8227a2707"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::autotest::categorize::strategies_for: FunctionTooLong \u2014 azul_doc::autotest::categorize::strategies_for 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":"doc/src/autotest/categorize.rs"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bd0a13ec09f216b5663017d84e8ae45681b8c7b0e84400205892c9d53821ced"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CompositorState.composite_layer_recursive: MethodTooLong \u2014 composite_layer_recursive 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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":937}}}],"partialFingerprints":{"codehealthFindingId/v1":"aac7cd248260f003ee5b57b501edf2dbec289de2fa0f8d4486ab1fcd345a05b9"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::fc::calculate_row_heights: FunctionTooLong \u2014 azul_layout::solver3::fc::calculate_row_heights 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":"layout/src/solver3/fc.rs"},"region":{"startLine":7730}}}],"partialFingerprints":{"codehealthFindingId/v1":"48afc397dc61ddf04ef71a28fc8da0f71bc867b18aa5292d03caca931f8eda26"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::getters::get_inline_border_info: FunctionTooLong \u2014 azul_layout::solver3::getters::get_inline_border_info 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":"layout/src/solver3/getters.rs"},"region":{"startLine":2394}}}],"partialFingerprints":{"codehealthFindingId/v1":"a964fcf1bb279d03861986d19b1bb171381c7e6425447e1d3deb130f8db34c24"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::text3::cache::shape_with_font_fallback: FunctionTooLong \u2014 azul_layout::text3::cache::shape_with_font_fallback 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":"layout/src/text3/cache.rs"},"region":{"startLine":9313}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b5f77efeab7de2a09b3c9cb1a271ed2a333faf67c9d388d2fb2abeb13dd0afb"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: NinePatchDescriptor.create_segments: MethodTooLong \u2014 create_segments 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":"webrender/core/src/border.rs"},"region":{"startLine":1291}}}],"partialFingerprints":{"codehealthFindingId/v1":"89d658cd6310e9440fe069bcd1fb3645acf3774f8b43403e42196dba6f873fd6"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: BrushImageAlphaPassAntialiasingDualSourceBlendingRepetitionTextureRectVert.brush_vs: MethodTooLong \u2014 brush_vs 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":"webrender/swgl/src/shaders/brush_image_alpha_pass_antialiasing_dual_source_blending_repetition_texture_rect.rs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f717512547e559d01273105b7d744dd44e41b448977d40a283b439832cac7a8"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::extra::geolocation::linux::imp::geoclue_loop: FunctionTooLong \u2014 azul_dll::desktop::extra::geolocation::linux::imp::geoclue_loop 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":"dll/src/desktop/extra/geolocation/linux.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4d755e91b83f3cb61c7ea04a3a13850f23943ca2ff438e5a3395aed9248728c"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::shell2::android::play_via_vibrator: FunctionTooLong \u2014 azul_dll::desktop::shell2::android::play_via_vibrator 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":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":2671}}}],"partialFingerprints":{"codehealthFindingId/v1":"59345a8ff441f82c80dce534b70f1a46814b22d374b7a0a4999b3984a69d4045"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::reftest::apply_midlevel::build_analysis_prompt: FunctionTooLong \u2014 azul_doc::reftest::apply_midlevel::build_analysis_prompt 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":"doc/src/reftest/apply_midlevel.rs"},"region":{"startLine":2688}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ab3939a667cbd7351fe33e69c6b988f879657e940f27440cd0827454cde1e8a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Renderer.update_external_native_surfaces: MethodTooLong \u2014 update_external_native_surfaces 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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":3010}}}],"partialFingerprints":{"codehealthFindingId/v1":"65d2dd98192dab7ac7a9bf1cc8d401f1f98e061d91b470a87a5e76759ea5de8d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/render_task_graph.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). The bar is 500 significant lines; this is 43 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":"webrender/core/src/render_task_graph.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d39bb22dc6a695f8ec41bfa89ac97590974808820bc26472fe071de7a7a2cee0"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_core::events::matches_window_filter: FunctionTooLong \u2014 azul_core::events::matches_window_filter 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":"core/src/events.rs"},"region":{"startLine":2038}}}],"partialFingerprints":{"codehealthFindingId/v1":"0560ba6e171309a580d72f9bd2a9549318115d9d5f795a517d0831d00c6b3347"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ImeManager.new: MethodTooLong \u2014 new 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":"dll/src/desktop/shell2/linux/x11/events.rs"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a1c02d86e70832f3b584d095ecc6c63688fcd24804b4dda5517efb36f7673f9"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::autotest::render_task_file: FunctionTooLong \u2014 azul_doc::autotest::render_task_file 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":"doc/src/autotest/mod.rs"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"b314b8801b18fc65d3817588a726a15e6be45b25401146a9951e8a35a5a3465d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: NodeGraph.dom: MethodTooLong \u2014 dom 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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":1060}}}],"partialFingerprints":{"codehealthFindingId/v1":"d64f7c1b60bd96125e42ef1b9bfd95eda130aa5e8c5f687bfa5b6d546e8b0fdd"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: autofix/module_map.rs: FileTooLong \u2014 539 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 39 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":"doc/src/autofix/module_map.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6300d6524c7ffc7f44aba7bff958c763ebdb8de77a19a1a456f5307b7d0be7d"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FontManager: ClassTooLong \u2014 431 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), 29 methods, 2 blocks, lines 1256-2164. The bar is 400 significant lines; this is 31 over it, 1.08\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":"layout/src/text3/cache.rs"},"region":{"startLine":1256}}}],"partialFingerprints":{"codehealthFindingId/v1":"59b4d6272e4cab131c20bd0c62bbcbfb1d31991292989d5c394144e903fa5687"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: TextShapingCache: ClassTooLong \u2014 428 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, 4 blocks, lines 7332-8344. The bar is 400 significant lines; this is 28 over it, 1.07\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":"layout/src/text3/cache.rs"},"region":{"startLine":7332}}}],"partialFingerprints":{"codehealthFindingId/v1":"74989526f43497107ddf8df6639995c25b450c27cbe78699209d4af64ad2c454"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::shell2::android::render_frame: FunctionTooLong \u2014 azul_dll::desktop::shell2::android::render_frame runs 107 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 7 over it, 1.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":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":2009}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e4113cc1fb24ac9b7d56ac9f6c0c1956acd92baeb2aaa03f0189cfb28741bd6"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::shell2::run::setup_e2e_runner: FunctionTooLong \u2014 azul_dll::desktop::shell2::run::setup_e2e_runner runs 107 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 7 over it, 1.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":"dll/src/desktop/shell2/run.rs"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a0eeb7fd331ad96773b19d58523451301c51d0f33b34be3038e0d81f241e2ef"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::dllgen::bundles::create_bindings_bundles: FunctionTooLong \u2014 azul_doc::dllgen::bundles::create_bindings_bundles runs 107 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 7 over it, 1.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":"doc/src/dllgen/bundles.rs"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"20269d19daa4db6c4200e639659e209ecc56e7d2204f1e942fe0396dc10135d9"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PictureCompositeMode.get_rect: MethodTooLong \u2014 get_rect runs 107 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 7 over it, 1.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":"webrender/core/src/picture.rs"},"region":{"startLine":4315}}}],"partialFingerprints":{"codehealthFindingId/v1":"b78327f7c2c57afbde231c55a6d00c238b2b79dae4dd87802a6cf79f4f38c0b4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: templates/azul-search.js: FileTooLong \u2014 534 significant lines (blank, comment-only and punctuation-only lines excluded). 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":"doc/templates/azul-search.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a433e5ea012b93755ba4db380796b7328f78c85de90bdb64b5182f835664fd5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: renderer/upload.rs: FileTooLong \u2014 530 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 30 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":"webrender/core/src/renderer/upload.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"edf075502499e1dca806a3e181ffb9a64724d217e5237b4f76a63227013b4c0c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: App.run: MethodTooLong \u2014 run runs 106 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 6 over it, 1.06\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":"dll/src/desktop/app.rs"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ca6f57c398d9d29f54c625e4338df3d3334e9f9dc4bb3d10f5ca32263b9a7a9"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MacOSWindow.sync_window_state: MethodTooLong \u2014 sync_window_state runs 106 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 6 over it, 1.06\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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":6307}}}],"partialFingerprints":{"codehealthFindingId/v1":"593de4a0051c68982ff15ad1bc72e9eb2579988ba213707949a5473cecb5f547"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::getters::collect_font_stacks_from_styled_dom: FunctionTooLong \u2014 azul_layout::solver3::getters::collect_font_stacks_from_styled_dom runs 106 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 6 over it, 1.06\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":"layout/src/solver3/getters.rs"},"region":{"startLine":4130}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f015611b82e1a9972210d390414b67716c5cbacc117f75888c468b36cdcdb26"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TileCacheInstance.post_update: MethodTooLong \u2014 post_update runs 106 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 6 over it, 1.06\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":"webrender/core/src/picture.rs"},"region":{"startLine":3850}}}],"partialFingerprints":{"codehealthFindingId/v1":"b420ac604c4904917b3362b5b72076f33bf39b0b9fd33a79924a45db66b12a8b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SceneBuilderThread.process_transaction: MethodTooLong \u2014 process_transaction runs 106 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 6 over it, 1.06\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":"webrender/core/src/scene_builder_thread.rs"},"region":{"startLine":519}}}],"partialFingerprints":{"codehealthFindingId/v1":"9533731ca73ef301219b67ed252dc009214f981114f9dca3466f80352c458b43"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SceneBuilder.build: MethodTooLong \u2014 build runs 106 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 6 over it, 1.06\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":"webrender/core/src/scene_building.rs"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"015f5a758c94d43525212bb806354401db6391ccb984d0acb5dfa0634bc96e57"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/spatial_node.rs: FileTooLong \u2014 528 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 28 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":"webrender/core/src/spatial_node.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c15729be446dd2c5bb32e8ce1aadaa18bf8eabfc4697e9f30d2ee279599ecd3"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CssPropertyCache.resolve_property_dependency: MethodTooLong \u2014 resolve_property_dependency 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":"core/src/prop_cache.rs"},"region":{"startLine":4740}}}],"partialFingerprints":{"codehealthFindingId/v1":"bba1eed5b9dd5cd738a6cbcf45f3362ebc2725378aa60e091d41f3f5be76478a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: X11Window.handle_seat_key_event: MethodTooLong \u2014 handle_seat_key_event 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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":1870}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2e9bc233ab655c92f48c6f4888d9589012571877efaf691a8e5c1fc8c7f0621"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Win32Window.feed_pointer: MethodTooLong \u2014 feed_pointer 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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":3591}}}],"partialFingerprints":{"codehealthFindingId/v1":"7140b3869255c23889fa84618fce93112f8f5afc87f1efa21751d7c6245282ea"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::docgen::get_anchor_link_script: FunctionTooLong \u2014 azul_doc::docgen::get_anchor_link_script 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":"doc/src/docgen/mod.rs"},"region":{"startLine":696}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c674d9ded51d5dc3ade49c59b0b53dfa4f68fb2307bb6b496aafabbe6a89e48"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::widgets::themes::flora::text_input: FunctionTooLong \u2014 azul_layout::widgets::themes::flora::text_input 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":"layout/src/widgets/themes/flora.rs"},"region":{"startLine":1037}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b12222887bb56d21a573628b3ea9118765ee91eb810bac15ed51a4d86848de9"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FrameBuilder.render_minimap: MethodTooLong \u2014 render_minimap 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":"webrender/core/src/frame_builder.rs"},"region":{"startLine":720}}}],"partialFingerprints":{"codehealthFindingId/v1":"81067090b0578c1677cd05afb0aa976abc3118cfd5cb61117316913958470787"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CpuFrameTimings.to_profiler_frame: MethodTooLong \u2014 to_profiler_frame 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":"webrender/core/src/profiler.rs"},"region":{"startLine":2796}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb117818c8b0a6eec5fadf60a52264ba19a6d9a0bb1a886a01705fc503971e88"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: macos/system_style.rs: FileTooLong \u2014 522 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 22 over it, 1.04\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":"dll/src/desktop/shell2/macos/system_style.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"78169928f3f1ca08ec455eb13f33599a345bfd366a39263778d9da2849708a9f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/fluent.rs: FileTooLong \u2014 520 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 20 over it, 1.04\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":"layout/src/fluent.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"46059dee2f64f865ce7703cd564553465bac99fb18c87b3124c893f6edb94ac1"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Xlib.new: MethodTooLong \u2014 new 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":"dll/src/desktop/shell2/linux/x11/dlopen.rs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b4517b101705e76882a02cee4e58303bd71055f0f60da4435878b962ec91796"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::cpurender::pixmap::blit_pixmap_affine_clipped: FunctionTooLong \u2014 azul_layout::cpurender::pixmap::blit_pixmap_affine_clipped 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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c1747fad298b2f7840d5a7c5e38eeebae10aaaae18f3c2df065731fbc5fe11e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MultiCursorState: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 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":"core/src/selection.rs"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ed86bc7f919273ef5d59e09b64cde34353cef2c1b143acdc5e7bc88a24d8482"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: PictureCompositeMode: ClassTooLong \u2014 413 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), 5 methods, 2 blocks, lines 4294-4907. The bar is 400 significant lines; this is 13 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":"webrender/core/src/picture.rs"},"region":{"startLine":4294}}}],"partialFingerprints":{"codehealthFindingId/v1":"aabc4d59faa2a7603b06242a4c291b22f9109c997a94fb5a0de50a4be798701e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CssPropertyCache.generate_tag_ids: MethodTooLong \u2014 generate_tag_ids 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":"core/src/prop_cache.rs"},"region":{"startLine":1960}}}],"partialFingerprints":{"codehealthFindingId/v1":"2edcc3831f4bf811475bb585af066a8938e583bcea1f83bac4280f236ad5df3d"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::extra::map::tile_fetch_worker: FunctionTooLong \u2014 azul_dll::desktop::extra::map::tile_fetch_worker 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":"dll/src/desktop/extra/map/mod.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"0358a5ea78c1875d8ace2f0e22544076fc59075e4e97ebfcb9c05c1708ab080e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::web::symbol_table::compute_hashbrown_empty_group_ranges: FunctionTooLong \u2014 azul_dll::web::symbol_table::compute_hashbrown_empty_group_ranges 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":"dll/src/web/symbol_table.rs"},"region":{"startLine":3247}}}],"partialFingerprints":{"codehealthFindingId/v1":"b118962c282f2c9aa353b693a9d80a22ace57d48863e9047f2e03143812c914a"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::cpurender::raster::render_text: FunctionTooLong \u2014 azul_layout::cpurender::raster::render_text 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":"layout/src/cpurender/raster.rs"},"region":{"startLine":3730}}}],"partialFingerprints":{"codehealthFindingId/v1":"83575250442671d60da8a356011f17cc939584104092271e27beb963bdcb5580"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: GlyphCache.get_or_build_lcd_tile: MethodTooLong \u2014 get_or_build_lcd_tile 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":"layout/src/glyph_cache.rs"},"region":{"startLine":1771}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1cb3c269b603997a80e463575ddf78a3d442806208e6c8072a85f5659de54b7"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::solver3::paged_layout::compute_sectioned_pagination: FunctionTooLong \u2014 azul_layout::solver3::paged_layout::compute_sectioned_pagination 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":"layout/src/solver3/paged_layout.rs"},"region":{"startLine":1121}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9e0f75fa7e67babdd84118c4309b2d1d4f56e9f0f2d70ddfdb5fdedee58892b"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::widgets::map::spawn_pending_tile_fetches: FunctionTooLong \u2014 azul_layout::widgets::map::spawn_pending_tile_fetches 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":"layout/src/widgets/map.rs"},"region":{"startLine":2045}}}],"partialFingerprints":{"codehealthFindingId/v1":"76e4efaf347052891e5c5393f57c0080c7a437ba087589de8945acf092bf7809"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: renderer/init.rs: FileTooLong \u2014 514 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 14 over it, 1.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":"webrender/core/src/renderer/init.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a6984079923b1d3ff29cd22bd825785dacaba1155efb1ba35e82257047b82f7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/refany.rs: FileTooLong \u2014 512 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 62% of them inside a single declaration: RefAny (8 blocks, 623-1706). The bar is 500 significant lines; this is 12 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":"core/src/refany.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e5c7d963a76848d8612c55eec617a2e002e83ed0793399c1816debde65f41b6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: reftest/debug.rs: FileTooLong \u2014 512 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 12 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":"doc/src/reftest/debug.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9da43d55c1bb1f32288150e3f4a1f108f57f3f263cbaae35ce75e8e41ac4e940"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: widgets/time_picker.rs: FileTooLong \u2014 512 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 12 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":"layout/src/widgets/time_picker.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"64db5566071822e61cf42d016414ee0547c68975f114df36807c3a11704acaab"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/db.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). The bar is 500 significant lines; this is 11 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":"core/src/db.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b456c83a00af1dbde4cbb02365be9eac465aa9793ae3ec739f1096ae1ced608"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: managers/focus_cursor.rs: FileTooLong \u2014 510 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 10 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":"layout/src/managers/focus_cursor.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f759afa35842181a97a6b8e0487088d90135f577e230fe549f482d4c043ff77d"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::desktop::extra::sensors::windows::poll: FunctionTooLong \u2014 azul_dll::desktop::extra::sensors::windows::poll 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":"dll/src/desktop/extra/sensors/windows.rs"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a7ee3b5ac4c8f27b5247291eae9dfcf06ba401f37a2e4ec2a470099712a62d7"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_dll::web::symbol_table::ingest_pe: FunctionTooLong \u2014 azul_dll::web::symbol_table::ingest_pe 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":"dll/src/web/symbol_table.rs"},"region":{"startLine":1380}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebe5afd2cc0b9bfb869e3b1c11fdbb66f0507db333a59c113d345a3159cffa29"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::autofix::check_doc_characters: FunctionTooLong \u2014 azul_doc::autofix::check_doc_characters 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":"doc/src/autofix/mod.rs"},"region":{"startLine":3093}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b5ec3baeb1b3b110b900ed4a0c6c8de68def282817989788d147f638e4512d6"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_layout::cpurender::compositor::apply_layer_filters: FunctionTooLong \u2014 azul_layout::cpurender::compositor::apply_layer_filters 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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":2357}}}],"partialFingerprints":{"codehealthFindingId/v1":"e38e2d7bf64f3d9ff08b1440391bedc758ea169109d49d6469dea280ae80a42b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: IOSWindow.new: MethodTooLong \u2014 new 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":"dll/src/desktop/shell2/ios/mod.rs"},"region":{"startLine":1596}}}],"partialFingerprints":{"codehealthFindingId/v1":"d58e2ff9fedc46efda9638af8cf7d98a593b5c6988108cc3870fb3e30c353ddc"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TypeDefinition.to_parsed_type_info: MethodTooLong \u2014 to_parsed_type_info 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":"doc/src/autofix/type_index.rs"},"region":{"startLine":567}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3c9003180e097c1d6b7d3c266d540634434d3ce32c0d446eb829929c39c1aaa"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::dllgen::deploy::create_examples: FunctionTooLong \u2014 azul_doc::dllgen::deploy::create_examples 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":"doc/src/dllgen/deploy.rs"},"region":{"startLine":1624}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e4d7c595fa23b0451764412a93b2512dd3ee90f3d573e5bac36baf28b7e1c5a"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::doc_coverage::run: FunctionTooLong \u2014 azul_doc::doc_coverage::run 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":"doc/src/doc_coverage/mod.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"031544e609fabbf85627a9c5625388fab00bf67de922f81b2cf976f6260bfdaa"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: azul_doc::patch::parser::organize_symbols: FunctionTooLong \u2014 azul_doc::patch::parser::organize_symbols 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":"doc/src/patch/parser.rs"},"region":{"startLine":932}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2885052c8291ceb5b86dbb55138904a4602f52231f1a878087f9b91d530dead"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Renderer.draw_picture_cache_target: MethodTooLong \u2014 draw_picture_cache_target 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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":2694}}}],"partialFingerprints":{"codehealthFindingId/v1":"283fad60d17d9d39a8f66440d645c8ee52a102e5e1203ba898671f1c45472725"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/dom_lint.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":"layout/src/dom_lint.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f36e8f980e934f133835184a4dfb2c1590a397aa1d5f051c04986d66e0e7aee"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: screencap/dmabuf.rs: FileTooLong \u2014 502 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: EglBackend (3 blocks, 211-657). The bar is 500 significant lines; this is 2 over it, 1.00\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":"dll/src/desktop/extra/screencap/dmabuf.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1baa223d56b4b379a38e55765e8cca19bcaa3d7485b0044e1dfa3ae55dfcbba"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (15 members, 19 shared lines): css/src/system.rs:2213-2261 | css/src/system.rs:2265-2313 | css/src/system.rs:2317-2365 | css/src/system.rs:2369-2417 | css/src/system.rs:2423-2470 | css/src/system.rs:2474-2528 | css/src/system.rs:2532-2577 | css/src/system.rs:2583-2629 | css/src/system.rs:2633-2679 | css/src/system.rs:2683-2728 | css/src/system.rs:2740-2806 | css/src/system.rs:2816-2884 | css/src/system.rs:2890-2935 | css/src/system.rs:2939-2984 | css/src/system.rs:2988-3031 \u2014 These 15 members are variants of one another: a block of 19 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 15 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 15 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"css/src/system.rs"},"region":{"startLine":2213}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6de4268faa9536bc3293eb38e2c968a837428b630a73a114744d1431176c7be"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (6 members, 43 shared lines): doc/src/codegen/v2/lang_cpp/cpp03.rs:27-124 | doc/src/codegen/v2/lang_cpp/cpp11.rs:28-134 | doc/src/codegen/v2/lang_cpp/cpp14.rs:23-120 | doc/src/codegen/v2/lang_cpp/cpp17.rs:26-138 | doc/src/codegen/v2/lang_cpp/cpp20.rs:36-145 | doc/src/codegen/v2/lang_cpp/cpp20.rs:432-526 \u2014 These 6 members are variants of one another: a block of 43 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0477d484b04bf841c9f456a3b1481f76a5d29e98f3432ffb82e4bd6a3d8eb1e"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (5 members, 35 shared lines): layout/src/widgets/node_graph.rs:3622-3665 | layout/src/widgets/node_graph.rs:3671-3714 | layout/src/widgets/node_graph.rs:3720-3763 | layout/src/widgets/node_graph.rs:3769-3811 | layout/src/widgets/node_graph.rs:3817-3860 \u2014 These 5 members are variants of one another: a block of 35 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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":3622}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fe83ed3f53671968cda8cda9778788c2e2f457c3b45be644730d8c9e6b24739"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (5 members, 28 shared lines): dll/src/desktop/shell2/android/mod.rs:441-532 | dll/src/desktop/shell2/ios/mod.rs:1893-1998 | dll/src/desktop/shell2/linux/wayland/mod.rs:6444-6536 | dll/src/desktop/shell2/linux/x11/mod.rs:6172-6276 | dll/src/desktop/shell2/windows/mod.rs:1817-1931 \u2014 These 5 members are variants of one another: a block of 28 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":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":441}}}],"partialFingerprints":{"codehealthFindingId/v1":"98a7e1e2a1fc03f8cae5938eb286465454291418d68390225ed9ec0fb8a92304"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (5 members, 14 shared lines): doc/src/codegen/v2/lang_crystal/types.rs:160-209 | doc/src/codegen/v2/lang_d/types.rs:130-166 | doc/src/codegen/v2/lang_julia/types.rs:198-242 | doc/src/codegen/v2/lang_odin/types.rs:144-186 | doc/src/codegen/v2/lang_v/types.rs:149-192 \u2014 These 5 members are variants of one another: a block of 14 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":"doc/src/codegen/v2/lang_crystal/types.rs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"44cfea2ac813db4896208a046921f6618e2dee92fe1929c894400be9d4d42554"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 113 shared lines): doc/src/reftest/autodoc.rs:994-1186 | doc/src/reftest/autoreview.rs:614-830 | doc/src/reftest/autoreview.rs:843-1065 | doc/src/reftest/autoreview.rs:1767-1966 \u2014 These 4 members are variants of one another: a block of 113 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 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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":994}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0ced3f962f4a0dc6f917a120cac96e6c1cf18f0d75e5e4430a7dcb4ea8ae170"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 30 shared lines): doc/src/codegen/v2/lang_cpp/cpp03.rs:627-670 | doc/src/codegen/v2/lang_cpp/cpp11.rs:549-592 | doc/src/codegen/v2/lang_cpp/cpp17.rs:741-802 | doc/src/codegen/v2/lang_cpp/cpp20.rs:857-898 \u2014 These 4 members are variants of one another: a block of 30 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 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":627}}}],"partialFingerprints":{"codehealthFindingId/v1":"86b87cde22563390ee60205801c646e5bcdff9c9519f3a41d57073e2adc7979b"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 27 shared lines): doc/src/codegen/v2/lang_cpp/cpp03.rs:132-234 | doc/src/codegen/v2/lang_cpp/cpp11.rs:650-763 | doc/src/codegen/v2/lang_cpp/cpp17.rs:146-275 | doc/src/codegen/v2/lang_cpp/cpp20.rs:623-745 \u2014 These 4 members are variants of one another: a block of 27 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 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"f556a170802bdaa0dabe34cf885a67051f7138cc451fc24c7db78bd8d9491cfd"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 10 shared lines): doc/src/reftest/autodebug.rs:2145-2273 | doc/src/reftest/autodoc.rs:892-985 | doc/src/reftest/autoreview.rs:1100-1215 | doc/src/reftest/autoreview.rs:1536-1654 \u2014 These 4 members are variants of one another: a block of 10 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 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":"doc/src/reftest/autodebug.rs"},"region":{"startLine":2145}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b339e6a21ee8712005f683fc951bfd1c066af17d2a82fe7fda61e98f8c34066"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (3 members, 49 shared lines): doc/src/codegen/v2/lang_node/wrappers.rs:418-629 | doc/src/codegen/v2/lang_node/wrappers.rs:635-786 | doc/src/codegen/v2/lang_node/wrappers.rs:1102-1267 \u2014 These 3 members are variants of one another: a block of 49 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 3 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 3 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_node/wrappers.rs"},"region":{"startLine":418}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1a6a5d7c50a719da5987e11c063c97cd2dec101d7c90cb9e3b907bcf655bb93"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (3 members, 17 shared lines): dll/src/desktop/shell2/linux/wayland/mod.rs:4618-4682 | dll/src/desktop/shell2/linux/wayland/mod.rs:5639-5746 | dll/src/desktop/shell2/linux/wayland/mod.rs:5824-5900 \u2014 These 3 members are variants of one another: a block of 17 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 3 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 3 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":4618}}}],"partialFingerprints":{"codehealthFindingId/v1":"b553bd0f6dbdbcb00350c1c6a250ebfd0428968f6b1fd23945b68afd6fa0cc70"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (3 members, 8 shared lines): layout/src/solver3/display_list.rs:1005-1044 | layout/src/solver3/display_list.rs:1068-1116 | layout/src/solver3/display_list.rs:1118-1152 \u2014 These 3 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 3 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 3 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/solver3/display_list.rs"},"region":{"startLine":1005}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb68e527db4c02e0d6ba8525440e3300e5417a737504e8bbbab0dcdb02c5ee51"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (205 shared lines): dll/src/desktop/shell2/linux/wayland/mod.rs:10845-11091 | dll/src/desktop/shell2/linux/x11/mod.rs:8606-8842 \u2014 These two members are variants of one another: 205 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":10845}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ba6fb11fe96433e7e42989d8eee896be089b5cbfff680e55bd869cdc14f2000"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (138 shared lines): layout/src/widgets/themes/flat.rs:1036-1332 | layout/src/widgets/themes/flora.rs:1308-1724 \u2014 These two members are variants of one another: 138 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":1036}}}],"partialFingerprints":{"codehealthFindingId/v1":"e86ff028bcb5a08cff0c9137168c6d5724e31a694226a00b2c3f86162b9dba81"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (111 shared lines): layout/src/widgets/themes/flat.rs:567-696 | layout/src/widgets/themes/flora.rs:789-957 \u2014 These two members are variants of one another: 111 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":567}}}],"partialFingerprints":{"codehealthFindingId/v1":"925ae92b9780a574620a0319f4cdc35f74408c1b015e572e25898c63f10f921a"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (104 shared lines): doc/src/api.rs:2009-2216 | doc/src/api.rs:2281-2482 \u2014 These two members are variants of one another: 104 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":"doc/src/api.rs"},"region":{"startLine":2009}}}],"partialFingerprints":{"codehealthFindingId/v1":"e62a9f8b4ed75a85818bce0792505c05fc67097f392709d149dc724c4fa3a6c3"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (89 shared lines): doc/src/codegen/v2/lang_rust.rs:2739-2961 | doc/src/codegen/v2/lang_rust.rs:2969-3353 \u2014 These two members are variants of one another: 89 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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2739}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a6ebdae46500fcab4cfa3d8faeb248cbce643c9c97f119e8346b5cd39c7e394"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (85 shared lines): layout/src/widgets/themes/flat.rs:1364-1466 | layout/src/widgets/themes/flora.rs:1756-1873 \u2014 These two members are variants of one another: 85 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":1364}}}],"partialFingerprints":{"codehealthFindingId/v1":"011607e417f4e75189d15069ae71f2368add849968542c97e34446c086925334"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (77 shared lines): doc/src/reftest/regression.rs:961-1214 | doc/src/reftest/regression.rs:1751-2012 \u2014 These two members are variants of one another: 77 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":"doc/src/reftest/regression.rs"},"region":{"startLine":961}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e0a9b04e96b1dd863b2116026503526b37adcd9d9b7a0dc888e12fe6d857df2"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (67 shared lines): dll/src/desktop/shell2/linux/wayland/mod.rs:2971-3294 | dll/src/desktop/shell2/linux/x11/mod.rs:4486-4758 \u2014 These two members are variants of one another: 67 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":2971}}}],"partialFingerprints":{"codehealthFindingId/v1":"3494a234c1ace8305c0fb49e1e0e4d1ce32d703df1cf3f226a62fc50d20793f1"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (67 shared lines): layout/src/widgets/themes/flat.rs:1469-1588 | layout/src/widgets/themes/flora.rs:1876-2007 \u2014 These two members are variants of one another: 67 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":1469}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3c9d18e4d98d77124f982aba0cea3fb37c3359935e3e19e63cc0ae9cdcd5b27"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (64 shared lines): layout/src/widgets/themes/flat.rs:777-913 | layout/src/widgets/themes/flora.rs:1037-1185 \u2014 These two members are variants of one another: 64 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":777}}}],"partialFingerprints":{"codehealthFindingId/v1":"54aa4160788cdbcfb8acaa0a4906bb05aea6e7434b228e20866f297be0342da5"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (58 shared lines): doc/src/reftest/autoreview.rs:1441-1534 | doc/src/reftest/autoreview.rs:1970-2114 \u2014 These two members are variants of one another: 58 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":"doc/src/reftest/autoreview.rs"},"region":{"startLine":1441}}}],"partialFingerprints":{"codehealthFindingId/v1":"1de76134bb686b3940c7da7692b845c174bf9e7e679630b602b029de8915d60d"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (58 shared lines): doc/src/codegen/v2/lang_php/wrappers.rs:109-226 | doc/src/codegen/v2/lang_php/wrappers.rs:232-412 \u2014 These two members are variants of one another: 58 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":"doc/src/codegen/v2/lang_php/wrappers.rs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"de1d9369b773db97bccebab4c99a17e301107291efd394d7ca28c398edcba48c"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (57 shared lines): dll/src/desktop/tray/linux.rs:422-547 | dll/src/desktop/tray/linux.rs:782-1007 \u2014 These two members are variants of one another: 57 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":"dll/src/desktop/tray/linux.rs"},"region":{"startLine":422}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc419e77817fce4835a93e6e893f2484226aac470f7501887cf53b8ac697c541"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (57 shared lines): doc/src/autofix/diff.rs:554-697 | doc/src/autofix/diff.rs:2211-2292 \u2014 These two members are variants of one another: 57 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":"doc/src/autofix/diff.rs"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca51ddf0e91d97cb78bba788f20f013f2c113efebb98903cbedd0311fed2b804"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (57 shared lines): dll/src/desktop/shell2/linux/wayland/mod.rs:3337-3447 | dll/src/desktop/shell2/linux/x11/mod.rs:4340-4480 \u2014 These two members are variants of one another: 57 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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":3337}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b598b01a4515d0d43c779efcfb6a97e3a2cb7f3c96589f550c306a2a5be03ff"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (55 shared lines): layout/src/widgets/pagination.rs:202-333 | layout/src/widgets/segmented.rs:178-302 \u2014 These two members are variants of one another: 55 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":"layout/src/widgets/pagination.rs"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f57993464c9027d17a02257fcd8ba78a89fe8fc015567c4b05db2f1b325f5b9"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (53 shared lines): doc/src/codegen/v2/lang_java/types.rs:130-365 | doc/src/codegen/v2/lang_java/types.rs:480-735 \u2014 These two members are variants of one another: 53 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":"doc/src/codegen/v2/lang_java/types.rs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccd953b3d1fd0bad3647e0b826ba94e8fb731607bb6ceb0adf356baed63d2258"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (52 shared lines): doc/src/codegen/v2/lang_rust.rs:2594-2680 | doc/src/codegen/v2/rust/shared.rs:177-234 \u2014 These two members are variants of one another: 52 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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2594}}}],"partialFingerprints":{"codehealthFindingId/v1":"34d3fe419f9a174f5e780185011bed3a7b559ac414645f116b870083def9350f"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (51 shared lines): layout/src/text3/cache.rs:6284-6366 | layout/src/text3/cache.rs:6374-6455 \u2014 These two members are variants of one another: 51 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":"layout/src/text3/cache.rs"},"region":{"startLine":6284}}}],"partialFingerprints":{"codehealthFindingId/v1":"bee1814b39f4f2b6bcd39aa59d759635b112e3359c4921736220c2860c056bb9"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (49 shared lines): dll/src/desktop/shell2/linux/x11/mod.rs:4217-4297 | dll/src/desktop/shell2/windows/mod.rs:7636-7711 \u2014 These two members are variants of one another: 49 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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":4217}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccd5dad42b93b48330ff7e90a0a99d2d28b33c33e7aa2d147a22ae7e0d08ae81"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (47 shared lines): layout/src/widgets/themes/flat.rs:701-768 | layout/src/widgets/themes/flora.rs:962-1028 \u2014 These two members are variants of one another: 47 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":701}}}],"partialFingerprints":{"codehealthFindingId/v1":"97975cc2dcf72659f2da660b0afc6b011a39eac70a77b237c10b88acbf5413d7"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (45 shared lines): doc/src/codegen/v2/lang_java/wrappers.rs:1737-1827 | doc/src/codegen/v2/lang_java/wrappers.rs:1869-1926 \u2014 These two members are variants of one another: 45 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":"doc/src/codegen/v2/lang_java/wrappers.rs"},"region":{"startLine":1737}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e8e2d8bfee1370e51cacefa7b966b89ef28fbed2459fe4e582aad1870be237a"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (45 shared lines): layout/src/widgets/text_area.rs:712-819 | layout/src/widgets/text_input.rs:1092-1216 \u2014 These two members are variants of one another: 45 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":"layout/src/widgets/text_area.rs"},"region":{"startLine":712}}}],"partialFingerprints":{"codehealthFindingId/v1":"a420507e15f1f9f667eb1107d4463e531519d3a9aa2223440a2de92c9dd42183"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (44 shared lines): doc/src/codegen/v2/lang_lua/wrappers.rs:1078-1146 | doc/src/codegen/v2/lang_lua/wrappers.rs:1150-1206 \u2014 These two members are variants of one another: 44 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":"doc/src/codegen/v2/lang_lua/wrappers.rs"},"region":{"startLine":1078}}}],"partialFingerprints":{"codehealthFindingId/v1":"e294a406dc71eb19786484c5fa3214e287f4b5fe80829567298e2c24afb2c238"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (41 shared lines): doc/src/codegen/v2/lang_rust.rs:2519-2586 | doc/src/codegen/v2/rust/shared.rs:128-174 \u2014 These two members are variants of one another: 41 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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2519}}}],"partialFingerprints":{"codehealthFindingId/v1":"113e87186e8ee1ff4135a254d2047c3b673e0b750b2edc8084b02432774f669a"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (40 shared lines): dll/src/desktop/shell2/android/mod.rs:2675-2824 | dll/src/desktop/shell2/android/mod.rs:2975-3091 \u2014 These two members are variants of one another: 40 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":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":2675}}}],"partialFingerprints":{"codehealthFindingId/v1":"6251efe373de248b640953cd21baa2331458d18dfd69893435596975d28beddf"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (40 shared lines): doc/src/codegen/v2/lang_cpp/common.rs:517-570 | doc/src/codegen/v2/lang_cpp/common.rs:929-988 \u2014 These two members are variants of one another: 40 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":"doc/src/codegen/v2/lang_cpp/common.rs"},"region":{"startLine":517}}}],"partialFingerprints":{"codehealthFindingId/v1":"72d06d8b21f032d9ba717a1190f1b784d0ae92213c48945dfaa3f00657e0b623"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (38 shared lines): layout/src/text3/edit.rs:770-898 | layout/src/text3/edit.rs:910-1017 \u2014 These two members are variants of one another: 38 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":"layout/src/text3/edit.rs"},"region":{"startLine":770}}}],"partialFingerprints":{"codehealthFindingId/v1":"da50ff384feab72760b2943fb41c35bb972a53831108705e3aed4ede0784f447"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (37 shared lines): core/src/resources.rs:2775-2824 | core/src/resources.rs:2926-2975 \u2014 These two members are variants of one another: 37 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":"core/src/resources.rs"},"region":{"startLine":2775}}}],"partialFingerprints":{"codehealthFindingId/v1":"422530556fd5035ee54f0e204545431b00137038752b16d54b8ac2fe044d2b3d"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (36 shared lines): layout/src/text3/cache.rs:6462-6525 | layout/src/text3/cache.rs:6532-6595 \u2014 These two members are variants of one another: 36 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":"layout/src/text3/cache.rs"},"region":{"startLine":6462}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dee0a91ac727259cb7d44e2b95cff7b37f6bf77c2700a2b8c1e44fd27ab5dcb"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (35 shared lines): doc/src/codegen/v2/lang_ruby/types.rs:990-1052 | doc/src/codegen/v2/lang_ruby/types.rs:1062-1122 \u2014 These two members are variants of one another: 35 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":"doc/src/codegen/v2/lang_ruby/types.rs"},"region":{"startLine":990}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c41d4401b2eb454d3096099d33b87f9dba884042fdf79edf837c9396aa4681a"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (31 shared lines): doc/src/codegen/v2/lang_kotlin/wrappers.rs:197-252 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:261-303 \u2014 These two members are variants of one another: 31 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":"doc/src/codegen/v2/lang_kotlin/wrappers.rs"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"aaacff187c3460fbc9a9c050200f2455685baf681360738d789cbd87952bcc22"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (29 shared lines): dll/src/desktop/shell2/headless/mod.rs:1680-1809 | dll/src/desktop/shell2/headless/mod.rs:1877-1945 \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":"dll/src/desktop/shell2/headless/mod.rs"},"region":{"startLine":1680}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b28f8ce5c978ea9035779eafb502d99a888fbe4ad4415af04b3e0f584252679"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (97 corresponding lines): doc/src/patch/parser.rs:279-399 | doc/src/patch/parser.rs:401-511 \u2014 These two members are one piece of code written twice and then edited apart: 97 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":"doc/src/patch/parser.rs"},"region":{"startLine":279}}}],"partialFingerprints":{"codehealthFindingId/v1":"300aa0796b7a12adc220ee68d393e22573a6c9c34eacbe66ca619e6cb91e92ee"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (43 corresponding lines): doc/src/reftest/regression.rs:1217-1292 | doc/src/reftest/regression.rs:1312-1411 \u2014 These two members are one piece of code written twice and then edited apart: 43 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":"doc/src/reftest/regression.rs"},"region":{"startLine":1217}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f54eb5e1a2f3c428baac4fb94c55d2d24d3928f2b6ebfcefee5039d82822b8e"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (36 corresponding lines): dll/src/desktop/extra/geolocation/ios.rs:182-217 | dll/src/desktop/extra/geolocation/macos.rs:176-211 \u2014 These two members are one piece of code written twice and then edited apart: 36 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":"dll/src/desktop/extra/geolocation/ios.rs"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"25fe9ee21f6e4edadd699b3918856bbff9ee0a75e29facb7e8c9c47d16ff4b3f"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (35 corresponding lines): layout/src/xml/svg.rs:149-189 | layout/src/xml/svg.rs:192-273 \u2014 These two members are one piece of code written twice and then edited apart: 35 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":"layout/src/xml/svg.rs"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"926eaf7612e9a2ea50df1a19465f3fd1adc66f441d2452a1878fadff1186177c"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (48 corresponding lines): layout/src/xml/svg.rs:1340-1393 | layout/src/xml/svg.rs:1400-1453 \u2014 These two members are one piece of code written twice and then edited apart: 48 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":"layout/src/xml/svg.rs"},"region":{"startLine":1340}}}],"partialFingerprints":{"codehealthFindingId/v1":"8633106aed7d37225a0148f1323aec3b69624a0c95caa9fa5749cfeb01cc3d5e"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (35 corresponding lines): dll/src/desktop/shell2/macos/mod.rs:4242-4307 | dll/src/desktop/shell2/macos/mod.rs:4327-4386 \u2014 These two members are one piece of code written twice and then edited apart: 35 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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":4242}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d9328aed4da7aa76c1433c367a81ff92090a236cd8255bdd3e7a99a8211b5ba"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (17 corresponding lines): dll/src/desktop/shell2/macos/mod.rs:2656-2756 | dll/src/desktop/shell2/macos/mod.rs:2802-2825 \u2014 These two members are one piece of code written twice and then edited apart: 17 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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":2656}}}],"partialFingerprints":{"codehealthFindingId/v1":"5503cc8bfd8e17019cf6f9ddbadd0f38c427de3a7aa093fdab2396a70a0dc359"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (15 corresponding lines): layout/src/widgets/themes/flora.rs:789-957 | layout/src/widgets/themes/flora.rs:1037-1185 \u2014 These two members are one piece of code written twice and then edited apart: 15 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":"layout/src/widgets/themes/flora.rs"},"region":{"startLine":789}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec574e9a31a32032ccff27f0b9db8c97a2d47dc8df774d13b371eccc4108ba41"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (15 corresponding lines): layout/src/widgets/themes/flora.rs:789-957 | layout/src/widgets/themes/flora.rs:1876-2007 \u2014 These two members are one piece of code written twice and then edited apart: 15 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":"layout/src/widgets/themes/flora.rs"},"region":{"startLine":789}}}],"partialFingerprints":{"codehealthFindingId/v1":"62773581b8b1fdfd9da556a65904493e667abbf4041a3367ca8d23729d7a44cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (17 corresponding lines): layout/src/cpurender/compositor.rs:1667-1684 | layout/src/cpurender/compositor.rs:1737-1765 \u2014 These two members are one piece of code written twice and then edited apart: 17 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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":1667}}}],"partialFingerprints":{"codehealthFindingId/v1":"71b4f6080977bbd6ab112c71cbb7e086cf1d3a6357d721f08a5a45dff60d93a8"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (20 members, 50\u002B identical tokens): doc/src/codegen/v2/lang_ada/functions.rs:64-125 | doc/src/codegen/v2/lang_algol68/functions.rs:64-125 | doc/src/codegen/v2/lang_cobol/functions.rs:70-131 | doc/src/codegen/v2/lang_csharp/functions.rs:125-188 | doc/src/codegen/v2/lang_fortran/functions.rs:85-147 | doc/src/codegen/v2/lang_freebasic/functions.rs:47-108 | doc/src/codegen/v2/lang_haskell/functions.rs:422-475 | doc/src/codegen/v2/lang_java/functions.rs:158-220 | doc/src/codegen/v2/lang_julia/mod.rs:409-470 | doc/src/codegen/v2/lang_kotlin/mod.rs:182-240 | doc/src/codegen/v2/lang_lisp/functions.rs:48-109 | doc/src/codegen/v2/lang_nim/functions.rs:49-110 | doc/src/codegen/v2/lang_ocaml/functions.rs:61-123 | doc/src/codegen/v2/lang_odin/mod.rs:330-391 | doc/src/codegen/v2/lang_pascal/functions.rs:94-156 | doc/src/codegen/v2/lang_racket/functions.rs:48-109 | doc/src/codegen/v2/lang_red/mod.rs:339-396 | doc/src/codegen/v2/lang_smalltalk/functions.rs:104-165 | doc/src/codegen/v2/lang_v/mod.rs:362-423 | doc/src/codegen/v2/lang_vb6/functions.rs:62-123 \u2014 These 20 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 20 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 20 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_ada/functions.rs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"61c10754e33641965649b3471ced8c7f1f11ef0ee3b144f8c49bdd5b4a6163e2"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (16 members, 50\u002B identical tokens): dll/src/desktop/shell2/linux/wayland/defines.rs:751-786 | dll/src/desktop/shell2/linux/wayland/defines.rs:792-832 | dll/src/desktop/shell2/linux/wayland/defines.rs:839-874 | dll/src/desktop/shell2/linux/wayland/defines.rs:880-925 | dll/src/desktop/shell2/linux/wayland/defines.rs:932-967 | dll/src/desktop/shell2/linux/wayland/defines.rs:999-1071 | dll/src/desktop/shell2/linux/wayland/defines.rs:1077-1110 | dll/src/desktop/shell2/linux/wayland/defines.rs:1115-1150 | dll/src/desktop/shell2/linux/wayland/defines.rs:1156-1196 | dll/src/desktop/shell2/linux/wayland/defines.rs:1198-1248 | dll/src/desktop/shell2/linux/wayland/defines.rs:1250-1305 | dll/src/desktop/shell2/linux/wayland/defines.rs:1307-1362 | dll/src/desktop/shell2/linux/wayland/defines.rs:1364-1481 | dll/src/desktop/shell2/linux/wayland/defines.rs:1483-1530 | dll/src/desktop/shell2/linux/wayland/defines.rs:1537-1638 | dll/src/desktop/shell2/linux/wayland/defines.rs:1641-1675 \u2014 These 16 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 16 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 16 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/defines.rs"},"region":{"startLine":751}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fcd9ac3aa8978eea58650333ef0e75b22df404dc3c2c9451c1d3d1dbd460fff"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (14 members, 50\u002B identical tokens): dll/src/desktop/shell2/linux/wayland/defines.rs:1920-1971 | dll/src/desktop/shell2/linux/wayland/defines.rs:1972-2023 | dll/src/desktop/shell2/linux/wayland/defines.rs:2024-2065 | dll/src/desktop/shell2/linux/wayland/defines.rs:2126-2197 | dll/src/desktop/shell2/linux/wayland/defines.rs:2253-2379 | dll/src/desktop/shell2/linux/wayland/defines.rs:2420-2449 | dll/src/desktop/shell2/linux/wayland/defines.rs:2532-2566 | dll/src/desktop/shell2/linux/wayland/defines.rs:2568-2609 | dll/src/desktop/shell2/linux/wayland/defines.rs:2611-2654 | dll/src/desktop/shell2/linux/wayland/defines.rs:2656-2690 | dll/src/desktop/shell2/linux/wayland/defines.rs:2859-2888 | dll/src/desktop/shell2/linux/wayland/defines.rs:2922-2957 | dll/src/desktop/shell2/linux/wayland/defines.rs:2959-3005 | dll/src/desktop/shell2/linux/wayland/defines.rs:3008-3047 \u2014 These 14 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 14 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 14 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/defines.rs"},"region":{"startLine":1920}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6f2750680666937e71e7fd59cd8d5b2ce7d477bf7b2b87aca7aa45c35e935a6"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (12 members, 50\u002B identical tokens): css/src/props/basic/color.rs:899-907 | css/src/props/basic/color.rs:911-919 | css/src/props/basic/color.rs:923-931 | css/src/props/basic/color.rs:935-943 | css/src/props/basic/color.rs:947-955 | css/src/props/basic/color.rs:959-967 | css/src/props/basic/color.rs:971-979 | css/src/props/basic/color.rs:983-991 | css/src/props/basic/color.rs:995-1003 | css/src/props/basic/color.rs:1007-1015 | css/src/props/basic/color.rs:1019-1027 | css/src/props/basic/color.rs:1031-1039 \u2014 These 12 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 12 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 12 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"css/src/props/basic/color.rs"},"region":{"startLine":899}}}],"partialFingerprints":{"codehealthFindingId/v1":"4432a3f647c97d43bc827cb959a494c97b951cfb925b67ea0a2f8463915b0b00"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (11 members, 50\u002B identical tokens): dll/src/desktop/shell2/macos/mod.rs:265-323 | dll/src/desktop/shell2/macos/mod.rs:325-369 | dll/src/desktop/shell2/macos/mod.rs:371-398 | dll/src/desktop/shell2/macos/mod.rs:400-428 | dll/src/desktop/shell2/macos/mod.rs:657-695 | dll/src/desktop/shell2/macos/mod.rs:697-725 | dll/src/desktop/shell2/macos/mod.rs:727-755 | dll/src/desktop/shell2/macos/mod.rs:757-784 | dll/src/desktop/shell2/macos/mod.rs:786-813 | dll/src/desktop/shell2/macos/mod.rs:815-842 | dll/src/desktop/shell2/macos/mod.rs:879-899 \u2014 These 11 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 11 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 11 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"81de9b0b4040c9a572ce8f88ed605c05e791a5fbebd3ca95dab3bd3847acf1e4"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (11 members, 50\u002B identical tokens): doc/src/codegen/v2/lang_ada/mod.rs:188-235 | doc/src/codegen/v2/lang_algol68/mod.rs:345-394 | doc/src/codegen/v2/lang_cobol/types.rs:501-573 | doc/src/codegen/v2/lang_freebasic/mod.rs:117-186 | doc/src/codegen/v2/lang_haskell/types.rs:1082-1129 | doc/src/codegen/v2/lang_nim/mod.rs:146-213 | doc/src/codegen/v2/lang_nim/mod.rs:217-235 | doc/src/codegen/v2/lang_ocaml/mod.rs:891-945 | doc/src/codegen/v2/lang_pascal/mod.rs:228-307 | doc/src/codegen/v2/lang_smalltalk/mod.rs:148-198 | doc/src/codegen/v2/lang_vb6/mod.rs:197-262 \u2014 These 11 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 11 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 11 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_ada/mod.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d867651e0ced90d0776b63fbf773bfe01ed586832023df311d90780cff44d98"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (10 members, 50\u002B identical tokens): doc/src/codegen/v2/lang_csharp/mod.rs:286-300 | doc/src/codegen/v2/lang_freebasic/mod.rs:328-342 | doc/src/codegen/v2/lang_go/mod.rs:410-424 | doc/src/codegen/v2/lang_haskell/wrappers.rs:2362-2376 | doc/src/codegen/v2/lang_nim/mod.rs:376-390 | doc/src/codegen/v2/lang_ocaml/mod.rs:1022-1036 | doc/src/codegen/v2/lang_pascal/mod.rs:506-520 | doc/src/codegen/v2/lang_powershell/cmdlets.rs:369-386 | doc/src/codegen/v2/lang_smalltalk/wrappers.rs:435-449 | doc/src/codegen/v2/lang_vb6/mod.rs:393-407 \u2014 These 10 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 10 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 10 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_csharp/mod.rs"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"dacf862a6eda6bbe325a25cc9e31e7b7fadc2aabee4b32c9beeb416dc0f82c90"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (10 members, 50\u002B identical tokens): layout/src/callbacks.rs:3459-3480 | layout/src/callbacks.rs:3484-3505 | layout/src/callbacks.rs:3509-3530 | layout/src/callbacks.rs:3534-3555 | layout/src/callbacks.rs:3559-3580 | layout/src/callbacks.rs:3585-3592 | layout/src/callbacks.rs:3636-3648 | layout/src/callbacks.rs:3655-3664 | layout/src/callbacks.rs:3680-3759 | layout/src/callbacks.rs:3787-3800 \u2014 These 10 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 10 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 10 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/callbacks.rs"},"region":{"startLine":3459}}}],"partialFingerprints":{"codehealthFindingId/v1":"c631a6cc3abc4039b5253174790ea55efa0a76f3f7e843c96f45fdfad127d23c"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (8 members, 50\u002B identical tokens): doc/src/codegen/v2/config.rs:357-431 | doc/src/codegen/v2/lang_crystal/mod.rs:302-364 | doc/src/codegen/v2/lang_freebasic/mod.rs:117-186 | doc/src/codegen/v2/lang_julia/mod.rs:197-255 | doc/src/codegen/v2/lang_nim/mod.rs:146-213 | doc/src/codegen/v2/lang_odin/mod.rs:131-190 | doc/src/codegen/v2/lang_pascal/mod.rs:228-307 | doc/src/codegen/v2/lang_v/mod.rs:155-215 \u2014 These 8 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 8 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 8 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/config.rs"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa0d7b9ba2dbf746f4d53388a4f0c69ae0804641c8615be39e8e1a5fd20b5968"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (8 members, 50\u002B identical tokens): doc/src/codegen/v2/lang_cpp/cpp03.rs:242-400 | doc/src/codegen/v2/lang_cpp/cpp03.rs:678-715 | doc/src/codegen/v2/lang_cpp/cpp11.rs:152-300 | doc/src/codegen/v2/lang_cpp/cpp11.rs:600-637 | doc/src/codegen/v2/lang_cpp/cpp17.rs:283-480 | doc/src/codegen/v2/lang_cpp/cpp17.rs:810-856 | doc/src/codegen/v2/lang_cpp/cpp20.rs:928-987 | doc/src/codegen/v2/lang_cpp/cpp20.rs:996-1158 \u2014 These 8 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 8 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 8 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":242}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2af722185f03455fdbbd2a26ea0fef928f31a766e0e4724068792febc059f3a"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (8 members, 50\u002B identical tokens): layout/src/xml/svg.rs:878-902 | layout/src/xml/svg.rs:917-941 | layout/src/xml/svg.rs:985-1009 | layout/src/xml/svg.rs:1050-1075 | layout/src/xml/svg.rs:1128-1152 | layout/src/xml/svg.rs:1179-1208 | layout/src/xml/svg.rs:1223-1256 | layout/src/xml/svg.rs:1271-1306 \u2014 These 8 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 8 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 8 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/xml/svg.rs"},"region":{"startLine":878}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b9a4a260b7f9d5eab2052253b47ef3081f5217c94083b04d23cef2a9367a205"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (7 members, 50\u002B identical tokens): core/src/events.rs:1741-1879 | core/src/events.rs:1888-1974 | core/src/events.rs:2042-2173 | core/src/window.rs:2580-2633 | css/src/props/property.rs:1572-1613 | css/src/props/property.rs:1782-1904 | layout/src/text3/default.rs:652-750 \u2014 These 7 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 7 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 7 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"core/src/events.rs"},"region":{"startLine":1741}}}],"partialFingerprints":{"codehealthFindingId/v1":"242e2242841d26a7d4200d91b8c0d8c7e89ba1edfad0d3488f2298029447e3e6"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (7 members, 50\u002B identical tokens): doc/src/autofix/patch_format.rs:13-26 | doc/src/autofix/workspace.rs:2237-2250 | doc/src/codegen/v2/ir.rs:503-516 | doc/src/codegen/v2/ir_builder.rs:2679-2692 | doc/src/codegen/v2/lang_python.rs:4555-4568 | doc/src/codegen/v2/lang_rust.rs:5003-5016 | doc/src/codegen/v2/transmute_helpers.rs:506-519 \u2014 These 7 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 7 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 7 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/autofix/patch_format.rs"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff5975530b600f583b696c96b4cd4637fa65b9e35c00e33fb366d9cce091e8f6"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (7 members, 50\u002B identical tokens): doc/src/codegen/v2/lang_java/derives.rs:635-718 | doc/src/codegen/v2/lang_java/functions.rs:222-262 | doc/src/codegen/v2/lang_java/types.rs:426-469 | doc/src/codegen/v2/lang_java/types.rs:741-800 | doc/src/codegen/v2/lang_java/types.rs:924-976 | doc/src/codegen/v2/lang_java/wrappers.rs:131-443 | doc/src/codegen/v2/lang_java/wrappers.rs:1937-2052 \u2014 These 7 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 7 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 7 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_java/derives.rs"},"region":{"startLine":635}}}],"partialFingerprints":{"codehealthFindingId/v1":"215675f2df0fc96c5ebd99ea90b42e12e345aa854a12e5ab880a2667b0ebc1f2"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (6 members, 50\u002B identical tokens): dll/src/desktop/shell2/linux/wayland/screencopy.rs:66-89 | dll/src/desktop/shell2/linux/wayland/screencopy.rs:94-123 | dll/src/desktop/shell2/linux/wayland/screencopy.rs:132-166 | dll/src/desktop/shell2/linux/wayland/screencopy.rs:172-233 | dll/src/desktop/shell2/linux/wayland/screencopy.rs:244-310 | dll/src/desktop/shell2/linux/wayland/screencopy.rs:315-365 \u2014 These 6 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 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":"dll/src/desktop/shell2/linux/wayland/screencopy.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dd915617dd86a6e110c00bafcd5e0c9359c184a711e3d45fe3a920bdc5e5a15"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (6 members, 50\u002B identical tokens): doc/src/codegen/v2/lang_ada/types.rs:561-571 | doc/src/codegen/v2/lang_csharp/types.rs:799-809 | doc/src/codegen/v2/lang_java/types.rs:1047-1057 | doc/src/codegen/v2/lang_kotlin/mod.rs:1267-1277 | doc/src/codegen/v2/lang_ocaml/types.rs:963-973 | doc/src/codegen/v2/lang_smalltalk/types.rs:410-420 \u2014 These 6 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 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":"doc/src/codegen/v2/lang_ada/types.rs"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bd3dbf795d6ec573dba8175d2af3450f6893b4ab2f24c3f07c1b8413fa85abc"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (6 members, 50\u002B identical tokens): webrender/core/src/device/gl.rs:3661-3682 | webrender/core/src/device/gl.rs:3684-3705 | webrender/core/src/device/gl.rs:3707-3723 | webrender/core/src/device/gl.rs:3725-3741 | webrender/core/src/device/gl.rs:3743-3760 | webrender/core/src/device/gl.rs:3762-3784 \u2014 These 6 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 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":"webrender/core/src/device/gl.rs"},"region":{"startLine":3661}}}],"partialFingerprints":{"codehealthFindingId/v1":"023c6f18f51b574835ce3d0d54c851181361e771efa97f43daada22c1edc84b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): core/src/resources.rs:2634-2656 | core/src/resources.rs:2698-2717 | core/src/resources.rs:2747-2769 | core/src/resources.rs:2826-2848 | core/src/resources.rs:2894-2916 \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":"core/src/resources.rs"},"region":{"startLine":2634}}}],"partialFingerprints":{"codehealthFindingId/v1":"458cc58c51d76f226864c57815da61e91d8078681fb14ccf3d0ec5928562d149"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): css/src/system.rs:801-824 | css/src/system.rs:828-851 | css/src/system.rs:855-878 | css/src/system.rs:882-914 | css/src/system.rs:918-941 \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":"css/src/system.rs"},"region":{"startLine":801}}}],"partialFingerprints":{"codehealthFindingId/v1":"a61d312a9ac9d48260e13817417af9d1b1853f73411dcce38e8d9936f0b1275b"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): dll/src/desktop/shell2/linux/wayland/defines.rs:2066-2125 | dll/src/desktop/shell2/linux/wayland/defines.rs:2198-2252 | dll/src/desktop/shell2/linux/wayland/defines.rs:2380-2419 | dll/src/desktop/shell2/linux/wayland/defines.rs:2890-2920 | dll/src/desktop/shell2/linux/wayland/defines.rs:3057-3087 \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":"dll/src/desktop/shell2/linux/wayland/defines.rs"},"region":{"startLine":2066}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c228bb0e350adbaae527b043d7909da9d79afc85b56f3583ee867a102c4a9ac"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): dll/src/desktop/shell2/linux/wayland/mod.rs:7011-8271 | dll/src/desktop/shell2/linux/x11/mod.rs:6172-6276 | dll/src/desktop/shell2/linux/x11/mod.rs:6380-7131 | dll/src/desktop/shell2/windows/mod.rs:1817-1931 | dll/src/desktop/shell2/windows/mod.rs:1944-1984 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":7011}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a1f627861f1be79ac7cce35e2c4fc657e01a5183c4d43b84b38d3bb956bf586"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): dll/src/desktop/shell2/linux/x11/mod.rs:4340-4480 | dll/src/desktop/shell2/linux/x11/mod.rs:4782-4795 | dll/src/desktop/shell2/linux/x11/mod.rs:5598-5610 | dll/src/desktop/shell2/linux/x11/mod.rs:5616-5678 | dll/src/desktop/shell2/linux/x11/mod.rs:7929-7942 \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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":4340}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bebd05045cc1653acd56a16f5046047d59d16fa7de10b7db7ac15b65ad2b25d"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): dll/src/web/transpiler_remill.rs:6177-6207 | dll/src/web/transpiler_remill.rs:10931-10981 | dll/src/web/transpiler_remill.rs:11061-11413 | dll/src/web/transpiler_remill.rs:11423-11471 | dll/src/web/transpiler_remill.rs:11474-11503 \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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":6177}}}],"partialFingerprints":{"codehealthFindingId/v1":"dddd3f92ad9e8363492d9374a7155354306635823050edf973823b0f957a1401"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): dll/src/desktop/extra/biometric/android.rs:139-151 | dll/src/desktop/extra/geolocation/android.rs:108-120 | dll/src/desktop/extra/keyring/android.rs:106-118 | dll/src/desktop/extra/permission/android.rs:146-158 | dll/src/desktop/extra/sensors/android.rs:80-92 \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":"dll/src/desktop/extra/biometric/android.rs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cf8f0783b79e3f6e0f160deccc65d23a91e05b4f7a69592046825dbb5399fa6"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): doc/src/codegen/v2/lang_crystal/mod.rs:288-294 | doc/src/codegen/v2/lang_d/mod.rs:416-422 | doc/src/codegen/v2/lang_julia/mod.rs:182-188 | doc/src/codegen/v2/lang_odin/mod.rs:117-123 | doc/src/codegen/v2/lang_v/mod.rs:140-146 \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":"doc/src/codegen/v2/lang_crystal/mod.rs"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"e30808f02468351dce79e4b691d2b076e61b997905cef97f408bbd46ded7930f"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): doc/src/codegen/v2/lang_csharp/wrappers.rs:541-561 | doc/src/codegen/v2/lang_haskell/types.rs:466-491 | doc/src/codegen/v2/lang_java/wrappers.rs:957-977 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:370-390 | doc/src/codegen/v2/lang_ruby/wrappers.rs:630-653 \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":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"870f41ff83afa846d978f96df85feabdb443d9ce713602d9dfac6aafa283c2c3"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): doc/src/codegen/v2/lang_crystal/types.rs:324-386 | doc/src/codegen/v2/lang_d/types.rs:212-261 | doc/src/codegen/v2/lang_julia/types.rs:311-370 | doc/src/codegen/v2/lang_odin/types.rs:270-327 | doc/src/codegen/v2/lang_v/types.rs:278-338 \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":"doc/src/codegen/v2/lang_crystal/types.rs"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"18cb9c94455eea79ab127f30657254c900c3f8fdf551a0ecf2c246b8eeff6340"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): doc/src/codegen/v2/lang_algol68/wrappers.rs:119-131 | doc/src/codegen/v2/lang_cobol/wrappers.rs:87-99 | doc/src/codegen/v2/lang_freebasic/wrappers.rs:85-97 | doc/src/codegen/v2/lang_pascal/wrappers.rs:127-139 | doc/src/codegen/v2/lang_vb6/wrappers.rs:62-74 \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":"doc/src/codegen/v2/lang_algol68/wrappers.rs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"feba265d2d0f0e7e524c7d7a18aee446498a9ca568341de45bc9367134b62df3"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): layout/src/cpurender/pixmap.rs:1310-1361 | layout/src/cpurender/pixmap.rs:1422-1480 | layout/src/cpurender/raster.rs:2889-2988 | layout/src/cpurender/raster.rs:3748-3900 | layout/src/cpurender/raster.rs:4161-4355 \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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":1310}}}],"partialFingerprints":{"codehealthFindingId/v1":"2135dfb09934b3a11a7bb0440f76351f842a8acb38e5d0b756628ec58cc6c0a2"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): layout/src/dialogs/crash_reporter.rs:187-292 | layout/src/dialogs/gpu_check.rs:201-322 | layout/src/dialogs/report_problem.rs:456-568 | layout/src/dialogs/telemetry_consent.rs:189-282 | layout/src/dialogs/update_version.rs:311-420 \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":"layout/src/dialogs/crash_reporter.rs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"2457db87b229cac5e8c09cd76d05397da4155a6ddf50f6618d5e370fc9b5962e"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): layout/src/dialogs/crash_reporter.rs:294-304 | layout/src/dialogs/gpu_check.rs:383-393 | layout/src/dialogs/report_problem.rs:697-707 | layout/src/dialogs/telemetry_consent.rs:296-306 | layout/src/dialogs/update_version.rs:423-433 \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":"layout/src/dialogs/crash_reporter.rs"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"74492e9c10da4702f7fee119783e1f5600bee299058492179f7ba2df7bcafe80"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): layout/src/widgets/breadcrumb.rs:336-370 | layout/src/widgets/pagination.rs:500-610 | layout/src/widgets/radio_group.rs:545-598 | layout/src/widgets/segmented.rs:443-507 | layout/src/widgets/stepper.rs:567-669 \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":"layout/src/widgets/breadcrumb.rs"},"region":{"startLine":336}}}],"partialFingerprints":{"codehealthFindingId/v1":"0138acfbd5a6a853999337e7f4b0932ee1a8dcf7334f4b973502632d8b30d5f7"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): layout/src/xml/svg.rs:702-725 | layout/src/xml/svg.rs:740-763 | layout/src/xml/svg.rs:953-976 | layout/src/xml/svg.rs:1018-1041 | layout/src/xml/svg.rs:1097-1119 \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":"layout/src/xml/svg.rs"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b00958b124c4207b31abf4064d0c338fbe0deadd41abe98cfae00736337441d"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): core/src/xml.rs:8357-8461 | core/src/xml.rs:8472-8524 | core/src/xml.rs:8644-8753 | core/src/xml.rs:8763-8843 \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":"core/src/xml.rs"},"region":{"startLine":8357}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f96e4028ebaf17bcacb2dfb483a04f253ad7180675e29bb89ce201e74756f13"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): dll/src/desktop/display.rs:1058-1137 | dll/src/desktop/display.rs:1140-1209 | dll/src/desktop/display.rs:1212-1295 | dll/src/desktop/display.rs:1298-1421 \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":"dll/src/desktop/display.rs"},"region":{"startLine":1058}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e4f8db6c87c84a4f5b01d5a248ed8b7c671ac04822b56380a52a3ff5fc6f566"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): dll/src/desktop/extra/camera/windows.rs:447-460 | dll/src/desktop/extra/capture_slot.rs:125-132 | dll/src/desktop/extra/screencap/windows.rs:286-373 | layout/src/cpurender/raster.rs:4611-4658 \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":"dll/src/desktop/extra/camera/windows.rs"},"region":{"startLine":447}}}],"partialFingerprints":{"codehealthFindingId/v1":"b51b74545bd4d050681e97a069c60b8dd74a57a7266a6ee581334daeb45bbc7f"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): dll/src/desktop/shell2/linux/wayland/mod.rs:4950-5060 | dll/src/desktop/shell2/linux/x11/events.rs:875-999 | dll/src/desktop/shell2/macos/events.rs:459-703 | dll/src/desktop/shell2/windows/mod.rs:4030-6901 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":4950}}}],"partialFingerprints":{"codehealthFindingId/v1":"73f09f8fe76b432f741f36bc4eb33b2fbff83b8d314776628c1237776f7753ea"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): dll/src/desktop/shell2/linux/wayland/mod.rs:6257-6271 | dll/src/desktop/shell2/linux/x11/events.rs:1398-1412 | dll/src/desktop/shell2/macos/events.rs:1149-1171 | dll/src/desktop/shell2/windows/mod.rs:2155-2171 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":6257}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb33509cc1312674a7ee2f4090a38291216e7aebb7d90c7041a06b3e40a0fd7d"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): dll/src/desktop/shell2/linux/wayland/mod.rs:6275-6285 | dll/src/desktop/shell2/linux/x11/events.rs:1416-1426 | dll/src/desktop/shell2/macos/events.rs:1176-1195 | dll/src/desktop/shell2/windows/mod.rs:2175-2190 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":6275}}}],"partialFingerprints":{"codehealthFindingId/v1":"14c98cc86540e445e99b146603bc8f4fec4452d78d4ecca120c30b16aad07910"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): dll/src/desktop/shell2/linux/wayland/mod.rs:6294-6312 | dll/src/desktop/shell2/linux/x11/events.rs:1435-1453 | dll/src/desktop/shell2/macos/events.rs:1109-1140 | dll/src/desktop/shell2/windows/mod.rs:2198-2221 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":6294}}}],"partialFingerprints":{"codehealthFindingId/v1":"f577a4f3db970c42a1bb9fecd9d70f31e3a8a5472bd912d65af2d524507bc1e0"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): dll/src/desktop/shell2/linux/wayland/mod.rs:6540-6551 | dll/src/desktop/shell2/linux/x11/mod.rs:6280-6291 | dll/src/desktop/shell2/macos/mod.rs:6084-6095 | dll/src/desktop/shell2/windows/mod.rs:2233-2244 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":6540}}}],"partialFingerprints":{"codehealthFindingId/v1":"8044455b9d2f66125ac4d2832d327c505e16eb9e90db9cdb20d39bad49ea2383"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): dll/src/desktop/shell2/linux/wayland/mod.rs:7011-8271 | dll/src/desktop/shell2/linux/x11/mod.rs:6380-7131 | dll/src/desktop/shell2/macos/mod.rs:7700-8438 | dll/src/desktop/shell2/windows/mod.rs:1139-1812 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":7011}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c67cfbfc88da412cdce1014f4d40efd04a0a85f08ececdf0fde44507287cdaa"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): dll/src/desktop/shell2/linux/wayland/mod.rs:10423-10463 | dll/src/desktop/shell2/linux/wayland/mod.rs:10466-10496 | dll/src/desktop/shell2/linux/wayland/mod.rs:10575-10605 | dll/src/desktop/shell2/linux/wayland/mod.rs:10607-10629 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":10423}}}],"partialFingerprints":{"codehealthFindingId/v1":"4efc3a40bf0c966573fa54983005340c9397b6d498e2d973dd4d9df41f2bd43f"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): dll/src/desktop/shell2/linux/wayland/screencopy.rs:172-233 | dll/src/desktop/shell2/linux/wayland/screencopy.rs:244-310 | dll/src/desktop/shell2/linux/wayland/screencopy.rs:315-365 | dll/src/desktop/shell2/linux/wayland/screencopy.rs:374-418 \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":"dll/src/desktop/shell2/linux/wayland/screencopy.rs"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b187567329f1bfce83618f9db2c2a9683addda5fd201afcf58ae8d6c6b12f54"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): dll/src/desktop/shell2/linux/x11/mod.rs:5919-5953 | dll/src/desktop/shell2/linux/x11/mod.rs:5959-5998 | dll/src/desktop/shell2/linux/x11/mod.rs:7358-7441 | dll/src/desktop/shell2/linux/x11/mod.rs:8428-8482 \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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":5919}}}],"partialFingerprints":{"codehealthFindingId/v1":"82ef5e468b0eeb39c55ab52e4c0ce2170ba1599ff375a0505468e84340066c05"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): doc/src/codegen/v2/lang_cpp/cpp03.rs:490-529 | doc/src/codegen/v2/lang_cpp/cpp11.rs:393-439 | doc/src/codegen/v2/lang_cpp/cpp17.rs:572-616 | doc/src/codegen/v2/lang_cpp/cpp20.rs:259-317 \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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"3964c862109909d6f86153c4ddbdb5960f5afca5678d96bced8b86df1bc0c7bf"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): doc/src/codegen/v2/lang_cpp/cpp03.rs:554-587 | doc/src/codegen/v2/lang_cpp/cpp11.rs:474-508 | doc/src/codegen/v2/lang_cpp/cpp17.rs:663-700 | doc/src/codegen/v2/lang_cpp/cpp20.rs:362-399 \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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ea97906493b6833a4e28df86871475ee9bd9159f42e1e7460bbdf019bd565d5"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): doc/src/codegen/v2/lang_csharp/wrappers.rs:72-134 | doc/src/codegen/v2/lang_java/wrappers.rs:1228-1294 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:69-131 | doc/src/codegen/v2/lang_node/wrappers.rs:1286-1351 \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":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3b35b9a600a2c8be991b56554bf60572a72e2f4440a8666138fede60aecfd0a"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): doc/src/codegen/v2/lang_csharp/wrappers.rs:519-533 | doc/src/codegen/v2/lang_java/wrappers.rs:105-119 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:352-366 | doc/src/codegen/v2/lang_smalltalk/wrappers.rs:94-108 \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":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":519}}}],"partialFingerprints":{"codehealthFindingId/v1":"562c0f5b67fc03450a04f75339ad8fa6a6b86dc74d4998a9f6e92ba90cc282bb"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): doc/src/codegen/v2/lang_csharp/wrappers.rs:1425-1938 | doc/src/codegen/v2/lang_java/wrappers.rs:1342-1717 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:1538-1733 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:1742-1978 \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":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":1425}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d78c59b9591901a9155efcf55dfeb81e4dd1c0b09799638fd57af82d8661de7"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): doc/src/codegen/v2/lang_crystal/types.rs:134-154 | doc/src/codegen/v2/lang_julia/types.rs:170-192 | doc/src/codegen/v2/lang_odin/types.rs:118-138 | doc/src/codegen/v2/lang_v/types.rs:123-143 \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":"doc/src/codegen/v2/lang_crystal/types.rs"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b5ce38f0190f9ea30d4d942302f07b83d55a8eb6787ed00c69bbe56949db9fa"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): doc/src/codegen/v2/lang_ada/types.rs:107-194 | doc/src/codegen/v2/lang_cobol/types.rs:152-205 | doc/src/codegen/v2/lang_fortran/types.rs:61-172 | doc/src/codegen/v2/lang_pascal/types.rs:48-146 \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":"doc/src/codegen/v2/lang_ada/types.rs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"9022f29ff7efb0bffe5ae81b092cfb0dd97bd1836e92458a8fedfe77ba671781"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): doc/src/codegen/v2/lang_crystal/functions.rs:81-114 | doc/src/codegen/v2/lang_d/functions.rs:51-73 | doc/src/codegen/v2/lang_odin/functions.rs:53-85 | doc/src/codegen/v2/lang_v/functions.rs:72-99 \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":"doc/src/codegen/v2/lang_crystal/functions.rs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d8bce10f03a1100e12e82a8f781cd61096d6bc51ed2824049b95de6703438f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): doc/src/codegen/v2/lang_freebasic/types.rs:149-174 | doc/src/codegen/v2/lang_freebasic/types.rs:180-289 | doc/src/codegen/v2/lang_vb6/types.rs:166-192 | doc/src/codegen/v2/lang_vb6/types.rs:216-281 \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":"doc/src/codegen/v2/lang_freebasic/types.rs"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"448915bac746b2393b3722641050832b8038ea8654563203334b3d9cec8b3801"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): layout/src/cpurender/pixmap.rs:65-124 | layout/src/cpurender/pixmap.rs:169-308 | layout/src/cpurender/pixmap.rs:348-489 | layout/src/cpurender/raster.rs:4663-4687 \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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"4599e4522644249cb548e1f66c2db27fd4240d9f005dd3a8940642c9cb65c4a8"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): layout/src/font.rs:2504-2514 | layout/src/font.rs:2516-2526 | layout/src/text3/default.rs:381-391 | layout/src/text3/default.rs:393-404 \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":"layout/src/font.rs"},"region":{"startLine":2504}}}],"partialFingerprints":{"codehealthFindingId/v1":"92a7e9485605ac91f71104fe1fd84b2ba5543e176233744fd8ee66ead38540d0"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): layout/src/widgets/backstage.rs:244-301 | layout/src/widgets/quick_access.rs:289-334 | layout/src/widgets/ribbon.rs:621-634 | layout/src/widgets/statusbar.rs:312-357 \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":"layout/src/widgets/backstage.rs"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"1430695d9e956a912c8b66ead6f08bcc022f4ef146ad9eeaf59e05fb9cd6af0b"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): layout/src/widgets/quick_access.rs:363-377 | layout/src/widgets/quick_access.rs:406-420 | layout/src/widgets/statusbar.rs:426-440 | layout/src/widgets/statusbar.rs:465-479 \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":"layout/src/widgets/quick_access.rs"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"24997a3806afb59a73286c5d83f7761654b9b77c983661f929f0be922b021708"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): layout/src/widgets/ribbon.rs:1015-1025 | layout/src/widgets/ribbon.rs:1133-1143 | layout/src/widgets/ribbon.rs:1298-1308 | layout/src/widgets/ribbon.rs:1347-1357 \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":"layout/src/widgets/ribbon.rs"},"region":{"startLine":1015}}}],"partialFingerprints":{"codehealthFindingId/v1":"abc9fbf4ec61af1544081fd2ffa6a959ae96bd0c8a46832852430a110dd05d4e"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): layout/src/widgets/text_area.rs:653-676 | layout/src/widgets/text_area.rs:679-705 | layout/src/widgets/text_input.rs:1026-1054 | layout/src/widgets/text_input.rs:1057-1085 \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":"layout/src/widgets/text_area.rs"},"region":{"startLine":653}}}],"partialFingerprints":{"codehealthFindingId/v1":"7544825d0e01595763a8a54919ed47a338f3cf57af92b2244de5af1dc46c5462"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): layout/src/window.rs:2810-2841 | layout/src/window.rs:3537-3639 | layout/src/window.rs:3840-4015 | layout/src/window.rs:4096-4180 \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":"layout/src/window.rs"},"region":{"startLine":2810}}}],"partialFingerprints":{"codehealthFindingId/v1":"871d50b25bd9b0a6df25f3edb6d57d201c760ae6591c13e293ec00336507f149"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (121 lines \u00D7 3): webrender/core/src/batch.rs:2903-3023 | webrender/core/src/batch.rs:3030-3150 | webrender/core/src/batch.rs:3157-3277 \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":"webrender/core/src/batch.rs"},"region":{"startLine":2903}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b04dd765d8d88614bfacb4f110bd3a18fdc0fe5c4891983284fa5a222e95f3a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (112\u2013119 lines \u00D7 2): doc/src/codegen/v2/rust/dynamic_binding.rs:152-270 | doc/src/codegen/v2/rust/dynamic_binding.rs:281-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":"doc/src/codegen/v2/rust/dynamic_binding.rs"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1d2bb6f00b712070a08a9eebbf5909c6fe66206d7b65cb82a7a72a0c6a98ad4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (94 lines \u00D7 2): doc/src/patch/parser.rs:297-390 | doc/src/patch/parser.rs:406-499 \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":"doc/src/patch/parser.rs"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e90ce0d69300834015d41829ade5fe8b511c87b0c4d97c2280d2b26525e72f7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (89\u201390 lines \u00D7 2): webrender/core/src/picture.rs:4351-4439 | webrender/core/src/picture.rs:4490-4579 \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":"webrender/core/src/picture.rs"},"region":{"startLine":4351}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ab24612976b449d54ad678796edeff2f7a66bed389ee5c4b96901b25efb1070"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (83 lines \u00D7 2): layout/src/widgets/alert.rs:112-194 | layout/src/widgets/toast.rs:133-215 \u2014 before extracting anything, compare \u0060layout/src/widgets/alert.rs\u0060 and \u0060layout/src/widgets/toast.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 122 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":"layout/src/widgets/alert.rs"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"041b4e81eba55eac62f0b3817f79db8a89518d939de10ae035af98a561593393"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (80 lines \u00D7 3): layout/src/widgets/node_graph.rs:1502-1581 | layout/src/widgets/node_graph.rs:1591-1670 | layout/src/widgets/node_graph.rs:1929-2008 \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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":1502}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a61490e5e03b4bf779fb81f6d4625423c0cb86e373564b148dc152407b97e0e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (78\u201379 lines \u00D7 2): doc/src/codegen/v2/lang_kotlin/wrappers.rs:1654-1732 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:1896-1973 \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":"doc/src/codegen/v2/lang_kotlin/wrappers.rs"},"region":{"startLine":1654}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcc36b1246400e0d6e06395815aba086a4f817415ef2eec60be7ad1c3173b562"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (74\u201376 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/gl.rs:175-248 | dll/src/desktop/shell2/linux/x11/gl.rs:189-264 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/gl.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/gl.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 133 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/gl.rs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ac2a6d637a5f7458b0bf0ea0dc25391df509056fca4c18fceac7a1f87ac362f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (74 lines \u00D7 2): layout/src/widgets/themes/flat.rs:589-662 | layout/src/widgets/themes/flora.rs:811-884 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":589}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e3c913d0e1eb330fa78d8fd0ec3b8e576568a14e3a86d0a75e0170deb3ed76d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (65\u201370 lines \u00D7 2): layout/src/widgets/themes/flat.rs:1365-1429 | layout/src/widgets/themes/flora.rs:1757-1826 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":1365}}}],"partialFingerprints":{"codehealthFindingId/v1":"233e83c9265b41e9e8fa90c56ddfff8d7a2e6ecd3ebc3e56804b07a6130bc9ff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (65 lines \u00D7 2): webrender/core/src/render_task.rs:2429-2493 | webrender/core/src/render_task.rs:2557-2621 \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":"webrender/core/src/render_task.rs"},"region":{"startLine":2429}}}],"partialFingerprints":{"codehealthFindingId/v1":"1052b0efb0e28d4c1d898c413487ce83729cfde230be6ab043d1a2ba54b4a5c6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (62\u201363 lines \u00D7 2): layout/src/widgets/themes/flat.rs:1077-1138 | layout/src/widgets/themes/flora.rs:1441-1503 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":1077}}}],"partialFingerprints":{"codehealthFindingId/v1":"a78df5a2e66433d203328e48d0d0460f9962e429d5c3965d6355205a6d6bcaef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (58\u201359 lines \u00D7 3): doc/src/codegen/v2/lang_cpp/cpp11.rs:328-386 | doc/src/codegen/v2/lang_cpp/cpp17.rs:508-565 | doc/src/codegen/v2/lang_cpp/cpp20.rs:194-252 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp17.rs\u0060 as WHOLE FILES: this scan already matched 38 separate duplicated blocks between them, totalling at least 759 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":"doc/src/codegen/v2/lang_cpp/cpp11.rs"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"42914dd55bc75fb5e14999d0bfa07c8cdde83df86b05d941ca9b923a7ed0c347"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (55\u201357 lines \u00D7 2): doc/src/codegen/v2/rust/static_binding.rs:239-295 | doc/src/codegen/v2/rust/static_binding.rs:306-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":"doc/src/codegen/v2/rust/static_binding.rs"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"a828f29fae05c534ff8ccb0b76d6880d4e2ac2a9deb8df76580f764852f2c527"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (50\u201357 lines \u00D7 2): doc/src/codegen/v2/lang_lisp/types.rs:44-100 | doc/src/codegen/v2/lang_racket/types.rs:42-91 \u2014 \u0060doc/src/codegen/v2/lang_lisp/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_racket/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 84 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_lisp/types.rs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"57db4d4abb9c582139e033b26a134e18aad2646259b4604cc48dce012944858c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (45\u201356 lines \u00D7 2): dll/src/desktop/shell2/android/mod.rs:1711-1766 | dll/src/desktop/shell2/android/mod.rs:1918-1962 \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":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":1711}}}],"partialFingerprints":{"codehealthFindingId/v1":"77de9be162a656405cc64cc2757daec2b6d78c6b501babefed05dc6d1761d71e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (39\u201354 lines \u00D7 2): dll/src/desktop/shell2/headless/mod.rs:1719-1772 | dll/src/desktop/shell2/ios/mod.rs:1936-1974 \u2014 \u0060dll/src/desktop/shell2/headless/mod.rs\u0060 and \u0060dll/src/desktop/shell2/ios/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 6 separate duplicated blocks between them, totalling at least 136 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/headless/mod.rs"},"region":{"startLine":1719}}}],"partialFingerprints":{"codehealthFindingId/v1":"64aeea13e93104ab1b6212bc42858e7858d7cca1ead36ed372d15a22f0b097de"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (46\u201353 lines \u00D7 2): dll/src/web/transpiler_remill.rs:1345-1397 | dll/src/web/transpiler_remill.rs:6700-6745 \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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":1345}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5f8ebf15b34912ce544578d8859f7ef50f0bc9a838c6c86f1b00d64fcf1ca48"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (44\u201352 lines \u00D7 3): doc/src/codegen/v2/lang_cpp/cpp11.rs:651-694 | doc/src/codegen/v2/lang_cpp/cpp17.rs:147-198 | doc/src/codegen/v2/lang_cpp/cpp20.rs:624-667 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp17.rs\u0060 as WHOLE FILES: this scan already matched 38 separate duplicated blocks between them, totalling at least 759 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":"doc/src/codegen/v2/lang_cpp/cpp11.rs"},"region":{"startLine":651}}}],"partialFingerprints":{"codehealthFindingId/v1":"183263bef5fa8bcac4595a90b8dd7fb05c7c14895fe8da62c1caddf29d538618"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (47\u201351 lines \u00D7 2): core/src/xml.rs:7241-7287 | core/src/xml.rs:7497-7547 \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":"core/src/xml.rs"},"region":{"startLine":7241}}}],"partialFingerprints":{"codehealthFindingId/v1":"4306728f9e1831d2086847140e78efedef72a8c177e0444581bf1f2055fff4ee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (42\u201351 lines \u00D7 2): layout/src/solver3/fc.rs:8890-8931 | layout/src/solver3/fc.rs:9419-9469 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":8890}}}],"partialFingerprints":{"codehealthFindingId/v1":"55a43474700cc07abdffeb131ad4b65f640e2e3eb5221e1c72b52e8fe9465abf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (45\u201350 lines \u00D7 2): doc/src/main.rs:1358-1402 | doc/src/main.rs:1433-1482 \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":"doc/src/main.rs"},"region":{"startLine":1358}}}],"partialFingerprints":{"codehealthFindingId/v1":"3481c1a00ac1d439cf8853d95f9b8dd9ef13ea1f3b3dc0d38e0d0e6cf2bb29ce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (49 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/gl.rs:104-152 | dll/src/desktop/shell2/linux/x11/gl.rs:102-150 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/gl.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/gl.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 133 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/gl.rs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"a793dacf42752b80881fc79ded14824e691e71f0f283e95634fca614762d3d2f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (47\u201348 lines \u00D7 2): doc/src/codegen/v2/lang_csharp/wrappers.rs:1838-1884 | doc/src/codegen/v2/lang_csharp/wrappers.rs:1886-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":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":1838}}}],"partialFingerprints":{"codehealthFindingId/v1":"b71addfb4a4c5b611ef24982c940da8ba191f009e6674cbf5b1647038a21f485"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (48 lines \u00D7 2): layout/src/widgets/badge.rs:77-124 | layout/src/widgets/chip.rs:158-205 \u2014 before extracting anything, compare \u0060layout/src/widgets/badge.rs\u0060 and \u0060layout/src/widgets/chip.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 82 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":"layout/src/widgets/badge.rs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"30a851a31bc76ab0a626504557ca1955e13f4312b555c5a4ad1f9c31f9050e4a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (48 lines \u00D7 2): layout/src/widgets/themes/flat.rs:778-825 | layout/src/widgets/themes/flora.rs:1038-1085 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":778}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb1a6b401085df0bf947c58461b5a32c7393632baf76ea0f61a614bc28bb2c3e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (40\u201347 lines \u00D7 2): doc/src/codegen/v2/lang_crystal/types.rs:45-91 | doc/src/codegen/v2/lang_d/types.rs:43-82 \u2014 \u0060doc/src/codegen/v2/lang_crystal/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_d/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 67 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/types.rs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"a46a66aa2d80e4cdd63b39d7d60ab5efdda53dd74c2246eacd9f90a62261be18"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (46 lines \u00D7 2): doc/src/codegen/v2/lang_odin/types.rs:39-84 | doc/src/codegen/v2/lang_v/types.rs:39-84 \u2014 \u0060doc/src/codegen/v2/lang_odin/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_v/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 16 separate duplicated blocks between them, totalling at least 175 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_odin/types.rs"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"13022b0040390cfd2acb98cc44695e16a08b11cb1c8606e77df6373a97e437d6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (41\u201346 lines \u00D7 2): layout/src/text3/cache.rs:7981-8026 | layout/src/text3/cache.rs:8184-8224 \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":"layout/src/text3/cache.rs"},"region":{"startLine":7981}}}],"partialFingerprints":{"codehealthFindingId/v1":"772b6a46458cd21481c3da1629535c214017c6cace2a078059e63497b8284fe3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (38\u201345 lines \u00D7 2): core/src/diff.rs:383-427 | core/src/diff.rs:1448-1485 \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":"core/src/diff.rs"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"13ee79a5cd195c52da521b1cc989b7f5f48665af9bcc23356c99daac8e873981"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (41\u201344 lines \u00D7 3): doc/src/codegen/v2/lang_cpp/cpp11.rs:703-743 | doc/src/codegen/v2/lang_cpp/cpp17.rs:214-255 | doc/src/codegen/v2/lang_cpp/cpp20.rs:679-722 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp17.rs\u0060 as WHOLE FILES: this scan already matched 38 separate duplicated blocks between them, totalling at least 759 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":"doc/src/codegen/v2/lang_cpp/cpp11.rs"},"region":{"startLine":703}}}],"partialFingerprints":{"codehealthFindingId/v1":"6506bc19b1238c5730be5b029c0acc83c7bccf6ae0463f0746eacc63d103c440"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (39\u201342 lines \u00D7 2): dll/src/desktop/shell2/linux/x11/mod.rs:6948-6989 | dll/src/desktop/shell2/windows/mod.rs:1660-1698 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 and \u0060dll/src/desktop/shell2/windows/mod.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 443 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":6948}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e1108790fe912f396349063c488a500590d1cf868af5c8be6ceaa96abcce465"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (41\u201342 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:2470-2511 | doc/src/codegen/v2/rust/shared.rs:85-125 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_rust.rs\u0060 and \u0060doc/src/codegen/v2/rust/shared.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 200 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2470}}}],"partialFingerprints":{"codehealthFindingId/v1":"8606f425bd2424c096d7bd210418a6206abd2151eb964b582f4e28e689f0d438"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (38\u201341 lines \u00D7 2): doc/src/codegen/v2/lang_freebasic/types.rs:45-85 | doc/src/codegen/v2/lang_vb6/types.rs:66-103 \u2014 \u0060doc/src/codegen/v2/lang_freebasic/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_vb6/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 8 separate duplicated blocks between them, totalling at least 109 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_freebasic/types.rs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d85b08148a4f034e902aa0a3bf4b3793c72b8fddd3b1039d55a0b7a29178bb0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (40\u201341 lines \u00D7 2): webrender/core/src/batch.rs:2410-2449 | webrender/core/src/batch.rs:2541-2581 \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":"webrender/core/src/batch.rs"},"region":{"startLine":2410}}}],"partialFingerprints":{"codehealthFindingId/v1":"4acbc6d0b95671bd55c1660acd00844403af259e1e797849351bf2dca9813f76"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (40 lines \u00D7 2): layout/src/widgets/themes/flat.rs:1038-1077 | layout/src/widgets/themes/flora.rs:1310-1349 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":1038}}}],"partialFingerprints":{"codehealthFindingId/v1":"4750409666db39c8f8a1c12d0735cd458ae6d39742703ef25f40a5c3578d0513"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (40 lines \u00D7 2): layout/src/widgets/themes/flat.rs:2120-2159 | layout/src/widgets/themes/flora.rs:2434-2473 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":2120}}}],"partialFingerprints":{"codehealthFindingId/v1":"d29b2738ff81241d972096fe79cb1824210b80162625bbb1fe180ac95e9fa49b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23\u201339 lines \u00D7 2): core/src/styled_dom.rs:1985-2007 | core/src/styled_dom.rs:2167-2205 \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":"core/src/styled_dom.rs"},"region":{"startLine":1985}}}],"partialFingerprints":{"codehealthFindingId/v1":"720e7eb8db7b76a36294b4ce928203528f04b55a282424de8f8c345e90ab0727"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33\u201339 lines \u00D7 2): dll/src/desktop/shell2/macos/mod.rs:4266-4304 | dll/src/desktop/shell2/macos/mod.rs:4351-4383 \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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":4266}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fe01a4005e6334e04ead3ffa1f271e61ba97cb71ae8fff5685abca88c291de2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (38\u201339 lines \u00D7 2): layout/src/cpurender/compositor.rs:3127-3164 | layout/src/cpurender/compositor.rs:3195-3233 \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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":3127}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c523280cbfcdaafc2a92d1cd49f86522c2de53fca713f1bb52ebddc76c6ac90"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (38 lines \u00D7 4): doc/src/codegen/v2/lang_cpp/cpp03.rs:491-528 | doc/src/codegen/v2/lang_cpp/cpp11.rs:394-431 | doc/src/codegen/v2/lang_cpp/cpp17.rs:573-610 | doc/src/codegen/v2/lang_cpp/cpp20.rs:260-297 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":491}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1d78a6a27e99700a89590208967309615fce0149b90566dfa70f51d505e7545"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (36\u201338 lines \u00D7 3): doc/src/reftest/autoreview.rs:618-653 | doc/src/reftest/autoreview.rs:847-884 | doc/src/reftest/autoreview.rs:1771-1807 \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":"doc/src/reftest/autoreview.rs"},"region":{"startLine":618}}}],"partialFingerprints":{"codehealthFindingId/v1":"e74948b2076dedff4c1429ae74221f7ebdb7775a2d9a7d30c6b5b0a145eeed6f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (38 lines \u00D7 2): doc/src/reftest/regression.rs:1221-1258 | doc/src/reftest/regression.rs:1316-1353 \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":"doc/src/reftest/regression.rs"},"region":{"startLine":1221}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0ae949def38e573e94aea60ba6b909d7bf458388bbb3c27467e696fe812e9e9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (36\u201337 lines \u00D7 3): doc/src/codegen/v2/lang_cpp/cpp03.rs:342-378 | doc/src/codegen/v2/lang_cpp/cpp11.rs:249-284 | doc/src/codegen/v2/lang_cpp/cpp17.rs:406-441 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fb4f408033ecda4e8e61af3600e791a805e16886f900a51b16f3afa4b1e45ba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35\u201337 lines \u00D7 2): doc/src/autofix/function_diff.rs:1437-1473 | doc/src/autofix/function_diff.rs:1507-1541 \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":"doc/src/autofix/function_diff.rs"},"region":{"startLine":1437}}}],"partialFingerprints":{"codehealthFindingId/v1":"565d5ebb767e544ce6ad33326ed91e8641632fe6b45d70420a247121b48f9b7b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (37 lines \u00D7 2): doc/src/codegen/v2/rust/dynamic_binding.rs:42-78 | doc/src/codegen/v2/rust/static_binding.rs:108-144 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/rust/dynamic_binding.rs\u0060 and \u0060doc/src/codegen/v2/rust/static_binding.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 66 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":"doc/src/codegen/v2/rust/dynamic_binding.rs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1807d2c65482555fdde2f13d20206f78496272d88eeb98611d527ebc2dcf531"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (37 lines \u00D7 2): layout/src/solver3/fc.rs:8969-9005 | layout/src/solver3/fc.rs:9530-9566 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":8969}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f49e662abf56667e55c54aa8cb5815023e0770edcb5c4ec4d4b53fda2e9b43b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35\u201336 lines \u00D7 5): layout/src/widgets/node_graph.rs:3623-3658 | layout/src/widgets/node_graph.rs:3672-3707 | layout/src/widgets/node_graph.rs:3721-3756 | layout/src/widgets/node_graph.rs:3770-3804 | layout/src/widgets/node_graph.rs:3818-3853 \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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":3623}}}],"partialFingerprints":{"codehealthFindingId/v1":"62e4f61c8663a7e14dcedbbf456bf25585cb6a8efb6aa644cc5dbe331867f515"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (36 lines \u00D7 3): dll/src/desktop/compositor2.rs:1659-1694 | dll/src/desktop/compositor2.rs:1848-1883 | dll/src/desktop/compositor2.rs:1970-2005 \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":"dll/src/desktop/compositor2.rs"},"region":{"startLine":1659}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7ae9f2fb48c81d74049d962e10cb4dc877ec3796a99f1e8b68a1c8069bd2a16"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (3\u201336 lines \u00D7 3): core/src/window.rs:2585-2587 | css/src/props/property.rs:1576-1592 | css/src/props/property.rs:1801-1836 \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":"core/src/window.rs"},"region":{"startLine":2585}}}],"partialFingerprints":{"codehealthFindingId/v1":"5179a9484b733fa2f5e1e96432e233bb9e41e7e544970395300e3b57f4b20dbb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (36 lines \u00D7 2): doc/src/codegen/v2/lang_go/wrappers.rs:363-398 | doc/src/codegen/v2/lang_go/wrappers.rs:458-493 \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":"doc/src/codegen/v2/lang_go/wrappers.rs"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"e432dddaf3380e47b708a7cc11c2ecdfba83e813be09260be727283408f5ac19"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26\u201335 lines \u00D7 2): dll/src/web/transpiler_remill.rs:10935-10960 | dll/src/web/transpiler_remill.rs:11066-11100 \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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":10935}}}],"partialFingerprints":{"codehealthFindingId/v1":"bac3094526292e06514ee62f6eeb757c57684d56dba1938a951f9a6dc4f7ae35"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35 lines \u00D7 2): doc/src/codegen/v2/lang_kotlin/wrappers.rs:1610-1644 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:1851-1885 \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":"doc/src/codegen/v2/lang_kotlin/wrappers.rs"},"region":{"startLine":1610}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2780878980c98b07f586eac0710a476b911a98ec579bd5dab2950ac41205536"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (31\u201335 lines \u00D7 2): doc/src/reftest/autoreview.rs:1467-1501 | doc/src/reftest/autoreview.rs:1996-2026 \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":"doc/src/reftest/autoreview.rs"},"region":{"startLine":1467}}}],"partialFingerprints":{"codehealthFindingId/v1":"91a1938b2a8a86b4fd0ff138950b1b9b543fb4419e0cb069353f8636be5b25e9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (31\u201335 lines \u00D7 2): layout/src/widgets/node_graph.rs:873-907 | layout/src/widgets/node_graph.rs:966-996 \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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":873}}}],"partialFingerprints":{"codehealthFindingId/v1":"c915d79afb353667db1f50f4d1aff77992ba3d1ac97cdda2682eb977347f0f47"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33\u201334 lines \u00D7 3): dll/src/desktop/shell2/linux/wayland/mod.rs:5004-5036 | dll/src/desktop/shell2/linux/x11/events.rs:942-974 | dll/src/desktop/shell2/windows/mod.rs:5600-5633 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/events.rs\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 249 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":5004}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c9fd6b465ee131ee0c2bb8ef38316d4a484ab01fb1fa09b866a1de560534e4b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34 lines \u00D7 3): doc/src/codegen/v2/lang_cpp/cpp03.rs:679-712 | doc/src/codegen/v2/lang_cpp/cpp11.rs:601-634 | doc/src/codegen/v2/lang_cpp/cpp17.rs:811-844 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":679}}}],"partialFingerprints":{"codehealthFindingId/v1":"90d1cdbb764df2791aba335f42d5dac3eb7797a23e3048b663cf4faf2a7a26ce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33\u201334 lines \u00D7 2): doc/src/codegen/v2/lang_swift/wrappers.rs:1035-1067 | doc/src/codegen/v2/lang_swift/wrappers.rs:3172-3205 \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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":1035}}}],"partialFingerprints":{"codehealthFindingId/v1":"806d3dc9a72e4bb2d87c066d651e6e963ee3ee6a9c0968d97c6a7510e1f67790"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26\u201334 lines \u00D7 2): layout/src/text3/cache.rs:7927-7960 | layout/src/text3/cache.rs:8156-8181 \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":"layout/src/text3/cache.rs"},"region":{"startLine":7927}}}],"partialFingerprints":{"codehealthFindingId/v1":"a48049885a1e9595175a12e6f51283f4057780f8c2f18e904d330bd5363776c5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34 lines \u00D7 2): layout/src/widgets/themes/flat.rs:1470-1503 | layout/src/widgets/themes/flora.rs:1877-1910 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":1470}}}],"partialFingerprints":{"codehealthFindingId/v1":"e749f4edc3f6e97be583ef1432b0757083228eabe7bcefd8aa58d5eb6b36b4a5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 2): dll/src/desktop/shell2/linux/x11/mod.rs:4218-4250 | dll/src/desktop/shell2/windows/mod.rs:7637-7669 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 and \u0060dll/src/desktop/shell2/windows/mod.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 443 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":4218}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5f9c7dec41a9c3223cf66cc1552209a70556e05f3aa62a8177a6e4de669e396"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30\u201333 lines \u00D7 2): doc/src/api.rs:2022-2054 | doc/src/api.rs:2295-2324 \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":"doc/src/api.rs"},"region":{"startLine":2022}}}],"partialFingerprints":{"codehealthFindingId/v1":"0578e33102bbe7e20c7e8e3960b6f08ccb80038dc38bc77478b8371906dc1dae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:4873-4905 | doc/src/codegen/v2/lang_rust.rs:4928-4960 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":4873}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0dd8ad0f2602063ab1b89573d30fc4f1e9cbc51ebc6c99e1f96b1f849cd413c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 2): doc/src/autofix/debug.rs:1171-1203 | doc/src/autofix/debug.rs:1236-1268 \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":"doc/src/autofix/debug.rs"},"region":{"startLine":1171}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c0acc619d216630b900b47727e89d5745edc1ba39391e8a781160de6c2886fb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (32\u201333 lines \u00D7 2): layout/src/solver3/fc.rs:8856-8887 | layout/src/solver3/fc.rs:9380-9412 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":8856}}}],"partialFingerprints":{"codehealthFindingId/v1":"d90879e73be47eb4def11105cd34a8830b109db58c17555586821e721e4bbbf6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30\u201333 lines \u00D7 2): layout/src/widgets/camera.rs:453-485 | layout/src/widgets/screencap.rs:402-431 \u2014 before extracting anything, compare \u0060layout/src/widgets/camera.rs\u0060 and \u0060layout/src/widgets/screencap.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 107 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":"layout/src/widgets/camera.rs"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b47b042ad395f17959fd7d20a3442c902853c50e15dba2afd71e49729057a9f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27\u201332 lines \u00D7 4): doc/src/codegen/v2/lang_cpp/cpp11.rs:74-103 | doc/src/codegen/v2/lang_cpp/cpp14.rs:59-85 | doc/src/codegen/v2/lang_cpp/cpp17.rs:73-104 | doc/src/codegen/v2/lang_cpp/cpp20.rs:83-111 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp14.rs\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 164 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":"doc/src/codegen/v2/lang_cpp/cpp11.rs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7aca48db73d22cf6f0bfcceb6e3c19a664f6a8f5d39aea0d770e47ad438fdc3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28\u201332 lines \u00D7 2): dll/src/desktop/shell2/run.rs:1315-1346 | dll/src/desktop/shell2/run.rs:1497-1524 \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":"dll/src/desktop/shell2/run.rs"},"region":{"startLine":1315}}}],"partialFingerprints":{"codehealthFindingId/v1":"135d00a22f599f078e4736b2de366cfefc232b58cb3f523f7acb94c8e0600137"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30\u201332 lines \u00D7 2): doc/src/codegen/v2/lang_cpp/cpp17.rs:624-655 | doc/src/codegen/v2/lang_cpp/cpp20.rs:325-354 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp17.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp20.rs\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 598 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":"doc/src/codegen/v2/lang_cpp/cpp17.rs"},"region":{"startLine":624}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1662046580efc194eb2e1d229da282efc9e434a255eae6f3cfa136607ca8320"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27\u201332 lines \u00D7 2): doc/src/codegen/v2/lang_node/wrappers.rs:453-484 | doc/src/codegen/v2/lang_node/wrappers.rs:1145-1171 \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":"doc/src/codegen/v2/lang_node/wrappers.rs"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f8218f7240e4ca80ccffb6f1e1dedfd55af0b86a405e2d5f98694f55ad4cad8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (31\u201332 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:2431-2462 | doc/src/codegen/v2/rust/shared.rs:47-77 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_rust.rs\u0060 and \u0060doc/src/codegen/v2/rust/shared.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 200 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2431}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0975faaf86c4fd5b04feeec544b119dee57a84b8c519e7bab1d558491bd3dac"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23\u201332 lines \u00D7 2): layout/src/solver3/cache.rs:2055-2086 | layout/src/solver3/cache.rs:2196-2218 \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":"layout/src/solver3/cache.rs"},"region":{"startLine":2055}}}],"partialFingerprints":{"codehealthFindingId/v1":"f63c277c09665e98cb61a6694a7b64e61504c2e5435c394e99d876b88cec84de"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (32 lines \u00D7 2): layout/src/xml/svg.rs:1341-1372 | layout/src/xml/svg.rs:1401-1432 \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":"layout/src/xml/svg.rs"},"region":{"startLine":1341}}}],"partialFingerprints":{"codehealthFindingId/v1":"a067a827d3c7343367d8d66f9113b14f446cdd84d19da9744ec72bc15b16b0c9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30\u201331 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:10884-10914 | dll/src/desktop/shell2/linux/x11/mod.rs:8642-8671 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":10884}}}],"partialFingerprints":{"codehealthFindingId/v1":"812c83ebda6176ed10eb7a7f6a52d3f7acc4cbc2ad39941568692a409c1faa89"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (31 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:10916-10946 | dll/src/desktop/shell2/linux/x11/mod.rs:8673-8703 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":10916}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d7d7fc48bf7d7bc9a4d2b3f75ea4eb45b51015eac2f61a38e092d300a9ec07b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30\u201331 lines \u00D7 2): dll/src/desktop/extra/permission/ios.rs:100-130 | dll/src/desktop/extra/permission/macos.rs:200-229 \u2014 before extracting anything, compare \u0060dll/src/desktop/extra/permission/ios.rs\u0060 and \u0060dll/src/desktop/extra/permission/macos.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 100 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":"dll/src/desktop/extra/permission/ios.rs"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"2994f38f5a3dfba7f0c7b97b4992050e0563d04bbf263b3bbd5cbe16269193c7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26\u201331 lines \u00D7 2): webrender/core/src/quad.rs:210-240 | webrender/core/src/quad.rs:635-660 \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":"webrender/core/src/quad.rs"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d8f2bacdb39b5b148cddd1e14aa689dea8859c96668a213d591d92437e42cc4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26\u201330 lines \u00D7 4): doc/src/reftest/autodoc.rs:1065-1090 | doc/src/reftest/autoreview.rs:700-729 | doc/src/reftest/autoreview.rs:936-965 | doc/src/reftest/autoreview.rs:1841-1868 \u2014 before extracting anything, compare \u0060doc/src/reftest/autodoc.rs\u0060 and \u0060doc/src/reftest/autoreview.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 207 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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":1065}}}],"partialFingerprints":{"codehealthFindingId/v1":"624be67c5fa83c95697de88495ff324e804495748f25161677844ea25c1f8978"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28\u201330 lines \u00D7 3): doc/src/reftest/regression.rs:900-927 | doc/src/reftest/regression.rs:1004-1033 | doc/src/reftest/regression.rs:1797-1826 \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":"doc/src/reftest/regression.rs"},"region":{"startLine":900}}}],"partialFingerprints":{"codehealthFindingId/v1":"75c4671e08a90a9ef6c9dcb539b816b2ac890cf0ea0e7dbcdf13eb419fee8108"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 2): dll/src/desktop/shell2/linux/x11/mod.rs:6240-6269 | dll/src/desktop/shell2/windows/mod.rs:1899-1928 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 and \u0060dll/src/desktop/shell2/windows/mod.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 443 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":6240}}}],"partialFingerprints":{"codehealthFindingId/v1":"47c56e9294c6da331fac37b7c25cb8c0c0b04ddcaf8bb0f3152fa40e32ed77a1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29\u201330 lines \u00D7 2): doc/src/api.rs:1847-1876 | doc/src/api.rs:1895-1923 \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":"doc/src/api.rs"},"region":{"startLine":1847}}}],"partialFingerprints":{"codehealthFindingId/v1":"7abd171f0792925cedc86518c3dfe916273be1ceb0fc220890a6dafeeafbf148"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 2): doc/src/codegen/v2/lang_python.rs:1550-1579 | doc/src/codegen/v2/lang_python.rs:1599-1628 \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":"doc/src/codegen/v2/lang_python.rs"},"region":{"startLine":1550}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aa0ee98d2c1161cbd282af767edca585a4e5722ce9699d384812eff8afa3351"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 2): doc/src/codegen/v2/lang_lisp/wrappers.rs:224-253 | doc/src/codegen/v2/lang_lisp/wrappers.rs:281-310 \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":"doc/src/codegen/v2/lang_lisp/wrappers.rs"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"60db6a417004dc3e70706562ff1d9f05292b9adb9e32a2dfb6fecdbdd43efd71"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29 lines \u00D7 2): layout/src/window.rs:13293-13321 | layout/src/window.rs:13326-13354 \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":"layout/src/window.rs"},"region":{"startLine":13293}}}],"partialFingerprints":{"codehealthFindingId/v1":"69299960241607587757b38f0a98bfe2ff71815e25ab81335b3b6665117b1c54"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29 lines \u00D7 2): layout/src/widgets/themes/flat.rs:1719-1747 | layout/src/widgets/themes/flora.rs:2137-2165 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":1719}}}],"partialFingerprints":{"codehealthFindingId/v1":"13f15222038682cd1f24ba70f5d1fa9b0a3b07947bfa6d6f4bd36016c17c16ba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201328 lines \u00D7 3): doc/src/codegen/v2/lang_cpp/cpp03.rs:307-326 | doc/src/codegen/v2/lang_cpp/cpp11.rs:206-233 | doc/src/codegen/v2/lang_cpp/cpp20.rs:1050-1069 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":307}}}],"partialFingerprints":{"codehealthFindingId/v1":"441baa00811c65d04e8a796a36813664635d7525ef7084ee04df3e81f82eefe5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 3): doc/src/codegen/v2/lang_cpp/cpp11.rs:479-506 | doc/src/codegen/v2/lang_cpp/cpp17.rs:668-695 | doc/src/codegen/v2/lang_cpp/cpp20.rs:367-394 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp17.rs\u0060 as WHOLE FILES: this scan already matched 38 separate duplicated blocks between them, totalling at least 759 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":"doc/src/codegen/v2/lang_cpp/cpp11.rs"},"region":{"startLine":479}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab324c9ea37a9906d8956a7fb8165ed37ed149e556e35b75a127c56b7f161182"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25\u201328 lines \u00D7 3): doc/src/reftest/autodoc.rs:1142-1166 | doc/src/reftest/autoreview.rs:782-809 | doc/src/reftest/autoreview.rs:1921-1946 \u2014 before extracting anything, compare \u0060doc/src/reftest/autodoc.rs\u0060 and \u0060doc/src/reftest/autoreview.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 207 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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":1142}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3d31e4b96f22d621d11d822c09541cf3b0fb989e5b1ef0077f2345ce2db2e61"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26\u201328 lines \u00D7 2): dll/src/desktop/extra/geolocation/mod.rs:37-62 | dll/src/desktop/extra/permission/mod.rs:38-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":"dll/src/desktop/extra/geolocation/mod.rs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"144d1689d7da0d46ed5440f51b16627597956c4aff214a17200e5b0e2c032e82"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 2): doc/src/codegen/v2/lang_cpp/cpp03.rs:176-203 | doc/src/codegen/v2/lang_cpp/cpp17.rs:197-224 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp17.rs\u0060 as WHOLE FILES: this scan already matched 26 separate duplicated blocks between them, totalling at least 450 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"9eebdfc8072879eee4ccf69c2877d66e82ed71042373415c4e72aa73634eadfc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27\u201328 lines \u00D7 2): doc/src/codegen/v2/lang_ada/functions.rs:243-269 | doc/src/codegen/v2/lang_ada/mod.rs:284-311 \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":"doc/src/codegen/v2/lang_ada/functions.rs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e9b47344e9351ab0410f0bd772fcbbe9c054e061c88e626637d3f2b49d313be"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 2): doc/src/autofix/debug.rs:1206-1233 | doc/src/autofix/debug.rs:1271-1298 \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":"doc/src/autofix/debug.rs"},"region":{"startLine":1206}}}],"partialFingerprints":{"codehealthFindingId/v1":"9af225a8858d4284dcc46fed0ee1426e0b5561a0853872bb64261249c01d8dd0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 2): layout/src/text3/cache.rs:7240-7267 | layout/src/text3/dense.rs:782-809 \u2014 before extracting anything, compare \u0060layout/src/text3/cache.rs\u0060 and \u0060layout/src/text3/dense.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 62 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":"layout/src/text3/cache.rs"},"region":{"startLine":7240}}}],"partialFingerprints":{"codehealthFindingId/v1":"61fef09eaa55ecf2f2904224b5d7e58aaf18807fe8444b66f468b321ed1c1128"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23\u201327 lines \u00D7 10): dll/src/desktop/shell2/macos/mod.rs:300-323 | dll/src/desktop/shell2/macos/mod.rs:347-369 | dll/src/desktop/shell2/macos/mod.rs:376-398 | dll/src/desktop/shell2/macos/mod.rs:406-428 | dll/src/desktop/shell2/macos/mod.rs:669-695 | dll/src/desktop/shell2/macos/mod.rs:703-725 | dll/src/desktop/shell2/macos/mod.rs:733-755 | dll/src/desktop/shell2/macos/mod.rs:762-784 | dll/src/desktop/shell2/macos/mod.rs:791-813 | dll/src/desktop/shell2/macos/mod.rs:820-842 \u2014 all 10 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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b7dedcb5d2192f184cc3c7ffa41d0334cc4341fa2288c47b2aa50db3c2dc1d6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26\u201327 lines \u00D7 6): doc/src/codegen/v2/lang_cpp/cpp03.rs:83-109 | doc/src/codegen/v2/lang_cpp/cpp11.rs:93-119 | doc/src/codegen/v2/lang_cpp/cpp14.rs:75-100 | doc/src/codegen/v2/lang_cpp/cpp17.rs:94-120 | doc/src/codegen/v2/lang_cpp/cpp20.rs:101-127 | doc/src/codegen/v2/lang_cpp/cpp20.rs:485-510 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"de1bf52d5f13269a3161e6877b1d077c1653265360de3e3933c654de9c41d350"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201327 lines \u00D7 3): doc/src/codegen/v2/lang_cpp/cpp03.rs:322-340 | doc/src/codegen/v2/lang_cpp/cpp11.rs:221-247 | doc/src/codegen/v2/lang_cpp/cpp17.rs:386-404 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4ab0a5b892ec0a6e27c5ad355213e92dc3542a4ac57021f59589150be1d0d44"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25\u201327 lines \u00D7 3): doc/src/reftest/apply_midlevel.rs:379-405 | doc/src/reftest/apply_midlevel.rs:1413-1437 | doc/src/reftest/apply_midlevel.rs:1615-1639 \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":"doc/src/reftest/apply_midlevel.rs"},"region":{"startLine":379}}}],"partialFingerprints":{"codehealthFindingId/v1":"71f052bd7c2d089135b69f05c3f74594ebb6ede721b46b96857a57c07fa529a9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201327 lines \u00D7 2): core/src/styled_dom.rs:1782-1801 | core/src/styled_dom.rs:2322-2348 \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":"core/src/styled_dom.rs"},"region":{"startLine":1782}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f7767aa9bab6793446c15fbcc20e12fa413bd1a93a80d1814979bef556fa544"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201327 lines \u00D7 2): css/src/props/basic/font.rs:803-821 | layout/src/text3/default.rs:258-284 \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":"css/src/props/basic/font.rs"},"region":{"startLine":803}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6a712a9d30faffd1d872113ebe526c17481204e67908887e5d8f44c38a924e0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22\u201327 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:4952-4978 | dll/src/desktop/shell2/linux/x11/events.rs:898-919 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/events.rs\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 249 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":4952}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6aa2b424aa41b759c2649c3ab143025e29552ebda6d007b75e272510f0210c2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22\u201327 lines \u00D7 2): doc/src/codegen/v2/lang_node/wrappers.rs:429-455 | doc/src/codegen/v2/lang_node/wrappers.rs:653-674 \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":"doc/src/codegen/v2/lang_node/wrappers.rs"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a44724f45944d9acd47a124f84c2e2cb573856c1578c39390b1a269fabdacf0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201327 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:2634-2660 | doc/src/codegen/v2/rust/shared.rs:198-214 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_rust.rs\u0060 and \u0060doc/src/codegen/v2/rust/shared.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 200 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2634}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9ee929b1829b550608616da8fa7d74814f0529ffa24d70fcc4ecbe318469255"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27 lines \u00D7 2): layout/src/widgets/camera.rs:414-440 | layout/src/widgets/screencap.rs:364-390 \u2014 before extracting anything, compare \u0060layout/src/widgets/camera.rs\u0060 and \u0060layout/src/widgets/screencap.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 107 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":"layout/src/widgets/camera.rs"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"899f9c5c1e705f7a64d96e3d8f6dda409deaaa928e4fb1a7ac4544fb22389c24"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22\u201327 lines \u00D7 2): layout/src/widgets/text_area.rs:655-676 | layout/src/widgets/text_input.rs:1028-1054 \u2014 before extracting anything, compare \u0060layout/src/widgets/text_area.rs\u0060 and \u0060layout/src/widgets/text_input.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 147 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":"layout/src/widgets/text_area.rs"},"region":{"startLine":655}}}],"partialFingerprints":{"codehealthFindingId/v1":"63eae812a69431f550004d0a0630fd78a41d416a1274438c312bda8c9995f25f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26\u201327 lines \u00D7 2): layout/src/window.rs:19500-19526 | layout/src/window.rs:19602-19627 \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":"layout/src/window.rs"},"region":{"startLine":19500}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed97b2a5420fc823a9759c3bd6e6c3c1c83796ae71292a0361ee858479aa1986"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25\u201326 lines \u00D7 5): webrender/core/src/batch.rs:2424-2449 | webrender/core/src/batch.rs:2556-2581 | webrender/core/src/batch.rs:2955-2979 | webrender/core/src/batch.rs:3082-3106 | webrender/core/src/batch.rs:3209-3233 \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":"webrender/core/src/batch.rs"},"region":{"startLine":2424}}}],"partialFingerprints":{"codehealthFindingId/v1":"96d9a956998c3384979a4fc0c519b015e1ec8982b4047779a51e307afc3ebf3b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25\u201326 lines \u00D7 2): doc/src/autofix/type_resolver.rs:624-648 | doc/src/autofix/type_resolver.rs:678-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":"doc/src/autofix/type_resolver.rs"},"region":{"startLine":624}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e943550df82564686c9fd7455a7d28c1094d1d20991cc2d52719b917636f6cb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201326 lines \u00D7 2): layout/src/solver3/sizing.rs:2527-2552 | layout/src/solver3/sizing.rs:2686-2702 \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":"layout/src/solver3/sizing.rs"},"region":{"startLine":2527}}}],"partialFingerprints":{"codehealthFindingId/v1":"01a15d3e79605650f8cfb253cef7abbbca99e4aaf7624c63b1f46fb69011e03a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 4): webrender/core/src/batch.rs:2839-2863 | webrender/core/src/batch.rs:2964-2988 | webrender/core/src/batch.rs:3091-3115 | webrender/core/src/batch.rs:3218-3242 \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":"webrender/core/src/batch.rs"},"region":{"startLine":2839}}}],"partialFingerprints":{"codehealthFindingId/v1":"03fadc8ffc64bedc439090896f428677c6fee7263ab5954940b1ca33a3286b71"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 4): webrender/core/src/picture.rs:6409-6433 | webrender/core/src/picture.rs:6439-6463 | webrender/core/src/picture.rs:6469-6493 | webrender/core/src/picture.rs:6505-6529 \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":"webrender/core/src/picture.rs"},"region":{"startLine":6409}}}],"partialFingerprints":{"codehealthFindingId/v1":"75576c87930f16aa204650112507c7f9f611991e3ed1fa4eb5514b44f04560ea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201325 lines \u00D7 3): doc/src/codegen/v2/lang_rust.rs:4854-4878 | doc/src/codegen/v2/lang_rust.rs:4909-4933 | doc/src/codegen/v2/rust/static_binding.rs:535-555 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_rust.rs\u0060 and \u0060doc/src/codegen/v2/rust/static_binding.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 68 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":4854}}}],"partialFingerprints":{"codehealthFindingId/v1":"2368384ea3fd8406ed796ff902ea7b0d817b4b4a45c534bc8280b739a1f58434"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 3): webrender/core/src/batch.rs:1584-1608 | webrender/core/src/batch.rs:2235-2259 | webrender/core/src/batch.rs:2278-2302 \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":"webrender/core/src/batch.rs"},"region":{"startLine":1584}}}],"partialFingerprints":{"codehealthFindingId/v1":"b925a8ae1acc6cf9b2eef6b6993ad247cf844b79cba353e918a63498aae34cbf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): core/src/gamepad.rs:203-227 | core/src/gamepad.rs:236-260 \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":"core/src/gamepad.rs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef10f998b53f509b6383800477adac2ed86646540af3e8cf9eec06a1a23775c2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): dll/src/desktop/shell2/android/mod.rs:225-249 | dll/src/desktop/shell2/ios/mod.rs:1743-1767 \u2014 \u0060dll/src/desktop/shell2/android/mod.rs\u0060 and \u0060dll/src/desktop/shell2/ios/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 17 separate duplicated blocks between them, totalling at least 215 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"04e40760ee2eb0d5c2fd23c8c4c3090ea10bc6828ee5f03fb3bd3042f4070653"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:3306-3330 | dll/src/desktop/shell2/linux/x11/mod.rs:4309-4333 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":3306}}}],"partialFingerprints":{"codehealthFindingId/v1":"a48d6bb32531f42eecb460602c923f2f6fe26c519913a2c25367c9a2bf6f7977"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201325 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:3531-3555 | dll/src/desktop/shell2/linux/wayland/mod.rs:5348-5367 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":3531}}}],"partialFingerprints":{"codehealthFindingId/v1":"93314f179b5787cd64cf2eef9ce1da36bffdbb0bbadb3e63f8802b28ed48c15d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23\u201325 lines \u00D7 2): dll/src/desktop/shell2/linux/x11/mod.rs:6904-6928 | dll/src/desktop/shell2/windows/mod.rs:1604-1626 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 and \u0060dll/src/desktop/shell2/windows/mod.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 443 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":6904}}}],"partialFingerprints":{"codehealthFindingId/v1":"a211c5e981b4d85d9ee14d56d496bcd7ec40eebb15b1774d64475aef601d56db"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22\u201325 lines \u00D7 2): doc/src/autofix/type_index.rs:3394-3418 | doc/src/autotest/extract.rs:353-374 \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":"doc/src/autofix/type_index.rs"},"region":{"startLine":3394}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac0718be72e9f037234052b8d862b124f7fea137bd2d1ea0ffed79f0fa249905"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24\u201325 lines \u00D7 2): doc/src/codegen/v2/lang_d/model.rs:635-659 | doc/src/codegen/v2/lang_swift/model.rs:652-675 \u2014 \u0060doc/src/codegen/v2/lang_d/model.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/model.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 20 separate duplicated blocks between them, totalling at least 209 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/model.rs"},"region":{"startLine":635}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7c69b9bc980a1baef25faaa83ad2588f84051f33c33e8273afa5ebf42890b4c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23\u201325 lines \u00D7 2): doc/src/codegen/v2/lang_php/wrappers.rs:202-226 | doc/src/codegen/v2/lang_php/wrappers.rs:390-412 \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":"doc/src/codegen/v2/lang_php/wrappers.rs"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d6d90de2228ba130baa66d8cf4892b090fb074413efaa79fb3237c418aa9205"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23\u201325 lines \u00D7 2): layout/src/managers/gesture.rs:1958-1982 | layout/src/managers/gesture.rs:2036-2058 \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":"layout/src/managers/gesture.rs"},"region":{"startLine":1958}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f1c04b34abad2717e5fdb27cb9dec5f09e60ea1c10976b5f047c6834ebc32e1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): layout/src/solver3/fc.rs:2406-2430 | layout/src/solver3/fc.rs:2502-2526 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":2406}}}],"partialFingerprints":{"codehealthFindingId/v1":"18d281cc1b39aa432ee94db9529f5d733bd8e1acde3d8f7206987c283b3e5666"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24\u201325 lines \u00D7 2): layout/src/text3/cache.rs:6321-6345 | layout/src/text3/cache.rs:6412-6435 \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":"layout/src/text3/cache.rs"},"region":{"startLine":6321}}}],"partialFingerprints":{"codehealthFindingId/v1":"79ee66c44f5c155527e13989cb570f00d21cfd5040f79472c20f922aa1c982bb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24\u201325 lines \u00D7 2): layout/src/widgets/pagination.rs:231-254 | layout/src/widgets/segmented.rs:200-224 \u2014 before extracting anything, compare \u0060layout/src/widgets/pagination.rs\u0060 and \u0060layout/src/widgets/segmented.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 70 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":"layout/src/widgets/pagination.rs"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad4e54966ce04d80ae68af091dae2266057fb36d40944ccb50f013d347ae0112"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): layout/src/widgets/themes/flat.rs:1149-1173 | layout/src/widgets/themes/flora.rs:1541-1565 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":1149}}}],"partialFingerprints":{"codehealthFindingId/v1":"765804b6d391b6e89f0a6dcdcaa231b5aa7145b928883e5551713c151a1be4f3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 18): doc/src/codegen/v2/lang_ada/functions.rs:102-125 | doc/src/codegen/v2/lang_algol68/functions.rs:102-125 | doc/src/codegen/v2/lang_cobol/functions.rs:108-131 | doc/src/codegen/v2/lang_csharp/functions.rs:165-188 | doc/src/codegen/v2/lang_fortran/functions.rs:124-147 | doc/src/codegen/v2/lang_freebasic/functions.rs:85-108 | doc/src/codegen/v2/lang_haskell/functions.rs:452-475 | doc/src/codegen/v2/lang_java/functions.rs:197-220 | doc/src/codegen/v2/lang_julia/mod.rs:447-470 | doc/src/codegen/v2/lang_lisp/functions.rs:86-109 | doc/src/codegen/v2/lang_nim/functions.rs:87-110 | doc/src/codegen/v2/lang_ocaml/functions.rs:100-123 | doc/src/codegen/v2/lang_odin/mod.rs:368-391 | doc/src/codegen/v2/lang_pascal/functions.rs:133-156 | doc/src/codegen/v2/lang_racket/functions.rs:86-109 | doc/src/codegen/v2/lang_smalltalk/functions.rs:142-165 | doc/src/codegen/v2/lang_v/mod.rs:400-423 | doc/src/codegen/v2/lang_vb6/functions.rs:100-123 \u2014 \u0060doc/src/codegen/v2/lang_freebasic/functions.rs\u0060 and \u0060doc/src/codegen/v2/lang_pascal/functions.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 56 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_ada/functions.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef642743a31933a340b7beb5066e68f4cdcac4267f05c177542c8170895022c5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201324 lines \u00D7 4): doc/src/codegen/v2/lang_cpp/cpp03.rs:319-334 | doc/src/codegen/v2/lang_cpp/cpp11.rs:218-241 | doc/src/codegen/v2/lang_cpp/cpp17.rs:383-398 | doc/src/codegen/v2/lang_cpp/cpp20.rs:1062-1075 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"36838d59e28f1a5bd3b8db8947c7a9b89f63e779dfddfee9aa8882291f321af6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23\u201324 lines \u00D7 4): doc/src/reftest/autodoc.rs:1092-1114 | doc/src/reftest/autoreview.rs:731-754 | doc/src/reftest/autoreview.rs:967-990 | doc/src/reftest/autoreview.rs:1870-1893 \u2014 before extracting anything, compare \u0060doc/src/reftest/autodoc.rs\u0060 and \u0060doc/src/reftest/autoreview.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 207 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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":1092}}}],"partialFingerprints":{"codehealthFindingId/v1":"69a2c9599e20ffec2ec29c2c7e7166a1cc9d6585c0e679e491078b8607d0f0cf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): core/src/compact.rs:655-678 | core/src/compact.rs:1520-1543 \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":"core/src/compact.rs"},"region":{"startLine":655}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fa89827514006528f4c48d5fa7ea695e5bc8d6d0859d1a46c4e5e2254c004a3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): core/src/compact.rs:980-1003 | core/src/compact.rs:1022-1045 \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":"core/src/compact.rs"},"region":{"startLine":980}}}],"partialFingerprints":{"codehealthFindingId/v1":"777bfd5151ebbe2d2d5cb86a2b4192e6221e46b3020e626d6de6f25262cf569f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): core/src/events.rs:1782-1805 | core/src/events.rs:2071-2094 \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":"core/src/events.rs"},"region":{"startLine":1782}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f58f5b95ef07ec37a40a9304986853accb6a2226763db11cdcd09aaff7f85e9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22\u201324 lines \u00D7 2): dll/src/desktop/shell2/android/mod.rs:414-437 | dll/src/desktop/shell2/ios/mod.rs:1813-1834 \u2014 \u0060dll/src/desktop/shell2/android/mod.rs\u0060 and \u0060dll/src/desktop/shell2/ios/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 17 separate duplicated blocks between them, totalling at least 215 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"a366421cf281122c3cd645429c826a8433034dbe9af04e3282441a0ee7bc2cbe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201324 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/events.rs:2571-2590 | dll/src/desktop/shell2/linux/x11/mod.rs:1503-1526 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/wayland/events.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 54 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/events.rs"},"region":{"startLine":2571}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa0bb90abdcb00ac73f491ec612ff9478e0f5a6aadeac7d2c0e4192dc3b6107e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): dll/src/desktop/shell2/linux/x11/mod.rs:6208-6231 | dll/src/desktop/shell2/windows/mod.rs:1853-1876 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 and \u0060dll/src/desktop/shell2/windows/mod.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 443 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":6208}}}],"partialFingerprints":{"codehealthFindingId/v1":"54981b3cce8d124095787af10da6c128cd04026e0c4c1a2b3d05830ae358778a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201324 lines \u00D7 2): dll/src/web/transpiler_remill.rs:1287-1310 | dll/src/web/transpiler_remill.rs:6694-6710 \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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":1287}}}],"partialFingerprints":{"codehealthFindingId/v1":"028722226678df5d236aa1f9599bb46bf3d15ac5c32c51f8be02776ecce3db26"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201324 lines \u00D7 2): dll/src/desktop/compositor2.rs:452-468 | dll/src/desktop/compositor2.rs:529-552 \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":"dll/src/desktop/compositor2.rs"},"region":{"startLine":452}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f5a32888f3a769eb58f3739da5f6c7593c4b2382f7f170eb7bb1d9ecbcb36cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23\u201324 lines \u00D7 2): doc/src/autofix/diff.rs:812-835 | doc/src/autofix/diff.rs:843-865 \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":"doc/src/autofix/diff.rs"},"region":{"startLine":812}}}],"partialFingerprints":{"codehealthFindingId/v1":"96b4a7cf44faedc6efdec93a0d31941896d10c693dabd1e4b0d16b8b8fa6a642"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): doc/src/codegen/v2/lang_cpp/cpp17.rs:313-336 | doc/src/codegen/v2/lang_cpp/cpp17.rs:362-385 \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":"doc/src/codegen/v2/lang_cpp/cpp17.rs"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fc399667c01e832943437a462156784b476c041e93301f5546abc5bac6114c5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): doc/src/codegen/v2/lang_d/mod.rs:535-558 | doc/src/codegen/v2/lang_swift/mod.rs:478-501 \u2014 \u0060doc/src/codegen/v2/lang_d/mod.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 67 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/mod.rs"},"region":{"startLine":535}}}],"partialFingerprints":{"codehealthFindingId/v1":"49bfbb131a4ceca6364f536447d2fdfe7dcf9cfe8425577fd9777a2d03259a83"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23\u201324 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:1641-1663 | doc/src/codegen/v2/lang_swift/wrappers.rs:1553-1576 \u2014 \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 29 separate duplicated blocks between them, totalling at least 269 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":1641}}}],"partialFingerprints":{"codehealthFindingId/v1":"09d77df09972ff4f5f68e3d38052457846e0d808b033f3fcacdec1264a336875"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:2531-2554 | doc/src/codegen/v2/lang_rust.rs:2606-2629 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2531}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf61325126934426431ad6df30f8ac3bb966f00f9bf7465b5f3401289f0bce2f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201324 lines \u00D7 2): doc/src/reftest/autodoc.rs:1030-1050 | doc/src/reftest/autoreview.rs:1803-1826 \u2014 before extracting anything, compare \u0060doc/src/reftest/autodoc.rs\u0060 and \u0060doc/src/reftest/autoreview.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 207 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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":1030}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac864584ad8fadbf0e9f22d3ef70bdd6b08f24db0a2aac8862e1ebe0a9850a8f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22\u201324 lines \u00D7 2): layout/src/cpurender/raster.rs:3274-3297 | layout/src/cpurender/raster.rs:3301-3322 \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":"layout/src/cpurender/raster.rs"},"region":{"startLine":3274}}}],"partialFingerprints":{"codehealthFindingId/v1":"6711ef2fa1fe004a423e349489b3e003bbcc3754e62efd34e04e6d4a59474e29"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): layout/src/desktop/dialogs.rs:542-565 | layout/src/desktop/dialogs.rs:623-646 \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":"layout/src/desktop/dialogs.rs"},"region":{"startLine":542}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5e86dd5e6a1d4d6747b250623e344ceb2f4772747bc4c25f29574b7a4a8d74a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): layout/src/text3/cache.rs:5930-5953 | layout/src/text3/cache.rs:5965-5988 \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":"layout/src/text3/cache.rs"},"region":{"startLine":5930}}}],"partialFingerprints":{"codehealthFindingId/v1":"f93cec2087ea8d1d6aaa0b259e06e1651302c3aa303f1ab0103f9d933206f31e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): webrender/core/src/quad.rs:516-539 | webrender/core/src/quad.rs:681-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":"webrender/core/src/quad.rs"},"region":{"startLine":516}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac33653e6e6a6fbafa629706e8b60cdbb943445f6e973904b7d81fceb16f9744"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201323 lines \u00D7 20): doc/src/codegen/v2/lang_ada/functions.rs:81-100 | doc/src/codegen/v2/lang_algol68/functions.rs:81-100 | doc/src/codegen/v2/lang_cobol/functions.rs:87-106 | doc/src/codegen/v2/lang_csharp/functions.rs:142-164 | doc/src/codegen/v2/lang_fortran/functions.rs:102-123 | doc/src/codegen/v2/lang_freebasic/functions.rs:64-83 | doc/src/codegen/v2/lang_haskell/functions.rs:430-451 | doc/src/codegen/v2/lang_java/functions.rs:175-196 | doc/src/codegen/v2/lang_julia/mod.rs:426-445 | doc/src/codegen/v2/lang_kotlin/mod.rs:199-220 | doc/src/codegen/v2/lang_lisp/functions.rs:65-84 | doc/src/codegen/v2/lang_nim/functions.rs:66-85 | doc/src/codegen/v2/lang_ocaml/functions.rs:78-99 | doc/src/codegen/v2/lang_odin/mod.rs:347-366 | doc/src/codegen/v2/lang_pascal/functions.rs:111-132 | doc/src/codegen/v2/lang_racket/functions.rs:65-84 | doc/src/codegen/v2/lang_red/mod.rs:356-375 | doc/src/codegen/v2/lang_smalltalk/functions.rs:121-140 | doc/src/codegen/v2/lang_v/mod.rs:379-398 | doc/src/codegen/v2/lang_vb6/functions.rs:79-98 \u2014 \u0060doc/src/codegen/v2/lang_freebasic/functions.rs\u0060 and \u0060doc/src/codegen/v2/lang_pascal/functions.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 56 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_ada/functions.rs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"79c13e234ae3b000609bd5c02b15acf84c7102746dfd6c6d9e0386bac70d2f5e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6\u201323 lines \u00D7 14): dll/src/desktop/shell2/linux/wayland/defines.rs:1921-1937 | dll/src/desktop/shell2/linux/wayland/defines.rs:1973-1989 | dll/src/desktop/shell2/linux/wayland/defines.rs:2025-2041 | dll/src/desktop/shell2/linux/wayland/defines.rs:2127-2143 | dll/src/desktop/shell2/linux/wayland/defines.rs:2254-2270 | dll/src/desktop/shell2/linux/wayland/defines.rs:2421-2437 | dll/src/desktop/shell2/linux/wayland/defines.rs:2533-2549 | dll/src/desktop/shell2/linux/wayland/defines.rs:2569-2585 | dll/src/desktop/shell2/linux/wayland/defines.rs:2612-2628 | dll/src/desktop/shell2/linux/wayland/defines.rs:2657-2678 | dll/src/desktop/shell2/linux/wayland/defines.rs:2860-2876 | dll/src/desktop/shell2/linux/wayland/defines.rs:2923-2945 | dll/src/desktop/shell2/linux/wayland/defines.rs:2960-2981 | dll/src/desktop/shell2/linux/wayland/defines.rs:3009-3014 \u2014 all 14 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":"dll/src/desktop/shell2/linux/wayland/defines.rs"},"region":{"startLine":1921}}}],"partialFingerprints":{"codehealthFindingId/v1":"e995f5d5f632b256a1f9defd2055748b5d6ae79965157777fd4d9bd01e82a7e8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201323 lines \u00D7 5): dll/src/desktop/shell2/android/mod.rs:459-479 | dll/src/desktop/shell2/headless/mod.rs:1692-1714 | dll/src/desktop/shell2/ios/mod.rs:1911-1931 | dll/src/desktop/shell2/macos/mod.rs:6017-6039 | dll/src/desktop/shell2/windows/mod.rs:1829-1851 \u2014 \u0060dll/src/desktop/shell2/android/mod.rs\u0060 and \u0060dll/src/desktop/shell2/headless/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 65 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8d8ff6f911eb5a2ae61edf44ae7d4f50b4518fb2fbc64c9c071fbbc7cfd457f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 4): webrender/core/src/batch.rs:1584-1606 | webrender/core/src/batch.rs:1710-1732 | webrender/core/src/batch.rs:2235-2257 | webrender/core/src/batch.rs:2278-2300 \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":"webrender/core/src/batch.rs"},"region":{"startLine":1584}}}],"partialFingerprints":{"codehealthFindingId/v1":"31f166dcc5e4df55a10f74e15cc8f0436cd4979c6bdb2c194a9cf32cf0587ee1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201323 lines \u00D7 3): dll/src/desktop/shell2/linux/wayland/mod.rs:6296-6310 | dll/src/desktop/shell2/linux/x11/events.rs:1437-1451 | dll/src/desktop/shell2/macos/events.rs:1115-1137 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/events.rs\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 249 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":6296}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ee2a429ca8dfb8449accacf390713eb0761f2eca851ef583d47e2b3fb535f1f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201323 lines \u00D7 3): dll/src/desktop/shell2/linux/x11/mod.rs:6237-6258 | dll/src/desktop/shell2/windows/mod.rs:1896-1918 | dll/src/desktop/shell2/windows/mod.rs:1963-1983 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 and \u0060dll/src/desktop/shell2/windows/mod.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 443 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":6237}}}],"partialFingerprints":{"codehealthFindingId/v1":"349798ab323db7894c9f389ea87f34c1b2064609980188199a36d16cb6aa7426"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201323 lines \u00D7 3): layout/src/solver3/fc.rs:1699-1720 | layout/src/solver3/fc.rs:2444-2466 | layout/src/solver3/fc.rs:2530-2550 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":1699}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d9337373057cca4c7fcbaf68fbcf826e10725523ee9937ae93b2cecce872aba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): core/src/xml.rs:8376-8398 | core/src/xml.rs:8667-8689 \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":"core/src/xml.rs"},"region":{"startLine":8376}}}],"partialFingerprints":{"codehealthFindingId/v1":"d51e7a014d525df145c8fc6134aba403d3f8a9aa81c8d0c9225a437ef3286c64"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201323 lines \u00D7 2): dll/src/desktop/extra/gamepad/apple.rs:323-336 | dll/src/desktop/extra/gamepad/apple.rs:339-361 \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":"dll/src/desktop/extra/gamepad/apple.rs"},"region":{"startLine":323}}}],"partialFingerprints":{"codehealthFindingId/v1":"5376d2ceeb2027a6240daf362114e8097cd1c060be46a49007c8c5149c004416"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201323 lines \u00D7 2): dll/src/desktop/shell2/common/event.rs:933-953 | dll/src/desktop/shell2/common/event.rs:985-1007 \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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":933}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b1412ede567b28f3927f8293e5077bfee1e0fb484b0e12b1a902f9d8cdc3b58"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:3034-3056 | dll/src/desktop/shell2/linux/x11/mod.rs:4552-4574 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":3034}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c682738c08bce45c99d1ed36cce25d06c449fd838ab3538fdcf42abc63c466f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): dll/src/desktop/shell2/windows/mod.rs:4981-5003 | dll/src/desktop/shell2/windows/mod.rs:5073-5095 \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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":4981}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd4e1e698cc8ffd78a226be42f1da2dc386bcf3dc81d9adeaa238231b2b53b2a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): doc/src/api.rs:2064-2086 | doc/src/api.rs:2342-2364 \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":"doc/src/api.rs"},"region":{"startLine":2064}}}],"partialFingerprints":{"codehealthFindingId/v1":"86bed4d8458753cbb2760b81a67d464e24c6618753891287ab5a38feb14cd0dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22\u201323 lines \u00D7 2): doc/src/autofix/type_index.rs:1251-1273 | doc/src/autofix/type_index.rs:3133-3154 \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":"doc/src/autofix/type_index.rs"},"region":{"startLine":1251}}}],"partialFingerprints":{"codehealthFindingId/v1":"b673bde851597b546f7645ffd6a06167cc6809709a993decbcc368e57ef41861"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201323 lines \u00D7 2): doc/src/codegen/v2/lang_cpp/cpp20.rs:47-69 | doc/src/codegen/v2/lang_cpp/cpp20.rs:443-458 \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":"doc/src/codegen/v2/lang_cpp/cpp20.rs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f9dd1d709c7c9221a23774a8a710bef370a135714839d16f4473b59ae2f0fe7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201323 lines \u00D7 2): doc/src/codegen/v2/lang_haskell/types.rs:467-489 | doc/src/codegen/v2/lang_ruby/wrappers.rs:631-651 \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":"doc/src/codegen/v2/lang_haskell/types.rs"},"region":{"startLine":467}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ebe5a7c4e0416ecf4b066682a793f2701010af886310bc96deb3f35a02ec7f7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201323 lines \u00D7 2): doc/src/codegen/v2/lang_java/wrappers.rs:287-309 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:681-700 \u2014 \u0060doc/src/codegen/v2/lang_java/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_kotlin/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 15 separate duplicated blocks between them, totalling at least 173 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_java/wrappers.rs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"b114ea1df80352d897279e07fae4e4997a5b1d669d391c83c0678c7effda17a5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (3\u201323 lines \u00D7 8): doc/src/codegen/v2/config.rs:391-393 | doc/src/codegen/v2/lang_crystal/mod.rs:319-321 | doc/src/codegen/v2/lang_freebasic/mod.rs:118-140 | doc/src/codegen/v2/lang_julia/mod.rs:214-216 | doc/src/codegen/v2/lang_nim/mod.rs:147-165 | doc/src/codegen/v2/lang_odin/mod.rs:148-150 | doc/src/codegen/v2/lang_pascal/mod.rs:246-248 | doc/src/codegen/v2/lang_v/mod.rs:172-174 \u2014 \u0060doc/src/codegen/v2/lang_crystal/mod.rs\u0060 and \u0060doc/src/codegen/v2/lang_julia/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 5 separate duplicated blocks between them, totalling at least 61 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/config.rs"},"region":{"startLine":391}}}],"partialFingerprints":{"codehealthFindingId/v1":"f61d0c671aba99c40553e96e675453b9e3324ca21fda522ea208ad9935d8568a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): doc/src/patch/index.rs:1250-1272 | doc/src/patch/index.rs:1331-1353 \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":"doc/src/patch/index.rs"},"region":{"startLine":1250}}}],"partialFingerprints":{"codehealthFindingId/v1":"b22467ccf85efe6e9bddc585e48114b8c5214cf5ee82ac6522a83db8ab071d01"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201323 lines \u00D7 2): doc/src/codegen/v2/lang_php/wrappers.rs:117-139 | doc/src/codegen/v2/lang_php/wrappers.rs:236-253 \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":"doc/src/codegen/v2/lang_php/wrappers.rs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"679244d131ed3b79471f79d2595a11511536ab6abc28a32ad7484e9fc8bb61b3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201323 lines \u00D7 2): layout/src/cpurender/compositor.rs:2524-2542 | layout/src/cpurender/raster.rs:1421-1443 \u2014 before extracting anything, compare \u0060layout/src/cpurender/compositor.rs\u0060 and \u0060layout/src/cpurender/raster.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 56 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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":2524}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa1d0a1bdb69e2f069c42f67e38c408008761ef57c7915dde0f68123817ba6b8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): layout/src/solver3/cache.rs:1939-1961 | layout/src/solver3/cache.rs:2102-2124 \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":"layout/src/solver3/cache.rs"},"region":{"startLine":1939}}}],"partialFingerprints":{"codehealthFindingId/v1":"16addf1cd4ec6df450248246eb86c3ad3a7d37124b5ccc8f176945dd6149d417"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): layout/src/widgets/themes/flat.rs:932-954 | layout/src/widgets/themes/flora.rs:1204-1226 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":932}}}],"partialFingerprints":{"codehealthFindingId/v1":"abd96ec769c4bcfac1f521cb8f1dc88954a75e4700af15e6534100a0d3f1fc34"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): webrender/core/src/batch.rs:1843-1865 | webrender/core/src/batch.rs:1898-1920 \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":"webrender/core/src/batch.rs"},"region":{"startLine":1843}}}],"partialFingerprints":{"codehealthFindingId/v1":"8662b7313fe5c217f4f7979265e72fa2ed0c8310f87bca52a7842bebdf1540e0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): webrender/core/src/picture.rs:4316-4338 | webrender/core/src/picture.rs:4451-4473 \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":"webrender/core/src/picture.rs"},"region":{"startLine":4316}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b691914bb4522dc3bbe1fba845068f876cbf1e42ca8e1d5b617f1d2e6eaccbe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): webrender/core/src/render_task.rs:1366-1388 | webrender/core/src/render_task.rs:1555-1577 \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":"webrender/core/src/render_task.rs"},"region":{"startLine":1366}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4941d7acb283e17f5a4a8117df09ed909a2da1e008ea9b63af4da071d4b2b5f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 5): webrender/core/src/picture.rs:6382-6404 | webrender/core/src/picture.rs:6413-6434 | webrender/core/src/picture.rs:6443-6464 | webrender/core/src/picture.rs:6473-6494 | webrender/core/src/picture.rs:6509-6530 \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":"webrender/core/src/picture.rs"},"region":{"startLine":6382}}}],"partialFingerprints":{"codehealthFindingId/v1":"4882410c98545f34ff19592ce765abffdf08bf0d236c160940ddf905c3f13894"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 4): layout/src/widgets/themes/flora.rs:1351-1372 | layout/src/widgets/themes/flora.rs:1374-1395 | layout/src/widgets/themes/flora.rs:1397-1418 | layout/src/widgets/themes/flora.rs:1420-1441 \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":"layout/src/widgets/themes/flora.rs"},"region":{"startLine":1351}}}],"partialFingerprints":{"codehealthFindingId/v1":"65f748087575788c0264be30c4cbdc58cff74814e80966ccbe8f4f90bfcedc87"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201322 lines \u00D7 3): dll/src/desktop/shell2/android/mod.rs:483-504 | dll/src/desktop/shell2/headless/mod.rs:1717-1738 | dll/src/desktop/shell2/ios/mod.rs:1935-1955 \u2014 \u0060dll/src/desktop/shell2/android/mod.rs\u0060 and \u0060dll/src/desktop/shell2/headless/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 65 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":483}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f856b332d3bcac97e6f51b5711509a2776a4b76c1e2543fab5e5d11977c80d7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 3): layout/src/xml/svg.rs:165-186 | layout/src/xml/svg.rs:215-236 | layout/src/xml/svg.rs:662-683 \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":"layout/src/xml/svg.rs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf146e26b25bccd8f7f1e4ddd39d6d52f5a51c66bf74ebbf57750370fb4b940f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): dll/src/desktop/shell2/common/event.rs:8894-8915 | dll/src/desktop/shell2/common/event.rs:8924-8945 \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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":8894}}}],"partialFingerprints":{"codehealthFindingId/v1":"a996d391410058c11dd46d99c9e7aef8d358646c22cc9e913245b6f1d9cbd3c0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201322 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/events.rs:823-844 | dll/src/desktop/shell2/linux/wayland/events.rs:1239-1257 \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":"dll/src/desktop/shell2/linux/wayland/events.rs"},"region":{"startLine":823}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2ce72317e00ac13c89c115487aeab6203e74d3468e7edf286fee854d48643df"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:3087-3108 | dll/src/desktop/shell2/linux/x11/mod.rs:4600-4621 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":3087}}}],"partialFingerprints":{"codehealthFindingId/v1":"37c6fbf67b0d463bce54421401d3963ad6564f3b27dfe0f4e3edf731545bc850"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201322 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:11024-11045 | dll/src/desktop/shell2/linux/x11/mod.rs:8776-8796 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":11024}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d286d3e82be3a85f2333d587647ad979fef97d6c6100383f876ef2ec508fc41"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201322 lines \u00D7 2): dll/src/desktop/shell2/linux/x11/accessibility.rs:171-192 | dll/src/desktop/shell2/windows/accessibility.rs:148-168 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/x11/accessibility.rs\u0060 and \u0060dll/src/desktop/shell2/windows/accessibility.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 63 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/x11/accessibility.rs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"99f23de3365271f8db5aa4059f081b01816f386d7af21939f0ec02d7cbd2b57a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): dll/src/desktop/shell2/macos/mod.rs:5707-5728 | dll/src/desktop/shell2/windows/mod.rs:793-814 \u2014 \u0060dll/src/desktop/shell2/macos/mod.rs\u0060 and \u0060dll/src/desktop/shell2/windows/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 12 separate duplicated blocks between them, totalling at least 186 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":5707}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6aa2d155f0b5e3aacb9bf6fa4e2015be1055920178cdf8f7c0d93b41ff0b778"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201322 lines \u00D7 2): dll/src/desktop/shell2/windows/mod.rs:5804-5819 | dll/src/desktop/shell2/windows/mod.rs:6005-6026 \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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":5804}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec9c0ebc805c3439b32b1ec056a352a627882bb8f5f938cd841279a0aebe6d10"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201322 lines \u00D7 2): dll/src/web/transpiler_remill.rs:1477-1498 | dll/src/web/transpiler_remill.rs:6765-6776 \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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":1477}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4c443f6f2353210f6844fba65b7ee41bee0056c09237bb29930b87994b00e2d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201322 lines \u00D7 2): doc/src/codegen/v2/config.rs:481-500 | doc/src/codegen/v2/config.rs:707-728 \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":"doc/src/codegen/v2/config.rs"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3864b52b63be38f20494450c40e65dfa36d78c2ba0ff72ce0a8bfbf17ba9878"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201322 lines \u00D7 2): doc/src/codegen/v2/lang_go/wrappers.rs:160-181 | doc/src/codegen/v2/lang_zig/wrappers.rs:237-254 \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":"doc/src/codegen/v2/lang_go/wrappers.rs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"f97eb81982c8d0914effad059e2288a66790752f11b16ed26dac93b52feff97e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201322 lines \u00D7 2): layout/src/solver3/getters.rs:4690-4711 | layout/src/solver3/getters.rs:5020-5039 \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":"layout/src/solver3/getters.rs"},"region":{"startLine":4690}}}],"partialFingerprints":{"codehealthFindingId/v1":"e59efdd7cfea5cce81495beb9b351fdcb96030c46dc27cedb4db0f7e114d123d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201322 lines \u00D7 2): layout/src/widgets/badge.rs:56-75 | layout/src/widgets/chip.rs:135-156 \u2014 before extracting anything, compare \u0060layout/src/widgets/badge.rs\u0060 and \u0060layout/src/widgets/chip.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 82 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":"layout/src/widgets/badge.rs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"51f0e2e0a35dda82b58c5dccb79804c72474e2f4aab487bd91370dc026a6c6e7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): layout/src/widgets/check_box.rs:356-377 | layout/src/widgets/switch.rs:406-427 \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":"layout/src/widgets/check_box.rs"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c8c79227df4a131d4c97694cab078b703dd53b5dbcad8acf03b3065fe2e9028"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): layout/src/xml/mod.rs:622-643 | layout/src/xml/mod.rs:734-755 \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":"layout/src/xml/mod.rs"},"region":{"startLine":622}}}],"partialFingerprints":{"codehealthFindingId/v1":"415f712613d28ffe88d90bb65a24a25baba0368540b35b6e8b36ad15f5b1b10e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): layout/src/widgets/themes/flat.rs:1784-1805 | layout/src/widgets/themes/flora.rs:2202-2223 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":1784}}}],"partialFingerprints":{"codehealthFindingId/v1":"51fdbf6040361210211cbe7ebce48b10628b332d4b3adab78a558b46cda8003e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): webrender/core/src/picture.rs:4683-4704 | webrender/core/src/render_task.rs:2174-2195 \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":"webrender/core/src/picture.rs"},"region":{"startLine":4683}}}],"partialFingerprints":{"codehealthFindingId/v1":"bce8a42080d92c5e7a5ff6038124d55d683381ab7d2e643b14312cf2b12823f0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201321 lines \u00D7 5): doc/src/codegen/v2/lang_cpp/cpp11.rs:67-87 | doc/src/codegen/v2/lang_cpp/cpp14.rs:52-70 | doc/src/codegen/v2/lang_cpp/cpp17.rs:66-86 | doc/src/codegen/v2/lang_cpp/cpp20.rs:76-95 | doc/src/codegen/v2/lang_cpp/cpp20.rs:465-482 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp14.rs\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 164 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":"doc/src/codegen/v2/lang_cpp/cpp11.rs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa5cdb9732955e9b9e60a90224ef5c5630fe4c7d75ac0f55d15a75686bf88cbf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 5): layout/src/widgets/backstage.rs:256-276 | layout/src/widgets/quick_access.rs:301-321 | layout/src/widgets/ribbon.rs:598-618 | layout/src/widgets/statusbar.rs:324-344 | layout/src/widgets/statusbar.rs:564-584 \u2014 before extracting anything, compare \u0060layout/src/widgets/backstage.rs\u0060 and \u0060layout/src/widgets/quick_access.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 41 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":"layout/src/widgets/backstage.rs"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d7f9a9c06f749978b09c99b6840cf8a39d15cbb9868c184d735f8d0f77babe8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 5): webrender/core/src/picture.rs:6406-6426 | webrender/core/src/picture.rs:6436-6456 | webrender/core/src/picture.rs:6466-6486 | webrender/core/src/picture.rs:6502-6522 | webrender/core/src/picture.rs:6532-6552 \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":"webrender/core/src/picture.rs"},"region":{"startLine":6406}}}],"partialFingerprints":{"codehealthFindingId/v1":"16d77fbec600d7e788ada46233467701922ab56bfcfc12c93182a5dfd35582d0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 4): doc/src/reftest/autodoc.rs:1116-1136 | doc/src/reftest/autoreview.rs:756-776 | doc/src/reftest/autoreview.rs:992-1012 | doc/src/reftest/autoreview.rs:1895-1915 \u2014 before extracting anything, compare \u0060doc/src/reftest/autodoc.rs\u0060 and \u0060doc/src/reftest/autoreview.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 207 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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":1116}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb18406766cbd35f2aef4c2d8a5c2f6cf33a0da61212c9a41c71ba9f76d7ad96"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 4): webrender/core/src/batch.rs:2871-2891 | webrender/core/src/batch.rs:2998-3018 | webrender/core/src/batch.rs:3125-3145 | webrender/core/src/batch.rs:3252-3272 \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":"webrender/core/src/batch.rs"},"region":{"startLine":2871}}}],"partialFingerprints":{"codehealthFindingId/v1":"575bd882f72a580a5a51349c31c428a78f115fa362eacad055104c305b196544"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 3): core/src/transform.rs:520-540 | core/src/transform.rs:542-562 | core/src/transform.rs:564-584 \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":"core/src/transform.rs"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e1dd3195e6005fb3b024689ab426fdc55111d0849fd778824242dc7612dc5c1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201321 lines \u00D7 3): doc/src/codegen/v2/lang_cpp/cpp17.rs:27-47 | doc/src/codegen/v2/lang_cpp/cpp20.rs:37-57 | doc/src/codegen/v2/lang_cpp/cpp20.rs:434-448 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp17.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp20.rs\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 598 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":"doc/src/codegen/v2/lang_cpp/cpp17.rs"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ff161e9e6bfed740cfce714ee6b6812c859c26303ae811c4f79271dfcd2c672"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201321 lines \u00D7 3): doc/src/codegen/v2/lang_java/wrappers.rs:1582-1602 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:1617-1631 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:1858-1872 \u2014 \u0060doc/src/codegen/v2/lang_java/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_kotlin/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 15 separate duplicated blocks between them, totalling at least 173 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_java/wrappers.rs"},"region":{"startLine":1582}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cfbe3fa50407e80002667c0e89723033921735919a49ff473f8b2d28f695e28"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201321 lines \u00D7 3): doc/src/codegen/v2/lang_ada/types.rs:133-147 | doc/src/codegen/v2/lang_fortran/types.rs:95-110 | doc/src/codegen/v2/lang_pascal/types.rs:84-104 \u2014 \u0060doc/src/codegen/v2/lang_ada/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_fortran/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 47 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_ada/types.rs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"e24a29ab724603b97e8f4add5bcf2904035891fca524b6d34658f0900ee8216d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201321 lines \u00D7 3): layout/src/cpurender/compositor.rs:2523-2539 | layout/src/cpurender/raster.rs:1420-1440 | layout/src/cpurender/raster.rs:1777-1797 \u2014 before extracting anything, compare \u0060layout/src/cpurender/compositor.rs\u0060 and \u0060layout/src/cpurender/raster.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 56 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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":2523}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e73e27322293e6d80a2ea34fad4331bd00de5a6b925fdf1091e255a911dcc83"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 3): layout/src/solver3/fc.rs:1663-1683 | layout/src/solver3/fc.rs:2409-2429 | layout/src/solver3/fc.rs:2505-2525 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":1663}}}],"partialFingerprints":{"codehealthFindingId/v1":"2394c8daf51c987bcbb8f47cc7f6681a075d2462e75c6b6f286659c1fa8c7b9b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201321 lines \u00D7 3): layout/src/solver3/fc.rs:8862-8881 | layout/src/solver3/fc.rs:9386-9406 | layout/src/solver3/fc.rs:9592-9611 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":8862}}}],"partialFingerprints":{"codehealthFindingId/v1":"6144af6cf692e79dcadf5d8bb6dfd9fc6b6b6dee77ec1c8b0eaaf60854fd650c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 3): layout/src/widgets/node_graph.rs:3174-3194 | layout/src/widgets/node_graph.rs:3236-3256 | layout/src/widgets/node_graph.rs:3329-3349 \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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":3174}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc739af0380f35337a282b6e3329f661ffa8797ed9743216c761b33ec478e5e1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201321 lines \u00D7 3): layout/src/xml/mod.rs:582-599 | layout/src/xml/mod.rs:628-648 | layout/src/xml/mod.rs:680-697 \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":"layout/src/xml/mod.rs"},"region":{"startLine":582}}}],"partialFingerprints":{"codehealthFindingId/v1":"9458327fb29f1a18899023d9e15016fef66370d4e001f23afb94929dbe1858d7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201321 lines \u00D7 3): webrender/core/src/quad.rs:210-230 | webrender/core/src/quad.rs:464-479 | webrender/core/src/quad.rs:635-650 \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":"webrender/core/src/quad.rs"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc2901cf01ce8e4ba1b25f00f09c84ab3916c714e9de19c330348a85c4995089"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201321 lines \u00D7 2): core/src/xml.rs:8426-8443 | core/src/xml.rs:8712-8732 \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":"core/src/xml.rs"},"region":{"startLine":8426}}}],"partialFingerprints":{"codehealthFindingId/v1":"05e3bfabe7de8ab0b406c700b54a27c23405e599b324d5137c7dd860d92fea50"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): dll/src/desktop/extra/geolocation/ios.rs:183-203 | dll/src/desktop/extra/geolocation/macos.rs:177-197 \u2014 before extracting anything, compare \u0060dll/src/desktop/extra/geolocation/ios.rs\u0060 and \u0060dll/src/desktop/extra/geolocation/macos.rs\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 130 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":"dll/src/desktop/extra/geolocation/ios.rs"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b7891b28fef01deb5a4e7b411279303b7ff3318c68a58c6121704ec39be7d5a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): dll/src/desktop/shell2/linux/system_style.rs:3182-3202 | dll/src/desktop/shell2/macos/system_style.rs:956-976 \u2014 \u0060dll/src/desktop/shell2/linux/system_style.rs\u0060 and \u0060dll/src/desktop/shell2/macos/system_style.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 50 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":3182}}}],"partialFingerprints":{"codehealthFindingId/v1":"12b72bfee40f3d86bacdefca68adec819ac41fb85589e2e16865720e5c4ad07f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:3380-3400 | dll/src/desktop/shell2/linux/x11/mod.rs:4382-4402 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":3380}}}],"partialFingerprints":{"codehealthFindingId/v1":"fca2ebec91fa5fb8ac545173562070633b81f1a295e7cf39d0c935c32225e3c5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201321 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:3412-3426 | dll/src/desktop/shell2/linux/x11/mod.rs:4440-4460 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":3412}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8107543063fb2b65978eba3fadbf7b5ed67e1a494cc7cd4366f10f8cb916fc7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201321 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:11002-11022 | dll/src/desktop/shell2/linux/x11/mod.rs:8756-8774 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":11002}}}],"partialFingerprints":{"codehealthFindingId/v1":"77f9fb65d6d0bb1f1981262aeb2079361d393e48bfbb9970e2d1cbe057065bcc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201321 lines \u00D7 2): dll/src/desktop/shell2/linux/x11/mod.rs:7091-7111 | dll/src/desktop/shell2/windows/mod.rs:1787-1806 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 and \u0060dll/src/desktop/shell2/windows/mod.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 443 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":7091}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb40f7587c0fdc5f0f34736de4e822a8e415dc437bcdb9aa790a7cfac5921b76"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): dll/src/desktop/shell2/macos/events.rs:1526-1546 | dll/src/desktop/shell2/windows/mod.rs:3491-3511 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/macos/events.rs\u0060 and \u0060dll/src/desktop/shell2/windows/mod.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 68 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/macos/events.rs"},"region":{"startLine":1526}}}],"partialFingerprints":{"codehealthFindingId/v1":"7553856a0bd642a751b8ecfdc58ac6d2fb33c9bb645654030ee16057fd0d82c2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201321 lines \u00D7 2): doc/src/autofix/mod.rs:4955-4975 | doc/src/autofix/mod.rs:4994-5013 \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":"doc/src/autofix/mod.rs"},"region":{"startLine":4955}}}],"partialFingerprints":{"codehealthFindingId/v1":"655b12791373df81b1a2be1618038af509032eea926f695ae1d8186a6e339e4e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201321 lines \u00D7 2): doc/src/autofix/workspace.rs:554-574 | doc/src/autofix/workspace.rs:598-617 \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":"doc/src/autofix/workspace.rs"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a6b4f8bfdfed2c2507784fd06694113dbf5d6b0e0120ed08395e1e55f1cbdb8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): doc/src/autofix/workspace.rs:1734-1754 | doc/src/autofix/workspace.rs:1786-1806 \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":"doc/src/autofix/workspace.rs"},"region":{"startLine":1734}}}],"partialFingerprints":{"codehealthFindingId/v1":"b14d2da4db912c613ff11e1217b6c3840670592fe4d7919b2605e32b7f393bb3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201321 lines \u00D7 2): doc/src/codegen/v2/lang_cpp/cpp11.rs:29-49 | doc/src/codegen/v2/lang_cpp/cpp14.rs:24-37 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp14.rs\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 164 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":"doc/src/codegen/v2/lang_cpp/cpp11.rs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"4164049be23123bc86e6fc2cc275ca994da774851d39547cc051e563ba671ba8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): doc/src/codegen/v2/lang_csharp/wrappers.rs:238-258 | doc/src/codegen/v2/lang_csharp/wrappers.rs:306-326 \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":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"09a9be977d0c88c6bb4407be0ae1ce345fc9b57eb8dc9aed8c6d8255df6da6c2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201321 lines \u00D7 2): doc/src/codegen/v2/lang_csharp/wrappers.rs:786-806 | doc/src/codegen/v2/lang_csharp/wrappers.rs:927-940 \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":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":786}}}],"partialFingerprints":{"codehealthFindingId/v1":"a638fcaf23cc81a177704dcff1395deebe572e4bdf9ab6a2e4506bdd3552c09f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201321 lines \u00D7 2): doc/src/patch/locatesource.rs:216-236 | doc/src/patch/locatesource.rs:398-416 \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":"doc/src/patch/locatesource.rs"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"34643adb82d7a72a509e9a77820f2a5d07a00a9afbb37e9c69f4d469cf6574ef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201321 lines \u00D7 2): doc/src/patch/mod.rs:841-861 | doc/src/patch/mod.rs:864-883 \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":"doc/src/patch/mod.rs"},"region":{"startLine":841}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e64878f844de0b3e65dfcfe94e0fad259b579666cd5526699893bc30f17ec81"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): doc/src/main.rs:645-665 | doc/src/main.rs:682-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":"doc/src/main.rs"},"region":{"startLine":645}}}],"partialFingerprints":{"codehealthFindingId/v1":"33fed64f6b4b62fd42f98b53682ca3ba2a6f277bda1a87f627aa758695e2473c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 3): layout/src/solver3/display_list.rs:5154-5176 | layout/src/solver3/display_list.rs:5242-5262 | layout/src/solver3/display_list.rs:5288-5342 \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":"layout/src/solver3/display_list.rs"},"region":{"startLine":5154}}}],"partialFingerprints":{"codehealthFindingId/v1":"26ea1aab5667e7b0a763688c4c341e23e00bafdff771c6347e5a3b58b880c31f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201321 lines \u00D7 2): layout/src/solver3/display_list.rs:5553-5561 | layout/src/solver3/display_list.rs:5715-5735 \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":"layout/src/solver3/display_list.rs"},"region":{"startLine":5553}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff5ecb2df2ed8c2617caf04df67dee8b390ef0f4d56958be2f4394ed0906a61b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): layout/src/text3/cache.rs:7149-7169 | layout/src/text3/dense.rs:425-445 \u2014 before extracting anything, compare \u0060layout/src/text3/cache.rs\u0060 and \u0060layout/src/text3/dense.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 62 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":"layout/src/text3/cache.rs"},"region":{"startLine":7149}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa7c230580124af9af50b430af4aeecb2862ddc7e947e6e9655c9c5f14a7ab1d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201321 lines \u00D7 2): layout/src/widgets/node_graph.rs:3194-3214 | layout/src/widgets/node_graph.rs:3361-3377 \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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":3194}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1938fb3cbca873ca6fe4012fcb17b8a1133a1540fe6951024e734414e9bde5c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201321 lines \u00D7 2): layout/src/widgets/text_area.rs:681-699 | layout/src/widgets/text_input.rs:1059-1079 \u2014 before extracting anything, compare \u0060layout/src/widgets/text_area.rs\u0060 and \u0060layout/src/widgets/text_input.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 147 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":"layout/src/widgets/text_area.rs"},"region":{"startLine":681}}}],"partialFingerprints":{"codehealthFindingId/v1":"c22f06b597de35ff2ae42006fd872d260ad51c164853ebe18d12b697590f637f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): webrender/core/src/batch.rs:2451-2471 | webrender/core/src/batch.rs:2583-2603 \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":"webrender/core/src/batch.rs"},"region":{"startLine":2451}}}],"partialFingerprints":{"codehealthFindingId/v1":"86520641985c8908d85316553fc190be31eed42a3ccbeb6667bcb3be7e63e901"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 5): webrender/core/src/batch.rs:1590-1609 | webrender/core/src/batch.rs:1688-1707 | webrender/core/src/batch.rs:1967-1986 | webrender/core/src/batch.rs:2241-2260 | webrender/core/src/batch.rs:2284-2303 \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":"webrender/core/src/batch.rs"},"region":{"startLine":1590}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfa3ae150e74ae3b92c87b2891a7cbb6b318752d9b3360e0f2b9ef5c2b6524d6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 4): doc/src/reftest/autodoc.rs:1042-1061 | doc/src/reftest/autoreview.rs:677-696 | doc/src/reftest/autoreview.rs:913-932 | doc/src/reftest/autoreview.rs:1818-1837 \u2014 before extracting anything, compare \u0060doc/src/reftest/autodoc.rs\u0060 and \u0060doc/src/reftest/autoreview.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 207 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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":1042}}}],"partialFingerprints":{"codehealthFindingId/v1":"70b5508c2440850589faf8446fdd591c80d6f4c5ad5a4eac2c83fb03a20c7449"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201320 lines \u00D7 4): layout/src/solver3/display_list.rs:4731-4750 | layout/src/solver3/display_list.rs:5082-5100 | layout/src/solver3/display_list.rs:5181-5199 | layout/src/solver3/display_list.rs:5267-5285 \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":"layout/src/solver3/display_list.rs"},"region":{"startLine":4731}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a4afc1edd7b5f42eb5e168d7a7f5e550414203ee33f3127c5fac1a5e12e857e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 3): webrender/core/src/batch.rs:2412-2431 | webrender/core/src/batch.rs:2544-2563 | webrender/core/src/batch.rs:2668-2687 \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":"webrender/core/src/batch.rs"},"region":{"startLine":2412}}}],"partialFingerprints":{"codehealthFindingId/v1":"162deafb2bc3f7bca4f9ad27943f37dc9ab12573ed70a19999f209af1cb4cdeb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201320 lines \u00D7 2): css/src/parser2.rs:903-921 | css/src/parser2.rs:1890-1909 \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":"css/src/parser2.rs"},"region":{"startLine":903}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c678c058ebe978313b0084628e7f2be39fa4ad1b4d64da0a00cacb4ea844547"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): dll/src/desktop/extra/geolocation/ios.rs:90-109 | dll/src/desktop/extra/geolocation/macos.rs:84-103 \u2014 before extracting anything, compare \u0060dll/src/desktop/extra/geolocation/ios.rs\u0060 and \u0060dll/src/desktop/extra/geolocation/macos.rs\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 130 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":"dll/src/desktop/extra/geolocation/ios.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a4f256ca5a6a2cb0c6dd05a9eadcf74448a27d3581f6890a28a8032c287431f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:4980-5002 | dll/src/desktop/shell2/linux/x11/events.rs:921-940 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/events.rs\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 249 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":4980}}}],"partialFingerprints":{"codehealthFindingId/v1":"40a2009dfa17d3d141d48d72d33c24c4c3d8592557c477d1efff0469b6658086"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201320 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:10428-10447 | dll/src/desktop/shell2/linux/wayland/mod.rs:10579-10595 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":10428}}}],"partialFingerprints":{"codehealthFindingId/v1":"5430dd30d7d08f2d8022c6abd9b8a5e1031426b8e74c09ef6574f348abea3070"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201320 lines \u00D7 2): dll/src/desktop/shell2/linux/x11/mod.rs:7390-7408 | dll/src/desktop/shell2/linux/x11/mod.rs:8448-8467 \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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":7390}}}],"partialFingerprints":{"codehealthFindingId/v1":"b631da5ef4129b5ad388fc23ac1e48a3e21e45745c6d9b5d38117fc78bd24199"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201320 lines \u00D7 2): dll/src/desktop/extra/biometric/mod.rs:61-80 | dll/src/desktop/extra/keyring/mod.rs:50-68 \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":"dll/src/desktop/extra/biometric/mod.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5759669d65ae8ee86bc6e4f1c3c4f717043a552c80a1a5ebecdfae910433d3d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201320 lines \u00D7 2): doc/src/api.rs:2197-2216 | doc/src/api.rs:2464-2482 \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":"doc/src/api.rs"},"region":{"startLine":2197}}}],"partialFingerprints":{"codehealthFindingId/v1":"93b4a511164e708cbd8eafa6da7f8a184f51992043fe116904af6daf6dec108f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201320 lines \u00D7 2): doc/src/autofix/type_index.rs:220-239 | doc/src/autofix/type_index.rs:337-355 \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":"doc/src/autofix/type_index.rs"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"58af52304e9f936b90a23a5adf2cb3aa75f28841f9c25ad131697f0b620a475c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): doc/src/autofix/type_index.rs:2975-2994 | doc/src/autofix/type_index.rs:3030-3049 \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":"doc/src/autofix/type_index.rs"},"region":{"startLine":2975}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dce1e3960cb44d3e86238d065f0d154a09a4ef4ec28b50ec533ac961e436c9a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): doc/src/codegen/v2/lang_cpp/cpp11.rs:41-60 | doc/src/codegen/v2/lang_cpp/cpp17.rs:40-59 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp17.rs\u0060 as WHOLE FILES: this scan already matched 38 separate duplicated blocks between them, totalling at least 759 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":"doc/src/codegen/v2/lang_cpp/cpp11.rs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4cb19b43ff878b229d86582f4da4a8329582c3733a6926a53e5d1f9d24aefb5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201320 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:3522-3534 | doc/src/codegen/v2/lang_rust.rs:3719-3738 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":3522}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dd162978a59e273b82b2d56a9230414c9fe01d588067a4a46e9d9d2b1aa3d60"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): doc/src/patch/mod.rs:1951-1970 | doc/src/patch/mod.rs:1973-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":"doc/src/patch/mod.rs"},"region":{"startLine":1951}}}],"partialFingerprints":{"codehealthFindingId/v1":"199d2707152c79031d86ba5f2c53fe561261a639bb4dc4bf3bc01e67c69f00c2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): doc/src/reftest/autoreview.rs:1131-1150 | doc/src/reftest/autoreview.rs:1570-1589 \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":"doc/src/reftest/autoreview.rs"},"region":{"startLine":1131}}}],"partialFingerprints":{"codehealthFindingId/v1":"82c61206529f1d9423eaec20bfa6d6aa8da7cf6176335043f68e50ea4865e2bc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): doc/src/codegen/v2/lang_kotlin/mod.rs:221-240 | doc/src/codegen/v2/lang_red/mod.rs:377-396 \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":"doc/src/codegen/v2/lang_kotlin/mod.rs"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"88ab7d0fc41ae644c995122d158149b0067c409bf280616f2e00e567fa5dc0ae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): doc/src/codegen/v2/lang_perl/functions.rs:71-90 | doc/src/codegen/v2/lang_ruby/functions.rs:90-109 \u2014 \u0060doc/src/codegen/v2/lang_perl/functions.rs\u0060 and \u0060doc/src/codegen/v2/lang_ruby/functions.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 47 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_perl/functions.rs"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4ab87dd2da8090d845c007ae13d91ef125bede457a523c9d3307146643b697f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): doc/src/codegen/v2/lang_lisp/mod.rs:247-266 | doc/src/codegen/v2/lang_racket/mod.rs:199-218 \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":"doc/src/codegen/v2/lang_lisp/mod.rs"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"b598ee4a84c1965d9dd4a9370ff541a5381e339fdab346d987e8b2b7597ca145"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201320 lines \u00D7 2): layout/src/form.rs:77-96 | layout/src/form.rs:313-325 \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":"layout/src/form.rs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"a31416921f564010b99d2ebe28ec3ec988893d2c933a6e717d4b509c1506f099"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): layout/src/glyph_cache.rs:369-388 | layout/src/glyph_cache.rs:521-540 \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":"layout/src/glyph_cache.rs"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5d7c35ee0ba24bfd25e6bb76e4465b4cd8c8d1325eda325c080c63da7113987"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201320 lines \u00D7 2): layout/src/solver3/cache.rs:2004-2023 | layout/src/solver3/cache.rs:2162-2179 \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":"layout/src/solver3/cache.rs"},"region":{"startLine":2004}}}],"partialFingerprints":{"codehealthFindingId/v1":"8254ce001eff5247c0ddec8d9a0f92c19123b5bdcb885c344ca049510cb3afc1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201320 lines \u00D7 2): layout/src/solver3/fc.rs:10933-10951 | layout/src/solver3/fc.rs:11016-11035 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":10933}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4c98bfdba0eb2b32a6ddaea6b71a32947a9e1f5e6132ee224bfc986e2f7187b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): layout/src/text3/cache.rs:1481-1500 | layout/src/text3/cache.rs:1613-1632 \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":"layout/src/text3/cache.rs"},"region":{"startLine":1481}}}],"partialFingerprints":{"codehealthFindingId/v1":"5258f9360cd17d4d78335e0b4716f8a763a58145a15cca0f9149a0b8c8952343"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201320 lines \u00D7 2): layout/src/text3/dense.rs:1334-1353 | layout/src/text3/dense.rs:1501-1519 \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":"layout/src/text3/dense.rs"},"region":{"startLine":1334}}}],"partialFingerprints":{"codehealthFindingId/v1":"56b3e5f802d68a91cd54901e66920ff88e416b3905f72b9a306572d0ed269fc3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): layout/src/widgets/pagination.rs:285-304 | layout/src/widgets/segmented.rs:254-273 \u2014 before extracting anything, compare \u0060layout/src/widgets/pagination.rs\u0060 and \u0060layout/src/widgets/segmented.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 70 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":"layout/src/widgets/pagination.rs"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb02d7137ba78f8b5252cf8e20f2571123db24f836dca7ea3067db392e660051"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): layout/src/widgets/themes/flat.rs:568-587 | layout/src/widgets/themes/flora.rs:790-809 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":568}}}],"partialFingerprints":{"codehealthFindingId/v1":"9357d80d1d09e3b26ec8777e017535fe7b106cc1c98273008568a1a3b7f628d0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 11): dll/src/desktop/shell2/macos/mod.rs:301-319 | dll/src/desktop/shell2/macos/mod.rs:347-365 | dll/src/desktop/shell2/macos/mod.rs:376-394 | dll/src/desktop/shell2/macos/mod.rs:406-424 | dll/src/desktop/shell2/macos/mod.rs:669-687 | dll/src/desktop/shell2/macos/mod.rs:703-721 | dll/src/desktop/shell2/macos/mod.rs:733-751 | dll/src/desktop/shell2/macos/mod.rs:762-780 | dll/src/desktop/shell2/macos/mod.rs:791-809 | dll/src/desktop/shell2/macos/mod.rs:820-838 | dll/src/desktop/shell2/macos/mod.rs:880-898 \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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc9d61bbdd1fe31aa559be0c3f60d66f588cb41e25f777de3ca8ae70fbd5a67e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201319 lines \u00D7 3): doc/src/codegen/v2/lang_node/wrappers.rs:437-455 | doc/src/codegen/v2/lang_node/wrappers.rs:661-674 | doc/src/codegen/v2/lang_node/wrappers.rs:1127-1140 \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":"doc/src/codegen/v2/lang_node/wrappers.rs"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"5660e68d26cc8d46841cc5fcc986f5b7747f0b4d3eaa2ef93c5d3d38cb7594e9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201319 lines \u00D7 3): doc/src/codegen/v2/lang_zig/wrappers.rs:731-749 | doc/src/codegen/v2/lang_zig/wrappers.rs:935-947 | doc/src/codegen/v2/lang_zig/wrappers.rs:1015-1027 \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":"doc/src/codegen/v2/lang_zig/wrappers.rs"},"region":{"startLine":731}}}],"partialFingerprints":{"codehealthFindingId/v1":"e846c4edf1190f102d6b3d70420ab235593394f93a4011bad78c1e2bbc00c5ba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): core/src/resources.rs:2635-2653 | core/src/resources.rs:2827-2845 \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":"core/src/resources.rs"},"region":{"startLine":2635}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b8eadd054ac20fa93685911fd369f15acf367659696b2d357177c99b2aa0cfd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): core/src/style.rs:122-140 | core/src/style.rs:166-184 \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":"core/src/style.rs"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"a71890b386c4051ead7bd02c236d9f83b3e7d0046b94691ff4a5cfffca983cf0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201319 lines \u00D7 2): css/src/system.rs:2653-2667 | css/src/system.rs:2854-2872 \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":"css/src/system.rs"},"region":{"startLine":2653}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5f5488d7c92e9cced6985d3fd0e4fd1fbd45c458cce3233894be851d48866b4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201319 lines \u00D7 2): css/src/system.rs:2762-2780 | css/src/system.rs:2837-2853 \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":"css/src/system.rs"},"region":{"startLine":2762}}}],"partialFingerprints":{"codehealthFindingId/v1":"95a8afaca9ade2348f9582f9fff243187ed5c21330a750fb52bd09fa02e23c7d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201319 lines \u00D7 2): dll/src/desktop/shell2/common/layout.rs:953-971 | layout/src/window.rs:10871-10886 \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":"dll/src/desktop/shell2/common/layout.rs"},"region":{"startLine":953}}}],"partialFingerprints":{"codehealthFindingId/v1":"15e956ab543e4d5193fa0ae26eb4d39ccc5b1a938bff59d4e026c9364f54216f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201319 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:1453-1470 | dll/src/desktop/shell2/windows/mod.rs:7007-7025 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/windows/mod.rs\u0060 as WHOLE FILES: this scan already matched 21 separate duplicated blocks between them, totalling at least 292 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":1453}}}],"partialFingerprints":{"codehealthFindingId/v1":"774df142753057fca3aa5a04742283e9fefef4b21fbd5cf3d389c61b7ed4f541"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:3349-3367 | dll/src/desktop/shell2/linux/x11/mod.rs:4352-4370 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":3349}}}],"partialFingerprints":{"codehealthFindingId/v1":"d29a5e25e4a4cec57c4eac148bdb63d3b3e5e9797f226d2f2c5b9d5bcc274ef5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201319 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:3672-3690 | dll/src/desktop/shell2/linux/wayland/mod.rs:5377-5391 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":3672}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b895bda60077a561fad2eb3d4a78bf666d55063530e224d10a277c2f9f0502d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:5032-5050 | dll/src/desktop/shell2/macos/events.rs:673-691 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/macos/events.rs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 132 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":5032}}}],"partialFingerprints":{"codehealthFindingId/v1":"22769ad0b2808d1c96ed2c5d2596d96a08c1bf8d828c68bfe63f5fb6b24df37a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:11047-11065 | dll/src/desktop/shell2/linux/x11/mod.rs:8798-8816 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":11047}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ba45214e9d75d145c8d96164538c782fcc0aa3cf5146df8f6e1851a51190f4c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201319 lines \u00D7 2): dll/src/desktop/shell2/linux/x11/mod.rs:5923-5941 | dll/src/desktop/shell2/linux/x11/mod.rs:7383-7400 \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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":5923}}}],"partialFingerprints":{"codehealthFindingId/v1":"072c96d35d5464e31766873e3b79a40d614b36744bbc7c9891002be80fab0cc2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201319 lines \u00D7 2): dll/src/desktop/shell2/windows/tooltip.rs:217-235 | dll/src/desktop/shell2/windows/tooltip.rs:249-263 \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":"dll/src/desktop/shell2/windows/tooltip.rs"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"6262d03f324fc115bc8514d7fbcb20ebce345bcb691bf1fb02963f1c09c94b7b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201319 lines \u00D7 2): dll/src/desktop/wr_translate2.rs:1537-1554 | dll/src/desktop/wr_translate2.rs:2920-2938 \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":"dll/src/desktop/wr_translate2.rs"},"region":{"startLine":1537}}}],"partialFingerprints":{"codehealthFindingId/v1":"42565cabb3f75c9b3b70cf4c8e8628e640981d4821958c3658b78ae8770142b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201319 lines \u00D7 2): dll/src/web/symbol_table.rs:1440-1454 | dll/src/web/symbol_table.rs:1839-1857 \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":"dll/src/web/symbol_table.rs"},"region":{"startLine":1440}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6209ba12360adab46f5974155785e6a504e74db46c7a60f8f078239d097fdb7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201319 lines \u00D7 2): dll/src/web/transpiler_remill.rs:4889-4907 | dll/src/web/transpiler_remill.rs:4966-4979 \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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":4889}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec7b1d2c7d148b2dd0d7729e3a84803ffeb7ccbbdb12031c7247501262c22286"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): doc/src/autofix/workspace.rs:1401-1419 | doc/src/autofix/workspace.rs:1645-1663 \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":"doc/src/autofix/workspace.rs"},"region":{"startLine":1401}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4cb80d71fe23daeeaa24af13c37ff14c68fe616a3151831e2aa528dd8a25b6a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): doc/src/codegen/v2/lang_c.rs:1172-1190 | doc/src/codegen/v2/lang_cpp/common.rs:245-263 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_c.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/common.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 41 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_c.rs"},"region":{"startLine":1172}}}],"partialFingerprints":{"codehealthFindingId/v1":"bef6e05ec0239b225eae6f12ac062e9bc5f92f06ee2989de19358dd8bbb21fcb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:652-670 | doc/src/codegen/v2/lang_swift/wrappers.rs:485-503 \u2014 \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 29 separate duplicated blocks between them, totalling at least 269 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":652}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2b6aaa93bf12e991712218cd3cdea11f32950dafc3141ec6dd230716f584c85"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201319 lines \u00D7 2): doc/src/codegen/v2/lang_kotlin/wrappers.rs:1557-1575 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:1785-1796 \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":"doc/src/codegen/v2/lang_kotlin/wrappers.rs"},"region":{"startLine":1557}}}],"partialFingerprints":{"codehealthFindingId/v1":"5aebfe3bb3e549acea5e0c435b0fadb9a4153ba8354cf51b11e66ce5334925a7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:2662-2680 | doc/src/codegen/v2/rust/shared.rs:216-234 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_rust.rs\u0060 and \u0060doc/src/codegen/v2/rust/shared.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 200 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2662}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f35256715436fa9b5ecfa84b8f4bb1c2834f8cef75524c194575bb5e57d391d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): doc/src/patch/index.rs:325-343 | doc/src/patch/index.rs:427-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":"doc/src/patch/index.rs"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"55101b160c7a2d69d1e0efd94dfbe60bfb94b4a1abeb2e389a3088f771317ac3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): doc/src/reftest/debug.rs:328-346 | doc/src/reftest/regression.rs:1634-1652 \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":"doc/src/reftest/debug.rs"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d939259842924469d0656c87b9f29b48784276c19d49e9946f4c1e1a627d9c2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): doc/src/print.rs:234-252 | doc/src/print.rs:261-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":"doc/src/print.rs"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"a36a6ce77a4af25dcfb8d057e3e79786cd1a4d57a34464aae0cdf8f65f95786d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): layout/src/managers/scroll_state.rs:1489-1507 | layout/src/managers/scroll_state.rs:1532-1550 \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":"layout/src/managers/scroll_state.rs"},"region":{"startLine":1489}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc1cdacdeb0c59b86dc0a5c24ae19976550d38a5f8055ad6c544072f854753ae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): layout/src/solver3/paged_layout.rs:304-322 | layout/src/solver3/paged_layout.rs:2544-2562 \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":"layout/src/solver3/paged_layout.rs"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"4504eec0fc3adc23e1c575133d9c2b61c36b98eb679f23404b2295449172cdf9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): layout/src/window.rs:2041-2059 | layout/src/window.rs:7770-7788 \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":"layout/src/window.rs"},"region":{"startLine":2041}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea15f45466bd08d11eb224a69b4b29c630dbe8f777676382437de974a2c43b31"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): layout/src/window.rs:14447-14465 | layout/src/window.rs:14543-14561 \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":"layout/src/window.rs"},"region":{"startLine":14447}}}],"partialFingerprints":{"codehealthFindingId/v1":"30b794cd1dea9ca227a872581459ffd59aa63ad90d2cd59bd476df20820e6b13"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): webrender/core/src/frame_builder.rs:1061-1079 | webrender/core/src/render_target.rs:328-346 \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":"webrender/core/src/frame_builder.rs"},"region":{"startLine":1061}}}],"partialFingerprints":{"codehealthFindingId/v1":"49ceebd69299a5c34ec077b273c285a67368915ecf2c6d943d756133bd862060"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201319 lines \u00D7 2): webrender/core/src/picture.rs:4748-4764 | webrender/core/src/render_task.rs:2265-2283 \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":"webrender/core/src/picture.rs"},"region":{"startLine":4748}}}],"partialFingerprints":{"codehealthFindingId/v1":"56fcf6d573de4589b74d2cd79be9dcfae41163960f79b6ee167d2775320eb5aa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201318 lines \u00D7 6): doc/src/codegen/v2/lang_cpp/cpp03.rs:56-73 | doc/src/codegen/v2/lang_cpp/cpp11.rs:57-74 | doc/src/codegen/v2/lang_cpp/cpp14.rs:43-59 | doc/src/codegen/v2/lang_cpp/cpp17.rs:56-73 | doc/src/codegen/v2/lang_cpp/cpp20.rs:66-83 | doc/src/codegen/v2/lang_cpp/cpp20.rs:455-472 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"f96eab7170850fc60823b1f1c1fac4ae197a15e163057c6fc679e85e2aee78c6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 5): layout/src/dialogs/crash_reporter.rs:201-218 | layout/src/dialogs/gpu_check.rs:215-232 | layout/src/dialogs/report_problem.rs:470-487 | layout/src/dialogs/telemetry_consent.rs:203-220 | layout/src/dialogs/update_version.rs:321-338 \u2014 before extracting anything, compare \u0060layout/src/dialogs/crash_reporter.rs\u0060 and \u0060layout/src/dialogs/report_problem.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 37 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":"layout/src/dialogs/crash_reporter.rs"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a9922ff5d30d25d42925e4a8a3054c4f45dcdcd7c00288937aa4c4a365bdf02"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 4): doc/src/codegen/v2/lang_cpp/cpp03.rs:555-572 | doc/src/codegen/v2/lang_cpp/cpp11.rs:475-492 | doc/src/codegen/v2/lang_cpp/cpp17.rs:664-681 | doc/src/codegen/v2/lang_cpp/cpp20.rs:363-380 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":555}}}],"partialFingerprints":{"codehealthFindingId/v1":"50ab3cdbeb83b36e3f2449aa96d6bfee9678b8053f2f3d7bbe7bb2392813551d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (1\u201318 lines \u00D7 5): core/src/events.rs:1747-1764 | core/src/events.rs:1890-1907 | core/src/events.rs:2049-2066 | core/src/window.rs:2585-2585 | layout/src/text3/default.rs:660-663 \u2014 there are 5 copies across 3 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 5 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"core/src/events.rs"},"region":{"startLine":1747}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac86bdbfe4f871adedba9ce5773ca271964f30e90caa06c66ec272e2162e47ba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201318 lines \u00D7 3): dll/src/desktop/shell2/linux/wayland/mod.rs:3419-3428 | dll/src/desktop/shell2/linux/wayland/mod.rs:3726-3735 | dll/src/desktop/shell2/linux/x11/mod.rs:4445-4462 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":3419}}}],"partialFingerprints":{"codehealthFindingId/v1":"30d23ca11ab5030ec31f991ec3e3f63a1506bd089699a9eb9fd59d8db84c32bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 3): doc/src/autofix/type_index.rs:2976-2993 | doc/src/autofix/type_index.rs:3002-3019 | doc/src/autofix/type_index.rs:3031-3048 \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":"doc/src/autofix/type_index.rs"},"region":{"startLine":2976}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1be3bf688f56ecb35a80cb0286200bc571edf0b52916314b8bd29262a998857"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201318 lines \u00D7 3): doc/src/codegen/v2/lang_cpp/cpp11.rs:38-55 | doc/src/codegen/v2/lang_cpp/cpp14.rs:32-40 | doc/src/codegen/v2/lang_cpp/cpp17.rs:37-54 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp14.rs\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 164 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":"doc/src/codegen/v2/lang_cpp/cpp11.rs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad5d4db481032d733283e9c3481fe1c8479ff5a7c812115fb2b51d1730a41a66"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 3): doc/src/codegen/v2/lang_csharp/wrappers.rs:542-559 | doc/src/codegen/v2/lang_java/wrappers.rs:958-975 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:371-388 \u2014 \u0060doc/src/codegen/v2/lang_csharp/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_java/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 14 separate duplicated blocks between them, totalling at least 156 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":542}}}],"partialFingerprints":{"codehealthFindingId/v1":"d49b043a7e4210393f94f1843b5f8512c92b4da68b805e104a1c60c2f8cc6bbc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): core/src/diff.rs:937-954 | core/src/events.rs:2239-2256 \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":"core/src/diff.rs"},"region":{"startLine":937}}}],"partialFingerprints":{"codehealthFindingId/v1":"12bfd1dc638fe71d719751bcaddd6022b51cc4c776de7dbc0eb882eb61bda2c1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): core/src/dom.rs:837-854 | core/src/dom.rs:877-894 \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":"core/src/dom.rs"},"region":{"startLine":837}}}],"partialFingerprints":{"codehealthFindingId/v1":"3589342bf4467ae2db35ce73ec901fa766b8ff4781b99b28cb54f9e41838f1be"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): css/src/system.rs:2896-2913 | css/src/system.rs:2945-2962 \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":"css/src/system.rs"},"region":{"startLine":2896}}}],"partialFingerprints":{"codehealthFindingId/v1":"5198db23a221bdd4dde6a36b6e09c543dcacd276d1887d71de0da82bfef975a7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201318 lines \u00D7 2): dll/src/desktop/extra/pdf/mod.rs:504-516 | dll/src/desktop/extra/pdf/mod.rs:529-546 \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":"dll/src/desktop/extra/pdf/mod.rs"},"region":{"startLine":504}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c502c2856b2b552b42a4f1a0dc9d5273e1b72223059c8acb7a5e62f3c0fd31e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): dll/src/desktop/shell2/common/transient.rs:256-273 | dll/src/desktop/shell2/common/transient.rs:330-347 \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":"dll/src/desktop/shell2/common/transient.rs"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"27cc8e0216671ec4ec5b102c90b83dd929421c48b3e7d33b34396f1fef0a2ce7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): dll/src/desktop/shell2/linux/gnome_menu/protocol_impl.rs:54-71 | dll/src/desktop/shell2/linux/gnome_menu/protocol_impl.rs:103-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":"dll/src/desktop/shell2/linux/gnome_menu/protocol_impl.rs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"87e926cc86acdeec74243f5756a8dc1464753c3edd379c66d2773b8ba14a867e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): dll/src/desktop/shell2/linux/gnome_menu/protocol_impl.rs:403-420 | dll/src/desktop/shell2/linux/gnome_menu/protocol_impl.rs:503-520 \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":"dll/src/desktop/shell2/linux/gnome_menu/protocol_impl.rs"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"770b864dca8355741b2879d034f717fa17442116ae4874cc0faada1483067fb8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:2747-2764 | dll/src/desktop/shell2/linux/wayland/mod.rs:2809-2826 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":2747}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e28e54a89e117d96a7c1a6ed6c81ba92a27be679952e20f5130781be61329d3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201318 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:10403-10420 | dll/src/desktop/shell2/linux/wayland/mod.rs:10674-10688 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":10403}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2805106e6570eb89080af61781f0bc68560240913ee62409da200044d8a35a7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201318 lines \u00D7 2): dll/src/desktop/shell2/macos/mod.rs:7456-7473 | dll/src/desktop/shell2/windows/mod.rs:7584-7600 \u2014 \u0060dll/src/desktop/shell2/macos/mod.rs\u0060 and \u0060dll/src/desktop/shell2/windows/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 12 separate duplicated blocks between them, totalling at least 186 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":7456}}}],"partialFingerprints":{"codehealthFindingId/v1":"10313c8406ef4b458ccfde34c6d7a75b9c51c7c14ebbf3eef404290b2141e74a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): dll/src/desktop/wr_translate2.rs:2166-2183 | dll/src/desktop/wr_translate2.rs:2185-2202 \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":"dll/src/desktop/wr_translate2.rs"},"region":{"startLine":2166}}}],"partialFingerprints":{"codehealthFindingId/v1":"966f9f87d26c3a9430e0aa1e45e7ebb57a0bd6c24e1564ad1b4f55155c6801bb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): dll/src/web/transpiler_remill.rs:11108-11125 | dll/src/web/transpiler_remill.rs:11128-11151 \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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":11108}}}],"partialFingerprints":{"codehealthFindingId/v1":"329ece091c6747fa6c9fdd901cce8fa85751f52a2131ebdbd3f58c3f9f394272"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): dll/src/desktop/shell2/common/debug_server/platform.rs:178-195 | dll/src/desktop/shell2/common/debug_server/platform.rs:449-466 \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":"dll/src/desktop/shell2/common/debug_server/platform.rs"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"899d8734e833d8bce3b4b77eb534bebab3ff1f38aab0afee1d5b1230e1722c45"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): dll/src/desktop/extra/permission/ios.rs:145-162 | dll/src/desktop/extra/permission/macos.rs:246-263 \u2014 before extracting anything, compare \u0060dll/src/desktop/extra/permission/ios.rs\u0060 and \u0060dll/src/desktop/extra/permission/macos.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 100 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":"dll/src/desktop/extra/permission/ios.rs"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f6f7f5cc8169dc3b3e8c66928a75288615c74f96984fabd1bf4c02d1ddcf263"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): dll/src/desktop/shell2/run.rs:644-661 | dll/src/desktop/shell2/run.rs:1997-2014 \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":"dll/src/desktop/shell2/run.rs"},"region":{"startLine":644}}}],"partialFingerprints":{"codehealthFindingId/v1":"20b5cf44d0585510b490aa7d7eba2aca482d5685b83a7ef0d69fb24e77070525"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201318 lines \u00D7 2): doc/src/autofix/discovery/parallel.rs:218-233 | doc/src/autofix/discovery/workspace.rs:246-263 \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":"doc/src/autofix/discovery/parallel.rs"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"95b7dcf8c79247f58fd402313a3af14754857e60a74b271882613731763a5d56"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): doc/src/codegen/v2/ir.rs:1104-1121 | doc/src/codegen/v2/ir.rs:1136-1153 \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":"doc/src/codegen/v2/ir.rs"},"region":{"startLine":1104}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5b4eb84694f5f74d934545bc899965f6c0f9429cf615702269ef524ac6d68b1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): doc/src/codegen/v2/lang_cpp/cpp03.rs:638-655 | doc/src/codegen/v2/lang_cpp/cpp11.rs:560-577 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":638}}}],"partialFingerprints":{"codehealthFindingId/v1":"9279d6694adb2de156b4ed78553aeabf10e01af24be3fee225689c51eb2f9dd8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201318 lines \u00D7 2): doc/src/codegen/v2/lang_crystal/wrappers.rs:522-539 | doc/src/codegen/v2/lang_crystal/wrappers.rs:551-566 \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":"doc/src/codegen/v2/lang_crystal/wrappers.rs"},"region":{"startLine":522}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e01b5a33abf20c7307ce8018226db0c49bf30cd9b6309818c013d2139ebec00"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): doc/src/codegen/v2/lang_java/wrappers.rs:1753-1770 | doc/src/codegen/v2/lang_java/wrappers.rs:1874-1891 \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":"doc/src/codegen/v2/lang_java/wrappers.rs"},"region":{"startLine":1753}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3cf71ba7076e9091d7d1150ca2eeef63b547224aa0cf9afa3da8c5fbc6d540f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:2327-2344 | doc/src/codegen/v2/rust/shared.rs:16-33 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_rust.rs\u0060 and \u0060doc/src/codegen/v2/rust/shared.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 200 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2327}}}],"partialFingerprints":{"codehealthFindingId/v1":"acee67e443b7401e1e33f65cab358cd6f178ec287588cc6163900c946d919410"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201318 lines \u00D7 2): doc/src/reftest/autodoc.rs:1764-1781 | doc/src/reftest/autodoc.rs:2033-2049 \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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":1764}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bca39b9140d028654680b366887aebd620799deac8b128aeb1dc47aacdcf864"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201318 lines \u00D7 2): doc/src/codegen/v2/lang_lua/wrappers.rs:264-281 | doc/src/codegen/v2/lang_lua/wrappers.rs:458-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":"doc/src/codegen/v2/lang_lua/wrappers.rs"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e422cfbc262725fe16b72f929ee23238e264b5688a05073a9dcd0d07375c37a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): doc/src/codegen/v2/lang_lua/wrappers.rs:803-822 | doc/src/codegen/v2/lang_lua/wrappers.rs:1267-1284 \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":"doc/src/codegen/v2/lang_lua/wrappers.rs"},"region":{"startLine":803}}}],"partialFingerprints":{"codehealthFindingId/v1":"df39c37a9cde5e54ea8fb67ee5259bc08226529cca07cba18eee08ecbbdebc3e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201318 lines \u00D7 2): doc/src/codegen/v2/lang_lua/wrappers.rs:1109-1126 | doc/src/codegen/v2/lang_lua/wrappers.rs:1175-1188 \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":"doc/src/codegen/v2/lang_lua/wrappers.rs"},"region":{"startLine":1109}}}],"partialFingerprints":{"codehealthFindingId/v1":"87c563dc48f8d0963cc5d17ac40c8cd3ba673c7dc0f47b744fd428e5a0d1151a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201318 lines \u00D7 2): doc/src/codegen/v2/lang_lua/wrappers.rs:1316-1331 | doc/src/codegen/v2/lang_lua/wrappers.rs:1453-1470 \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":"doc/src/codegen/v2/lang_lua/wrappers.rs"},"region":{"startLine":1316}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8aca85612372cfc03209aa074d31bb61bf459e1a5f27e0cdfb55def898c01f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201318 lines \u00D7 2): doc/src/codegen/v2/lang_ruby/types.rs:324-341 | doc/src/codegen/v2/lang_ruby/types.rs:647-660 \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":"doc/src/codegen/v2/lang_ruby/types.rs"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e622921bf24f471444000d901b973bf7e631f920a2d04989b714e12c9ed4932"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201318 lines \u00D7 2): doc/src/codegen/v2/lang_fortran/types.rs:482-499 | doc/src/codegen/v2/lang_fortran/types.rs:527-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":"doc/src/codegen/v2/lang_fortran/types.rs"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fef069a3a707d1f4a4a685020c8cb513715bedfc8efa3b4d167e53dcec493a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201318 lines \u00D7 2): doc/src/utils/analyze.rs:285-298 | doc/src/utils/analyze.rs:314-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":"doc/src/utils/analyze.rs"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"b17aef70b60b60cca5ad863b0b7692da78f95fa49bdce6029cb4042e966d54ff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201318 lines \u00D7 2): doc/src/codegen/v2/transmute_helpers.rs:259-276 | doc/src/codegen/v2/transmute_helpers.rs:289-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":"doc/src/codegen/v2/transmute_helpers.rs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"383a967ab0ad915c4c59f1c36f8782bc14b6a7f1328385e348db7cbf23e8c96d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201318 lines \u00D7 2): doc/src/codegen/v2/lang_php/wrappers.rs:144-161 | doc/src/codegen/v2/lang_php/wrappers.rs:256-272 \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":"doc/src/codegen/v2/lang_php/wrappers.rs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"766829ab38ca0dcd5458f826649505aff08cbe5a2666524544f352bf40b861ad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201318 lines \u00D7 2): doc/src/codegen/v2/lang_cpp/common.rs:518-535 | doc/src/codegen/v2/lang_cpp/common.rs:930-944 \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":"doc/src/codegen/v2/lang_cpp/common.rs"},"region":{"startLine":518}}}],"partialFingerprints":{"codehealthFindingId/v1":"751b12ac5133518a1df0e8efca43fcbfb8ac24af7dfd6c09d5b7e448811f7a0a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201318 lines \u00D7 2): layout/src/cpurender/pixmap.rs:1315-1332 | layout/src/cpurender/pixmap.rs:1427-1442 \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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":1315}}}],"partialFingerprints":{"codehealthFindingId/v1":"6faf8d9a29d89d673a867e7109f6c449262a5e50114d935ab7badc63a9939485"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): layout/src/cpurender/svg.rs:533-550 | layout/src/xml/svg.rs:2055-2072 \u2014 \u0060layout/src/cpurender/svg.rs\u0060 and \u0060layout/src/xml/svg.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 35 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/cpurender/svg.rs"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"adc4e66e5cf7c239b35e2d7665b586dec305a692c0374a4d9faf8823a956c5af"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): layout/src/glyph_cache.rs:453-470 | layout/src/glyph_cache.rs:587-604 \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":"layout/src/glyph_cache.rs"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"45a893062d9e4de096315d5d0f0c478c3c9ddcb77133e78d098bf20ef414499a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201318 lines \u00D7 2): layout/src/managers/gesture.rs:1053-1070 | layout/src/managers/gesture.rs:1181-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":"layout/src/managers/gesture.rs"},"region":{"startLine":1053}}}],"partialFingerprints":{"codehealthFindingId/v1":"af39cbf3fd63e7256492a17bca0b398759f1f6167896834ff8127ced53fcc6b4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201318 lines \u00D7 2): layout/src/solver3/fc.rs:6492-6506 | layout/src/solver3/fc.rs:7970-7987 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":6492}}}],"partialFingerprints":{"codehealthFindingId/v1":"091debe6bd656a7e66931b4b7e79346c89795c9078e464ee6a24085e0e18c1c2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): layout/src/solver3/fc.rs:9916-9933 | layout/src/solver3/fc.rs:10059-10076 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":9916}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdf6354f5888f263d30c1059c1d16604a419d6ed501636e4032aff45cb6d7fb9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): layout/src/widgets/node_graph.rs:1745-1762 | layout/src/widgets/node_graph.rs:1768-1785 \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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":1745}}}],"partialFingerprints":{"codehealthFindingId/v1":"8098918ddd9ce12d890f129ea7dcd9cce2c21b737d5d7176683bd3f8c99124a7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): layout/src/widgets/themes/flat.rs:1345-1362 | layout/src/widgets/themes/flora.rs:1737-1754 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":1345}}}],"partialFingerprints":{"codehealthFindingId/v1":"c87ab8b366a38866446df0cca5370197fe7bed99a09b814f583c99202f419a6d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 4): dll/src/desktop/shell2/linux/wayland/mod.rs:10938-10954 | dll/src/desktop/shell2/linux/wayland/mod.rs:11057-11073 | dll/src/desktop/shell2/linux/x11/mod.rs:8695-8711 | dll/src/desktop/shell2/linux/x11/mod.rs:8808-8824 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":10938}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8d37a342a370dc967bbc69bd5565b446cce84e77ca4b54430404ec3a55377ab"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 4): doc/src/codegen/v2/lang_cpp/cpp03.rs:192-208 | doc/src/codegen/v2/lang_cpp/cpp11.rs:702-718 | doc/src/codegen/v2/lang_cpp/cpp17.rs:213-229 | doc/src/codegen/v2/lang_cpp/cpp20.rs:678-694 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"175dda551d3bf4dee5cf1c343dd5ceb20b61fe448ffe97c43084a13c856511e5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 3): dll/src/desktop/wr_translate2.rs:2405-2421 | dll/src/desktop/wr_translate2.rs:2540-2556 | dll/src/desktop/wr_translate2.rs:2650-2666 \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":"dll/src/desktop/wr_translate2.rs"},"region":{"startLine":2405}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c7be1fde053b864ecfa41e7cac48b09ca3d70b96e78254959e70a3423899e73"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 3): doc/src/autofix/type_index.rs:255-271 | doc/src/autofix/type_index.rs:495-511 | doc/src/autofix/type_index.rs:531-547 \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":"doc/src/autofix/type_index.rs"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fa0913fc6dcb56f52bdaf28d485eaa217d57d923ac5f757412e3562cd91a979"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 3): doc/src/autofix/debug.rs:723-739 | doc/src/autofix/debug.rs:889-905 | doc/src/autofix/debug.rs:1020-1036 \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":"doc/src/autofix/debug.rs"},"region":{"startLine":723}}}],"partialFingerprints":{"codehealthFindingId/v1":"76b405f7d271b230084c2531db0d63dabab3bb92c39a5b823822fd12dbd9553e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201317 lines \u00D7 3): layout/src/solver3/fc.rs:8950-8962 | layout/src/solver3/fc.rs:9500-9512 | layout/src/solver3/fc.rs:9997-10013 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":8950}}}],"partialFingerprints":{"codehealthFindingId/v1":"e23115caa58f1d2f38a3c7506d470ecaf21fa83beb480f9f794c8916e85ba4d2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201317 lines \u00D7 3): layout/src/text3/edit.rs:557-573 | layout/src/text3/edit.rs:822-835 | layout/src/text3/edit.rs:955-968 \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":"layout/src/text3/edit.rs"},"region":{"startLine":557}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbee2c0d6192e8a61373c754648007e113c3b0eee8be8518990a5f1255939749"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201317 lines \u00D7 2): css/src/dynamic_selector.rs:2354-2364 | css/src/dynamic_selector.rs:2425-2441 \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":"css/src/dynamic_selector.rs"},"region":{"startLine":2354}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d570b9ab484f16c22aa9dd6b13776eb35cd53111ee3973af5ddd780394c66c4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): css/src/system.rs:1792-1808 | dll/src/desktop/menu_renderer.rs:647-663 \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":"css/src/system.rs"},"region":{"startLine":1792}}}],"partialFingerprints":{"codehealthFindingId/v1":"8028ee22c4d1c992c2327ea2e98e69c271a271cc39e72d349460f78138c89379"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201317 lines \u00D7 2): dll/src/desktop/extra/screencap/linux.rs:587-603 | dll/src/desktop/extra/screencap/linux.rs:660-675 \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":"dll/src/desktop/extra/screencap/linux.rs"},"region":{"startLine":587}}}],"partialFingerprints":{"codehealthFindingId/v1":"564a1e3bdf8abebdcff85088e159aa540b21a75b728d5eed91bec3479d3e4f04"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): dll/src/desktop/shell2/android/mod.rs:1688-1704 | dll/src/desktop/shell2/ios/mod.rs:679-695 \u2014 \u0060dll/src/desktop/shell2/android/mod.rs\u0060 and \u0060dll/src/desktop/shell2/ios/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 17 separate duplicated blocks between them, totalling at least 215 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":1688}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3ec19a59d816815ab36dfef6c990c78bbb9747ae5365d73787aeef57f8d08a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201317 lines \u00D7 2): dll/src/desktop/shell2/common/event.rs:12904-12920 | dll/src/desktop/shell2/common/event.rs:13086-13099 \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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":12904}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea529c1ffa38d6635160baaca59b33557b589d079f7e9a6bd66f59187d7a3bfd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201317 lines \u00D7 2): dll/src/desktop/shell2/common/layout.rs:711-722 | dll/src/desktop/shell2/common/layout.rs:1358-1374 \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":"dll/src/desktop/shell2/common/layout.rs"},"region":{"startLine":711}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5645d2faea9789a7c351b4fcd38d01acf8bc5d4bd8b3a5fe556329754a1733e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201317 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/events.rs:846-862 | dll/src/desktop/shell2/linux/wayland/events.rs:1258-1273 \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":"dll/src/desktop/shell2/linux/wayland/events.rs"},"region":{"startLine":846}}}],"partialFingerprints":{"codehealthFindingId/v1":"3da3b9a41206429124913cecf6c9055a1ffca8066bdcc32bf65e1513a9f82e60"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201317 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:3717-3732 | dll/src/desktop/shell2/windows/mod.rs:2014-2030 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/windows/mod.rs\u0060 as WHOLE FILES: this scan already matched 21 separate duplicated blocks between them, totalling at least 292 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":3717}}}],"partialFingerprints":{"codehealthFindingId/v1":"4978744dc224c4a4b3f5d8a2a881188ad9d26511b27c89ba5710ebdf92b7acc1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201317 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:3882-3894 | dll/src/desktop/shell2/linux/x11/mod.rs:2119-2135 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":3882}}}],"partialFingerprints":{"codehealthFindingId/v1":"88ce75447a59163080a3603aa1d306bb55978e7c9060a06afeeaaf90f371a64f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:4398-4414 | dll/src/desktop/shell2/macos/events.rs:370-386 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/macos/events.rs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 132 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":4398}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0a90bf8063549e51df819a412b33e8a49c9fded2ae63415a7da39de11f508af"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201317 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:4589-4605 | dll/src/desktop/shell2/linux/x11/events.rs:680-695 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/events.rs\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 249 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":4589}}}],"partialFingerprints":{"codehealthFindingId/v1":"d92e15a80d6067c1614d70135ddb236272c91af600a368b81e0ff74cec8a2d98"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201317 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:8768-8784 | dll/src/desktop/shell2/linux/wayland/tooltip.rs:286-301 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":8768}}}],"partialFingerprints":{"codehealthFindingId/v1":"8307a9df97cd45520402198dac3ddbc0fcc47d6d587941dd05e762b33f90fc06"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): dll/src/desktop/shell2/macos/mod.rs:5602-5618 | dll/src/desktop/shell2/windows/mod.rs:638-654 \u2014 \u0060dll/src/desktop/shell2/macos/mod.rs\u0060 and \u0060dll/src/desktop/shell2/windows/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 12 separate duplicated blocks between them, totalling at least 186 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":5602}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab9f4b22c2c4915426ffd7b82d450b05690e4e58d32411834f5e33fe1d6673a8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): dll/src/desktop/tray/linux.rs:423-439 | dll/src/desktop/tray/linux.rs:783-799 \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":"dll/src/desktop/tray/linux.rs"},"region":{"startLine":423}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fe45835fab3ec87e37d16a2cdbe3cf10c91cc5e5b7bad77fb9c3873ae12b287"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201317 lines \u00D7 2): dll/src/web/server.rs:695-711 | dll/src/web/server.rs:808-822 \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":"dll/src/web/server.rs"},"region":{"startLine":695}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7ee191898adb66dae3bccf03261f606645abd4548dd9967ebb91230fcbad3dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): doc/src/autofix/mod.rs:1986-2002 | doc/src/autofix/mod.rs:2109-2125 \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":"doc/src/autofix/mod.rs"},"region":{"startLine":1986}}}],"partialFingerprints":{"codehealthFindingId/v1":"e78c8e9002c064ee81a135ba60c102ccb12279e3449dbb9b4cc2d4dfb3487a7b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): doc/src/autofix/patch_format.rs:754-771 | doc/src/autofix/patch_format.rs:894-910 \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":"doc/src/autofix/patch_format.rs"},"region":{"startLine":754}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7ab8af644baac7974e2735438b1b75ebebef42711161c4d24c817d5e40b9356"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): doc/src/autofix/patch_format.rs:775-791 | doc/src/autofix/patch_format.rs:914-930 \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":"doc/src/autofix/patch_format.rs"},"region":{"startLine":775}}}],"partialFingerprints":{"codehealthFindingId/v1":"75e8b6146cd183d0c9cac9cc27614f4e6fa1124af895f8ec6b4040316d450fe2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): doc/src/codegen/v2/lang_cpp/cpp11.rs:174-190 | doc/src/codegen/v2/lang_cpp/cpp20.rs:1018-1034 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp20.rs\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 590 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":"doc/src/codegen/v2/lang_cpp/cpp11.rs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"f291e98160f6a5fb88170494389833f6279889b26347607115347af4270cbc74"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201317 lines \u00D7 2): doc/src/codegen/v2/lang_node/managed.rs:144-160 | doc/src/codegen/v2/lang_ruby/managed.rs:492-507 \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":"doc/src/codegen/v2/lang_node/managed.rs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f75ae0aa95a0f2524ce2cb7765aab8f3f9a0574eaf7bda4f7052b95e4715d4a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201317 lines \u00D7 2): doc/src/codegen/v2/lang_node/wrappers.rs:561-577 | doc/src/codegen/v2/lang_node/wrappers.rs:741-751 \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":"doc/src/codegen/v2/lang_node/wrappers.rs"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b063aaf99afc62b94d438815aa64f912870dfa18edc2df58d7d4b1658265c0c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201317 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:2557-2573 | doc/src/codegen/v2/rust/shared.rs:149-161 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_rust.rs\u0060 and \u0060doc/src/codegen/v2/rust/shared.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 200 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2557}}}],"partialFingerprints":{"codehealthFindingId/v1":"50c31e31dabaed979efe71a2c7778ff887ee23857fd311f74ca55c03540100b0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): doc/src/patch/mod.rs:147-163 | doc/src/patch/mod.rs:182-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":"doc/src/patch/mod.rs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"75acd56e874c9c53b9196e497ac39eb53b8a6cff8bcf8722f62f9993dd119910"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201317 lines \u00D7 2): doc/src/reftest/autoreview.rs:1104-1119 | doc/src/reftest/autoreview.rs:1540-1556 \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":"doc/src/reftest/autoreview.rs"},"region":{"startLine":1104}}}],"partialFingerprints":{"codehealthFindingId/v1":"12e3b5615e9823e47a9599f5a734a786d97c9f111e6d1acd25d895a20d47c9f1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201317 lines \u00D7 2): doc/src/reftest/regression.rs:2499-2515 | doc/src/reftest/regression.rs:2606-2621 \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":"doc/src/reftest/regression.rs"},"region":{"startLine":2499}}}],"partialFingerprints":{"codehealthFindingId/v1":"03b20f650c533462cb2c21570c548058274f19fb34c6d19f8a29990347dea8a0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): doc/src/codegen/v2/lang_lisp/wrappers.rs:78-94 | doc/src/codegen/v2/lang_smalltalk/wrappers.rs:76-92 \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":"doc/src/codegen/v2/lang_lisp/wrappers.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"aff81344cc312450f19be840e936ae7d035fbf417ad90db235f968b0222efbe3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): doc/src/codegen/v2/lang_java/derives.rs:452-468 | doc/src/codegen/v2/lang_java/derives.rs:596-612 \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":"doc/src/codegen/v2/lang_java/derives.rs"},"region":{"startLine":452}}}],"partialFingerprints":{"codehealthFindingId/v1":"f93e9ccc757e981147eed81d2c19a66c94df7617d5edef49d3480295ae730e75"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): doc/src/codegen/v2/lang_cpp/common.rs:1443-1459 | doc/src/codegen/v2/lang_cpp/common.rs:1485-1501 \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":"doc/src/codegen/v2/lang_cpp/common.rs"},"region":{"startLine":1443}}}],"partialFingerprints":{"codehealthFindingId/v1":"94075b04d9f27f2498825e985ac8f24afcad615015ca8869f8ee84da25156916"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): doc/src/codegen/v2/lang_freebasic/mod.rs:191-207 | doc/src/codegen/v2/lang_freebasic/types.rs:414-430 \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":"doc/src/codegen/v2/lang_freebasic/mod.rs"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"e76e1c60445bb505f98d2e72a1345244c8a92c13eb59ca8c7ed56229f2193292"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): layout/src/cpurender/pixmap.rs:282-298 | layout/src/cpurender/pixmap.rs:463-479 \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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2c986dd9af5922438609d1ef0d48e2b1b6fa3e5470e619c1d214a85bcb0f9be"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201317 lines \u00D7 2): layout/src/cpurender/pixmap.rs:1522-1536 | layout/src/cpurender/pixmap.rs:1572-1588 \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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":1522}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee4ed0e129611feeb404654ecafcd0f0c25a834b21fc7f32a1394a2737d0d308"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201317 lines \u00D7 2): layout/src/cpurender/pixmap.rs:1554-1570 | layout/src/cpurender/pixmap.rs:1648-1662 \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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":1554}}}],"partialFingerprints":{"codehealthFindingId/v1":"cad1b67bba2486614f23debf768350110ce0e91489ae40d2c81f36f6aa907dee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201317 lines \u00D7 2): layout/src/cpurender/raster.rs:3515-3528 | layout/src/cpurender/raster.rs:3792-3808 \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":"layout/src/cpurender/raster.rs"},"region":{"startLine":3515}}}],"partialFingerprints":{"codehealthFindingId/v1":"9168b01ee29057f919f4df35486efa3dab861ea145aca8db18061ee46022f67f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201317 lines \u00D7 2): layout/src/solver3/cache.rs:1937-1953 | layout/src/solver3/cache.rs:2195-2210 \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":"layout/src/solver3/cache.rs"},"region":{"startLine":1937}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b2c15048a3546ceb3f2730bdb9aa1426fbfa81e0ec09d1cd11e6199a459480a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): layout/src/solver3/sizing.rs:2570-2586 | layout/src/solver3/sizing.rs:2750-2766 \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":"layout/src/solver3/sizing.rs"},"region":{"startLine":2570}}}],"partialFingerprints":{"codehealthFindingId/v1":"adb2a5ae8346e911e548e141922b2bf01f89900e296e9953983c8dfb24c26f1f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): layout/src/widgets/node_graph.rs:3501-3517 | layout/src/widgets/node_graph.rs:3573-3589 \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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":3501}}}],"partialFingerprints":{"codehealthFindingId/v1":"8846d3014bec7e07d6e36bfb950bdc88df29e1cb340313c793701dcdeb104bcf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201317 lines \u00D7 2): layout/src/widgets/text_area.rs:721-736 | layout/src/widgets/text_input.rs:1101-1117 \u2014 before extracting anything, compare \u0060layout/src/widgets/text_area.rs\u0060 and \u0060layout/src/widgets/text_input.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 147 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":"layout/src/widgets/text_area.rs"},"region":{"startLine":721}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2cb67a7c948dff71f5fa0cfdcd27218566b073cf66ece3ff2a22e65cfd34beb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201317 lines \u00D7 2): layout/src/widgets/text_area.rs:780-795 | layout/src/widgets/text_input.rs:1171-1187 \u2014 before extracting anything, compare \u0060layout/src/widgets/text_area.rs\u0060 and \u0060layout/src/widgets/text_input.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 147 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":"layout/src/widgets/text_area.rs"},"region":{"startLine":780}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e73babbd7b3a7b69204d559b772318a45771c37bea684dabc24a89e2b9a5508"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): layout/src/window.rs:2819-2835 | layout/src/window.rs:4121-4137 \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":"layout/src/window.rs"},"region":{"startLine":2819}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ddf65e1faf4382f89c7737816306f56a90843b652d73071dd76e6f405fab492"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): layout/src/widgets/themes/flat.rs:680-696 | layout/src/widgets/themes/flora.rs:938-957 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":680}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c07e8808029a05f5a6e0a465d934941bd36a45fd6d70bd3bc5270e7ac5b35f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): webrender/core/src/picture.rs:6192-6210 | webrender/core/src/picture.rs:6378-6394 \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":"webrender/core/src/picture.rs"},"region":{"startLine":6192}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c83c6dd441fc47be67ede18b21bc4f8802c823e898670113bc873d3544a5c2b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): webrender/core/src/render_task.rs:1895-1911 | webrender/core/src/render_task.rs:2025-2041 \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":"webrender/core/src/render_task.rs"},"region":{"startLine":1895}}}],"partialFingerprints":{"codehealthFindingId/v1":"41d89c903a2340df5677e1f4ca162124fd6fffc5657d87ce537acea54186b975"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201317 lines \u00D7 2): webrender/core/src/renderer/mod.rs:3092-3106 | webrender/core/src/renderer/mod.rs:3272-3288 \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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":3092}}}],"partialFingerprints":{"codehealthFindingId/v1":"b22602f1b8c45207e3da3abd255abf4d56eabdc85a116e2a734e7d802c06dfe5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 8): layout/src/xml/svg.rs:887-902 | layout/src/xml/svg.rs:926-941 | layout/src/xml/svg.rs:994-1009 | layout/src/xml/svg.rs:1060-1075 | layout/src/xml/svg.rs:1137-1152 | layout/src/xml/svg.rs:1193-1208 | layout/src/xml/svg.rs:1241-1256 | layout/src/xml/svg.rs:1291-1306 \u2014 all 8 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":"layout/src/xml/svg.rs"},"region":{"startLine":887}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc8f47a12ce3e756aea585d0b9b0086749cbc54744a4c1bc71ed481107389399"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201316 lines \u00D7 5): dll/src/desktop/shell2/android/mod.rs:452-465 | dll/src/desktop/shell2/ios/mod.rs:1904-1917 | dll/src/desktop/shell2/linux/wayland/mod.rs:6448-6463 | dll/src/desktop/shell2/linux/x11/mod.rs:6176-6191 | dll/src/desktop/shell2/windows/mod.rs:1821-1836 \u2014 \u0060dll/src/desktop/shell2/android/mod.rs\u0060 and \u0060dll/src/desktop/shell2/ios/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 17 separate duplicated blocks between them, totalling at least 215 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":452}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bc9d50092611f296940716ddb88cc24b43a58aa7a2109889a073d92f2b0942f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 5): layout/src/xml/svg.rs:710-725 | layout/src/xml/svg.rs:748-763 | layout/src/xml/svg.rs:961-976 | layout/src/xml/svg.rs:1026-1041 | layout/src/xml/svg.rs:1104-1119 \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":"layout/src/xml/svg.rs"},"region":{"startLine":710}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0348efb91edf723f814a6fa02a8b1c9f0cbbe0f416c6498358dfc30d92a485d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 4): doc/src/codegen/v2/lang_cpp/cpp03.rs:629-644 | doc/src/codegen/v2/lang_cpp/cpp11.rs:551-566 | doc/src/codegen/v2/lang_cpp/cpp17.rs:743-758 | doc/src/codegen/v2/lang_cpp/cpp20.rs:858-873 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":629}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4612665b2538c990c44488dfd16d921d7dea3cd6c2f71df1d90e7a9b34e9289"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 4): layout/src/solver3/fc.rs:1629-1643 | layout/src/solver3/fc.rs:1703-1717 | layout/src/solver3/fc.rs:2449-2464 | layout/src/solver3/fc.rs:2535-2550 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":1629}}}],"partialFingerprints":{"codehealthFindingId/v1":"e75ea88277b66915f3fc231df2d71ceb14563a47cb57e0acfa866ed29aaed763"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 3): dll/src/desktop/display.rs:1112-1127 | dll/src/desktop/display.rs:1184-1199 | dll/src/desktop/display.rs:1270-1285 \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":"dll/src/desktop/display.rs"},"region":{"startLine":1112}}}],"partialFingerprints":{"codehealthFindingId/v1":"d86918f59c4072f4b89c3266bc0e540476323382d1c0308103c975747a069147"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201316 lines \u00D7 3): dll/src/desktop/shell2/linux/wayland/mod.rs:6479-6494 | dll/src/desktop/shell2/linux/x11/mod.rs:6207-6220 | dll/src/desktop/shell2/windows/mod.rs:1852-1865 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":6479}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9e993f2121778fd6342a7d41fafccea3bd5368b4ff031f49dfeba5059675273"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 3): dll/src/desktop/shell2/windows/mod.rs:1879-1894 | dll/src/desktop/shell2/windows/mod.rs:1946-1961 | dll/src/desktop/shell2/windows/mod.rs:7050-7064 \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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":1879}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e856bc9bb84e7d286565ce713e149c8ecfd7065a1f11f8194b061922c46ad87"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 3): doc/src/reftest/autoreview.rs:797-812 | doc/src/reftest/autoreview.rs:1030-1045 | doc/src/reftest/autoreview.rs:1934-1949 \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":"doc/src/reftest/autoreview.rs"},"region":{"startLine":797}}}],"partialFingerprints":{"codehealthFindingId/v1":"85ea5bb72ecda3e5c29edbe68b2b68e34aacefabc82936582e07a50d56daa086"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 3): layout/src/window.rs:2036-2051 | layout/src/window.rs:4671-4686 | layout/src/window.rs:7765-7780 \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":"layout/src/window.rs"},"region":{"startLine":2036}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd560550732ced0e270c82982d7ac80ba20861fe5a867b1c8892cc376e7b9c57"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201316 lines \u00D7 3): webrender/core/src/batch.rs:1564-1579 | webrender/core/src/batch.rs:2219-2232 | webrender/core/src/batch.rs:2262-2275 \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":"webrender/core/src/batch.rs"},"region":{"startLine":1564}}}],"partialFingerprints":{"codehealthFindingId/v1":"77ceeeee54b525bd720f162a9dee0885fa6d7ab09e917bd14e8f213c5beca81a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201316 lines \u00D7 3): webrender/core/src/device/gl.rs:3663-3678 | webrender/core/src/device/gl.rs:3686-3701 | webrender/core/src/device/gl.rs:3745-3758 \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":"webrender/core/src/device/gl.rs"},"region":{"startLine":3663}}}],"partialFingerprints":{"codehealthFindingId/v1":"f475b67e9ce7df04b211044288136ec45413ee51dad28d9dadfdc081e8e14893"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 3): webrender/core/src/prim_store/picture.rs:671-686 | webrender/core/src/prim_store/picture.rs:701-716 | webrender/core/src/prim_store/picture.rs:731-746 \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":"webrender/core/src/prim_store/picture.rs"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"338f74dc6e9caaa781e8d5776851037893cfbcff65e79114fafe3002a5f8a02c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): core/src/diff.rs:366-381 | core/src/diff.rs:1431-1446 \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":"core/src/diff.rs"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"852894e74c3a0141d303deb41b74bdba4e9ce71d26ea3fd684343c52c321db05"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): core/src/resources.rs:2809-2824 | core/src/resources.rs:2960-2975 \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":"core/src/resources.rs"},"region":{"startLine":2809}}}],"partialFingerprints":{"codehealthFindingId/v1":"54423ad3cd099de43108a501d75c6e4d2fb3659ca3a9d2125c1bc9c8c20dd4f8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): dll/src/desktop/shell2/common/event.rs:686-701 | dll/src/desktop/shell2/common/event.rs:996-1011 \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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":686}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3d32713576076e588a5ac156fa775dda260ce102e34868a5e6a6cc223d148dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 2): dll/src/desktop/shell2/linux/gnome_menu/protocol_impl.rs:147-162 | dll/src/desktop/shell2/linux/gnome_menu/protocol_impl.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":"dll/src/desktop/shell2/linux/gnome_menu/protocol_impl.rs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ddbe58bdcf9ec24c6a1dc4af6b67cbf51189fdc420a5f43b299a569ce05b96e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201316 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:5678-5693 | dll/src/desktop/shell2/linux/wayland/mod.rs:5856-5867 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":5678}}}],"partialFingerprints":{"codehealthFindingId/v1":"4680aa9de14b6a4629a8fa56f36da8ee02a428993d7534f40762b1a2e6c37c06"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:10081-10095 | dll/src/desktop/shell2/macos/mod.rs:4158-4173 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/macos/mod.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 41 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":10081}}}],"partialFingerprints":{"codehealthFindingId/v1":"74dacb13d7876cc8dbc55f6fdb42b4890df9d53d7208ae92c5f3b812b4f2e42a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:10985-11000 | dll/src/desktop/shell2/linux/x11/mod.rs:8739-8754 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":10985}}}],"partialFingerprints":{"codehealthFindingId/v1":"54d782b36976f34b7fbecb06c1d239ae1df17402d6bb6587262b46155d508805"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/screencopy.rs:97-112 | dll/src/desktop/shell2/linux/wayland/screencopy.rs:135-155 \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":"dll/src/desktop/shell2/linux/wayland/screencopy.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec959a1ee64812558888ea3dcd969169c3771a5a8feb39064954b3c6aea59c78"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): dll/src/desktop/shell2/linux/x11/mod.rs:3702-3717 | dll/src/desktop/shell2/linux/x11/mod.rs:3755-3770 \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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":3702}}}],"partialFingerprints":{"codehealthFindingId/v1":"dea6ee695995611cd14713aebaec46cfd1e4f1d161526174e11083eada26899e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): dll/src/desktop/shell2/macos/mod.rs:5690-5705 | dll/src/desktop/shell2/windows/mod.rs:774-789 \u2014 \u0060dll/src/desktop/shell2/macos/mod.rs\u0060 and \u0060dll/src/desktop/shell2/windows/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 12 separate duplicated blocks between them, totalling at least 186 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":5690}}}],"partialFingerprints":{"codehealthFindingId/v1":"21d7760aac9f567fad295bc82a32eb66b03afddb2d882d3cb03723bda2a320b4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): dll/src/desktop/shell2/common/debug_server/platform.rs:394-409 | dll/src/desktop/shell2/common/debug_server/platform.rs:427-442 \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":"dll/src/desktop/shell2/common/debug_server/platform.rs"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"8eced955ed26e6e045b5bd25e7eab30f97c7ccc2f74f2c0af9071c23c284a6d9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201316 lines \u00D7 2): dll/src/desktop/compositor2.rs:682-694 | dll/src/desktop/compositor2.rs:1429-1444 \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":"dll/src/desktop/compositor2.rs"},"region":{"startLine":682}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9d06e811e0a055a1446ad081ec020e29be54cda79098a7d696868468df46c9d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): doc/src/autofix/mod.rs:2168-2183 | doc/src/autofix/mod.rs:2310-2325 \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":"doc/src/autofix/mod.rs"},"region":{"startLine":2168}}}],"partialFingerprints":{"codehealthFindingId/v1":"de360e6b91e305ff7460a330bf4d5756a50a93f0f3663c502593e5c1d8be45a8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201316 lines \u00D7 2): doc/src/autofix/module_map.rs:480-495 | doc/src/autotest/mod.rs:260-269 \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":"doc/src/autofix/module_map.rs"},"region":{"startLine":480}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2f5916bd3df921374a74357a42f80a01405832ef0912c616020597a50d64057"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): doc/src/autofix/type_index.rs:387-402 | doc/src/autofix/type_index.rs:458-473 \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":"doc/src/autofix/type_index.rs"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4b67994677087fd3376b3467e3ff7d323fff793309d40c848377a6cce27e419"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 2): doc/src/codegen/v2/lang_cpp/cpp17.rs:757-772 | doc/src/codegen/v2/lang_cpp/cpp17.rs:788-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":"doc/src/codegen/v2/lang_cpp/cpp17.rs"},"region":{"startLine":757}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1c6ea4c0467f63abe57d56d89752afdd72cc0ea1a681e07fc109cab4a37f539"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201316 lines \u00D7 2): doc/src/codegen/v2/lang_csharp/wrappers.rs:1445-1454 | doc/src/codegen/v2/lang_java/wrappers.rs:1353-1368 \u2014 \u0060doc/src/codegen/v2/lang_csharp/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_java/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 14 separate duplicated blocks between them, totalling at least 156 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":1445}}}],"partialFingerprints":{"codehealthFindingId/v1":"670fa97b76a7b4988bf0803b34c3317a02c061455b109a86bbfa095c57075bd1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201316 lines \u00D7 2): doc/src/codegen/v2/lang_csharp/wrappers.rs:1516-1526 | doc/src/codegen/v2/lang_java/wrappers.rs:1425-1440 \u2014 \u0060doc/src/codegen/v2/lang_csharp/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_java/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 14 separate duplicated blocks between them, totalling at least 156 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":1516}}}],"partialFingerprints":{"codehealthFindingId/v1":"b80002ad59ca07861c7bec8fa6a1d331c28ddcf43ec07f7d0553a76e657cf417"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:1759-1774 | doc/src/codegen/v2/lang_swift/wrappers.rs:1735-1750 \u2014 \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 29 separate duplicated blocks between them, totalling at least 269 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":1759}}}],"partialFingerprints":{"codehealthFindingId/v1":"74e8a5cb754906dcf77067e9c0ad7c86e4ee79f9f905ec6c3dd22d424cd484ca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (4\u201316 lines \u00D7 3): doc/src/codegen/v2/lang_crystal/wrappers.rs:1087-1090 | doc/src/codegen/v2/lang_d/wrappers.rs:1793-1808 | doc/src/codegen/v2/lang_swift/wrappers.rs:1770-1785 \u2014 \u0060doc/src/codegen/v2/lang_crystal/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 6 separate duplicated blocks between them, totalling at least 51 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/wrappers.rs"},"region":{"startLine":1087}}}],"partialFingerprints":{"codehealthFindingId/v1":"30c25c340ce42746121b683743c18be6e942d93b5e536e4b501c0338e182752b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): doc/src/codegen/v2/lang_haskell/types.rs:735-750 | doc/src/codegen/v2/lang_haskell/types.rs:1014-1029 \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":"doc/src/codegen/v2/lang_haskell/types.rs"},"region":{"startLine":735}}}],"partialFingerprints":{"codehealthFindingId/v1":"b750d942579e86ed83a52759d51db9b7c844e1df1506d792d2ec63d1d2ba458f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201316 lines \u00D7 2): doc/src/codegen/v2/lang_python.rs:3242-3255 | doc/src/codegen/v2/lang_python.rs:3259-3274 \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":"doc/src/codegen/v2/lang_python.rs"},"region":{"startLine":3242}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa72f0c8042cf4e0052107c7de145a3843384c8ca6bf8587f8e55a1262915a77"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:3787-3802 | doc/src/codegen/v2/lang_rust.rs:3875-3890 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":3787}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ebda5fca745a0539886b18acc9e007c80501bcaee4145823ddef6e2320c4329"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): doc/src/docgen/guide.rs:716-731 | doc/src/lint_links.rs:256-271 \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":"doc/src/docgen/guide.rs"},"region":{"startLine":716}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a68f52ff79c0fa0c2982d005e3e97c85dbcf2ce274279dd69f6519000f8e3c2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): doc/src/reftest/autoreview.rs:1192-1207 | doc/src/reftest/autoreview.rs:1631-1646 \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":"doc/src/reftest/autoreview.rs"},"region":{"startLine":1192}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa86033abf39844de2f83b383ff633640de6fa42749b256f02ba3202f02bc8e3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): doc/src/codegen/v2/lang_odin/types.rs:233-248 | doc/src/codegen/v2/lang_v/types.rs:241-256 \u2014 \u0060doc/src/codegen/v2/lang_odin/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_v/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 16 separate duplicated blocks between them, totalling at least 175 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_odin/types.rs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"5efd4dc4e5ce08530bfbbd87b0d42f71d1b7f453e72c4be4fde3c93a67c7321b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201316 lines \u00D7 2): doc/src/main.rs:2578-2593 | doc/src/main.rs:2597-2610 \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":"doc/src/main.rs"},"region":{"startLine":2578}}}],"partialFingerprints":{"codehealthFindingId/v1":"06bc69b63ef70e903618c212ba81ffe6b25a23261c6e16329b4454eb7c3fc5a8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): doc/src/codegen/v2/lang_cobol/types.rs:174-189 | doc/src/codegen/v2/lang_pascal/types.rs:108-123 \u2014 \u0060doc/src/codegen/v2/lang_cobol/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_pascal/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 49 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_cobol/types.rs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"62685ecf05b7ecc44387b5f4b71deb648d27bfc8426ef2a773850fe5029c08b9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201316 lines \u00D7 2): doc/src/codegen/v2/lang_cobol/types.rs:319-331 | doc/src/codegen/v2/lang_cobol/types.rs:357-372 \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":"doc/src/codegen/v2/lang_cobol/types.rs"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"7eb75cde1816d3ccbb82ae42573e59a6127a159a8fffb9323672703b791b8070"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): doc/src/codegen/v2/lang_pascal/mod.rs:322-337 | doc/src/codegen/v2/lang_pascal/types.rs:563-578 \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":"doc/src/codegen/v2/lang_pascal/mod.rs"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef41767bc2ac60190b3b80884c60ff645d510028e1c13878646fae0f1b8fe1f5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 2): doc/src/codegen/v2/lang_java/types.rs:265-279 | doc/src/codegen/v2/lang_java/types.rs:552-567 \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":"doc/src/codegen/v2/lang_java/types.rs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c37d15536cf84f9b081402da27d895076b8f36daf90499d1ec57eaab44efa1a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 2): doc/src/codegen/v2/lang_java/types.rs:345-360 | doc/src/codegen/v2/lang_java/types.rs:718-732 \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":"doc/src/codegen/v2/lang_java/types.rs"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd6ac266167da700ac3abd73a32dd13ee5d2750c3cafdf9443aa4de2d3299ae5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201316 lines \u00D7 2): doc/src/codegen/v2/lang_csharp/types.rs:732-747 | doc/src/codegen/v2/lang_java/types.rs:957-970 \u2014 \u0060doc/src/codegen/v2/lang_csharp/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_java/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 40 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_csharp/types.rs"},"region":{"startLine":732}}}],"partialFingerprints":{"codehealthFindingId/v1":"13012684cf2ebe29564e68f641817fad184a74c0ac87ad938f2a5eaf4bf81943"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): layout/src/cpurender/compositor.rs:1669-1684 | layout/src/cpurender/compositor.rs:1750-1765 \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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":1669}}}],"partialFingerprints":{"codehealthFindingId/v1":"0737f90403f23d46d63a945ba3f5d24224a1a72db038b06e4016d58490a056b3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201316 lines \u00D7 2): layout/src/solver3/display_list.rs:10919-10931 | layout/src/solver3/display_list.rs:11166-11181 \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":"layout/src/solver3/display_list.rs"},"region":{"startLine":10919}}}],"partialFingerprints":{"codehealthFindingId/v1":"73371144e4cf06ea21fc286d0403fe5b4506935c85dc1e86e37dd1f81276f4f3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201316 lines \u00D7 2): layout/src/solver3/fc.rs:8773-8786 | layout/src/solver3/fc.rs:9269-9284 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":8773}}}],"partialFingerprints":{"codehealthFindingId/v1":"e112155b583c5eb54d541ba2a4f5a8eac929028faea7bba863240ade0c7866c7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201316 lines \u00D7 2): layout/src/solver3/layout_tree.rs:2126-2141 | layout/src/solver3/layout_tree.rs:2840-2853 \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":"layout/src/solver3/layout_tree.rs"},"region":{"startLine":2126}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef78ee2a3638005757377cfd096a1125bf9464fc56c31cf1dcf41048fd8bec40"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): layout/src/solver3/paged_layout.rs:394-409 | layout/src/solver3/paged_layout.rs:461-476 \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":"layout/src/solver3/paged_layout.rs"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"14374747c196f41583adab54b68ca20116dcf5e9c73e9754cb9932ff3679b6bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201316 lines \u00D7 2): layout/src/text3/cache.rs:13224-13233 | layout/src/text3/cache.rs:13364-13379 \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":"layout/src/text3/cache.rs"},"region":{"startLine":13224}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e1496462e79824b66b6015822773208e990c5c57c52b8ba8f9e373eac3b1952"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201316 lines \u00D7 2): layout/src/window.rs:15743-15758 | layout/src/window.rs:15781-15794 \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":"layout/src/window.rs"},"region":{"startLine":15743}}}],"partialFingerprints":{"codehealthFindingId/v1":"366580e1a38402141d78bf6d1242566a47aedb94af5df600f3fa8f26bdcd69e0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): webrender/core/src/batch.rs:1429-1444 | webrender/core/src/batch.rs:2326-2341 \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":"webrender/core/src/batch.rs"},"region":{"startLine":1429}}}],"partialFingerprints":{"codehealthFindingId/v1":"352472c7f7555cb68a8a7c7060cf52d90e1d64945b2797eb092d5c97dd8d2697"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): webrender/core/src/prim_store/gradient/conic.rs:148-163 | webrender/core/src/prim_store/gradient/radial.rs:151-166 \u2014 before extracting anything, compare \u0060webrender/core/src/prim_store/gradient/conic.rs\u0060 and \u0060webrender/core/src/prim_store/gradient/radial.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 84 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":"webrender/core/src/prim_store/gradient/conic.rs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"85cb8ca69a9b6b4ec6b4775bf7c69ad1066723bfc64a68c363a5bebde5883b64"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): webrender/core/src/quad.rs:152-167 | webrender/core/src/quad.rs:207-222 \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":"webrender/core/src/quad.rs"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3a71f752decd6207dbfb241ebabd01da9c32ff9db5b7385b7284c4e9d50d5e3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201315 lines \u00D7 6): webrender/core/src/device/gl.rs:3662-3674 | webrender/core/src/device/gl.rs:3685-3697 | webrender/core/src/device/gl.rs:3708-3720 | webrender/core/src/device/gl.rs:3726-3738 | webrender/core/src/device/gl.rs:3744-3758 | webrender/core/src/device/gl.rs:3763-3775 \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":"webrender/core/src/device/gl.rs"},"region":{"startLine":3662}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e6004fdbf1f52e50d841c9a7a356911de45245e609e710be5e4f1c01ad92723"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 5): dll/src/desktop/shell2/android/mod.rs:474-487 | dll/src/desktop/shell2/ios/mod.rs:1926-1939 | dll/src/desktop/shell2/linux/wayland/mod.rs:6472-6486 | dll/src/desktop/shell2/linux/x11/mod.rs:6200-6214 | dll/src/desktop/shell2/windows/mod.rs:1845-1859 \u2014 \u0060dll/src/desktop/shell2/android/mod.rs\u0060 and \u0060dll/src/desktop/shell2/ios/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 17 separate duplicated blocks between them, totalling at least 215 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":474}}}],"partialFingerprints":{"codehealthFindingId/v1":"59eba4efc2f09294594e9cb4de287747883155a8bfeb0cea944fefb2be57c0fd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 4): dll/src/desktop/shell2/linux/wayland/mod.rs:5016-5030 | dll/src/desktop/shell2/linux/x11/events.rs:954-968 | dll/src/desktop/shell2/macos/events.rs:654-671 | dll/src/desktop/shell2/windows/mod.rs:5612-5627 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/events.rs\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 249 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":5016}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c5270ba15d9dfff3ba0cd1b5d0047b3243b851bac23a09d8e0944fb3de8b883"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 4): doc/src/autofix/debug.rs:1179-1193 | doc/src/autofix/debug.rs:1208-1222 | doc/src/autofix/debug.rs:1244-1258 | doc/src/autofix/debug.rs:1273-1287 \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":"doc/src/autofix/debug.rs"},"region":{"startLine":1179}}}],"partialFingerprints":{"codehealthFindingId/v1":"486c2048ef686ff347b56e530dce243ccdf5e28475966ee4831883c92398fceb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201315 lines \u00D7 4): webrender/core/src/batch.rs:1581-1595 | webrender/core/src/batch.rs:2234-2246 | webrender/core/src/batch.rs:2277-2289 | webrender/core/src/batch.rs:3300-3312 \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":"webrender/core/src/batch.rs"},"region":{"startLine":1581}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9595c06e42fd4bb403a67d85e20a6b0f7c50b175492d7355f73767d81fc7afb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 3): core/src/xml.rs:8395-8409 | core/src/xml.rs:8481-8494 | core/src/xml.rs:8686-8699 \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":"core/src/xml.rs"},"region":{"startLine":8395}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f2d9c240e87eb5abc46cbad3a7f524017bba9dcce5bebc233916fadb85125ca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201315 lines \u00D7 3): css/src/dynamic_selector.rs:1454-1465 | css/src/parser2.rs:1401-1412 | css/src/parser2.rs:1424-1438 \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":"css/src/dynamic_selector.rs"},"region":{"startLine":1454}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c3558494ff3425f430ad927b399807faceb645665d0509adbe2cc8f8bfbb421"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201315 lines \u00D7 3): dll/src/desktop/shell2/linux/wayland/mod.rs:3572-3584 | dll/src/desktop/shell2/linux/wayland/mod.rs:3672-3686 | dll/src/desktop/shell2/linux/wayland/mod.rs:5377-5390 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":3572}}}],"partialFingerprints":{"codehealthFindingId/v1":"69cbae30206d8f14e4cc5ff99cc1e5bd2a1fce8c17b80f1631e74fae54e1b636"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 3): dll/src/desktop/shell2/linux/wayland/mod.rs:5043-5057 | dll/src/desktop/shell2/linux/x11/events.rs:981-995 | dll/src/desktop/shell2/macos/events.rs:684-698 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/events.rs\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 249 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":5043}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dc4cfd2c1e75260a4d061f8b5e40f2d9cf18deefe152b4e5fa7d75352c5ad32"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 3): dll/src/desktop/shell2/linux/x11/mod.rs:4225-4239 | dll/src/desktop/shell2/macos/mod.rs:9190-9204 | dll/src/desktop/shell2/windows/mod.rs:7644-7658 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 and \u0060dll/src/desktop/shell2/macos/mod.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 68 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":4225}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d040b43406054035c8c4052fe7a00943439caa51e3e6f2852293c07ea22f53e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 3): doc/src/codegen/v2/lang_cpp/cpp03.rs:293-307 | doc/src/codegen/v2/lang_cpp/cpp11.rs:192-206 | doc/src/codegen/v2/lang_cpp/cpp17.rs:340-354 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4e1e39dd9d5ecbbccc7f93f19fc64145eff94979aea6f0158a6f28b6cf56cb9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 3): doc/src/codegen/v2/lang_crystal/mod.rs:548-562 | doc/src/codegen/v2/lang_d/mod.rs:730-744 | doc/src/codegen/v2/lang_swift/mod.rs:596-610 \u2014 \u0060doc/src/codegen/v2/lang_crystal/mod.rs\u0060 and \u0060doc/src/codegen/v2/lang_d/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 39 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/mod.rs"},"region":{"startLine":548}}}],"partialFingerprints":{"codehealthFindingId/v1":"82739598391c2e6d484819cde533b3999ebd442695809e16c1ec8342545e48ec"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 3): doc/src/codegen/v2/lang_node/wrappers.rs:615-629 | doc/src/codegen/v2/lang_node/wrappers.rs:772-786 | doc/src/codegen/v2/lang_node/wrappers.rs:1253-1267 \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":"doc/src/codegen/v2/lang_node/wrappers.rs"},"region":{"startLine":615}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f64f0c4d0e6c1dcba1dd80de0304f202f5bd36663d65f6cb41840db136ef9df"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 3): doc/src/reftest/autoreview.rs:1104-1117 | doc/src/reftest/autoreview.rs:1540-1553 | doc/src/reftest/autoreview.rs:2044-2058 \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":"doc/src/reftest/autoreview.rs"},"region":{"startLine":1104}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e69e63338fc311df71f07dc9d47d84fd20930a69abd65e3b0fb2bc4a2b5e6e0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 3): doc/src/codegen/v2/lang_ada/types.rs:169-183 | doc/src/codegen/v2/lang_cobol/types.rs:180-194 | doc/src/codegen/v2/lang_pascal/types.rs:114-128 \u2014 \u0060doc/src/codegen/v2/lang_ada/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_cobol/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 48 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_ada/types.rs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf4aee84636a8d675ce7bded1b7bc283db8ead3dc1369ecd1de8dd26d8b6f6eb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 3): layout/src/solver3/fc.rs:5938-5952 | layout/src/solver3/fc.rs:5968-5982 | layout/src/solver3/fc.rs:5998-6012 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":5938}}}],"partialFingerprints":{"codehealthFindingId/v1":"02e901b0acc568deab379a5c162c52a1be433efd2f729007452388a01c3606d0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 3): layout/src/widgets/themes/flora.rs:924-938 | layout/src/widgets/themes/flora.rs:1090-1104 | layout/src/widgets/themes/flora.rs:1915-1929 \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":"layout/src/widgets/themes/flora.rs"},"region":{"startLine":924}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f7894c9a656f4184a20f4ae33995348be1eef8a0ded0a2c908552f830ba84d0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): dll/src/desktop/display.rs:834-848 | dll/src/desktop/display.rs:1030-1043 \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":"dll/src/desktop/display.rs"},"region":{"startLine":834}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f935bdc442875b97050835f839cf7bd609b5922f2d34b3fc6e00f1b8508075c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): dll/src/desktop/shell2/android/mod.rs:2742-2756 | dll/src/desktop/shell2/android/mod.rs:3032-3046 \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":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":2742}}}],"partialFingerprints":{"codehealthFindingId/v1":"c989970f1ac38a671777fef2466d1975660270c9e5c7663c4835613cd53a94c3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201315 lines \u00D7 2): dll/src/desktop/shell2/headless/mod.rs:1777-1791 | dll/src/desktop/shell2/headless/mod.rs:1926-1936 \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":"dll/src/desktop/shell2/headless/mod.rs"},"region":{"startLine":1777}}}],"partialFingerprints":{"codehealthFindingId/v1":"109959376ac8db652fd7c24fdb3e0ee0d7a01cb34f0f436b432689dfbea597a3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201315 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:10471-10485 | dll/src/desktop/shell2/linux/wayland/mod.rs:10611-10623 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":10471}}}],"partialFingerprints":{"codehealthFindingId/v1":"623421fd4aa05b04f356d6bd1838dd67e44b8801bda36e70e4c5f640f83ab50e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:10867-10881 | dll/src/desktop/shell2/linux/x11/mod.rs:8625-8639 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":10867}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a445e1be72fcba5edad4aaae7fa4834e135ba94d422ca30e46450b4db395381"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201315 lines \u00D7 2): dll/src/desktop/shell2/linux/x11/accessibility.rs:88-102 | dll/src/desktop/shell2/windows/accessibility.rs:97-108 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/x11/accessibility.rs\u0060 and \u0060dll/src/desktop/shell2/windows/accessibility.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 63 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/x11/accessibility.rs"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"279ccd00bbab357f276915e80077fb853f4ed3ebc080bb6078b8171638446e1a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): dll/src/desktop/shell2/macos/mod.rs:3652-3666 | dll/src/desktop/shell2/macos/mod.rs:3837-3851 \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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":3652}}}],"partialFingerprints":{"codehealthFindingId/v1":"893ae099352d9e8af90def28d2a3c6a4ed6c1b2c4f63118b0e74c5fb15683d9f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): dll/src/desktop/shell2/windows/mod.rs:1460-1474 | dll/src/desktop/shell2/windows/mod.rs:7927-7940 \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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":1460}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c35614cab9391d61a6ed3c3c54a278e9b2be5cfb690535c362f0c73140f0b4e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): dll/src/desktop/shell2/windows/mod.rs:5823-5837 | dll/src/desktop/shell2/windows/mod.rs:6030-6044 \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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":5823}}}],"partialFingerprints":{"codehealthFindingId/v1":"181ee4894b70a236e79d8733fef3f833fa1b88a6774291501369c1932e6531fb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): dll/src/desktop/tray/linux.rs:464-478 | dll/src/desktop/tray/linux.rs:822-836 \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":"dll/src/desktop/tray/linux.rs"},"region":{"startLine":464}}}],"partialFingerprints":{"codehealthFindingId/v1":"afeae50d6ebe2324ad3d2c0fd485342a5cacfa4cb6172cb4974f74d8f696abea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): doc/src/api.rs:2127-2141 | doc/src/api.rs:2398-2412 \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":"doc/src/api.rs"},"region":{"startLine":2127}}}],"partialFingerprints":{"codehealthFindingId/v1":"05dd2d7c5cfbe856eca489861e4343fdad8897aa2acb9c83c85f31117891e0ea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): doc/src/autofix/mod.rs:2238-2252 | doc/src/autofix/mod.rs:2272-2286 \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":"doc/src/autofix/mod.rs"},"region":{"startLine":2238}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f17e4ca1e50d0608362cb834afbb4e458992ea79385a3c1f13cb8cdbd0ec3cf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): doc/src/autofix/type_index.rs:1656-1670 | doc/src/autofix/type_index.rs:1721-1734 \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":"doc/src/autofix/type_index.rs"},"region":{"startLine":1656}}}],"partialFingerprints":{"codehealthFindingId/v1":"182fc108181f5253a4a0248a70ac9e0b24ff91e047f8194fa8a1045709297e1b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): doc/src/codegen/v2/lang_cpp/cpp03.rs:573-587 | doc/src/codegen/v2/lang_cpp/cpp11.rs:494-508 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":573}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e877be3193e4c2e5e7d71ada078c16f47d678f68b0a03918ef105d82bb68840"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): doc/src/codegen/v2/lang_haskell/types.rs:424-438 | doc/src/codegen/v2/lang_haskell/types.rs:796-810 \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":"doc/src/codegen/v2/lang_haskell/types.rs"},"region":{"startLine":424}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddfffaa9a32a95ef736d4f1d8fe052942fd8f752c424758052634965b427c2e6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201315 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:679-693 | doc/src/codegen/v2/lang_rust.rs:699-710 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":679}}}],"partialFingerprints":{"codehealthFindingId/v1":"67e879a3bf0ba29272c86462cc4734380d7898724c10cd9276ad3667425ae0b6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:2771-2785 | doc/src/codegen/v2/lang_rust.rs:3034-3048 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2771}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd9ef5241ac0d507d5fced96efbad5cbd40edce52e54417aa02253cce92c25fa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:2914-2927 | doc/src/codegen/v2/lang_rust.rs:3247-3261 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2914}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7a30653840121e7ddf0bc3060d5133c321053f32e848be300c3d0f7a5e10d24"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:2947-2961 | doc/src/codegen/v2/lang_rust.rs:3338-3352 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2947}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a54b1c073e7e3ccd261b8a44a5f1d145bee71c345430ea07c5b9c3420f1d151"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:3536-3549 | doc/src/codegen/v2/lang_rust.rs:3741-3755 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":3536}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8ccad04304ad2e6baf7de307920c27f9bf0285df949d2dfaa40f5cb5225f033"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): doc/src/codegen/v2/rust/dynamic_binding.rs:415-429 | doc/src/codegen/v2/rust/static_binding.rs:504-518 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/rust/dynamic_binding.rs\u0060 and \u0060doc/src/codegen/v2/rust/static_binding.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 66 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":"doc/src/codegen/v2/rust/dynamic_binding.rs"},"region":{"startLine":415}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b18a65a9928ce03334cf51c8f15a573e9cd3980a0b14232382b731456d10e4c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): doc/src/patch/fallback.rs:235-249 | doc/src/patch/index.rs:932-946 \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":"doc/src/patch/fallback.rs"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"318725f9c1858f8b58f3a321f9cd4ae54a1d31fad8bd5ce6ea446f7273f77201"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): doc/src/reftest/apply_midlevel.rs:560-574 | doc/src/reftest/apply_midlevel.rs:613-626 \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":"doc/src/reftest/apply_midlevel.rs"},"region":{"startLine":560}}}],"partialFingerprints":{"codehealthFindingId/v1":"aaa384a5e1dfb5bbdce6e0b71d1582a63335414ad0beeeac41e2608a36ee1f47"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201315 lines \u00D7 2): doc/src/reftest/autodoc.rs:1571-1581 | doc/src/reftest/pipeline.rs:278-292 \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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":1571}}}],"partialFingerprints":{"codehealthFindingId/v1":"509fd28b81c773a3eb1496890a5cc2389be954d9e12afa91586682208d081ec4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): doc/src/codegen/v2/lang_ocaml/types.rs:838-852 | doc/src/codegen/v2/lang_ocaml/types.rs:859-873 \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":"doc/src/codegen/v2/lang_ocaml/types.rs"},"region":{"startLine":838}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bb0c91bef8b6db99d5a649abbe12c14d941e085f4229c2706d3c836fd09f0c7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201315 lines \u00D7 2): doc/src/codegen/v2/lang_freebasic/functions.rs:117-131 | doc/src/codegen/v2/lang_freebasic/types.rs:362-374 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_freebasic/functions.rs\u0060 and \u0060doc/src/codegen/v2/lang_freebasic/types.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 33 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":"doc/src/codegen/v2/lang_freebasic/functions.rs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b571560760769666da06e321404b4e3a08cfc1aabeeeae8236e4aa870fae5bf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201315 lines \u00D7 2): layout/src/cpurender/pixmap.rs:1345-1359 | layout/src/cpurender/pixmap.rs:1450-1461 \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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":1345}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e4a6f8bd37ced60aeec6e379914badb6ba5906d6b54021fb3c0f506251e650f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201315 lines \u00D7 2): layout/src/dom_lint.rs:885-899 | layout/src/dom_lint.rs:1092-1104 \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":"layout/src/dom_lint.rs"},"region":{"startLine":885}}}],"partialFingerprints":{"codehealthFindingId/v1":"a88410611baf4260b512b3c89d0a11253de8d503ceff09257c21a100d080742e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): layout/src/solver3/fc.rs:7551-7565 | layout/src/solver3/fc.rs:7590-7603 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":7551}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c2faf592ab8bc50b8e31a743b36735c6b46b4c6f02c5051acdcc144ebfc0378"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): layout/src/solver3/fc.rs:8816-8830 | layout/src/solver3/fc.rs:9882-9898 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":8816}}}],"partialFingerprints":{"codehealthFindingId/v1":"20c40b6856d6e6693035d850b8134c2d4ee7f758f4db608dae1e583689ae5ab2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): layout/src/solver3/fc.rs:8803-8818 | layout/src/solver3/fc.rs:9313-9327 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":8803}}}],"partialFingerprints":{"codehealthFindingId/v1":"eea399e23bb7045a8fa13119a89d0dba95249deeaa9aa19c5681d67578a80198"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): layout/src/solver3/fc.rs:8834-8848 | layout/src/solver3/fc.rs:9676-9691 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":8834}}}],"partialFingerprints":{"codehealthFindingId/v1":"4df66535eda864d2866c4638d8ea8d868355bccecdf6277af808b5074f2c9850"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201315 lines \u00D7 2): layout/src/solver3/mod.rs:633-644 | layout/src/solver3/mod.rs:1038-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":"layout/src/solver3/mod.rs"},"region":{"startLine":633}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cccf24ec7e1ab20283ab01638157e9f7c21a388392112b13a90471502d5425e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): layout/src/solver3/paged_layout.rs:733-747 | layout/src/solver3/paged_layout.rs:800-814 \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":"layout/src/solver3/paged_layout.rs"},"region":{"startLine":733}}}],"partialFingerprints":{"codehealthFindingId/v1":"85108d649fedee2d4804186a683643fbbb497d89082349aa48acfa26cdd9ce38"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): layout/src/widgets/date_picker.rs:792-806 | layout/src/widgets/time_picker.rs:593-610 \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":"layout/src/widgets/date_picker.rs"},"region":{"startLine":792}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee7eb25a780cb5e90193b486f3c9dcab760ac101751a25fb1000f5f73eaac1ee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): layout/src/widgets/node_graph.rs:2259-2273 | layout/src/widgets/node_graph.rs:2275-2289 \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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":2259}}}],"partialFingerprints":{"codehealthFindingId/v1":"c578791ddafdaa46f46704cfb3f17a85cb74b9996592f88dd750dacf75fc71ac"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201315 lines \u00D7 2): layout/src/widgets/text_input.rs:1027-1041 | layout/src/widgets/text_input.rs:1058-1068 \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":"layout/src/widgets/text_input.rs"},"region":{"startLine":1027}}}],"partialFingerprints":{"codehealthFindingId/v1":"63823b219660296e54e31149e071cf41f1b570cfa0d9cf01a649613b10bd293c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): webrender/core/src/frame_builder.rs:615-629 | webrender/core/src/frame_builder.rs:657-671 \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":"webrender/core/src/frame_builder.rs"},"region":{"startLine":615}}}],"partialFingerprints":{"codehealthFindingId/v1":"58642ec597e4b9548b9727513a743a94d69c44a0bc925da5cef33fc1b9012e4e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): webrender/core/src/prim_store/gradient/conic.rs:242-256 | webrender/core/src/prim_store/gradient/radial.rs:207-221 \u2014 before extracting anything, compare \u0060webrender/core/src/prim_store/gradient/conic.rs\u0060 and \u0060webrender/core/src/prim_store/gradient/radial.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 84 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":"webrender/core/src/prim_store/gradient/conic.rs"},"region":{"startLine":242}}}],"partialFingerprints":{"codehealthFindingId/v1":"fddd039978c5e89794740fbddb728bc6c3d8b55d9dce1af258bd68ae964f16f6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): webrender/core/src/render_target.rs:986-999 | webrender/core/src/render_target.rs:1306-1320 \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":"webrender/core/src/render_target.rs"},"region":{"startLine":986}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bb36251489fd0bed641e3aabd3ba5fa8953dd28915f35435f4b44672ffe8127"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201314 lines \u00D7 5): dll/src/desktop/shell2/windows/mod.rs:4660-4671 | dll/src/desktop/shell2/windows/mod.rs:5009-5022 | dll/src/desktop/shell2/windows/mod.rs:5105-5118 | dll/src/desktop/shell2/windows/mod.rs:5155-5168 | dll/src/desktop/shell2/windows/mod.rs:5239-5251 \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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":4660}}}],"partialFingerprints":{"codehealthFindingId/v1":"566249752d5d4cb0b866be3aaaf0d1596374525039523ed5993a36dcddf01dfc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 5): layout/src/widgets/breadcrumb.rs:337-350 | layout/src/widgets/pagination.rs:501-514 | layout/src/widgets/radio_group.rs:546-559 | layout/src/widgets/segmented.rs:444-457 | layout/src/widgets/stepper.rs:568-581 \u2014 before extracting anything, compare \u0060layout/src/widgets/pagination.rs\u0060 and \u0060layout/src/widgets/segmented.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 70 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":"layout/src/widgets/breadcrumb.rs"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c708346291e1587130a6095a1019868caa9d65a0de65c980a82debd7e86710b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): core/src/xml.rs:8389-8402 | core/src/xml.rs:8475-8488 | core/src/xml.rs:8680-8693 | core/src/xml.rs:8776-8789 \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":"core/src/xml.rs"},"region":{"startLine":8389}}}],"partialFingerprints":{"codehealthFindingId/v1":"baaa001dafcc80a76069b1c121f5fa6ed3c987e91c5f739200f8ba36ea8da09b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): doc/src/codegen/v2/lang_cpp/cpp03.rs:302-315 | doc/src/codegen/v2/lang_cpp/cpp11.rs:201-214 | doc/src/codegen/v2/lang_cpp/cpp17.rs:349-362 | doc/src/codegen/v2/lang_cpp/cpp20.rs:1045-1058 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab3e39b800f79f4def7129336c6ccbed46326ff29d87c359ad5dded8ec36e8ea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): doc/src/codegen/v2/lang_cpp/cpp03.rs:652-665 | doc/src/codegen/v2/lang_cpp/cpp11.rs:574-587 | doc/src/codegen/v2/lang_cpp/cpp17.rs:775-788 | doc/src/codegen/v2/lang_cpp/cpp20.rs:880-893 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":652}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc06b7f7d907fe52f0b374dd2c35bd0ecf19e690c027ad55ba6f7ae4c99f0299"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): doc/src/codegen/v2/lang_csharp/wrappers.rs:520-533 | doc/src/codegen/v2/lang_java/wrappers.rs:106-119 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:353-366 | doc/src/codegen/v2/lang_smalltalk/wrappers.rs:95-108 \u2014 \u0060doc/src/codegen/v2/lang_csharp/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_java/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 14 separate duplicated blocks between them, totalling at least 156 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb3b574b7c6f6db2ab53de80e113006f5fce4d9396eed8b82d1de33809344a8d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): dll/src/desktop/shell2/linux/wayland/mod.rs:2783-2796 | dll/src/desktop/shell2/linux/x11/mod.rs:4143-4156 | dll/src/desktop/shell2/windows/mod.rs:1034-1047 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":2783}}}],"partialFingerprints":{"codehealthFindingId/v1":"7381942da0cd7839aa6c530991283b0bc8edb68fc523fd1ae1f9d29a260c122f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201314 lines \u00D7 3): dll/src/desktop/shell2/linux/wayland/mod.rs:7212-7225 | dll/src/desktop/shell2/linux/x11/mod.rs:6947-6960 | dll/src/desktop/shell2/windows/mod.rs:1659-1669 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":7212}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb459c52146652084220f5474b0fbe9a283156c146be29ff985f28566dde371c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): dll/src/desktop/shell2/linux/x11/mod.rs:7030-7043 | dll/src/desktop/shell2/macos/mod.rs:8329-8342 | dll/src/desktop/shell2/windows/mod.rs:1737-1750 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 and \u0060dll/src/desktop/shell2/macos/mod.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 68 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":7030}}}],"partialFingerprints":{"codehealthFindingId/v1":"631e4181688864424b77832aeb79aa9e0a3a29e268b5a47694348cab31045106"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): doc/src/autofix/mod.rs:3167-3180 | doc/src/autofix/mod.rs:3197-3210 | doc/src/autofix/mod.rs:3226-3239 \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":"doc/src/autofix/mod.rs"},"region":{"startLine":3167}}}],"partialFingerprints":{"codehealthFindingId/v1":"059d30f326cc4f82e4355805f23f76cc4b358cba7bfef32ef127fc2e3fe9ecb2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 3): doc/src/autofix/type_index.rs:2057-2070 | doc/src/autofix/type_index.rs:2076-2088 | doc/src/autofix/type_index.rs:2216-2228 \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":"doc/src/autofix/type_index.rs"},"region":{"startLine":2057}}}],"partialFingerprints":{"codehealthFindingId/v1":"66e4f16aacd66f49bbf8ba80a520ce1d9f57ad122526b2018c801c6688df0754"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): doc/src/codegen/v2/generator.rs:70-83 | doc/src/codegen/v2/generator.rs:626-639 | doc/src/codegen/v2/generator.rs:646-659 \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":"doc/src/codegen/v2/generator.rs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"4515d6d60543a3ac74c961c927782be51320ab9cf913b434ad97a7c98c3701d1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201314 lines \u00D7 3): layout/src/solver3/display_list.rs:1230-1243 | layout/src/solver3/display_list.rs:1345-1358 | layout/src/solver3/display_list.rs:1370-1381 \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":"layout/src/solver3/display_list.rs"},"region":{"startLine":1230}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ecdd1f7656ab0fc39eda1151eeeaa0960499934b423b629738185c96bd61bcd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): layout/src/solver3/fc.rs:8778-8791 | layout/src/solver3/fc.rs:9185-9198 | layout/src/solver3/fc.rs:9276-9289 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":8778}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f48fd6aec07610fa1dac3dfa666c0d7dfa3e89723351b8e10c583b7b9a62a4b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201314 lines \u00D7 2): core/src/compact.rs:417-426 | core/src/compact.rs:1713-1726 \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":"core/src/compact.rs"},"region":{"startLine":417}}}],"partialFingerprints":{"codehealthFindingId/v1":"6959c227f2caf959622ebc0fa30084bb9eb38bc907adf1afacfec47c1f43bc57"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): core/src/diff.rs:216-229 | core/src/styled_dom.rs:3341-3354 \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":"core/src/diff.rs"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"850f7fe4e712eebbe9b762e1cf2bd10b7bc789ccbe312c753efb23e508cff944"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): core/src/style.rs:142-155 | core/src/style.rs:186-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":"core/src/style.rs"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c14bd2ab3566e341c33b8113175922ec54b6ef1c2f68fd98741b364fd8c5c03"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): dll/src/desktop/extra/webtransport/mod.rs:101-114 | dll/src/unified/webtransport.rs:155-168 \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":"dll/src/desktop/extra/webtransport/mod.rs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f11a8e315fca9607f1db22b6cff04c65f2e3f1f3bc290f0d3c6dcc10a2d1a60"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): dll/src/desktop/shell2/common/event.rs:8877-8890 | dll/src/desktop/shell2/common/event.rs:8962-8975 \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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":8877}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dec51b0cee5606a2d8ab5b49ce0fbb8cb4c03b7653dafadc04c63798f023a58"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201314 lines \u00D7 2): dll/src/desktop/shell2/linux/gnome_menu/protocol_impl.rs:281-291 | dll/src/desktop/shell2/linux/gnome_menu/protocol_impl.rs:478-491 \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":"dll/src/desktop/shell2/linux/gnome_menu/protocol_impl.rs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"c89c96e70d61741e3b9c7ed1cc1bb9d250dc36dd1ba13d35960534f280a38f66"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:4638-4651 | dll/src/desktop/shell2/linux/wayland/mod.rs:5845-5858 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":4638}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8d44835cbe0ea06ce0bb70f7002a05213c3718152521254c50bec812d17e941"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:4654-4666 | dll/src/desktop/shell2/linux/wayland/mod.rs:5863-5876 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":4654}}}],"partialFingerprints":{"codehealthFindingId/v1":"47e35f8e08077f33ea7810a9eb62e077976e125a08e3d259b56a35849dee7d8a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:6354-6367 | dll/src/desktop/shell2/linux/x11/events.rs:1486-1499 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/events.rs\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 249 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":6354}}}],"partialFingerprints":{"codehealthFindingId/v1":"269dd5adb52eff65b3674cf27927ef6c08108096d1818ec330b1a0319eca9fa3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:10905-10918 | dll/src/desktop/shell2/linux/wayland/mod.rs:11036-11049 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":10905}}}],"partialFingerprints":{"codehealthFindingId/v1":"c32c3317303a81b523a9577f41681cb10c1bea7859500e3d68a92703d7f4b2ef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): dll/src/desktop/shell2/linux/x11/mod.rs:8662-8675 | dll/src/desktop/shell2/linux/x11/mod.rs:8787-8800 \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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":8662}}}],"partialFingerprints":{"codehealthFindingId/v1":"247b93fd094007c7d20835e56e37a7d340db2ad2a596f475d49470097867d1ef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201314 lines \u00D7 2): dll/src/desktop/shell2/macos/mod.rs:909-922 | dll/src/desktop/shell2/macos/mod.rs:950-960 \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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":909}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccc3e8e94df5a63365d9e12264be6e0658c8753e930a1c69d2b478ff98c19921"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): dll/src/desktop/shell2/windows/mod.rs:1553-1566 | dll/src/desktop/shell2/windows/mod.rs:1795-1808 \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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":1553}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b2c09ef079e3586e134a3eead5a944aa31e29e4ab2b7bfcde3d02dd3f71ad1e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): dll/src/desktop/wr_translate2.rs:1841-1854 | dll/src/desktop/wr_translate2.rs:1882-1895 \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":"dll/src/desktop/wr_translate2.rs"},"region":{"startLine":1841}}}],"partialFingerprints":{"codehealthFindingId/v1":"eeb9e54611d4b959050317af2c5ad8b4b8b5477301350c4725ab3ecfb2f21a82"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201314 lines \u00D7 2): dll/src/web/transpiler_remill.rs:11838-11851 | dll/src/web/transpiler_remill.rs:11867-11875 \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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":11838}}}],"partialFingerprints":{"codehealthFindingId/v1":"a59414cae3f07ae98cc84e669503a171598647f09f982d22be135a0fd7768350"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): dll/src/desktop/extra/file_picker/ios.rs:380-393 | dll/src/desktop/extra/file_picker/ios.rs:477-490 \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":"dll/src/desktop/extra/file_picker/ios.rs"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f3b759183a61f3ce3c9c7f9da3b8b00321830dcb16079c8623f50907c0db4b4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201314 lines \u00D7 2): dll/src/desktop/compositor2.rs:2273-2284 | dll/src/desktop/compositor2.rs:2326-2339 \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":"dll/src/desktop/compositor2.rs"},"region":{"startLine":2273}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a713639d942b5baf4dd8cdfb6deab4da88e96fdc5eb8e9ac27704aee219f7f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): doc/src/autofix/diff.rs:615-627 | doc/src/autofix/diff.rs:2235-2248 \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":"doc/src/autofix/diff.rs"},"region":{"startLine":615}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdc69d33be8280e13766d5519da6379fdd2ac2cd7f1cae75bceaaeb6ccad64e0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): doc/src/autofix/diff.rs:1007-1020 | doc/src/autofix/diff.rs:1023-1036 \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":"doc/src/autofix/diff.rs"},"region":{"startLine":1007}}}],"partialFingerprints":{"codehealthFindingId/v1":"eaf2dea71f16722319c3854651637de8de55e05378b167068d08b94178c8d535"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201314 lines \u00D7 2): doc/src/autofix/diff.rs:1814-1827 | doc/src/autofix/diff.rs:1883-1894 \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":"doc/src/autofix/diff.rs"},"region":{"startLine":1814}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d0e4d4425680c17d6432d1b791418dff5637f1eba55c1984a140468b3f8788d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): doc/src/autofix/workspace.rs:1530-1543 | doc/src/autofix/workspace.rs:1575-1588 \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":"doc/src/autofix/workspace.rs"},"region":{"startLine":1530}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d55e8965e8b89f6044da2663f33aec78111c60917e2d52da91986a52cf59ac6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): doc/src/codegen/v2/lang_crystal/mod.rs:337-350 | doc/src/codegen/v2/lang_julia/mod.rs:229-241 \u2014 \u0060doc/src/codegen/v2/lang_crystal/mod.rs\u0060 and \u0060doc/src/codegen/v2/lang_julia/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 5 separate duplicated blocks between them, totalling at least 61 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/mod.rs"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"3000497ff5dc80f7f16714cd38789ea92ede1d96dba69f3b5296338489fdb2b0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (4\u201314 lines \u00D7 3): doc/src/codegen/v2/lang_crystal/model.rs:486-499 | doc/src/codegen/v2/lang_d/model.rs:782-795 | doc/src/codegen/v2/lang_swift/model.rs:792-795 \u2014 \u0060doc/src/codegen/v2/lang_crystal/model.rs\u0060 and \u0060doc/src/codegen/v2/lang_d/model.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 9 separate duplicated blocks between them, totalling at least 74 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/model.rs"},"region":{"startLine":486}}}],"partialFingerprints":{"codehealthFindingId/v1":"acaf5337d3f5642a07cc42ae76b9169d6dc8ca7ac5c11f45cfdf6c9edb22e6f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): doc/src/codegen/v2/lang_d/mod.rs:380-393 | doc/src/codegen/v2/lang_swift/mod.rs:356-368 \u2014 \u0060doc/src/codegen/v2/lang_d/mod.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 67 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/mod.rs"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"874103996913a5822e98ca1ca32fab9357aa172561cfe38cc2160d7a65360495"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): doc/src/codegen/v2/lang_d/mod.rs:519-532 | doc/src/codegen/v2/lang_swift/mod.rs:462-475 \u2014 \u0060doc/src/codegen/v2/lang_d/mod.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 67 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/mod.rs"},"region":{"startLine":519}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3ba0945cac54beedfd482e62484e56cd796ba1720346b59ee75a2ee020c4393"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): doc/src/codegen/v2/lang_d/model.rs:618-631 | doc/src/codegen/v2/lang_swift/model.rs:635-648 \u2014 \u0060doc/src/codegen/v2/lang_d/model.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/model.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 20 separate duplicated blocks between them, totalling at least 209 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/model.rs"},"region":{"startLine":618}}}],"partialFingerprints":{"codehealthFindingId/v1":"e028d7bb9ec91feddcce71ca38d1acbf1fed587ac90f3f7920c905d85a8f46eb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): doc/src/codegen/v2/lang_d/model.rs:672-685 | doc/src/codegen/v2/lang_swift/model.rs:689-702 \u2014 \u0060doc/src/codegen/v2/lang_d/model.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/model.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 20 separate duplicated blocks between them, totalling at least 209 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/model.rs"},"region":{"startLine":672}}}],"partialFingerprints":{"codehealthFindingId/v1":"34b7bb4d638acb1564cf0a2eeda40c49e31202cf0813682db59aaf19941cc0a3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): doc/src/codegen/v2/lang_d/model.rs:791-804 | doc/src/codegen/v2/lang_swift/model.rs:797-810 \u2014 \u0060doc/src/codegen/v2/lang_d/model.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/model.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 20 separate duplicated blocks between them, totalling at least 209 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/model.rs"},"region":{"startLine":791}}}],"partialFingerprints":{"codehealthFindingId/v1":"da326fada3b412b5c0bbfb93a2d66650eed9b8be990f18d7e78aad73c7334669"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201314 lines \u00D7 2): doc/src/codegen/v2/lang_d/model.rs:817-828 | doc/src/codegen/v2/lang_swift/model.rs:823-836 \u2014 \u0060doc/src/codegen/v2/lang_d/model.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/model.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 20 separate duplicated blocks between them, totalling at least 209 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/model.rs"},"region":{"startLine":817}}}],"partialFingerprints":{"codehealthFindingId/v1":"6192005334d0e9ff7abea62a6421baada7a9e1d33c634fc73bae3200c7e6733b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): doc/src/codegen/v2/lang_kotlin/wrappers.rs:213-226 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:271-284 \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":"doc/src/codegen/v2/lang_kotlin/wrappers.rs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"04bbf0f6dd955a3cf4cbadca4b01781bf9f1893dca51d90200b22a3f3527bb4c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): doc/src/codegen/v2/lang_node/wrappers.rs:705-718 | doc/src/codegen/v2/lang_node/wrappers.rs:1176-1189 \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":"doc/src/codegen/v2/lang_node/wrappers.rs"},"region":{"startLine":705}}}],"partialFingerprints":{"codehealthFindingId/v1":"bac0f3a55676f829647781650e237495467f3c1d756ae83eb1eaf36156bf7c2f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:2853-2866 | doc/src/codegen/v2/lang_rust.rs:3126-3139 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2853}}}],"partialFingerprints":{"codehealthFindingId/v1":"1800eac7f4cac4b49bc2318bb69714f957516a21bf9df641ecd9243f3c6017ec"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201314 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:2892-2902 | doc/src/codegen/v2/lang_rust.rs:3176-3189 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2892}}}],"partialFingerprints":{"codehealthFindingId/v1":"f488db3f17d2cbc3e749fb99c06fb3e0fd40ea927e3627fc6b6fb576b0b0b892"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): doc/src/patch/mod.rs:388-401 | doc/src/patch/mod.rs:665-678 \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":"doc/src/patch/mod.rs"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"84c44ae33b85dde1e601ecb5bba675d832073b98cd0e4198a9d6d0e0c288bdb4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): doc/src/reftest/regression.rs:150-163 | doc/src/reftest/regression.rs:176-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":"doc/src/reftest/regression.rs"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"3299812a4e6489456f98d94bbea4b54e89e459507e98f8965ede64fa566dc50b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): doc/src/reftest/regression.rs:1175-1188 | doc/src/reftest/regression.rs:1974-1987 \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":"doc/src/reftest/regression.rs"},"region":{"startLine":1175}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9fc805e6ec52a555b482267de24faf364a9411df8f50f7c9e9891866d885268"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): doc/src/codegen/v2/lang_cobol/functions.rs:134-147 | doc/src/codegen/v2/lang_cobol/types.rs:435-448 \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":"doc/src/codegen/v2/lang_cobol/functions.rs"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"450d403f9401f64acecd00f0315227726d8fd9c82da2aa504c05c8c9c7b56bdb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201314 lines \u00D7 2): doc/src/codegen/v2/lang_ruby/types.rs:1020-1033 | doc/src/codegen/v2/lang_ruby/types.rs:1093-1104 \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":"doc/src/codegen/v2/lang_ruby/types.rs"},"region":{"startLine":1020}}}],"partialFingerprints":{"codehealthFindingId/v1":"47f4a0b8658c4069c54e65f971a7ad7cf16adb5d00f12a04535a0acbdc620b19"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): layout/src/cpurender/raster.rs:92-105 | layout/src/cpurender/raster.rs:129-142 \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":"layout/src/cpurender/raster.rs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"03164124eafeba02bafdf983025b91782bd2376e27cedc06f30a31a6c2d66eb3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): layout/src/cpurender/svg.rs:72-85 | layout/src/cpurender/svg.rs:134-146 \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":"layout/src/cpurender/svg.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f81979dd7bc54362bc33a7c9bac3c92b92e4586e6b26a0767f0ab778083af56"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): layout/src/solver3/cache.rs:2663-2676 | layout/src/solver3/cache.rs:2715-2728 \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":"layout/src/solver3/cache.rs"},"region":{"startLine":2663}}}],"partialFingerprints":{"codehealthFindingId/v1":"e97f0e6ce869509458a12c7208fbe971bcb425829daa21207d7ac1577e3e963e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): layout/src/solver3/cache.rs:2861-2873 | layout/src/solver3/cache.rs:3540-3553 \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":"layout/src/solver3/cache.rs"},"region":{"startLine":2861}}}],"partialFingerprints":{"codehealthFindingId/v1":"946d6cbd41485508c6fe72a82a308d77064d446679015c74aa11f235bc084a13"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): layout/src/solver3/display_list.rs:6236-6249 | layout/src/solver3/display_list.rs:6617-6630 \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":"layout/src/solver3/display_list.rs"},"region":{"startLine":6236}}}],"partialFingerprints":{"codehealthFindingId/v1":"32e60ea97e6776b335551a89d7e57a62cd38107deb11b52ef8c24cbf343f36ee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): layout/src/solver3/fc.rs:1762-1774 | layout/src/solver3/fc.rs:1912-1925 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":1762}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b413b92a7f09c43aa13ba7596dc69b98035d40cb49a3327dbb19735fd8f824f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201314 lines \u00D7 2): layout/src/solver3/fc.rs:8934-8945 | layout/src/solver3/fc.rs:9472-9485 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":8934}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7beeadcc10e4472df5c729f391e22af6a0413be4b023c227de0655f3e7adc93"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): layout/src/solver3/getters.rs:3273-3286 | layout/src/solver3/getters.rs:4285-4297 \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":"layout/src/solver3/getters.rs"},"region":{"startLine":3273}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d9e71974e0427a13ebd614a3ce0f22f91fd9755c272bac848bfc42ab0405a93"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201314 lines \u00D7 2): layout/src/solver3/getters.rs:4350-4363 | layout/src/solver3/getters.rs:4389-4400 \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":"layout/src/solver3/getters.rs"},"region":{"startLine":4350}}}],"partialFingerprints":{"codehealthFindingId/v1":"156bf1087dbbc0c10c829aaa033a55d4f614d89ffc8a271184acb598d52ea635"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): layout/src/solver3/layout_tree.rs:504-516 | layout/src/text3/dense.rs:1202-1215 \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":"layout/src/solver3/layout_tree.rs"},"region":{"startLine":504}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecb72ceca8a89fadb5f7ffc1e44918d36da7e9b16de04955b383d2dd9c968a30"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201314 lines \u00D7 2): layout/src/text3/dense.rs:1209-1222 | layout/src/text3/dense.rs:1326-1337 \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":"layout/src/text3/dense.rs"},"region":{"startLine":1209}}}],"partialFingerprints":{"codehealthFindingId/v1":"356a5624bcd3e64a8eca027a829e77c2064053536446b34854cf07ce34424523"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): layout/src/widgets/camera.rs:347-360 | layout/src/widgets/screencap.rs:312-324 \u2014 before extracting anything, compare \u0060layout/src/widgets/camera.rs\u0060 and \u0060layout/src/widgets/screencap.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 107 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":"layout/src/widgets/camera.rs"},"region":{"startLine":347}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f163d3e114c7680dd71723db69f03e44cd8eb0da2cba48e50f2290353d18d55"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): layout/src/widgets/node_graph.rs:1010-1023 | layout/src/widgets/node_graph.rs:1030-1043 \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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":1010}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d6773903101a1ea368da3d8d319b064d0c6c0e0a22b3ebdb90a792e80fde653"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): layout/src/widgets/text_area.rs:831-844 | layout/src/widgets/text_input.rs:1228-1241 \u2014 before extracting anything, compare \u0060layout/src/widgets/text_area.rs\u0060 and \u0060layout/src/widgets/text_input.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 147 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":"layout/src/widgets/text_area.rs"},"region":{"startLine":831}}}],"partialFingerprints":{"codehealthFindingId/v1":"28fdcfcdae3e2de642cc1c435114f4a913b395ebe7f0c93b0eda4fe955f76f26"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): layout/src/widgets/themes/flat.rs:702-715 | layout/src/widgets/themes/flora.rs:963-976 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"672c8750aec14c3f873775deca11a691965ca8e074be7ec6d34b4f7db6fe7f23"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): layout/src/widgets/themes/flat.rs:1522-1535 | layout/src/widgets/themes/flora.rs:1941-1954 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":1522}}}],"partialFingerprints":{"codehealthFindingId/v1":"c44434af815110c2a777f1125bcb39eab83483a5826cc9e1281ed52896bd8a74"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): webrender/core/src/batch.rs:1882-1895 | webrender/core/src/batch.rs:1930-1943 \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":"webrender/core/src/batch.rs"},"region":{"startLine":1882}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac0f261b46292e4548216a4f118a13b725461d70fdbd95920a9abd57b65056e5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): webrender/core/src/prim_store/gradient/conic.rs:220-233 | webrender/core/src/prim_store/gradient/radial.rs:185-198 \u2014 before extracting anything, compare \u0060webrender/core/src/prim_store/gradient/conic.rs\u0060 and \u0060webrender/core/src/prim_store/gradient/radial.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 84 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":"webrender/core/src/prim_store/gradient/conic.rs"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bf5daf704f2e703a7d1ecdec17e40843a93ceea691ecf4f681ba54807176843"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): webrender/core/src/render_api.rs:1009-1022 | webrender/core/src/render_api.rs:1034-1047 \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":"webrender/core/src/render_api.rs"},"region":{"startLine":1009}}}],"partialFingerprints":{"codehealthFindingId/v1":"89258cf981731498dbb43e9cd22ff07978d31b166e54e851fa40cf3c28c154e1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): webrender/core/src/render_task.rs:765-778 | webrender/core/src/render_task.rs:825-838 \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":"webrender/core/src/render_task.rs"},"region":{"startLine":765}}}],"partialFingerprints":{"codehealthFindingId/v1":"81638dbc45ce7a8d294b96fc17460429fef831a4256b8e83fd374e8c0a9c895c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): webrender/core/src/renderer/mod.rs:3678-3691 | webrender/core/src/renderer/mod.rs:3909-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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":3678}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa69596b78f2e10dbec62f4bdaa8af028d0e542b7fd24ee0a77e386a99a9bdb1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 9): doc/src/codegen/v2/lang_csharp/mod.rs:288-300 | doc/src/codegen/v2/lang_freebasic/mod.rs:330-342 | doc/src/codegen/v2/lang_go/mod.rs:412-424 | doc/src/codegen/v2/lang_haskell/wrappers.rs:2364-2376 | doc/src/codegen/v2/lang_nim/mod.rs:378-390 | doc/src/codegen/v2/lang_ocaml/mod.rs:1024-1036 | doc/src/codegen/v2/lang_pascal/mod.rs:508-520 | doc/src/codegen/v2/lang_smalltalk/wrappers.rs:437-449 | doc/src/codegen/v2/lang_vb6/mod.rs:395-407 \u2014 \u0060doc/src/codegen/v2/lang_freebasic/mod.rs\u0060 and \u0060doc/src/codegen/v2/lang_nim/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 5 separate duplicated blocks between them, totalling at least 66 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_csharp/mod.rs"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4506adedf7c03e48ae297f91fb2eab27b4545cfbfee3a1aa5e713a9733e7d8a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 7): doc/src/autofix/patch_format.rs:14-26 | doc/src/autofix/workspace.rs:2238-2250 | doc/src/codegen/v2/ir.rs:504-516 | doc/src/codegen/v2/ir_builder.rs:2680-2692 | doc/src/codegen/v2/lang_python.rs:4556-4568 | doc/src/codegen/v2/lang_rust.rs:5004-5016 | doc/src/codegen/v2/transmute_helpers.rs:507-519 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 7 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 7 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/autofix/patch_format.rs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f6109c8290722ed988ff782b2ce2e72188b4edaa8f60765caf02a0feee588b7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 6): dll/src/desktop/shell2/android/mod.rs:458-470 | dll/src/desktop/shell2/headless/mod.rs:1691-1704 | dll/src/desktop/shell2/ios/mod.rs:1910-1922 | dll/src/desktop/shell2/linux/x11/mod.rs:6183-6196 | dll/src/desktop/shell2/macos/mod.rs:6016-6029 | dll/src/desktop/shell2/windows/mod.rs:1828-1841 \u2014 \u0060dll/src/desktop/shell2/android/mod.rs\u0060 and \u0060dll/src/desktop/shell2/headless/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 65 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":458}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a69516eb987944e91e899cf8939053a55586fbf647ac43df57377347d72a93e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 5): layout/src/solver3/fc.rs:1612-1624 | layout/src/solver3/fc.rs:1686-1698 | layout/src/solver3/fc.rs:1830-1842 | layout/src/solver3/fc.rs:2431-2443 | layout/src/solver3/fc.rs:2471-2483 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":1612}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bb3c060e531454bfcf13ff0136b7ab5edbf27204d577313a459fe4e4b26412e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 4): css/src/system.rs:2609-2621 | css/src/system.rs:2659-2671 | css/src/system.rs:2787-2798 | css/src/system.rs:2864-2876 \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":"css/src/system.rs"},"region":{"startLine":2609}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcf0550b76f040c8e91d3e965cf3c949f3a86a02cf2013c408b3e3ee7837ac86"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 4): doc/src/codegen/v2/lang_rust.rs:2523-2535 | doc/src/codegen/v2/lang_rust.rs:2598-2610 | doc/src/codegen/v2/rust/shared.rs:132-144 | doc/src/codegen/v2/rust/shared.rs:181-193 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_rust.rs\u0060 and \u0060doc/src/codegen/v2/rust/shared.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 200 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2523}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2b67614a6f03cdcf96337c50bcec1e1f6712bbec79768fea49b5dfa4ff16a56"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 4): layout/src/cpurender/raster.rs:4258-4269 | layout/src/cpurender/raster.rs:4275-4287 | layout/src/cpurender/raster.rs:4293-4305 | layout/src/cpurender/raster.rs:4311-4323 \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":"layout/src/cpurender/raster.rs"},"region":{"startLine":4258}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f6621d5e654aedec5e9af88e8ed28ac658c398ebd67ea740b10939f341aeba4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): dll/src/desktop/shell2/linux/wayland/mod.rs:3384-3396 | dll/src/desktop/shell2/linux/x11/mod.rs:4386-4398 | dll/src/desktop/shell2/windows/mod.rs:6289-6301 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":3384}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b9913e821fc6f28794da9bd58f1101596a97160ab46a3cb990adf165f4e704c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): doc/src/codegen/v2/lang_cpp/cpp11.rs:153-165 | doc/src/codegen/v2/lang_cpp/cpp17.rs:284-296 | doc/src/codegen/v2/lang_cpp/cpp20.rs:997-1009 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp17.rs\u0060 as WHOLE FILES: this scan already matched 38 separate duplicated blocks between them, totalling at least 759 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":"doc/src/codegen/v2/lang_cpp/cpp11.rs"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"a881e3257a60a2c78f695303c2e943fc1ad670803c0cea13006895a27e568b26"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): doc/src/codegen/v2/lang_haskell/functions.rs:300-312 | doc/src/codegen/v2/lang_haskell/functions.rs:650-662 | doc/src/codegen/v2/lang_haskell/functions.rs:741-753 \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":"doc/src/codegen/v2/lang_haskell/functions.rs"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"a977a2d577d3e57eec4a657d0a2b6a9168f797c5f5eac68d05acfe4c9117dacd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): doc/src/codegen/v2/lang_perl/types.rs:741-753 | doc/src/codegen/v2/lang_red/mod.rs:747-759 | doc/src/codegen/v2/managed_host_invoker.rs:562-574 \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":"doc/src/codegen/v2/lang_perl/types.rs"},"region":{"startLine":741}}}],"partialFingerprints":{"codehealthFindingId/v1":"8688d3008a794d7d001e64609c65208219b2555bfb3fcad10d7a1ab22ca62cc4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201313 lines \u00D7 3): doc/src/codegen/v2/lang_d/types.rs:188-196 | doc/src/codegen/v2/lang_odin/types.rs:236-248 | doc/src/codegen/v2/lang_v/types.rs:244-256 \u2014 \u0060doc/src/codegen/v2/lang_d/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_odin/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 33 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/types.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"d750ccecf98c00ab7be1031f538e22cbd7f58a55352159edcbb5015a35cd0493"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): layout/src/solver3/display_list.rs:2078-2090 | layout/src/solver3/display_list.rs:2097-2109 | layout/src/solver3/display_list.rs:2116-2128 \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":"layout/src/solver3/display_list.rs"},"region":{"startLine":2078}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5fb0fb7f646c2daf8419444c37628a29f0865fcecfc5facd4caad201e236fbb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 4): layout/src/widgets/node_graph.rs:2019-2031 | layout/src/widgets/node_graph.rs:2042-2054 | layout/src/widgets/node_graph.rs:2065-2077 | layout/src/widgets/node_graph.rs:2088-2099 \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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":2019}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff2ba81370fe003e0b384ee62db78a8131dbc93c395775538153456f395149e4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 4): layout/src/widgets/node_graph.rs:2143-2155 | layout/src/widgets/node_graph.rs:2166-2178 | layout/src/widgets/node_graph.rs:2189-2201 | layout/src/widgets/node_graph.rs:2212-2223 \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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":2143}}}],"partialFingerprints":{"codehealthFindingId/v1":"981a2c8438e0a682ace1fe27367875e2833c1a91d127aa6235af49a80beb2b33"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): layout/src/window.rs:8368-8380 | layout/src/window.rs:8397-8409 | layout/src/window.rs:8429-8441 \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":"layout/src/window.rs"},"region":{"startLine":8368}}}],"partialFingerprints":{"codehealthFindingId/v1":"a67dd5f145ae98a4bdf1d92422410024e2717e1174455c23b76f42e5874350b9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): webrender/core/src/render_task.rs:1782-1794 | webrender/core/src/render_task.rs:1807-1819 | webrender/core/src/render_task.rs:1832-1844 \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":"webrender/core/src/render_task.rs"},"region":{"startLine":1782}}}],"partialFingerprints":{"codehealthFindingId/v1":"267011120dfbd9d3f875655482ccb82408b892d3ca69ff6fce56245c45e5338e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): webrender/core/src/renderer/mod.rs:4125-4137 | webrender/core/src/renderer/mod.rs:4152-4164 | webrender/core/src/renderer/mod.rs:4179-4191 \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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":4125}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1e167b03863e9942da6e233ec8a014fef202447f3e2652997e434abfaa13b49"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): css/src/system.rs:2241-2253 | css/src/system.rs:2293-2305 \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":"css/src/system.rs"},"region":{"startLine":2241}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c2d7901e4f9e0c087b887fed5a83d9850f2ef9231230f5995cc6eaf43c666f3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): css/src/system.rs:2590-2602 | css/src/system.rs:2640-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":"css/src/system.rs"},"region":{"startLine":2590}}}],"partialFingerprints":{"codehealthFindingId/v1":"07d814d3fb76f7ad186f51f4ca524626c3c149d92a158010e135e70e8a2844e8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201313 lines \u00D7 2): dll/src/desktop/extra/hid/macos.rs:285-297 | dll/src/desktop/extra/hid/windows.rs:220-230 \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":"dll/src/desktop/extra/hid/macos.rs"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5b8394ff130563d1331f81288e2eeeba8cac9a1077094dc6d4d4e33decc3e4a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): dll/src/desktop/extra/pdf/mod.rs:629-640 | dll/src/desktop/extra/pdf/mod.rs:700-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":"dll/src/desktop/extra/pdf/mod.rs"},"region":{"startLine":629}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b36860626db263721f8718cf6b90006a7eeb0b1ca077e3c20394f51ce9aab95"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): dll/src/desktop/shell2/common/event.rs:5419-5431 | dll/src/desktop/shell2/common/event.rs:5448-5460 \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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":5419}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee49ac2fe1d373b4a316c0b7c2336b7f763d585d98b1f006ff56685f4b3275c3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): dll/src/desktop/shell2/common/event.rs:7844-7856 | dll/src/desktop/shell2/common/event.rs:7946-7957 \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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":7844}}}],"partialFingerprints":{"codehealthFindingId/v1":"724040cfe78beffe33442e3f388e945ec93f4ffcb4c0d857c7ca199382c8b3c8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): dll/src/desktop/shell2/common/transient.rs:1032-1044 | dll/src/desktop/shell2/common/transient.rs:1087-1099 \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":"dll/src/desktop/shell2/common/transient.rs"},"region":{"startLine":1032}}}],"partialFingerprints":{"codehealthFindingId/v1":"e09935e40a400bf6bf015f19cf9cdc40027f6eae62992d2c4d78cee1d7ae1c8f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201313 lines \u00D7 2): dll/src/desktop/extra/file_picker/ios.rs:286-295 | dll/src/desktop/shell2/ios/mod.rs:2577-2589 \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":"dll/src/desktop/extra/file_picker/ios.rs"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"14651f881988af0a71ccf92f08d798c069dde5ebaf770d0ce63624a33251a333"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/events.rs:363-375 | dll/src/desktop/shell2/linux/wayland/events.rs:433-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":"dll/src/desktop/shell2/linux/wayland/events.rs"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"c87690bccb0cc0ea8c57df5c88d4bbf74ffb0d87db15f49e241862933a9be09e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/events.rs:2683-2695 | dll/src/desktop/shell2/linux/wayland/events.rs:2741-2753 \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":"dll/src/desktop/shell2/linux/wayland/events.rs"},"region":{"startLine":2683}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4f5a2d2049dae471296a5ab7d9c30d951a225faacdc3e910af957d5aba40595"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/events.rs:5253-5265 | dll/src/desktop/shell2/linux/x11/mod.rs:9449-9461 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/wayland/events.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 54 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/events.rs"},"region":{"startLine":5253}}}],"partialFingerprints":{"codehealthFindingId/v1":"f03127443f64533fa8cb51d9c526b815a4a17be86786f4db9639e21b4aceca63"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:6259-6271 | dll/src/desktop/shell2/linux/x11/events.rs:1400-1412 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/events.rs\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 249 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":6259}}}],"partialFingerprints":{"codehealthFindingId/v1":"39a725a48916c0d875e76222b71cb89e654625b8f0f7b338faf5365c359fdcb8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:6380-6392 | dll/src/desktop/shell2/linux/x11/events.rs:1508-1520 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/events.rs\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 249 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":6380}}}],"partialFingerprints":{"codehealthFindingId/v1":"414d74ab0f9dad02caf8b7995993bfe24adb11e380ff844a99fcb6515f90894b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201313 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:7689-7697 | dll/src/desktop/shell2/linux/wayland/mod.rs:7924-7936 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":7689}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0c88bca4689046b112cafb7626eb48ec662a47b4769eea3d55301b7f80fa7e0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201313 lines \u00D7 2): dll/src/desktop/shell2/linux/x11/events.rs:1542-1550 | dll/src/desktop/shell2/linux/x11/mod.rs:8029-8041 \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":"dll/src/desktop/shell2/linux/x11/events.rs"},"region":{"startLine":1542}}}],"partialFingerprints":{"codehealthFindingId/v1":"c49a40777dc80c4bf27d5fd53b75e68d2139fe787a43c99e04e79f28eedca936"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201313 lines \u00D7 2): dll/src/desktop/shell2/linux/x11/mod.rs:1651-1661 | dll/src/desktop/shell2/linux/x11/mod.rs:1703-1715 \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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":1651}}}],"partialFingerprints":{"codehealthFindingId/v1":"c790a35b51705659ba452cfc04c721a3cc02c5e2435fada70993aa5cf89a0e9a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): dll/src/desktop/shell2/windows/mod.rs:5878-5890 | dll/src/desktop/shell2/windows/mod.rs:5995-6006 \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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":5878}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8dc7aebeb32b7cc244f821f7c76a8db9c9ba6192c474fcc1ffbea2ee97e758c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): dll/src/desktop/tray/linux.rs:633-644 | dll/src/desktop/tray/linux.rs:836-848 \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":"dll/src/desktop/tray/linux.rs"},"region":{"startLine":633}}}],"partialFingerprints":{"codehealthFindingId/v1":"d823df629a7444a76219927d8b9a60a49e527f1839d515e3dc36a5ec8be1ca62"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): dll/src/web/classify.rs:134-146 | doc/src/utils/string.rs:3-15 \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":"dll/src/web/classify.rs"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"f259c9fc6383a8f140bebf2bdcce90e0ed8748f528f18ca29d719ec6e6bbf432"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): dll/src/web/transpiler_remill.rs:7785-7797 | dll/src/web/transpiler_remill.rs:7804-7816 \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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":7785}}}],"partialFingerprints":{"codehealthFindingId/v1":"05e32c1a110399337d268890036b0b47f9e8a602d614aef35a5e7472282aa8af"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): dll/src/desktop/extra/permission/ios.rs:82-94 | dll/src/desktop/extra/permission/macos.rs:182-194 \u2014 before extracting anything, compare \u0060dll/src/desktop/extra/permission/ios.rs\u0060 and \u0060dll/src/desktop/extra/permission/macos.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 100 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":"dll/src/desktop/extra/permission/ios.rs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"833897e2cb42c0dc467e27dc3a917d854d3583e79d89c3beaa94d486a39a08b6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): dll/src/desktop/compositor2.rs:374-386 | dll/src/desktop/compositor2.rs:389-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":"dll/src/desktop/compositor2.rs"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea8d52f374fcf63d3243802153a7baa3c96bd2c3a9b13929b86daff93564e2da"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): dll/src/desktop/compositor2.rs:1633-1644 | dll/src/desktop/compositor2.rs:1941-1953 \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":"dll/src/desktop/compositor2.rs"},"region":{"startLine":1633}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bb07e9ad76fcd38236b4da48d8f878ec66fc0858bf905644c6b488b611f7741"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): doc/src/autofix/mod.rs:577-589 | doc/src/autofix/patch_format.rs:589-601 \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":"doc/src/autofix/mod.rs"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"37605542d5b4e003a6eeadf40a41de82de150d8ccbbb27cbc1f44252ace8d958"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): doc/src/autofix/type_index.rs:1858-1870 | doc/src/patch/index.rs:1687-1698 \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":"doc/src/autofix/type_index.rs"},"region":{"startLine":1858}}}],"partialFingerprints":{"codehealthFindingId/v1":"b88ea3a712e8c7fbba2b86be37a28f82b51a930ce9917f3be82764d637550414"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): doc/src/autofix/type_index.rs:1902-1914 | doc/src/autofix/type_index.rs:1959-1970 \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":"doc/src/autofix/type_index.rs"},"region":{"startLine":1902}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5f643385d0d291b6fd46935c5d65626f9f519a62525c4c33fed0dd27287c933"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): doc/src/autofix/type_index.rs:2039-2051 | doc/src/autofix/type_index.rs:2234-2246 \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":"doc/src/autofix/type_index.rs"},"region":{"startLine":2039}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2bcf754c368c66a4eb53fc8b2c2dc2f118a89e5a7e4eaa1d7ec8262e88be5e5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): doc/src/autotest/extract.rs:187-199 | doc/src/autotest/extract.rs:213-225 \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":"doc/src/autotest/extract.rs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"963061cebfbca27a89c9a38c211363449e33c827f2ff58dccb02a9a101c65010"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): doc/src/codegen/v2/lang_cpp/cpp11.rs:170-182 | doc/src/codegen/v2/lang_cpp/cpp17.rs:301-313 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp17.rs\u0060 as WHOLE FILES: this scan already matched 38 separate duplicated blocks between them, totalling at least 759 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":"doc/src/codegen/v2/lang_cpp/cpp11.rs"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"3876d88d6376609044968d83331bf5ee510222cae6e7b6f4039a1c2a01be8678"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): doc/src/codegen/v2/lang_crystal/mod.rs:272-284 | doc/src/codegen/v2/lang_crystal/types.rs:213-225 \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":"doc/src/codegen/v2/lang_crystal/mod.rs"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee4b3847f5161f2d7c1c6c584439e459d5693ff27a84147dfa5fb307f73c0cf1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (4\u201313 lines \u00D7 3): doc/src/codegen/v2/lang_csharp/wrappers.rs:122-134 | doc/src/codegen/v2/lang_java/wrappers.rs:1281-1284 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:119-131 \u2014 \u0060doc/src/codegen/v2/lang_csharp/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_java/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 14 separate duplicated blocks between them, totalling at least 156 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"00fce3aad729eeeafcf42bdfbd770ad338a7f7e739ea7466089821d2527b7860"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): doc/src/codegen/v2/lang_csharp/wrappers.rs:1996-2008 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:2037-2049 \u2014 \u0060doc/src/codegen/v2/lang_csharp/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_kotlin/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 13 separate duplicated blocks between them, totalling at least 142 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":1996}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bd7cabaa652ce6aba502435f66657b11def64570afb1ffa9ef212b5749523f6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): doc/src/codegen/v2/lang_d/model.rs:392-404 | doc/src/codegen/v2/lang_swift/model.rs:397-409 \u2014 \u0060doc/src/codegen/v2/lang_d/model.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/model.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 20 separate duplicated blocks between them, totalling at least 209 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/model.rs"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"40ca1ed8f09d332aa86d880d21d11cf6c9fe58f9b590e3b959b828b14c62d01d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): doc/src/codegen/v2/lang_fortran/mod.rs:270-282 | doc/src/codegen/v2/lang_ocaml/mod.rs:272-284 \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":"doc/src/codegen/v2/lang_fortran/mod.rs"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"80a23984ce882368f7d1f745dcb1bfd923416b584bc3a95244f334c585b3936f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): doc/src/codegen/v2/lang_node/wrappers.rs:492-504 | doc/src/codegen/v2/lang_node/wrappers.rs:1210-1222 \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":"doc/src/codegen/v2/lang_node/wrappers.rs"},"region":{"startLine":492}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9412ce5ac266a0af3c251e68405139cc488ee657d6a7f99fe21f16a9f04d3ac"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): doc/src/codegen/v2/lang_python.rs:1836-1848 | doc/src/codegen/v2/lang_python.rs:1854-1865 \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":"doc/src/codegen/v2/lang_python.rs"},"region":{"startLine":1836}}}],"partialFingerprints":{"codehealthFindingId/v1":"80f61c1794d32f354e970e075b70dd53a2e4c6152a8275975f4c20cfca97b902"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): doc/src/codegen/v2/lang_ruby/wrappers.rs:1269-1281 | doc/src/codegen/v2/lang_ruby/wrappers.rs:1349-1361 \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":"doc/src/codegen/v2/lang_ruby/wrappers.rs"},"region":{"startLine":1269}}}],"partialFingerprints":{"codehealthFindingId/v1":"626811efe11be39b14ed2b5bb1a830c2e2bb0c7fad23a18f568083dfdb800f8b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:1681-1693 | doc/src/codegen/v2/lang_rust.rs:2043-2055 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":1681}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3d77a4ea88687b2e457d24050c4c05ea7aaf87572d0bcea5de44ca4246b7200"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:3811-3823 | doc/src/codegen/v2/lang_rust.rs:3898-3910 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":3811}}}],"partialFingerprints":{"codehealthFindingId/v1":"14d86098f69d8f40c49142f2325f1716836bdca24b09af6e4e452776ce441826"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): doc/src/reftest/autodebug.rs:2288-2300 | doc/src/reftest/autoreview.rs:2130-2142 \u2014 before extracting anything, compare \u0060doc/src/reftest/autodebug.rs\u0060 and \u0060doc/src/reftest/autoreview.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 52 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":"doc/src/reftest/autodebug.rs"},"region":{"startLine":2288}}}],"partialFingerprints":{"codehealthFindingId/v1":"15cef94445af452b7e651f1b1ec28157dc56dad894fd350b5f56c6331a9318ed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): doc/src/codegen/v2/lang_ada/types.rs:263-275 | doc/src/codegen/v2/lang_ada/types.rs:304-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":"doc/src/codegen/v2/lang_ada/types.rs"},"region":{"startLine":263}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a2f2b47aa5006344036cc4fe3fc96d6fece01a12c0a1b5164f1b902c55adcdc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201313 lines \u00D7 2): doc/src/codegen/v2/lang_perl/types.rs:130-142 | doc/src/codegen/v2/lang_ruby/types.rs:183-192 \u2014 \u0060doc/src/codegen/v2/lang_perl/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_ruby/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 5 separate duplicated blocks between them, totalling at least 49 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_perl/types.rs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"848f69bcd047a3c647df45add7137c0e064820bc5c1975747f73ae91a7f4bab2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): doc/src/utils/analyze.rs:82-94 | doc/src/utils/analyze.rs:96-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":"doc/src/utils/analyze.rs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"e45074604b8546bf07dec22754b709acc1d6d39c4823023b7089d62680db4394"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): doc/src/codegen/v2/lang_java/types.rs:246-258 | doc/src/codegen/v2/lang_java/types.rs:507-519 \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":"doc/src/codegen/v2/lang_java/types.rs"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc158b89546614e69d28151eb73ffe34de1e9fc155a5228e56e4cf87a77df3dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201313 lines \u00D7 2): doc/src/codegen/v2/lang_go/wrappers.rs:591-603 | doc/src/codegen/v2/lang_go/wrappers.rs:620-630 \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":"doc/src/codegen/v2/lang_go/wrappers.rs"},"region":{"startLine":591}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a588274f1bdbf8c0fb1fbadf450e2ca9be0eb1bfd11de2d87581f031ef1e129"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): layout/src/callbacks.rs:3493-3505 | layout/src/callbacks.rs:3568-3580 \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":"layout/src/callbacks.rs"},"region":{"startLine":3493}}}],"partialFingerprints":{"codehealthFindingId/v1":"64a04596a40a48512bc0e6f4fb318b5907683c445a841a9f38a28f00bea6c1c1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): layout/src/callbacks.rs:3518-3530 | layout/src/callbacks.rs:3543-3555 \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":"layout/src/callbacks.rs"},"region":{"startLine":3518}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a6fcaba97a99e7a0d156dbb908d7ca874b6b1410bd1a381997480ea557c1ff2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): layout/src/cpurender/raster.rs:3573-3585 | layout/src/cpurender/raster.rs:3855-3872 \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":"layout/src/cpurender/raster.rs"},"region":{"startLine":3573}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d5d4b50246b639f8a22b335d92e004916ab93e77d81480af7fc4cd241bdb0a9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201313 lines \u00D7 2): layout/src/managers/gpu_state.rs:270-282 | layout/src/window.rs:11900-11909 \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":"layout/src/managers/gpu_state.rs"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3da1cf119c465e1be33bc6efe66718b668df19b6a47db8e59515ca7fba43e87"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): layout/src/solver3/display_list.rs:7483-7495 | layout/src/solver3/display_list.rs:7582-7594 \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":"layout/src/solver3/display_list.rs"},"region":{"startLine":7483}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccba6c57e9cc21919ae7e4a36e053539e13bb950b416536b3e3d2fe68356454e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (4\u201313 lines \u00D7 3): layout/src/solver3/display_list.rs:7770-7782 | layout/src/solver3/display_list.rs:8006-8009 | layout/src/solver3/display_list.rs:8072-8084 \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":"layout/src/solver3/display_list.rs"},"region":{"startLine":7770}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2f05ae2fe0c207bf8daf9f396c877276f1d8bd41ca629cc7260c6f379480a1b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): layout/src/solver3/getters.rs:6767-6779 | layout/src/solver3/getters.rs:6889-6900 \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":"layout/src/solver3/getters.rs"},"region":{"startLine":6767}}}],"partialFingerprints":{"codehealthFindingId/v1":"034523ac930111a5566fb19cb438ea87a79d6ed7b9843d4112576576f7b2f258"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): layout/src/solver3/paged_layout.rs:413-425 | layout/src/solver3/paged_layout.rs:496-508 \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":"layout/src/solver3/paged_layout.rs"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"76c201d73617af7ee211d2e55cb237ce5b4c57e23bda8e43a1324e379da50e50"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): layout/src/solver3/paged_layout.rs:1021-1033 | layout/src/solver3/paged_layout.rs:2200-2212 \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":"layout/src/solver3/paged_layout.rs"},"region":{"startLine":1021}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7975eaaa0e6e1fcc3c57dd787e0b56dd95817d3abb70dda2d59945357e33977"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): layout/src/text3/cache.rs:7224-7235 | layout/src/text3/dense.rs:765-777 \u2014 before extracting anything, compare \u0060layout/src/text3/cache.rs\u0060 and \u0060layout/src/text3/dense.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 62 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":"layout/src/text3/cache.rs"},"region":{"startLine":7224}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4c57766046474d35bf1c68c577e7c04507c374e6591cdf8f8ec48ae4e32e670"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): layout/src/text3/dense.rs:570-582 | layout/src/text3/dense.rs:599-611 \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":"layout/src/text3/dense.rs"},"region":{"startLine":570}}}],"partialFingerprints":{"codehealthFindingId/v1":"6883cf44ea5bb6a6892511283eea483058337c2b81dcdb11b025593555289868"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): layout/src/text3/edit.rs:842-853 | layout/src/text3/edit.rs:975-987 \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":"layout/src/text3/edit.rs"},"region":{"startLine":842}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1c180f2b882c9530ad111b54cc2dac84dffd13d9c4bdce8a3003501d69da57f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): layout/src/widgets/text_area.rs:799-811 | layout/src/widgets/text_input.rs:1193-1206 \u2014 before extracting anything, compare \u0060layout/src/widgets/text_area.rs\u0060 and \u0060layout/src/widgets/text_input.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 147 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":"layout/src/widgets/text_area.rs"},"region":{"startLine":799}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2c1319cedb98bc2337a6deff7d6e60bdb72764ed1abab15bc491cd1ab79ca0e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): layout/src/widgets/time_picker.rs:696-708 | layout/src/widgets/time_picker.rs:840-852 \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":"layout/src/widgets/time_picker.rs"},"region":{"startLine":696}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6697e564ac98009f6d243b2b42222ddc91e3b174c15e831ccbf5fd3f95677e1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): layout/src/window.rs:14303-14315 | layout/src/window.rs:14705-14717 \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":"layout/src/window.rs"},"region":{"startLine":14303}}}],"partialFingerprints":{"codehealthFindingId/v1":"06b2a9030821f6fd9b3c7db6e759ae8631da8e9b008785f12ecaa82250231d41"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): layout/src/xml/svg.rs:1375-1387 | layout/src/xml/svg.rs:1435-1447 \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":"layout/src/xml/svg.rs"},"region":{"startLine":1375}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9ddedfb912a4ae4bbdae09605100f0825263728c7f992edb9785a20f46f07be"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): layout/src/widgets/themes/flat.rs:2096-2108 | layout/src/widgets/themes/flora.rs:2397-2409 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":2096}}}],"partialFingerprints":{"codehealthFindingId/v1":"189d04585e7de1d078f55127704d7c978d8c41c99bbcf69ab4f3f351ef6815cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201313 lines \u00D7 2): webrender/core/src/picture.rs:1919-1931 | webrender/core/src/picture.rs:1964-1974 \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":"webrender/core/src/picture.rs"},"region":{"startLine":1919}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5b86fb11951720e934de62e441ebd89a3cdd42d00449bb53e6dde1c39b4c3a6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): webrender/core/src/prim_store/gradient/conic.rs:423-435 | webrender/core/src/prim_store/gradient/radial.rs:553-565 \u2014 before extracting anything, compare \u0060webrender/core/src/prim_store/gradient/conic.rs\u0060 and \u0060webrender/core/src/prim_store/gradient/radial.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 84 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":"webrender/core/src/prim_store/gradient/conic.rs"},"region":{"startLine":423}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c0d2e5de90b200e40d50729dbd9bdd3f4e010ffbd097a9fbfe26f547afb5443"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): webrender/core/src/renderer/mod.rs:3858-3870 | webrender/core/src/renderer/mod.rs:3999-4011 \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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":3858}}}],"partialFingerprints":{"codehealthFindingId/v1":"a667d76823d9c4293e091d4e9607e4d1e4f371cb19666e9a4afa673e9d2800a6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 15): css/src/system.rs:2250-2261 | css/src/system.rs:2302-2313 | css/src/system.rs:2354-2365 | css/src/system.rs:2406-2417 | css/src/system.rs:2459-2470 | css/src/system.rs:2517-2528 | css/src/system.rs:2566-2577 | css/src/system.rs:2618-2629 | css/src/system.rs:2668-2679 | css/src/system.rs:2717-2728 | css/src/system.rs:2795-2806 | css/src/system.rs:2873-2884 | css/src/system.rs:2924-2935 | css/src/system.rs:2973-2984 | css/src/system.rs:3020-3031 \u2014 all 15 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":"css/src/system.rs"},"region":{"startLine":2250}}}],"partialFingerprints":{"codehealthFindingId/v1":"4496412e7ab25f0f38bcf8b5aa89a57e3695a2b7daf2188f39f64ac7d69a361d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 10): doc/src/codegen/v2/lang_csharp/mod.rs:287-298 | doc/src/codegen/v2/lang_freebasic/mod.rs:329-340 | doc/src/codegen/v2/lang_go/mod.rs:411-422 | doc/src/codegen/v2/lang_haskell/wrappers.rs:2363-2374 | doc/src/codegen/v2/lang_nim/mod.rs:377-388 | doc/src/codegen/v2/lang_ocaml/mod.rs:1023-1034 | doc/src/codegen/v2/lang_pascal/mod.rs:507-518 | doc/src/codegen/v2/lang_powershell/cmdlets.rs:370-381 | doc/src/codegen/v2/lang_smalltalk/wrappers.rs:436-447 | doc/src/codegen/v2/lang_vb6/mod.rs:394-405 \u2014 \u0060doc/src/codegen/v2/lang_freebasic/mod.rs\u0060 and \u0060doc/src/codegen/v2/lang_nim/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 5 separate duplicated blocks between them, totalling at least 66 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_csharp/mod.rs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"6532b894849880f674d6efad125579eeaace0b85c742876f7ee83a8fb1a84a31"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 6): doc/src/autofix/type_index.rs:2485-2496 | doc/src/autofix/type_index.rs:2526-2537 | doc/src/autofix/type_index.rs:2567-2578 | doc/src/autofix/type_index.rs:2608-2619 | doc/src/autofix/type_index.rs:2659-2670 | doc/src/autofix/type_index.rs:2798-2809 \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":"doc/src/autofix/type_index.rs"},"region":{"startLine":2485}}}],"partialFingerprints":{"codehealthFindingId/v1":"48edbe1bfcb104b43cc134532fb745a304b07755146e1da43d0f1c0da487c329"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201312 lines \u00D7 6): doc/src/codegen/v2/lang_cpp/cpp03.rs:306-314 | doc/src/codegen/v2/lang_cpp/cpp11.rs:205-213 | doc/src/codegen/v2/lang_cpp/cpp11.rs:283-294 | doc/src/codegen/v2/lang_cpp/cpp17.rs:353-361 | doc/src/codegen/v2/lang_cpp/cpp17.rs:440-451 | doc/src/codegen/v2/lang_cpp/cpp20.rs:1049-1057 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"18a9ac6a5500ca32428ee477fd722e4cff65bc2cce419c5fd868bdbe99a98987"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u201312 lines \u00D7 6): doc/src/codegen/v2/lang_java/derives.rs:682-689 | doc/src/codegen/v2/lang_java/functions.rs:244-255 | doc/src/codegen/v2/lang_java/types.rs:432-438 | doc/src/codegen/v2/lang_java/types.rs:744-754 | doc/src/codegen/v2/lang_java/types.rs:927-935 | doc/src/codegen/v2/lang_java/wrappers.rs:1941-1947 \u2014 there are 6 copies across 4 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 6 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_java/derives.rs"},"region":{"startLine":682}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ec8ee702761a8007e729082bf96fc1ab8295c3ece3d745c72ba147d6ab3b450"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 5): layout/src/widgets/quick_access.rs:290-301 | layout/src/widgets/ribbon.rs:587-598 | layout/src/widgets/ribbon.rs:1282-1293 | layout/src/widgets/statusbar.rs:313-324 | layout/src/widgets/statusbar.rs:553-564 \u2014 before extracting anything, compare \u0060layout/src/widgets/quick_access.rs\u0060 and \u0060layout/src/widgets/ribbon.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 60 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":"layout/src/widgets/quick_access.rs"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bb34e22ef05f2ea385dadd28aed7b1a75ae3ba0cdbfe2bd9c513dc93a829b08"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): dll/src/desktop/shell2/linux/x11/mod.rs:6238-6249 | dll/src/desktop/shell2/linux/x11/mod.rs:6469-6480 | dll/src/desktop/shell2/windows/mod.rs:1897-1908 | dll/src/desktop/shell2/windows/mod.rs:1964-1975 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 and \u0060dll/src/desktop/shell2/windows/mod.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 443 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":6238}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec4be1df0756195e8ddd81d96cb4dce9ecf5d6b4bf1a510e47a2f94ed1cf606b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): doc/src/autofix/type_index.rs:2295-2306 | doc/src/autofix/type_index.rs:2342-2353 | doc/src/autofix/type_index.rs:2396-2407 | doc/src/autofix/type_index.rs:2443-2454 \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":"doc/src/autofix/type_index.rs"},"region":{"startLine":2295}}}],"partialFingerprints":{"codehealthFindingId/v1":"68a4dd745cf75af47a7b5e7fc0cbd93103cff0c4eac8d40c19b942fbaeeb3585"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 4): doc/src/reftest/autodoc.rs:995-1005 | doc/src/reftest/autoreview.rs:615-625 | doc/src/reftest/autoreview.rs:844-855 | doc/src/reftest/autoreview.rs:1768-1778 \u2014 before extracting anything, compare \u0060doc/src/reftest/autodoc.rs\u0060 and \u0060doc/src/reftest/autoreview.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 207 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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":995}}}],"partialFingerprints":{"codehealthFindingId/v1":"167d5292b94e3fbcefd4a93bc421414e156278220ff4edb9b593116a257c4d4b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): layout/src/solver3/fc.rs:5938-5949 | layout/src/solver3/fc.rs:5968-5979 | layout/src/solver3/fc.rs:5998-6009 | layout/src/solver3/fc.rs:6028-6039 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":5938}}}],"partialFingerprints":{"codehealthFindingId/v1":"1801a5594b11ad2fe6c1513df3db5d15e50104add0f1dcc4d408e82a257fc2c1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): layout/src/widgets/backstage.rs:277-288 | layout/src/widgets/quick_access.rs:322-333 | layout/src/widgets/ribbon.rs:622-633 | layout/src/widgets/statusbar.rs:345-356 \u2014 before extracting anything, compare \u0060layout/src/widgets/backstage.rs\u0060 and \u0060layout/src/widgets/quick_access.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 41 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":"layout/src/widgets/backstage.rs"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a7298c2dbd57dc812b30cbf394bc754afd03aa29f83c7f8df3ff1cbbe068357"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): dll/src/desktop/shell2/common/event.rs:686-697 | dll/src/desktop/shell2/common/event.rs:942-953 | dll/src/desktop/shell2/common/event.rs:996-1007 \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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":686}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ad9460373746e6f1525bf56fb78f1e46ea86ad06b1445bf6a4e91706e380049"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201312 lines \u00D7 3): dll/src/desktop/shell2/linux/wayland/mod.rs:4668-4675 | dll/src/desktop/shell2/linux/wayland/mod.rs:5720-5730 | dll/src/desktop/shell2/linux/wayland/mod.rs:5878-5889 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":4668}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0968f30ef273befa714e9f27a8719fded0fbac0671192a9ac716503f40d0cea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 3): doc/src/reftest/autodoc.rs:932-942 | doc/src/reftest/autoreview.rs:1142-1153 | doc/src/reftest/autoreview.rs:1581-1592 \u2014 before extracting anything, compare \u0060doc/src/reftest/autodoc.rs\u0060 and \u0060doc/src/reftest/autoreview.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 207 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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":932}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2aa68eec0c8a670a9986ac0922f46875fe8d2ad50746b3aa18115c472547f0d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): layout/src/callbacks.rs:1935-1946 | layout/src/callbacks.rs:7264-7275 | layout/src/timer.rs:371-382 \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":"layout/src/callbacks.rs"},"region":{"startLine":1935}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1682ee8c35896b76847be51cd8f2098f3a42b082155403c7bc0c2d93e3d7b33"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): layout/src/window.rs:2053-2064 | layout/src/window.rs:4688-4699 | layout/src/window.rs:7782-7793 \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":"layout/src/window.rs"},"region":{"startLine":2053}}}],"partialFingerprints":{"codehealthFindingId/v1":"dae228f51bcf2fafd1283a1872af1477c76eda68e851b22e2de0140dc3455351"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): layout/src/window.rs:13952-13963 | layout/src/window.rs:14304-14315 | layout/src/window.rs:14706-14717 \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":"layout/src/window.rs"},"region":{"startLine":13952}}}],"partialFingerprints":{"codehealthFindingId/v1":"359bd872f4e4404f5a6c5544c755318833d911f9df43f4bf3d91e73faedd0d51"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): core/src/callbacks.rs:551-562 | core/src/callbacks.rs:1334-1345 \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":"core/src/callbacks.rs"},"region":{"startLine":551}}}],"partialFingerprints":{"codehealthFindingId/v1":"95b785b09761d1a7c4876953f34b9ab4156b51999e46122e8d5b4b12ab8866be"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): core/src/compact.rs:688-699 | core/src/compact.rs:1544-1555 \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":"core/src/compact.rs"},"region":{"startLine":688}}}],"partialFingerprints":{"codehealthFindingId/v1":"87af9bd55dfecf8521659229bdf4398110ada80cd13b09f3578f11b6544868ef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): core/src/gl.rs:3118-3129 | layout/src/xml/svg.rs:1622-1633 \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":"core/src/gl.rs"},"region":{"startLine":3118}}}],"partialFingerprints":{"codehealthFindingId/v1":"995f83f113b3db1e99a600b0eec95275b1e8d10d9f0f2ea54684933bbccacde9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): core/src/path_parser.rs:294-305 | core/src/path_parser.rs:323-334 \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":"core/src/path_parser.rs"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"99b5111e9fec618a94bfa8e214593e537936bc9a24e443f02d10e6338a4eeda8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): core/src/resources.rs:1724-1735 | core/src/resources.rs:3216-3227 \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":"core/src/resources.rs"},"region":{"startLine":1724}}}],"partialFingerprints":{"codehealthFindingId/v1":"f17ee9b0cb9a80ddf219062cd552163752368ac462cc5606ba9f3b2153da7730"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): core/src/resources.rs:2940-2951 | core/src/resources.rs:2956-2967 \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":"core/src/resources.rs"},"region":{"startLine":2940}}}],"partialFingerprints":{"codehealthFindingId/v1":"b246e97ec7eec3b32a3973725afde2268d043b2563e6b094bfa5243354e04d27"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201312 lines \u00D7 2): core/src/styled_dom.rs:1192-1200 | core/src/styled_dom.rs:1523-1534 \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":"core/src/styled_dom.rs"},"region":{"startLine":1192}}}],"partialFingerprints":{"codehealthFindingId/v1":"feb12f2e2a6eaf7af8d4c94f84afc5180506535bcefc873c5c3017a35c12b308"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): css/src/dynamic_selector.rs:2327-2337 | css/src/parser2.rs:1335-1346 \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":"css/src/dynamic_selector.rs"},"region":{"startLine":2327}}}],"partialFingerprints":{"codehealthFindingId/v1":"02fe648210254a202ce66f7bb4dfaf2692a7fdd780d62e2021d4a2e32e6deccd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): css/src/props/style/scrollbar.rs:610-621 | css/src/system.rs:2196-2207 \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":"css/src/props/style/scrollbar.rs"},"region":{"startLine":610}}}],"partialFingerprints":{"codehealthFindingId/v1":"dccf53bd57e1c7cf86de933c77681299c942c48d7f4bb891356171f35df18cd8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): css/src/system.rs:802-813 | css/src/system.rs:856-867 \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":"css/src/system.rs"},"region":{"startLine":802}}}],"partialFingerprints":{"codehealthFindingId/v1":"78c28b18b7ba58b126dd9e2e9698bca61abc975461921f5e41646e04366c5c47"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): css/src/system.rs:2222-2233 | css/src/system.rs:2274-2285 \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":"css/src/system.rs"},"region":{"startLine":2222}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e3fecb752afe37c1015a243527d03475001b57090d301888571cacb9ff8d5ce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): dll/src/desktop/extra/gamepad/playstation.rs:319-330 | dll/src/desktop/extra/gamepad/playstation.rs:358-369 \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":"dll/src/desktop/extra/gamepad/playstation.rs"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"42d7fcd054c17ec1813aee7bd30f13d0efaa970ff39d7510e4472f4b18e3fcad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): dll/src/desktop/extra/geolocation/ios.rs:113-124 | dll/src/desktop/extra/geolocation/macos.rs:107-117 \u2014 before extracting anything, compare \u0060dll/src/desktop/extra/geolocation/ios.rs\u0060 and \u0060dll/src/desktop/extra/geolocation/macos.rs\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 130 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":"dll/src/desktop/extra/geolocation/ios.rs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a1fb630bea9e3944b08776a22eadc1d8fa25d6a5e6e7b9fac4dd6535f3870fd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): dll/src/desktop/extra/media_keys/apple.rs:135-146 | dll/src/desktop/extra/media_keys/apple.rs:575-586 \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":"dll/src/desktop/extra/media_keys/apple.rs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"f970c5087919eddcad892113244de052cdd53286c4faccea1a4e22551446d2e7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): dll/src/desktop/extra/sqlite/mod.rs:636-647 | dll/src/desktop/extra/sqlite/mod.rs:686-697 \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":"dll/src/desktop/extra/sqlite/mod.rs"},"region":{"startLine":636}}}],"partialFingerprints":{"codehealthFindingId/v1":"e65863282ee96dd49ea44d1321ce168d32a3907d62c07f2c50f0e724523e1f73"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201312 lines \u00D7 2): dll/src/desktop/shell2/android/mod.rs:2452-2460 | dll/src/desktop/shell2/android/mod.rs:3105-3116 \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":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":2452}}}],"partialFingerprints":{"codehealthFindingId/v1":"9eb9348a9572529e24c251a53081973a4b4173f6c2fffd1f8c3d942dcb8f2d83"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): dll/src/desktop/shell2/common/event.rs:2052-2063 | dll/src/desktop/shell2/linux/x11/events.rs:1815-1826 \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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":2052}}}],"partialFingerprints":{"codehealthFindingId/v1":"67b57fb524bdc9e64c4ea1679e1a157094b9345efbef89882df8e9a0a8cfb0d4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): dll/src/desktop/shell2/common/event.rs:11842-11853 | dll/src/desktop/shell2/common/event.rs:11935-11946 \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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":11842}}}],"partialFingerprints":{"codehealthFindingId/v1":"c91c9d54b6e0972a383c6519812169001912e410fd64cba8d0e430d76c2a2e41"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): dll/src/desktop/shell2/headless/mod.rs:1709-1722 | dll/src/desktop/shell2/headless/mod.rs:1891-1902 \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":"dll/src/desktop/shell2/headless/mod.rs"},"region":{"startLine":1709}}}],"partialFingerprints":{"codehealthFindingId/v1":"933359ea59836b900ff6cf8f3a100a738bdf6aaaa5a8b7133db1aac793b2ab3d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): dll/src/desktop/shell2/linux/system_style.rs:846-857 | dll/src/desktop/shell2/windows/system_style.rs:385-396 \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":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":846}}}],"partialFingerprints":{"codehealthFindingId/v1":"54acee9f5c5c2282f88488c6596fa5a73816b8803bae8404157ea2badd0e6655"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/events.rs:2600-2611 | dll/src/desktop/shell2/linux/x11/mod.rs:1537-1548 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/wayland/events.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 54 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/events.rs"},"region":{"startLine":2600}}}],"partialFingerprints":{"codehealthFindingId/v1":"1287f5961be87300f02b7805e8eee5a255d9be94062353e6a6538b0b2e93c4f0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201312 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:4486-4497 | dll/src/desktop/shell2/linux/x11/events.rs:576-583 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/events.rs\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 249 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":4486}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b190eba882c423d4cc1390a0c458e138e970951dc5843890d5f7431bafb3ea8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): dll/src/desktop/shell2/linux/x11/mod.rs:3678-3689 | dll/src/desktop/shell2/linux/x11/mod.rs:3825-3837 \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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":3678}}}],"partialFingerprints":{"codehealthFindingId/v1":"fea94caa70fb0b8e3d38c4342c18a28759445e6a2483c1c39d2c95e464053191"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): dll/src/desktop/shell2/macos/mod.rs:8885-8896 | dll/src/desktop/shell2/macos/mod.rs:8906-8917 \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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":8885}}}],"partialFingerprints":{"codehealthFindingId/v1":"02a50357eb1eed80f462f60fdf2ca66bb1594f5cb6b87f7ceffccd545fff71f5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): dll/src/desktop/shell2/windows/mod.rs:2289-2300 | dll/src/desktop/shell2/windows/mod.rs:2973-2984 \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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":2289}}}],"partialFingerprints":{"codehealthFindingId/v1":"370a7597e925e9001e9b327166f68c86e1cfe1cb3391035e08c20a551ce7a1ca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201312 lines \u00D7 2): dll/src/web/symbol_table.rs:562-573 | dll/src/web/transpiler_remill.rs:5256-5265 \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":"dll/src/web/symbol_table.rs"},"region":{"startLine":562}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b31a164a09a3e09e82f46ab9446380ea061dae67ba47aff37e0854dbae2e2f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): dll/src/web/symbol_table.rs:1594-1604 | dll/src/web/symbol_table.rs:1620-1631 \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":"dll/src/web/symbol_table.rs"},"region":{"startLine":1594}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc82d25aefd973b4e3896dbe6383f2b5281e8cf805a7c73e6ffde03f6647f44e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): dll/src/web/transpiler_remill.rs:4875-4886 | dll/src/web/transpiler_remill.rs:4952-4963 \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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":4875}}}],"partialFingerprints":{"codehealthFindingId/v1":"0eba3045f3e408905b238fc77cc971783f21bdefd57565960f76d867cd8d3447"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): dll/src/web/transpiler_remill.rs:5308-5319 | dll/src/web/transpiler_remill.rs:5445-5456 \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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":5308}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dc16565c102295c034d7dc6f5ca5244bdb1b182465b91a26e157df5f9306721"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): dll/src/web/transpiler_remill.rs:8637-8648 | dll/src/web/transpiler_remill.rs:9274-9285 \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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":8637}}}],"partialFingerprints":{"codehealthFindingId/v1":"891f0871c24e67c3acf5d56888edbaca30e34e57edddf68cd8b4075933f253ab"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): dll/src/desktop/shell2/common/capability_pump.rs:233-244 | dll/src/desktop/shell2/common/capability_pump.rs:272-283 \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":"dll/src/desktop/shell2/common/capability_pump.rs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"3db8dbb0bfbed04b605f106c654553afe9dd2efe0519345396aee6743828141e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): dll/src/desktop/compositor2.rs:636-647 | dll/src/desktop/compositor2.rs:651-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":"dll/src/desktop/compositor2.rs"},"region":{"startLine":636}}}],"partialFingerprints":{"codehealthFindingId/v1":"be78dfa9584efb08243f64630a8d3fd921d61a5d40b7d51739bb0ad5c61fd75d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): doc/src/api.rs:2083-2094 | doc/src/api.rs:2097-2108 \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":"doc/src/api.rs"},"region":{"startLine":2083}}}],"partialFingerprints":{"codehealthFindingId/v1":"c49749c8dfd5c4bfbc51ace96bfb384d3448a711c3a1045e74ba21120fdc56ec"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): doc/src/autofix/diff.rs:650-661 | doc/src/autofix/diff.rs:2269-2279 \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":"doc/src/autofix/diff.rs"},"region":{"startLine":650}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b31135c11c852d705f4012c34dea3aa4cd74fe79f33d0eddb8e964a804cf160"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): doc/src/autofix/discovery/parallel.rs:132-142 | doc/src/autofix/discovery/workspace.rs:147-158 \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":"doc/src/autofix/discovery/parallel.rs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"3dd80b7330e4d37ad8e98c1bbf351f57289906db51c8b92caea042f57e8abc76"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): doc/src/codegen/v2/lang_c.rs:564-575 | doc/src/codegen/v2/lang_c.rs:846-857 \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":"doc/src/codegen/v2/lang_c.rs"},"region":{"startLine":564}}}],"partialFingerprints":{"codehealthFindingId/v1":"527dc498b4b68e6b5a552476952a1ad9ab69b11d934735a1d176e6e57d384020"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201312 lines \u00D7 2): doc/src/codegen/v2/lang_csharp/managed.rs:752-763 | doc/src/codegen/v2/lang_csharp/managed.rs:959-968 \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":"doc/src/codegen/v2/lang_csharp/managed.rs"},"region":{"startLine":752}}}],"partialFingerprints":{"codehealthFindingId/v1":"80778d5cea48e4feedfb8cb551be176404013884d0162e354004aee7caabf87b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): doc/src/codegen/v2/lang_csharp/wrappers.rs:93-104 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:90-101 \u2014 \u0060doc/src/codegen/v2/lang_csharp/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_kotlin/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 13 separate duplicated blocks between them, totalling at least 142 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a8c04c492a3e77e21a746b799ccceaa03034c5ec63dc0db89880f8851c7f4d3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): doc/src/codegen/v2/lang_csharp/wrappers.rs:1675-1686 | doc/src/codegen/v2/lang_java/wrappers.rs:1592-1603 \u2014 \u0060doc/src/codegen/v2/lang_csharp/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_java/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 14 separate duplicated blocks between them, totalling at least 156 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":1675}}}],"partialFingerprints":{"codehealthFindingId/v1":"5017cd48a1b2470c0aca28efd2778559019c560c9711a4082e7ed22a9ac1ce41"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): doc/src/codegen/v2/lang_d/model.rs:256-267 | doc/src/codegen/v2/lang_swift/model.rs:264-275 \u2014 \u0060doc/src/codegen/v2/lang_d/model.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/model.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 20 separate duplicated blocks between them, totalling at least 209 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/model.rs"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec8de0655fe9ed11b0d635e39134b28e6dd26303f2b6aa089735804e23a190c9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:632-643 | doc/src/codegen/v2/lang_swift/wrappers.rs:465-476 \u2014 \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 29 separate duplicated blocks between them, totalling at least 269 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":632}}}],"partialFingerprints":{"codehealthFindingId/v1":"42fc5c820ba0ac75324fd150cd42f3f95f68dad0e6979d5a99bf1447526908aa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:2076-2086 | doc/src/codegen/v2/lang_swift/wrappers.rs:2033-2044 \u2014 \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 29 separate duplicated blocks between them, totalling at least 269 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":2076}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ffa3a879012db351b6f6d049d39797d23e2cd00d2a9806935a9b7a21e45031e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:2349-2360 | doc/src/codegen/v2/lang_swift/wrappers.rs:2326-2337 \u2014 \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 29 separate duplicated blocks between them, totalling at least 269 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":2349}}}],"partialFingerprints":{"codehealthFindingId/v1":"46c18d4c716d4e293cc271688fbb6352b2b07a6f2248299f24028175e397f808"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): doc/src/codegen/v2/lang_kotlin/wrappers.rs:1078-1089 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:1116-1129 \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":"doc/src/codegen/v2/lang_kotlin/wrappers.rs"},"region":{"startLine":1078}}}],"partialFingerprints":{"codehealthFindingId/v1":"e180a36eec1aa9fda9785d172df8fcceed31405844bf1c069a74cad4b71a68f6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): doc/src/codegen/v2/lang_python.rs:2232-2243 | doc/src/codegen/v2/lang_python.rs:2454-2465 \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":"doc/src/codegen/v2/lang_python.rs"},"region":{"startLine":2232}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3c3e245adb622649c956fe0264cfc6727422ae5498a5628d050a08800ac7434"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:129-140 | doc/src/codegen/v2/rust/static_binding.rs:106-117 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_rust.rs\u0060 and \u0060doc/src/codegen/v2/rust/static_binding.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 68 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a3420dfd584eb6ed479fa8fed380cf77c4af9d43e2fe05e55eb67ac283deb4c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:2575-2586 | doc/src/codegen/v2/rust/shared.rs:163-174 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_rust.rs\u0060 and \u0060doc/src/codegen/v2/rust/shared.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 200 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2575}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca246566e0cfdf18f5e722f10a23d7fc5d89e3832a860f0d4013b9d9e6700fda"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): doc/src/patch/mod.rs:1322-1333 | doc/src/patch/mod.rs:1365-1376 \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":"doc/src/patch/mod.rs"},"region":{"startLine":1322}}}],"partialFingerprints":{"codehealthFindingId/v1":"78495531d6391d08af72d292a86a54aaf5a805395de69d09b49136267de67b7e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): doc/src/patch/mod.rs:1427-1438 | doc/src/patch/mod.rs:1479-1490 \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":"doc/src/patch/mod.rs"},"region":{"startLine":1427}}}],"partialFingerprints":{"codehealthFindingId/v1":"7042e5ae0213de4fa490cc7247080a765b45c9010661b243ab6ba8345921c6bb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): doc/src/reftest/pipeline.rs:100-111 | doc/src/reftest/pipeline.rs:457-467 \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":"doc/src/reftest/pipeline.rs"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f4b8e8d6d2eb62f6b76f2a3333efdf4be622c623e0e93e60822b2da6b2abcd1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): doc/src/reftest/regression.rs:1194-1205 | doc/src/reftest/regression.rs:1993-2004 \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":"doc/src/reftest/regression.rs"},"region":{"startLine":1194}}}],"partialFingerprints":{"codehealthFindingId/v1":"1826720d63fedec0783e7ad4e35ab6b61bda5b1ec86fe76489d486ad2dd3a4fc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): doc/src/main.rs:745-756 | doc/src/main.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":"doc/src/main.rs"},"region":{"startLine":745}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b9e004a251c1f86bd14c1d6716ec65f898106981bcfc2f800889c4c617506f5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (3\u201312 lines \u00D7 3): doc/src/codegen/v2/lang_csharp/types.rs:453-463 | doc/src/codegen/v2/lang_kotlin/mod.rs:519-530 | doc/src/codegen/v2/lang_ruby/types.rs:691-693 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_csharp/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_kotlin/mod.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 43 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_csharp/types.rs"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ef3e7c372ebf1b45c4e922ca889208556494e73b206ee7428d28403d82c7929"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): doc/src/codegen/v2/lang_lisp/managed.rs:147-158 | doc/src/codegen/v2/lang_php/managed.rs:265-276 \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":"doc/src/codegen/v2/lang_lisp/managed.rs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6a66657624d9594474f0960a6f802bba6173bce796189b1cb3482f5d8399d9a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): doc/src/codegen/v2/lang_ruby/types.rs:257-267 | doc/src/codegen/v2/lang_ruby/types.rs:494-505 \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":"doc/src/codegen/v2/lang_ruby/types.rs"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"5201e7bb3327cea1554651d88237188d1b961127475604336b6d3c2592d8d7ee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): doc/src/codegen/v2/lang_ada/managed.rs:50-61 | doc/src/codegen/v2/lang_ada/managed.rs:229-240 \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":"doc/src/codegen/v2/lang_ada/managed.rs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfb92e5c52ba9cdf233739cb26ed20cc8bedd69e44efa7f19399a8f568d41f8b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201312 lines \u00D7 2): doc/src/codegen/v2/lang_haskell/cshim.rs:260-271 | doc/src/codegen/v2/lang_haskell/cshim.rs:522-529 \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":"doc/src/codegen/v2/lang_haskell/cshim.rs"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"33d6f478575d651c02261a216f35f13c62699f209d3c0881f3476820b07f815b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201312 lines \u00D7 2): doc/src/codegen/v2/lang_crystal/functions.rs:64-73 | doc/src/codegen/v2/lang_crystal/functions.rs:97-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":"doc/src/codegen/v2/lang_crystal/functions.rs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4475367f5e72e8f2b29b6517914d50426d324d8042214bbd64a78e9925dc234"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201312 lines \u00D7 2): doc/src/codegen/v2/lang_cpp/common.rs:540-551 | doc/src/codegen/v2/lang_cpp/common.rs:959-966 \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":"doc/src/codegen/v2/lang_cpp/common.rs"},"region":{"startLine":540}}}],"partialFingerprints":{"codehealthFindingId/v1":"49e66664deae4c04479bacd94b333d9db1179a5f85c3afa400bd77f3dfe3cf5a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): doc/src/codegen/v2/mod.rs:573-584 | doc/src/codegen/v2/mod.rs:610-621 \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":"doc/src/codegen/v2/mod.rs"},"region":{"startLine":573}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0370ec9a5a27b81c27338a622cf333694bae88c41e133731d6d3e82520eaaa1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): layout/src/cpurender/compositor.rs:1605-1616 | layout/src/cpurender/compositor.rs:1624-1635 \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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":1605}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba64aa94a9f3274662471ebd55b4c6724e68a5917e2b35ffbd34b400b02c3bf2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): layout/src/cpurender/svg.rs:521-531 | layout/src/xml/svg.rs:2043-2054 \u2014 \u0060layout/src/cpurender/svg.rs\u0060 and \u0060layout/src/xml/svg.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 35 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/cpurender/svg.rs"},"region":{"startLine":521}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ec1ce98e89fe9e9ff75aebd299dd1d7593ee7bc6f6b14ac6f92df3645f40fb2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): layout/src/dom_lint.rs:905-916 | layout/src/dom_lint.rs:1109-1120 \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":"layout/src/dom_lint.rs"},"region":{"startLine":905}}}],"partialFingerprints":{"codehealthFindingId/v1":"4199d64e6a4a6385a7fed490024637798ea7d2f31ae0378090829242d0fb2ec6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): layout/src/solver3/display_list.rs:8804-8815 | layout/src/solver3/display_list.rs:10390-10401 \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":"layout/src/solver3/display_list.rs"},"region":{"startLine":8804}}}],"partialFingerprints":{"codehealthFindingId/v1":"b59051847b5a6278e0366c060ecd8a455876aa2f4675a2508ef40e5e0c9492cb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): layout/src/solver3/paged_layout.rs:1007-1018 | layout/src/solver3/paged_layout.rs:2187-2198 \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":"layout/src/solver3/paged_layout.rs"},"region":{"startLine":1007}}}],"partialFingerprints":{"codehealthFindingId/v1":"1469cebfb4ef3a8edcc5b51aec6929549f019d6fac3bc1b3bda088d13dfe7104"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201312 lines \u00D7 2): layout/src/solver3/sizing.rs:1385-1394 | layout/src/solver3/sizing.rs:1418-1429 \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":"layout/src/solver3/sizing.rs"},"region":{"startLine":1385}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d68c78fc0b8e87d9d60adcad3e388a487585ea92a5759540f13223ac23441c9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): layout/src/telemetry/mod.rs:494-505 | layout/src/telemetry/mod.rs:756-767 \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":"layout/src/telemetry/mod.rs"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"422d479ad423d523913b37e134c9c48c3c02292a2f5a31c7adb32b3fe6701d61"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): layout/src/text3/cache.rs:1377-1388 | layout/src/text3/cache.rs:1702-1713 \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":"layout/src/text3/cache.rs"},"region":{"startLine":1377}}}],"partialFingerprints":{"codehealthFindingId/v1":"626685976da34ec707288906deb8b67e05d85484d6329672cf2a28e5573747bb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): layout/src/text3/edit.rs:771-782 | layout/src/text3/edit.rs:911-921 \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":"layout/src/text3/edit.rs"},"region":{"startLine":771}}}],"partialFingerprints":{"codehealthFindingId/v1":"dedc9464171103fadff73275e6ebf2d16c96959fa30eda96f7ed3be472a15c82"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): layout/src/widgets/avatar.rs:197-208 | layout/src/widgets/spinner.rs:154-165 \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":"layout/src/widgets/avatar.rs"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"9eb2e9522c3f35aa5aba041070b429ddb29ef64b664d9bedc9f75785bcf57d40"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): layout/src/widgets/camera.rs:233-244 | layout/src/widgets/screencap.rs:203-214 \u2014 before extracting anything, compare \u0060layout/src/widgets/camera.rs\u0060 and \u0060layout/src/widgets/screencap.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 107 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":"layout/src/widgets/camera.rs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef191a497e4d79516d3faf9a22bf17b0f40b72f5d1c92318a4cb93e3534f4fe9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): layout/src/widgets/color_input.rs:1430-1441 | layout/src/widgets/color_input.rs:1459-1470 \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":"layout/src/widgets/color_input.rs"},"region":{"startLine":1430}}}],"partialFingerprints":{"codehealthFindingId/v1":"84047dccf75a9bdf28fbdcf3d03c1b0cd5dcf428ebc15551439029c3c607bb7d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): layout/src/widgets/map.rs:2609-2620 | layout/src/widgets/map.rs:2640-2651 \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":"layout/src/widgets/map.rs"},"region":{"startLine":2609}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ffbf79731ca1263ee83b58588871325ff212bb7b5a50f077f1b8900c3562d14"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): layout/src/widgets/node_graph.rs:1479-1490 | layout/src/widgets/node_graph.rs:1815-1826 \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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":1479}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c57f6c5f896a86591c1d088b5e5567713914dddcb285c15c0bd1a1555a49494"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): layout/src/widgets/node_graph.rs:1728-1739 | layout/src/widgets/node_graph.rs:2236-2247 \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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":1728}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0b9c4b69846872c1bae520dc6cf89585139f7af89471553f5bd1dea2f5620f2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): layout/src/widgets/quick_access.rs:252-263 | layout/src/widgets/statusbar.rs:273-284 \u2014 before extracting anything, compare \u0060layout/src/widgets/quick_access.rs\u0060 and \u0060layout/src/widgets/statusbar.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 106 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":"layout/src/widgets/quick_access.rs"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"a84c116dca276846638f42faf348a09f7f0d97554d957bb500cdaf12668d186f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): layout/src/window.rs:3420-3431 | layout/src/window.rs:3468-3479 \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":"layout/src/window.rs"},"region":{"startLine":3420}}}],"partialFingerprints":{"codehealthFindingId/v1":"b71f2235d827d072b53d1dcfadb077e0ee879b19226827ff1cf53be127893236"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): layout/src/window.rs:14460-14471 | layout/src/window.rs:14716-14727 \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":"layout/src/window.rs"},"region":{"startLine":14460}}}],"partialFingerprints":{"codehealthFindingId/v1":"260265586948a0f7dc3b070b94a9a2f9cc0818eb8194294708d6e27e0742da51"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): layout/src/widgets/themes/flat.rs:730-741 | layout/src/widgets/themes/flora.rs:990-1001 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":730}}}],"partialFingerprints":{"codehealthFindingId/v1":"0665618c0eb130b4dfee758a9918f91e091f59a141bc7aaf99183a8c3ddfed8a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): layout/src/widgets/themes/flat.rs:757-768 | layout/src/widgets/themes/flora.rs:1017-1028 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":757}}}],"partialFingerprints":{"codehealthFindingId/v1":"26f46365e69de8a333ae968cf29c0074dcb0600898d2901a42b5dcce9784304d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): layout/src/widgets/themes/flat.rs:917-928 | layout/src/widgets/themes/flora.rs:1189-1200 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":917}}}],"partialFingerprints":{"codehealthFindingId/v1":"b76feb27a12043841d84c68377370bda18432d59076f4a19a4a2bde78c8497e5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): layout/src/widgets/themes/flat.rs:1321-1332 | layout/src/widgets/themes/flora.rs:1713-1724 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":1321}}}],"partialFingerprints":{"codehealthFindingId/v1":"328957a69db28291866b51efc38363ccc83be90416e63947c4fe4d6bed1ff15a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): webrender/core/src/clip.rs:1699-1710 | webrender/core/src/quad.rs:747-758 \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":"webrender/core/src/clip.rs"},"region":{"startLine":1699}}}],"partialFingerprints":{"codehealthFindingId/v1":"3aa86718be44aab26c275ccef91ef638310f233b98ab1b04989519a6675e17cf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 6): doc/src/codegen/v2/lang_cpp/cpp03.rs:327-340 | doc/src/codegen/v2/lang_cpp/cpp03.rs:690-700 | doc/src/codegen/v2/lang_cpp/cpp11.rs:234-247 | doc/src/codegen/v2/lang_cpp/cpp11.rs:612-622 | doc/src/codegen/v2/lang_cpp/cpp17.rs:391-404 | doc/src/codegen/v2/lang_cpp/cpp17.rs:822-832 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"e669d0436b21fb67b076a792ece4d373b4aa333ad07f01ace3a21d242e580bee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u201311 lines \u00D7 4): dll/src/desktop/shell2/linux/wayland/mod.rs:6277-6283 | dll/src/desktop/shell2/linux/x11/events.rs:1418-1424 | dll/src/desktop/shell2/macos/events.rs:1182-1192 | dll/src/desktop/shell2/windows/mod.rs:2179-2187 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/events.rs\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 249 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":6277}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd9ffea807c77aaee511a79829bebab00c49d84a837ac8aba1cc469ab58945b7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): dll/src/desktop/shell2/linux/wayland/mod.rs:6541-6551 | dll/src/desktop/shell2/linux/x11/mod.rs:6281-6291 | dll/src/desktop/shell2/macos/mod.rs:6085-6095 | dll/src/desktop/shell2/windows/mod.rs:2234-2244 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":6541}}}],"partialFingerprints":{"codehealthFindingId/v1":"64712c56046aaaf2367e5c43893aaf503966ba95eac426f8a90529610825ad45"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): doc/src/codegen/v2/lang_cpp/cpp03.rs:287-297 | doc/src/codegen/v2/lang_cpp/cpp11.rs:186-196 | doc/src/codegen/v2/lang_cpp/cpp17.rs:334-344 | doc/src/codegen/v2/lang_cpp/cpp20.rs:1030-1040 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"91901e4670f3ced100e74150bfd9c3a8cb0538821432c5d631e3265354b51ccf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): doc/src/codegen/v2/lang_algol68/wrappers.rs:121-131 | doc/src/codegen/v2/lang_freebasic/wrappers.rs:87-97 | doc/src/codegen/v2/lang_pascal/wrappers.rs:129-139 | doc/src/codegen/v2/lang_vb6/wrappers.rs:64-74 \u2014 \u0060doc/src/codegen/v2/lang_algol68/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_freebasic/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 35 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_algol68/wrappers.rs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"c204d17f67f44aec7f672c31a69f8472db048928c436a0ade67b896b0e93cc8a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): doc/src/codegen/v2/lang_ada/types.rs:176-186 | doc/src/codegen/v2/lang_cobol/types.rs:187-197 | doc/src/codegen/v2/lang_fortran/types.rs:138-148 | doc/src/codegen/v2/lang_pascal/types.rs:121-131 \u2014 \u0060doc/src/codegen/v2/lang_ada/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_cobol/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 48 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_ada/types.rs"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c40c75d61b3b88e5bb5074962c3a31e429adc2c7e709e41b7238498cd7f0649"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): core/src/resources.rs:2731-2741 | core/src/resources.rs:2790-2800 | core/src/resources.rs:2806-2816 \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":"core/src/resources.rs"},"region":{"startLine":2731}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb05ee0388e1b03bbd97f4917b7c9d40e099b48e0ca3a4ae5ee771563d671162"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 3): dll/src/desktop/shell2/linux/wayland/mod.rs:7526-7535 | dll/src/desktop/shell2/linux/x11/mod.rs:6582-6592 | dll/src/desktop/shell2/windows/mod.rs:1198-1208 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":7526}}}],"partialFingerprints":{"codehealthFindingId/v1":"27a227139f94c6f3f6295bc69e22d9d3b577438b5f907a545376ff56324207b4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 3): dll/src/desktop/compositor2.rs:1633-1642 | dll/src/desktop/compositor2.rs:1825-1834 | dll/src/desktop/compositor2.rs:1941-1951 \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":"dll/src/desktop/compositor2.rs"},"region":{"startLine":1633}}}],"partialFingerprints":{"codehealthFindingId/v1":"e013fda76dd8588e4026dba6c870ec4db17390d5deb639c0d496361eaf4cd410"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): doc/src/autofix/function_diff.rs:777-787 | doc/src/autofix/function_diff.rs:805-815 | doc/src/autofix/function_diff.rs:823-833 \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":"doc/src/autofix/function_diff.rs"},"region":{"startLine":777}}}],"partialFingerprints":{"codehealthFindingId/v1":"31f1b26c63ed98f92757da72b813c6fa8d1283466550483492ed0ce01ed23cb9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): doc/src/codegen/v2/lang_c.rs:1177-1187 | doc/src/codegen/v2/lang_cpp/common.rs:250-260 | doc/src/codegen/v2/lang_haskell/cshim.rs:503-513 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_c.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/common.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 41 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_c.rs"},"region":{"startLine":1177}}}],"partialFingerprints":{"codehealthFindingId/v1":"54cd8881184b4e7409a1c47f6f3afc5180b264f8e5ae79b92ef217afdddc297a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): doc/src/codegen/v2/lang_cpp/cpp03.rs:255-265 | doc/src/codegen/v2/lang_cpp/cpp11.rs:164-174 | doc/src/codegen/v2/lang_cpp/cpp17.rs:295-305 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"0327a0163254eb8a66418656a33b444f846b292a6ac8a7b8addd7a7ec76d8782"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201311 lines \u00D7 3): doc/src/codegen/v2/lang_node/wrappers.rs:570-577 | doc/src/codegen/v2/lang_node/wrappers.rs:743-753 | doc/src/codegen/v2/lang_node/wrappers.rs:1226-1236 \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":"doc/src/codegen/v2/lang_node/wrappers.rs"},"region":{"startLine":570}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8c5e7d479616cdcf0f03a29f263cdeb61b9dbf5f466b556381e936eda2f6690"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 3): doc/src/codegen/v2/lang_kotlin/mod.rs:582-592 | doc/src/codegen/v2/lang_kotlin/mod.rs:648-657 | doc/src/codegen/v2/lang_kotlin/mod.rs:721-730 \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":"doc/src/codegen/v2/lang_kotlin/mod.rs"},"region":{"startLine":582}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4e30bedd0401fd8b582e77e716193b6488c3e59ff1e20a916361c5c7b9322de"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): layout/src/cpurender/pixmap.rs:1557-1567 | layout/src/cpurender/pixmap.rs:1615-1625 | layout/src/cpurender/pixmap.rs:1650-1660 \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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":1557}}}],"partialFingerprints":{"codehealthFindingId/v1":"969d534c66b6a31c978a869e637c802a79dfeff42d6cb3e653e10631cc36ebde"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): layout/src/widgets/ribbon.rs:846-856 | layout/src/widgets/ribbon.rs:877-887 | layout/src/widgets/ribbon.rs:910-920 \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":"layout/src/widgets/ribbon.rs"},"region":{"startLine":846}}}],"partialFingerprints":{"codehealthFindingId/v1":"2757fd2c8a59ba0053b941e4e842294cd2dba0de3f9522c9634b502d3b93da14"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 3): layout/src/window.rs:2820-2829 | layout/src/window.rs:3933-3943 | layout/src/window.rs:4122-4131 \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":"layout/src/window.rs"},"region":{"startLine":2820}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3f459e5e3f8738df92c6f815b3f6d6f04614d013f8724173b5d4cc7463995b4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): layout/src/window.rs:4812-4822 | layout/src/window.rs:4984-4994 | layout/src/window.rs:5148-5158 \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":"layout/src/window.rs"},"region":{"startLine":4812}}}],"partialFingerprints":{"codehealthFindingId/v1":"27a5ecaae8b33a90f5939d57e371891994f8b7deb35c34f676b0ad8955aaed39"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): core/src/callbacks.rs:619-629 | core/src/callbacks.rs:649-658 \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":"core/src/callbacks.rs"},"region":{"startLine":619}}}],"partialFingerprints":{"codehealthFindingId/v1":"08cf3098836259c6c23ec6d2456878e4379b36226664d990d714f1a8a90cbc4f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): core/src/compact.rs:1349-1359 | core/src/compact.rs:1369-1379 \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":"core/src/compact.rs"},"region":{"startLine":1349}}}],"partialFingerprints":{"codehealthFindingId/v1":"907e34aba23c18551b31236fcd6e057220cbf379b90928b4bad6e707465e306e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): core/src/resources.rs:2793-2803 | core/src/resources.rs:2944-2954 \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":"core/src/resources.rs"},"region":{"startLine":2793}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c6f26304c26b235bef0c413c95cb05e4f4b2f1a61b011c5b53da9bc51929bce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): core/src/svg.rs:661-671 | core/src/svg.rs:674-684 \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":"core/src/svg.rs"},"region":{"startLine":661}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cc23413de46d4a7e2fc1817b13626dba4de77616816e909dd62c4fa0d2e633f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): core/src/xml.rs:436-446 | core/src/xml.rs:561-571 \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":"core/src/xml.rs"},"region":{"startLine":436}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ee324b676c3a9a97228a2c17bbe7520ed515c83a4ad9a12e5e760c012274642"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): css/src/codegen/format.rs:398-408 | css/src/codegen/format.rs:968-978 \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":"css/src/codegen/format.rs"},"region":{"startLine":398}}}],"partialFingerprints":{"codehealthFindingId/v1":"01ec348ae6b425eb58adbfce540663b7c5a6b2bf06cf705aed8330bd9d88a228"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): css/src/system.rs:883-893 | css/src/system.rs:919-929 \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":"css/src/system.rs"},"region":{"startLine":883}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f4380d0b4a75543de943a7ed78cc7f9d357fc0ad6ce6f2616b7bed6844baf42"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): css/src/system.rs:2603-2613 | css/src/system.rs:2702-2712 \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":"css/src/system.rs"},"region":{"startLine":2603}}}],"partialFingerprints":{"codehealthFindingId/v1":"e58accc616f8231b4ca0e288e6a5dcdeea2e6bf9b778db98f76eb2fc6528e996"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): dll/src/desktop/shell2/common/event.rs:5661-5672 | dll/src/desktop/shell2/common/event.rs:5681-5691 \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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":5661}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe6f4d7238ba4c0c710389a85ad687f7352cb0db505c46a6a255343aa52d9cd5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): dll/src/desktop/shell2/linux/system_style.rs:861-871 | dll/src/desktop/shell2/windows/system_style.rs:399-409 \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":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":861}}}],"partialFingerprints":{"codehealthFindingId/v1":"315ab1efd8b7bb59f288eb64a8040f764b42308ae1fe5b9358db0e1020f3ab53"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/dlopen.rs:1124-1135 | dll/src/desktop/shell2/linux/wayland/dlopen.rs:1147-1157 \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":"dll/src/desktop/shell2/linux/wayland/dlopen.rs"},"region":{"startLine":1124}}}],"partialFingerprints":{"codehealthFindingId/v1":"8583b7c9e2e28cc3470063a169959ec8073f23f04e16fd29ecba777e0fab0262"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/events.rs:4136-4146 | dll/src/desktop/shell2/linux/wayland/events.rs:4168-4178 \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":"dll/src/desktop/shell2/linux/wayland/events.rs"},"region":{"startLine":4136}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6bc65ab8db10ef2ecb8f65e2d1c4e4dc18338e1ec04e113d92e87e1b55cab14"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:505-515 | dll/src/desktop/shell2/linux/wayland/mod.rs:5598-5608 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":505}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba88d718673a7a3ca07be5bc26122a702a6ffc49d4666052e5db71394dfec808"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:2767-2777 | dll/src/desktop/shell2/linux/x11/mod.rs:4127-4137 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":2767}}}],"partialFingerprints":{"codehealthFindingId/v1":"e81f6f4285808671c7de7147ea0f20426ca6ca8e77a33e711a44aa917fe97377"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:3137-3147 | dll/src/desktop/shell2/linux/x11/mod.rs:4643-4653 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":3137}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf417397f2bf0c4072c7dcd15dc21c892ba57acfff4d28c9701f7a8ee683df50"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:3221-3231 | dll/src/desktop/shell2/linux/x11/mod.rs:4668-4678 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":3221}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee2bed4c55af153bc1268aeb4f4e0895bd81b44a9635cd77f30e3a3d534f01e6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:5241-5255 | dll/src/desktop/shell2/linux/x11/mod.rs:4819-4829 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":5241}}}],"partialFingerprints":{"codehealthFindingId/v1":"57278b68f86740586a1d7d1af6d96a3dfe605d8ae24e64b83ec2e95d29962e09"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u201311 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:5991-5997 | dll/src/desktop/shell2/macos/events.rs:444-454 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/macos/events.rs\u0060 as WHOLE FILES: this scan already matched 9 separate duplicated blocks between them, totalling at least 132 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":5991}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca639df8b94bf09c4433b2e81cb250a2e1111b615496ed23e232d2b46ff32d18"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:6333-6343 | dll/src/desktop/shell2/linux/x11/events.rs:1464-1474 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/events.rs\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 249 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":6333}}}],"partialFingerprints":{"codehealthFindingId/v1":"c587f7819f491bc1eb6fab2f9ee44120d1d7af207b431d81b332755c6b3cbb54"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): dll/src/desktop/shell2/linux/x11/accessibility.rs:47-57 | dll/src/desktop/shell2/windows/accessibility.rs:57-67 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/x11/accessibility.rs\u0060 and \u0060dll/src/desktop/shell2/windows/accessibility.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 63 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/x11/accessibility.rs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bd31dba064b49b433cd37d427e2b7c86a7e13ede5bef9f349dfc5eb5b9821b0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): dll/src/desktop/shell2/linux/x11/mod.rs:5642-5652 | dll/src/desktop/shell2/linux/x11/mod.rs:7932-7942 \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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":5642}}}],"partialFingerprints":{"codehealthFindingId/v1":"7047ec907b27da7bc15dab39292ed008bc06b9ffeeb152c4f1a593ea15dd3d7c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): dll/src/desktop/shell2/macos/mod.rs:2712-2722 | dll/src/desktop/shell2/macos/mod.rs:2814-2824 \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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":2712}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0696f6a1c62572c4ba92f245ae9a41f2734bd9a09636ce7e2545d750324c857"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): dll/src/desktop/shell2/windows/mod.rs:5142-5152 | dll/src/desktop/shell2/windows/mod.rs:5192-5202 \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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":5142}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b32c8dff1749c9fbe624c976f2d2e22c07323e19977f1c14fdc7852160a5437"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): dll/src/desktop/eyedropper/windows.rs:44-53 | dll/src/desktop/shell2/windows/mod.rs:7932-7942 \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":"dll/src/desktop/eyedropper/windows.rs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"607c87236eb0631d9ebd555106417e8ae3e2cf2ad481679d2a6fa7f777f07f71"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201311 lines \u00D7 2): dll/src/desktop/tray/linux.rs:518-528 | dll/src/desktop/tray/linux.rs:946-953 \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":"dll/src/desktop/tray/linux.rs"},"region":{"startLine":518}}}],"partialFingerprints":{"codehealthFindingId/v1":"206150f625e9a4c1610324d88de217dcd122aa89e14465c587e2ebbd62ee567e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201311 lines \u00D7 2): dll/src/web/transpiler_remill.rs:1466-1473 | dll/src/web/transpiler_remill.rs:6754-6764 \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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":1466}}}],"partialFingerprints":{"codehealthFindingId/v1":"9117f1cbd662841ecc8d47221fe2d8e04da29af35b3eed35ca58f483dffadca6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): dll/src/desktop/extra/natural_scroll.rs:72-82 | dll/src/desktop/shell2/windows/subpixel.rs:57-67 \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":"dll/src/desktop/extra/natural_scroll.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f8385bdd0ccb8cc66d188b74e4f42e72a0e937dc7a70db502f147e98f106c0d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): dll/src/desktop/compositor2.rs:1716-1726 | dll/src/desktop/compositor2.rs:1905-1915 \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":"dll/src/desktop/compositor2.rs"},"region":{"startLine":1716}}}],"partialFingerprints":{"codehealthFindingId/v1":"0186233094e6507d7331c992d2e9d0584c5079b0b02ff000bcc18c4c49a094b9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201311 lines \u00D7 2): doc/src/autofix/diff.rs:630-640 | doc/src/autofix/diff.rs:2251-2259 \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":"doc/src/autofix/diff.rs"},"region":{"startLine":630}}}],"partialFingerprints":{"codehealthFindingId/v1":"690ddc423373d407cd8c7b6201ae2da34dfa9ca2bffa093e5e1f7f405ba3b3f6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): doc/src/autofix/diff.rs:2567-2577 | doc/src/autofix/diff.rs:2653-2663 \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":"doc/src/autofix/diff.rs"},"region":{"startLine":2567}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb98330b9b308dd9a4a55ecb0b67cc26f785b75c22db6c4f2af940088c714d95"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): doc/src/autofix/patch_format.rs:987-997 | doc/src/autofix/patch_format.rs:1011-1021 \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":"doc/src/autofix/patch_format.rs"},"region":{"startLine":987}}}],"partialFingerprints":{"codehealthFindingId/v1":"75b0a652b8ae8e2db6b2d7b92be8f8e457872016aad1c422d527ed0753624841"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): doc/src/autofix/type_index.rs:420-430 | doc/src/autofix/type_index.rs:493-503 \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":"doc/src/autofix/type_index.rs"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a07051e53c550a693d431a43f2f696e0e9dba7bd7adc87932e766eb2dc93609"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): doc/src/codegen/v2/lang_c.rs:1160-1170 | doc/src/codegen/v2/lang_cpp/common.rs:233-243 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_c.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/common.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 41 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_c.rs"},"region":{"startLine":1160}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac7471a23b4b6057a8a10fdbea5e9918e2c0cf74b877669a2cb86c85c40bc1a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:87-97 | doc/src/codegen/v2/lang_swift/wrappers.rs:65-75 \u2014 \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 29 separate duplicated blocks between them, totalling at least 269 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6e16118ffdb750e6ff9bebf11971bf5e994625893bec70ab01231250e51c9db"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:2297-2307 | doc/src/codegen/v2/lang_swift/wrappers.rs:2276-2286 \u2014 \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 29 separate duplicated blocks between them, totalling at least 269 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":2297}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cff0c8443006f805209915ef3a510dd4508581ad998c6e52fb5417d057df0e1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201311 lines \u00D7 2): doc/src/codegen/v2/lang_haskell/functions.rs:288-296 | doc/src/codegen/v2/lang_haskell/functions.rs:728-738 \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":"doc/src/codegen/v2/lang_haskell/functions.rs"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"717fee9284a0eb62282bb8d3ad7c065c4d3dec2f379979f2de514982954a4088"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): doc/src/codegen/v2/lang_kotlin/wrappers.rs:1541-1551 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:1756-1766 \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":"doc/src/codegen/v2/lang_kotlin/wrappers.rs"},"region":{"startLine":1541}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd04debd707ce9c9ffb930fe766e0a621dc1421191f69eb823eb49058bd04057"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:96-106 | doc/src/codegen/v2/rust/static_binding.rs:73-83 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_rust.rs\u0060 and \u0060doc/src/codegen/v2/rust/static_binding.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 68 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"540aa3d0758d6394fde8e71f2d1b67d8f11c2703e252af8a93c68f0a9d01aa7b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:2688-2698 | doc/src/codegen/v2/rust/shared.rs:242-252 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_rust.rs\u0060 and \u0060doc/src/codegen/v2/rust/shared.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 200 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2688}}}],"partialFingerprints":{"codehealthFindingId/v1":"db639644c98a7f16715ab59b972083b4e120efbbcb9171e17fc67a0af21c3f9d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:2932-2942 | doc/src/codegen/v2/lang_rust.rs:3299-3309 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2932}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ea91653f48529da5e5fdd042dc7f2b5737e96490df139ad679cd77b4eeaa0d1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201311 lines \u00D7 2): doc/src/codegen/v2/lang_swift/wrappers.rs:2929-2937 | doc/src/codegen/v2/lang_swift/wrappers.rs:2952-2962 \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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":2929}}}],"partialFingerprints":{"codehealthFindingId/v1":"c941157ecb7afdc8d097446b8c442ee44e395cd41879290e2fb2b697855e2f5c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): doc/src/dllgen/deploy.rs:1698-1708 | doc/src/dllgen/deploy.rs:1715-1725 \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":"doc/src/dllgen/deploy.rs"},"region":{"startLine":1698}}}],"partialFingerprints":{"codehealthFindingId/v1":"39cfde1be52e6e975da33c135ca2bc56c872e11a4fc5697fc5bf181d2db8c929"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): doc/src/lint_derives.rs:1282-1292 | doc/src/lint_derives.rs:1307-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":"doc/src/lint_derives.rs"},"region":{"startLine":1282}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd871549ec73d924ee40d80a1163093b7b714408f455e5a5c22159192fbb0cbb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): doc/src/patch/index.rs:1212-1222 | doc/src/patch/index.rs:1285-1295 \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":"doc/src/patch/index.rs"},"region":{"startLine":1212}}}],"partialFingerprints":{"codehealthFindingId/v1":"e15f6598de95a6070958614bb45fd4cd46ba273fae2df6e9f5d9a12cbe3933cf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u201311 lines \u00D7 2): doc/src/reftest/autodoc.rs:260-270 | doc/src/reftest/autoreview.rs:90-96 \u2014 before extracting anything, compare \u0060doc/src/reftest/autodoc.rs\u0060 and \u0060doc/src/reftest/autoreview.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 207 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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce556f9bb40eedc3c51b27270e86617df39ed82261d6ad5b33416a7fa4e0c191"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): doc/src/reftest/autoreview.rs:1446-1456 | doc/src/reftest/autoreview.rs:1975-1985 \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":"doc/src/reftest/autoreview.rs"},"region":{"startLine":1446}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb88cf2f831ef671671f8a7c437446b08b071cfcd472018d67ed221c2b77de76"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): doc/src/reftest/regression.rs:1142-1152 | doc/src/reftest/regression.rs:1940-1950 \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":"doc/src/reftest/regression.rs"},"region":{"startLine":1142}}}],"partialFingerprints":{"codehealthFindingId/v1":"afcc6926ddaabefca994a01ab8b6c6e347d637c6a282e83860aca8afae0e8989"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201311 lines \u00D7 2): doc/src/main.rs:986-996 | doc/src/main.rs:1231-1238 \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":"doc/src/main.rs"},"region":{"startLine":986}}}],"partialFingerprints":{"codehealthFindingId/v1":"1814193833eca4945c39cd3ad5b8026fdef9798771d3126c91ce91f1f6cffd3b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): doc/src/codegen/v2/lang_ruby/types.rs:991-1001 | doc/src/codegen/v2/lang_ruby/types.rs:1063-1073 \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":"doc/src/codegen/v2/lang_ruby/types.rs"},"region":{"startLine":991}}}],"partialFingerprints":{"codehealthFindingId/v1":"10588f81d4cfeb7696fe428c3788d59bd65a5e8461c3628a9da868bbd6acfc03"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): doc/src/codegen/v2/lang_csharp/derives.rs:295-305 | doc/src/codegen/v2/lang_csharp/derives.rs:321-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":"doc/src/codegen/v2/lang_csharp/derives.rs"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"653ef6ed35299b24dce80844b12438ead2a1e1f39c4e181899de92c478170010"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): doc/src/codegen/v2/lang_pascal/types.rs:498-508 | doc/src/codegen/v2/lang_pascal/types.rs:619-628 \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":"doc/src/codegen/v2/lang_pascal/types.rs"},"region":{"startLine":498}}}],"partialFingerprints":{"codehealthFindingId/v1":"4497d0c362c9e96455f399b24196373e6158cfbbc3c6e5a9b2d9d53c7b62def6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/callbacks.rs:3845-3855 | layout/src/callbacks.rs:6708-6718 \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":"layout/src/callbacks.rs"},"region":{"startLine":3845}}}],"partialFingerprints":{"codehealthFindingId/v1":"e37a0d3250638230ed8a7624fce75e01dfaa6348fe3d8a6202ec39f001f0fd40"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/cpurender/compositor.rs:1943-1953 | layout/src/cpurender/compositor.rs:1954-1964 \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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":1943}}}],"partialFingerprints":{"codehealthFindingId/v1":"206ecb5f18f6dc3bed399f2ea0f95123915b162a73a525a6f2e099b90904216d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/cpurender/pixmap.rs:170-180 | layout/src/cpurender/pixmap.rs:349-359 \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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"c279a89f378f4c45320bc176e17fb568d0c0f8265cbcb2d29454a0de6d34a143"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201311 lines \u00D7 2): layout/src/cpurender/pixmap.rs:228-238 | layout/src/cpurender/pixmap.rs:432-440 \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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bc474b3983645deabe71f6510a1068004d66e16105be6dd08150ae862ace259"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/cpurender/raster.rs:2900-2910 | layout/src/cpurender/raster.rs:3758-3768 \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":"layout/src/cpurender/raster.rs"},"region":{"startLine":2900}}}],"partialFingerprints":{"codehealthFindingId/v1":"d668b67f6bc9a47a9141d6cda2f6bdc1baeaecdcbca9a229ef7fe7b86dfd0f12"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201311 lines \u00D7 2): layout/src/glyph_cache.rs:509-519 | layout/src/glyph_cache.rs:1786-1793 \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":"layout/src/glyph_cache.rs"},"region":{"startLine":509}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b4b4e3d73c3c1e1f6ae763d6ff5a5b5890f66737c9b91ae2c342d261ec6d997"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/icu.rs:1010-1020 | layout/src/icu.rs:1096-1106 \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":"layout/src/icu.rs"},"region":{"startLine":1010}}}],"partialFingerprints":{"codehealthFindingId/v1":"04a16ea60d6d07d2a68faef4df0ea4e4c92d7e12529396013ced69d03b958c1a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): layout/src/managers/a11y.rs:658-668 | layout/src/window.rs:12435-12444 \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":"layout/src/managers/a11y.rs"},"region":{"startLine":658}}}],"partialFingerprints":{"codehealthFindingId/v1":"7839b973aa40dddbf22a4fcb28aea27202db64d0e5ca6d2acfed57b5a8cb5069"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/managers/gesture.rs:1139-1149 | layout/src/managers/gesture.rs:2199-2209 \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":"layout/src/managers/gesture.rs"},"region":{"startLine":1139}}}],"partialFingerprints":{"codehealthFindingId/v1":"e20e08ffb8bb54048e9b9231fc87196a1ca4ccfcd02074cc0899ebd126245cd0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201311 lines \u00D7 2): layout/src/solver3/fc.rs:7524-7534 | layout/src/solver3/fc.rs:7633-7641 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":7524}}}],"partialFingerprints":{"codehealthFindingId/v1":"8426d0072fc490c14651fec414f767a4ed4a276757df81524b2072270e8e5b5b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/solver3/sizing.rs:2014-2024 | layout/src/solver3/sizing.rs:2190-2202 \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":"layout/src/solver3/sizing.rs"},"region":{"startLine":2014}}}],"partialFingerprints":{"codehealthFindingId/v1":"e80b480263ecf95883d19279de336efcf70bc14386e8246bc6b176dc1850da70"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/solver3/sizing.rs:2053-2066 | layout/src/solver3/sizing.rs:2229-2239 \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":"layout/src/solver3/sizing.rs"},"region":{"startLine":2053}}}],"partialFingerprints":{"codehealthFindingId/v1":"453d89f256947238d5316f24cd1ab157ba8dc6eace39ced6e0aef8dae3e3dbbb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/telemetry/mod.rs:620-630 | layout/src/telemetry/mod.rs:672-682 \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":"layout/src/telemetry/mod.rs"},"region":{"startLine":620}}}],"partialFingerprints":{"codehealthFindingId/v1":"41a352e4df0559edaf2f3178df3271ce82243e157ce4d9424e1fec5032a3e6ef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/text3/cache.rs:6288-6298 | layout/src/text3/cache.rs:6378-6388 \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":"layout/src/text3/cache.rs"},"region":{"startLine":6288}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f77cf43fd392167658218d529632411b77b29a33dad92b342844199f91483db"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/text3/cache.rs:6466-6476 | layout/src/text3/cache.rs:6536-6546 \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":"layout/src/text3/cache.rs"},"region":{"startLine":6466}}}],"partialFingerprints":{"codehealthFindingId/v1":"17315c381133244429c21173267884a5a3d167c5e4797bea3589f3b799c632f1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/text3/cache.rs:6612-6622 | layout/src/text3/cache.rs:6696-6706 \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":"layout/src/text3/cache.rs"},"region":{"startLine":6612}}}],"partialFingerprints":{"codehealthFindingId/v1":"bde19337a7f24bfdc3e3c3d80f9786f3b6de0156a1cda945771350b466afdda6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/text3/dense.rs:1026-1036 | layout/src/text3/dense.rs:1058-1068 \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":"layout/src/text3/dense.rs"},"region":{"startLine":1026}}}],"partialFingerprints":{"codehealthFindingId/v1":"6add9a7e4f46c4458af8de572ebc64d6bf3f17cf793a4227ac5f2432a5c235bc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): layout/src/text3/dense.rs:1307-1317 | layout/src/text3/dense.rs:1467-1476 \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":"layout/src/text3/dense.rs"},"region":{"startLine":1307}}}],"partialFingerprints":{"codehealthFindingId/v1":"f50658f03e4d0fd41a18c8b05be17c5232efc8a03aaeafaef08a17137d83245a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/widgets/node_graph.rs:2008-2018 | layout/src/widgets/node_graph.rs:2132-2142 \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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":2008}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d38bcc259dbd353640b4020d7880f461bad058c2262da501aa752b4f0f83220"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/widgets/node_graph.rs:2031-2041 | layout/src/widgets/node_graph.rs:2155-2165 \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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":2031}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc5c96e3f26da7373b6f6440f7e95ef1e535863d9747ea9df7f8858b61668db7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/widgets/node_graph.rs:2054-2064 | layout/src/widgets/node_graph.rs:2178-2188 \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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":2054}}}],"partialFingerprints":{"codehealthFindingId/v1":"4070858fd615bc8ff3433b2899f52630f3737ebd462357051c4b9afc3243740c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/widgets/node_graph.rs:2077-2087 | layout/src/widgets/node_graph.rs:2201-2211 \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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":2077}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef57b4be0a130a00e520ac75e25baf90d948fd26dfa89a52944d6a4a7c25c943"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/widgets/pagination.rs:213-223 | layout/src/widgets/segmented.rs:186-196 \u2014 before extracting anything, compare \u0060layout/src/widgets/pagination.rs\u0060 and \u0060layout/src/widgets/segmented.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 70 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":"layout/src/widgets/pagination.rs"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d4d22e58629571d3559b6bef27f493e0509f0c4d011e4d7455c8466adb239ea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/widgets/ribbon.rs:3308-3318 | layout/src/widgets/ribbon.rs:3409-3420 \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":"layout/src/widgets/ribbon.rs"},"region":{"startLine":3308}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e5b08e85d3c706ae90d3a70415661c21fbd0c4c87612343aa1bd53377a12680"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/widgets/text_area.rs:654-664 | layout/src/widgets/text_area.rs:680-690 \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":"layout/src/widgets/text_area.rs"},"region":{"startLine":654}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5a647f7d3fa597c50db6ec17cda453fd2e1d635947416e8b7f9f4ea37b1cbb3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/widgets/video.rs:543-553 | layout/src/widgets/video.rs:577-587 \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":"layout/src/widgets/video.rs"},"region":{"startLine":543}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d01cc2da10c8bc3744c8df92642077a9889de3c56a431309804b4bd5edfc07d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/window.rs:11389-11399 | layout/src/window.rs:11448-11458 \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":"layout/src/window.rs"},"region":{"startLine":11389}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ce352b21e07e72b6c089673d959b68758a253c30fa22134990908726e53f7d4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/xml/mod.rs:130-140 | layout/src/xml/mod.rs:143-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":"layout/src/xml/mod.rs"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1376123ed3ed5d10a36a2c23e49c039bc6d3c4c15ebb4bb52a4eaade4cfab02"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/widgets/themes/flat.rs:822-832 | layout/src/widgets/themes/flat.rs:1500-1510 \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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":822}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5147e96016005510845b0a8d7b61cf2eec8a48cad2173bfd93c32dae15ddee7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/widgets/themes/flat.rs:1456-1466 | layout/src/widgets/themes/flora.rs:1863-1873 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":1456}}}],"partialFingerprints":{"codehealthFindingId/v1":"211c672e5d1b1be83c6a36dcbae40d0206e3165adfca747b86fa8712b0d2792d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/widgets/themes/flat.rs:1510-1520 | layout/src/widgets/themes/flora.rs:1929-1939 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":1510}}}],"partialFingerprints":{"codehealthFindingId/v1":"9188bf999ae76a532d449308c033e81047a0d7ae103b21d42abd68b6fa8cc4ad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 7): dll/src/desktop/shell2/windows/mod.rs:4666-4675 | dll/src/desktop/shell2/windows/mod.rs:4876-4885 | dll/src/desktop/shell2/windows/mod.rs:5017-5026 | dll/src/desktop/shell2/windows/mod.rs:5113-5122 | dll/src/desktop/shell2/windows/mod.rs:5163-5172 | dll/src/desktop/shell2/windows/mod.rs:5218-5227 | dll/src/desktop/shell2/windows/mod.rs:5246-5255 \u2014 all 7 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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":4666}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e802d084fa24459de1f7320ce87885dcff392e54c298d54d9242996f86e6875"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 6): doc/src/codegen/v2/lang_cpp/cpp03.rs:259-268 | doc/src/codegen/v2/lang_cpp/cpp03.rs:296-305 | doc/src/codegen/v2/lang_cpp/cpp11.rs:168-177 | doc/src/codegen/v2/lang_cpp/cpp11.rs:195-204 | doc/src/codegen/v2/lang_cpp/cpp17.rs:299-308 | doc/src/codegen/v2/lang_cpp/cpp17.rs:343-352 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ca39d948b2ed10604aa23154f08c23d8a967fd0446f639229d89761c39bef52"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 5): css/src/system.rs:815-824 | css/src/system.rs:842-851 | css/src/system.rs:869-878 | css/src/system.rs:905-914 | css/src/system.rs:932-941 \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":"css/src/system.rs"},"region":{"startLine":815}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e67ca6b2a19a2acc6be41c50b891b9eb63a79abc47260d9bc8f9fefb6ba9c0a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 5): dll/src/desktop/shell2/linux/wayland/mod.rs:7189-7198 | dll/src/desktop/shell2/linux/x11/mod.rs:6238-6247 | dll/src/desktop/shell2/linux/x11/mod.rs:6469-6478 | dll/src/desktop/shell2/windows/mod.rs:1897-1906 | dll/src/desktop/shell2/windows/mod.rs:1964-1973 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":7189}}}],"partialFingerprints":{"codehealthFindingId/v1":"06e808eaa6f609a8d1432709ba539db5ea80a26b98225f2ee40126d371cde35b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 5): doc/src/codegen/v2/lang_csharp/wrappers.rs:552-561 | doc/src/codegen/v2/lang_haskell/types.rs:482-491 | doc/src/codegen/v2/lang_java/wrappers.rs:968-977 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:381-390 | doc/src/codegen/v2/lang_ruby/wrappers.rs:644-653 \u2014 \u0060doc/src/codegen/v2/lang_csharp/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_java/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 14 separate duplicated blocks between them, totalling at least 156 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":552}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f98d4ab748d3aaffb01cfae0cc6b9e95a1377ca9dbbc95bfd2919bd7e320abf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 5): layout/src/callbacks.rs:3468-3477 | layout/src/callbacks.rs:3493-3502 | layout/src/callbacks.rs:3518-3527 | layout/src/callbacks.rs:3543-3552 | layout/src/callbacks.rs:3568-3577 \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":"layout/src/callbacks.rs"},"region":{"startLine":3468}}}],"partialFingerprints":{"codehealthFindingId/v1":"866fda3069781a2122002e64bcfd5b47d3148300cb3bda2cf1a8d0e4d7f022dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 5): layout/src/dialogs/crash_reporter.rs:295-304 | layout/src/dialogs/gpu_check.rs:384-393 | layout/src/dialogs/report_problem.rs:698-707 | layout/src/dialogs/telemetry_consent.rs:297-306 | layout/src/dialogs/update_version.rs:424-433 \u2014 before extracting anything, compare \u0060layout/src/dialogs/crash_reporter.rs\u0060 and \u0060layout/src/dialogs/report_problem.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 37 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":"layout/src/dialogs/crash_reporter.rs"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4e548e3dcdd18b8b86addc6ace40c148e69762bab878b272c255cb0cd133e19"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): doc/src/autofix/type_index.rs:254-263 | doc/src/autofix/type_index.rs:421-430 | doc/src/autofix/type_index.rs:494-503 | doc/src/autofix/type_index.rs:530-539 \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":"doc/src/autofix/type_index.rs"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"b40c78cc5fece0c9b822453e55fcdbc1c0369e1e9ab6d8b2cb3078aa09138352"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): doc/src/codegen/v2/lang_cpp/cpp03.rs:251-260 | doc/src/codegen/v2/lang_cpp/cpp11.rs:160-169 | doc/src/codegen/v2/lang_cpp/cpp17.rs:291-300 | doc/src/codegen/v2/lang_cpp/cpp20.rs:1004-1013 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ca3e3a5710f0d24cd021acede1479a5702afb7e61675c92b1b07c9712298814"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201310 lines \u00D7 4): doc/src/codegen/v2/lang_freebasic/mod.rs:173-180 | doc/src/codegen/v2/lang_nim/mod.rs:200-207 | doc/src/codegen/v2/lang_smalltalk/mod.rs:183-192 | doc/src/codegen/v2/lang_vb6/mod.rs:249-256 \u2014 \u0060doc/src/codegen/v2/lang_freebasic/mod.rs\u0060 and \u0060doc/src/codegen/v2/lang_nim/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 5 separate duplicated blocks between them, totalling at least 66 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_freebasic/mod.rs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"70d0059c4daf3e07eb64ff6fd9b9635065a55af5cde2420e63528bb277c0cb4c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): doc/src/codegen/v2/lang_rust.rs:3793-3802 | doc/src/codegen/v2/lang_rust.rs:3881-3890 | doc/src/codegen/v2/rust/dynamic_binding.rs:170-179 | doc/src/codegen/v2/rust/dynamic_binding.rs:298-307 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":3793}}}],"partialFingerprints":{"codehealthFindingId/v1":"7602da0b44870f2179db35cd58dc0cd85eae17cf4da2e89c3caafd2a50a4fde1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): doc/src/reftest/autodebug.rs:2198-2209 | doc/src/reftest/autodoc.rs:934-943 | doc/src/reftest/autoreview.rs:1144-1154 | doc/src/reftest/autoreview.rs:1583-1593 \u2014 before extracting anything, compare \u0060doc/src/reftest/autodebug.rs\u0060 and \u0060doc/src/reftest/autodoc.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 35 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":"doc/src/reftest/autodebug.rs"},"region":{"startLine":2198}}}],"partialFingerprints":{"codehealthFindingId/v1":"8aa4625801b2e012a71847ae535b0ff684ae5e1d4c2abc8aa120646379377007"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): layout/src/font.rs:2505-2514 | layout/src/font.rs:2517-2526 | layout/src/text3/default.rs:382-391 | layout/src/text3/default.rs:395-404 \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":"layout/src/font.rs"},"region":{"startLine":2505}}}],"partialFingerprints":{"codehealthFindingId/v1":"879b7157a6ca41b1cfacd76802f26f3ac1af8f8545570e4b4ff913c855024bb2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): layout/src/widgets/ribbon.rs:1016-1025 | layout/src/widgets/ribbon.rs:1134-1143 | layout/src/widgets/ribbon.rs:1299-1308 | layout/src/widgets/ribbon.rs:1348-1357 \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":"layout/src/widgets/ribbon.rs"},"region":{"startLine":1016}}}],"partialFingerprints":{"codehealthFindingId/v1":"68eb9bd25fdaf1891856d425da2d6e9b256a446dea72675fc54aa31538f3dfae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): layout/src/window.rs:2820-2829 | layout/src/window.rs:3610-3619 | layout/src/window.rs:3933-3942 | layout/src/window.rs:4122-4131 \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":"layout/src/window.rs"},"region":{"startLine":2820}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c5307d10e8d45a625c9dd6a8c98d8b60e0b9361d122c66d6dca45f33481df63"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): dll/src/desktop/shell2/linux/gnome_menu/protocol_impl.rs:225-234 | dll/src/desktop/shell2/linux/gnome_menu/protocol_impl.rs:352-361 | dll/src/desktop/shell2/linux/gnome_menu/protocol_impl.rs:438-447 \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":"dll/src/desktop/shell2/linux/gnome_menu/protocol_impl.rs"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"677253d58914cf05b406039e9ffcd63a867e56fa6409c1ba3389f251973154c6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): dll/src/desktop/shell2/windows/mod.rs:2289-2298 | dll/src/desktop/shell2/windows/mod.rs:2918-2927 | dll/src/desktop/shell2/windows/mod.rs:2973-2982 \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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":2289}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4b5d70886e940eda739f66093399d163e43150b5c7d33c3f549106065402588"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201310 lines \u00D7 3): dll/src/desktop/shell2/windows/mod.rs:4729-4736 | dll/src/desktop/shell2/windows/mod.rs:4968-4977 | dll/src/desktop/shell2/windows/mod.rs:5060-5069 \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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":4729}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc8ccae0ee620af438d858c33b574f53fab4496fa42cc4cddd2223a6e4235d35"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): doc/src/autofix/type_index.rs:2037-2046 | doc/src/autofix/type_index.rs:2055-2065 | doc/src/autofix/type_index.rs:2074-2083 \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":"doc/src/autofix/type_index.rs"},"region":{"startLine":2037}}}],"partialFingerprints":{"codehealthFindingId/v1":"57aba05c8d058d6b2de5d3e1168a6f36ac13a19ae19cf8629f4628ef0c383cff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): doc/src/autofix/workspace.rs:1098-1107 | doc/src/autofix/workspace.rs:1117-1126 | doc/src/autofix/workspace.rs:1136-1145 \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":"doc/src/autofix/workspace.rs"},"region":{"startLine":1098}}}],"partialFingerprints":{"codehealthFindingId/v1":"93bbd18aaa6d8e4abd92917222922f8e56c5ed4cdc22f2da7aca346049a56181"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (4\u201310 lines \u00D7 4): doc/src/codegen/v2/lang_csharp/wrappers.rs:73-80 | doc/src/codegen/v2/lang_java/wrappers.rs:1229-1238 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:70-77 | doc/src/codegen/v2/lang_node/wrappers.rs:1289-1292 \u2014 \u0060doc/src/codegen/v2/lang_csharp/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_java/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 14 separate duplicated blocks between them, totalling at least 156 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dee71a8596bf63dbd99aca97704703efee6a3cc70ef5ffc9dd491c57f8993a0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): doc/src/codegen/v2/lang_haskell/wrappers.rs:1395-1404 | doc/src/codegen/v2/lang_node/managed.rs:149-161 | doc/src/codegen/v2/lang_ruby/managed.rs:497-508 \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":"doc/src/codegen/v2/lang_haskell/wrappers.rs"},"region":{"startLine":1395}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b0ec261b288627414d15e3b4f38f38e6a5e48f09a1f4aad3a7b00dcd3ff963f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): doc/src/codegen/v2/lang_crystal/functions.rs:38-47 | doc/src/codegen/v2/lang_julia/functions.rs:33-42 | doc/src/codegen/v2/lang_v/functions.rs:38-47 \u2014 \u0060doc/src/codegen/v2/lang_crystal/functions.rs\u0060 and \u0060doc/src/codegen/v2/lang_v/functions.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 30 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/functions.rs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"0743d0bd644b62e6134875e2294612a3b7dc0dea41f5753034b8b9d6efa13718"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 3): layout/src/font.rs:1867-1876 | layout/src/font.rs:1888-1896 | layout/src/font.rs:1954-1962 \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":"layout/src/font.rs"},"region":{"startLine":1867}}}],"partialFingerprints":{"codehealthFindingId/v1":"657ee8223fe4f0ae594f56fb92d653554fc5d5dfccee4daa9f4d7d6ba74b631c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): layout/src/widgets/alert.rs:343-352 | layout/src/widgets/chip.rs:313-322 | layout/src/widgets/toast.rs:376-385 \u2014 before extracting anything, compare \u0060layout/src/widgets/alert.rs\u0060 and \u0060layout/src/widgets/toast.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 122 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":"layout/src/widgets/alert.rs"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"5939acbf6d547380ca81b7ef87e88ab8b2c64c610b1ab008ff56952dfb98dbc6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): layout/src/window.rs:14459-14468 | layout/src/window.rs:14555-14564 | layout/src/window.rs:14715-14724 \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":"layout/src/window.rs"},"region":{"startLine":14459}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e214c9b9506facb7818dcb89a932bb6aa579d8bc5852ae4fd4ed387dd7e340d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): layout/src/xml/svg.rs:1868-1877 | layout/src/xml/svg.rs:1885-1894 | layout/src/xml/svg.rs:1909-1918 \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":"layout/src/xml/svg.rs"},"region":{"startLine":1868}}}],"partialFingerprints":{"codehealthFindingId/v1":"1540e7091560969293cf9e1f6efe5a61ac96782faed77c899d85a0d5148e7324"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201310 lines \u00D7 3): webrender/core/src/picture.rs:1918-1927 | webrender/core/src/picture.rs:2357-2364 | webrender/core/src/picture.rs:2454-2461 \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":"webrender/core/src/picture.rs"},"region":{"startLine":1918}}}],"partialFingerprints":{"codehealthFindingId/v1":"266f721ce6dcdf2a764a14c1c0eaf955030e23755eb682d3fde09acfefc78c38"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): core/src/diff.rs:689-698 | core/src/diff.rs:756-765 \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":"core/src/diff.rs"},"region":{"startLine":689}}}],"partialFingerprints":{"codehealthFindingId/v1":"749cc801d9553b6bda9b23656b204f56743bbb4c7efedf8f2ca97b79c216b84a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): core/src/path_parser.rs:344-353 | core/src/path_parser.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":"core/src/path_parser.rs"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"431847a836a257772d83c3f2e1a2a743ff42aaf0ccdf49fc6d1e5941c75290c1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): core/src/resources.rs:2778-2787 | core/src/resources.rs:2929-2938 \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":"core/src/resources.rs"},"region":{"startLine":2778}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a38594b91099eb85070c64155b0969a97990d899685550140e254e011a3028b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): css/src/props/basic/color.rs:1819-1828 | css/src/props/basic/color.rs:1859-1868 \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":"css/src/props/basic/color.rs"},"region":{"startLine":1819}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4e6dcb290a0b143b09f10a155bae2de40c4052135e6b1437923988c604a9be6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): css/src/props/layout/dimensions.rs:159-167 | css/src/props/layout/dimensions.rs:175-184 \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":"css/src/props/layout/dimensions.rs"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"27427e503d1727aefca88055e9aa61facd971157c6e44df7ba2415457ca5f410"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): css/src/props/property.rs:4462-4471 | css/src/props/property.rs:4477-4486 \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":"css/src/props/property.rs"},"region":{"startLine":4462}}}],"partialFingerprints":{"codehealthFindingId/v1":"981fd10a109441a81d8ca69e33ab059ba043a5e4919ed1082cc61e22555e6a66"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): dll/src/desktop/extra/audio/alsa.rs:65-74 | dll/src/desktop/extra/audio/alsa.rs:159-168 \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":"dll/src/desktop/extra/audio/alsa.rs"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a261e6078e211d3659ef17dc1a30977746417af9ba880cd7a4157d35ebf8ebe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): dll/src/desktop/extra/geolocation/ios.rs:161-170 | dll/src/desktop/extra/geolocation/macos.rs:155-164 \u2014 before extracting anything, compare \u0060dll/src/desktop/extra/geolocation/ios.rs\u0060 and \u0060dll/src/desktop/extra/geolocation/macos.rs\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 130 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":"dll/src/desktop/extra/geolocation/ios.rs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e0f98766ca702876b1a7d04381699af5128b15b324317a43e5804e10d084540"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): dll/src/desktop/extra/sqlite/mod.rs:535-544 | dll/src/desktop/extra/sqlite/mod.rs:572-581 \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":"dll/src/desktop/extra/sqlite/mod.rs"},"region":{"startLine":535}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d73e46b906dfb2d935021527bf9181b830871abc33293933f7eca1e23f4ea73"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): dll/src/desktop/shell2/common/event.rs:6581-6590 | dll/src/desktop/shell2/common/event.rs:11164-11173 \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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":6581}}}],"partialFingerprints":{"codehealthFindingId/v1":"f734e8c8e181da45cb3f5f45f1e948cdc693926bff1757400b91d801d0d45276"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): dll/src/desktop/shell2/ios/mod.rs:814-823 | dll/src/desktop/shell2/macos/mod.rs:5994-6003 \u2014 \u0060dll/src/desktop/shell2/ios/mod.rs\u0060 and \u0060dll/src/desktop/shell2/macos/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 47 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/ios/mod.rs"},"region":{"startLine":814}}}],"partialFingerprints":{"codehealthFindingId/v1":"90d8375e5714c20a651ab3d4cb534bd25c821d414f4329a4ef184c61e87e3a19"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:1578-1587 | dll/src/desktop/shell2/linux/x11/mod.rs:7839-7848 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":1578}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e875eef70d0040b25567d0d5ef6e60dfe78d00d5591d2845b4b2a7534de5a25"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:4688-4697 | dll/src/desktop/shell2/linux/wayland/mod.rs:4737-4746 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":4688}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4cf0cb384d415932f1cde894c06a8a5903175437732620a94635c997882800a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:9146-9155 | dll/src/desktop/shell2/linux/x11/mod.rs:8564-8573 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":9146}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c913300a8085c89b3ca72116b581755ed7b617db61e4068a6add50a38a94f6d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:10264-10273 | dll/src/desktop/shell2/linux/wayland/mod.rs:10558-10566 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":10264}}}],"partialFingerprints":{"codehealthFindingId/v1":"02648718f2fd52bbbf1267c13ca41d09eebaa9829d5c9b9baa2ea4b3978017ef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): dll/src/desktop/shell2/linux/x11/mod.rs:6539-6548 | dll/src/desktop/shell2/windows/mod.rs:1159-1168 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 and \u0060dll/src/desktop/shell2/windows/mod.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 443 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":6539}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b42744d268787e180b5cccc188abafd6b12798aa072b33fb58bed86c653c1b8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): dll/src/web/symbol_table.rs:1688-1697 | dll/src/web/symbol_table.rs:1999-2008 \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":"dll/src/web/symbol_table.rs"},"region":{"startLine":1688}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c00f4345713293dfc733b866d74c02371663429cb812abfa9b02497210329dc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): dll/src/desktop/extra/permission/ios.rs:69-78 | dll/src/desktop/extra/permission/macos.rs:168-177 \u2014 before extracting anything, compare \u0060dll/src/desktop/extra/permission/ios.rs\u0060 and \u0060dll/src/desktop/extra/permission/macos.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 100 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":"dll/src/desktop/extra/permission/ios.rs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"267211b61997e573a2a582afeb2a987181c207e815d9183b5cacf68870889135"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): dll/src/desktop/compositor2.rs:318-327 | dll/src/desktop/compositor2.rs:1297-1306 \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":"dll/src/desktop/compositor2.rs"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bc27a3b623aa2b9577d025401c02a8a94eb539f806b83d9b0944ce5c8739e48"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u201310 lines \u00D7 2): doc/src/api.rs:2011-2020 | doc/src/api.rs:2283-2289 \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":"doc/src/api.rs"},"region":{"startLine":2011}}}],"partialFingerprints":{"codehealthFindingId/v1":"65a805be3d342b4cf0387b823416a61e64b0f2531810b6521087a4bfaa5eddd6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/api.rs:2089-2099 | doc/src/api.rs:2366-2375 \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":"doc/src/api.rs"},"region":{"startLine":2089}}}],"partialFingerprints":{"codehealthFindingId/v1":"630dda254712149610686d84654114a39070d7f01b5656ec2f22e717798ccae5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/autofix/type_index.rs:2214-2223 | doc/src/autofix/type_index.rs:2232-2241 \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":"doc/src/autofix/type_index.rs"},"region":{"startLine":2214}}}],"partialFingerprints":{"codehealthFindingId/v1":"e61851ca58e82d88d72ebb4afb128e4c02d7fa4073a11e468a4223365d6c9e0c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/autofix/workspace.rs:1547-1556 | doc/src/autofix/workspace.rs:1592-1601 \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":"doc/src/autofix/workspace.rs"},"region":{"startLine":1547}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f54282875428b65978c72e4a0d6d9a7caa1ee3a315c4e1f3786bc1781577ba9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): doc/src/codegen/v2/lang_c.rs:528-536 | doc/src/codegen/v2/lang_c.rs:788-797 \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":"doc/src/codegen/v2/lang_c.rs"},"region":{"startLine":528}}}],"partialFingerprints":{"codehealthFindingId/v1":"4089842355227c8e68225b4e86bfbf83cf96c916382b3c8576e5158b25520235"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/codegen/v2/lang_c.rs:674-683 | doc/src/codegen/v2/lang_c.rs:719-728 \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":"doc/src/codegen/v2/lang_c.rs"},"region":{"startLine":674}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b8404f314e0bc7974c87466d4f69cea15e4478189f1118281801efeccb07d07"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/codegen/v2/lang_c.rs:1433-1442 | doc/src/codegen/v2/lang_c.rs:1453-1462 \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":"doc/src/codegen/v2/lang_c.rs"},"region":{"startLine":1433}}}],"partialFingerprints":{"codehealthFindingId/v1":"afe2cc10f7fdbf8184aa5d1b1a5219254e650efaea1a6b3964fee4d3679ccb21"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/codegen/v2/lang_cpp/cpp20.rs:1012-1021 | doc/src/codegen/v2/lang_cpp/cpp20.rs:1039-1048 \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":"doc/src/codegen/v2/lang_cpp/cpp20.rs"},"region":{"startLine":1012}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6c3611bb3a228b4320c50e47cb663616d747e55502919b9a4d73343bf199b01"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/codegen/v2/lang_crystal/model.rs:214-223 | doc/src/codegen/v2/lang_swift/model.rs:257-266 \u2014 \u0060doc/src/codegen/v2/lang_crystal/model.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/model.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 10 separate duplicated blocks between them, totalling at least 85 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/model.rs"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"b33eec001221f05bee2cf13f02358b13e4ac50a73060f02a10bfb9c9776e508d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (4\u201310 lines \u00D7 3): doc/src/codegen/v2/lang_csharp/wrappers.rs:83-92 | doc/src/codegen/v2/lang_java/wrappers.rs:1240-1243 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:80-89 \u2014 \u0060doc/src/codegen/v2/lang_csharp/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_java/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 14 separate duplicated blocks between them, totalling at least 156 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b1ecdfe3908843cb18c24974b8c6943673ea5395d38abd821c38984032b7ac2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (3\u201310 lines \u00D7 3): doc/src/codegen/v2/lang_csharp/wrappers.rs:110-119 | doc/src/codegen/v2/lang_java/wrappers.rs:1268-1270 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:107-116 \u2014 \u0060doc/src/codegen/v2/lang_csharp/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_java/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 14 separate duplicated blocks between them, totalling at least 156 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8c50fae9cb2946f201f3cce4c2d6732ec8c2573c75e5c3135d6ab8434a3a1a2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:1747-1756 | doc/src/codegen/v2/lang_swift/wrappers.rs:1723-1732 \u2014 \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 29 separate duplicated blocks between them, totalling at least 269 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":1747}}}],"partialFingerprints":{"codehealthFindingId/v1":"d930db5920803d752f49a9168e311fc4b2025f0506e0ac3d6589719b3315985e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201310 lines \u00D7 2): doc/src/codegen/v2/lang_haskell/types.rs:630-637 | doc/src/codegen/v2/lang_haskell/types.rs:777-786 \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":"doc/src/codegen/v2/lang_haskell/types.rs"},"region":{"startLine":630}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b033998657e006ad2c581c532a1d3f0a18aca029b5ed858a3f6c46c870a4f15"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/codegen/v2/lang_java/wrappers.rs:133-142 | doc/src/codegen/v2/lang_java/wrappers.rs:1938-1947 \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":"doc/src/codegen/v2/lang_java/wrappers.rs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdbcb9cb79c7c59a7196581f6a90fe1290e4596209abd664ca47e642f8d4f43d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/codegen/v2/lang_kotlin/managed.rs:203-212 | doc/src/codegen/v2/lang_kotlin/managed.rs:420-429 \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":"doc/src/codegen/v2/lang_kotlin/managed.rs"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"780295faa5dd532e3dcca79d23a036d2f675bc8a1d83f39be700d36f87058502"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/codegen/v2/lang_ocaml/wrappers.rs:1863-1876 | doc/src/codegen/v2/lang_ocaml/wrappers.rs:2424-2433 \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":"doc/src/codegen/v2/lang_ocaml/wrappers.rs"},"region":{"startLine":1863}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd1c9acc6ccf59a2b85f01cc31355b24b75d99531e448e5d80a5cb2e60d90681"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/codegen/v2/lang_python.rs:1680-1689 | doc/src/codegen/v2/lang_python.rs:1697-1706 \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":"doc/src/codegen/v2/lang_python.rs"},"region":{"startLine":1680}}}],"partialFingerprints":{"codehealthFindingId/v1":"680b8e0048b20bf7aad97f75fec58d8082fd271d4c63dff7cbd65f9138366818"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/codegen/v2/lang_python.rs:1757-1766 | doc/src/codegen/v2/lang_python.rs:1770-1779 \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":"doc/src/codegen/v2/lang_python.rs"},"region":{"startLine":1757}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b206ffce5e2ccda6220015e431576b0d65ac136cfff2f5e2f35f284ccf4bd54"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): doc/src/reftest/autodebug.rs:1091-1100 | doc/src/reftest/autodebug.rs:1119-1127 \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":"doc/src/reftest/autodebug.rs"},"region":{"startLine":1091}}}],"partialFingerprints":{"codehealthFindingId/v1":"3159528aee3569b0d51c859c3aee9593cb508874190497c0390d98722fb1c3cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/reftest/autodoc.rs:541-550 | doc/src/reftest/autodoc.rs:566-575 \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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"299141f59c0fa3d2a75b642a4ea3a6d1419155d4d0728f291d920aaa84b59132"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/reftest/autodoc.rs:1531-1540 | doc/src/reftest/autodoc.rs:1914-1923 \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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":1531}}}],"partialFingerprints":{"codehealthFindingId/v1":"4897ffca6f0b5db6ee58bc50ce67a3b7d18b3776c7548b18604ccc51afbc5437"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u201310 lines \u00D7 2): doc/src/reftest/autoreview.rs:1122-1128 | doc/src/reftest/autoreview.rs:1558-1567 \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":"doc/src/reftest/autoreview.rs"},"region":{"startLine":1122}}}],"partialFingerprints":{"codehealthFindingId/v1":"27c3037b3e0e5b5b4d73c3048a28efd864ff14eacff96ab3bb29973042f8757b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/reftest/regression.rs:1069-1078 | doc/src/reftest/regression.rs:1864-1875 \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":"doc/src/reftest/regression.rs"},"region":{"startLine":1069}}}],"partialFingerprints":{"codehealthFindingId/v1":"98029ca5e1a2227514ec2bcdb19643b514ca7095b4aee249ef1e612627747bf0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/codegen/v2/lang_odin/types.rs:300-309 | doc/src/codegen/v2/lang_v/types.rs:310-319 \u2014 \u0060doc/src/codegen/v2/lang_odin/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_v/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 16 separate duplicated blocks between them, totalling at least 175 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_odin/types.rs"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"edbbb9d2d8355e71eb5a3aea1875b12b0553a1c3d002edf97b47485b2d3fe92f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): doc/src/main.rs:974-983 | doc/src/main.rs:1221-1229 \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":"doc/src/main.rs"},"region":{"startLine":974}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea014f9ddd7cea0b72067cccd64a721bfdf0ac5310af990789c5bcc9b40d31fe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): doc/src/codegen/v2/lang_kotlin/mod.rs:758-767 | doc/src/codegen/v2/lang_kotlin/mod.rs:1126-1134 \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":"doc/src/codegen/v2/lang_kotlin/mod.rs"},"region":{"startLine":758}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4ddb9fe0a2aa6731b588c4493550ae5643fca86cf402c4db5285b3a8acec08b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/codegen/v2/lang_nim/wrappers.rs:151-160 | doc/src/codegen/v2/lang_nim/wrappers.rs:183-192 \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":"doc/src/codegen/v2/lang_nim/wrappers.rs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"86fb50243e842e5d4d8ac2e6c8552a901107553932a3f13faaf77ea848e9c91f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201310 lines \u00D7 2): doc/src/codegen/v2/lang_racket/types.rs:200-209 | doc/src/codegen/v2/lang_racket/types.rs:339-346 \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":"doc/src/codegen/v2/lang_racket/types.rs"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"c34349ca0f64f4f961750e104453565ecec99c5796a46353e780933e6aeb407e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201310 lines \u00D7 2): doc/src/codegen/v2/lang_smalltalk/functions.rs:226-235 | doc/src/codegen/v2/lang_smalltalk/wrappers.rs:260-267 \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":"doc/src/codegen/v2/lang_smalltalk/functions.rs"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5ae523cf134556d87b6d1f69b29c02599c5735ccb13287673c8bade5c67d413"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/codegen/v2/lang_perl/functions.rs:37-46 | doc/src/codegen/v2/lang_ruby/functions.rs:50-59 \u2014 \u0060doc/src/codegen/v2/lang_perl/functions.rs\u0060 and \u0060doc/src/codegen/v2/lang_ruby/functions.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 47 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_perl/functions.rs"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bd8496daf28613ca5a411211fe0406558b20f47b6a1d355bd414f64f445df2b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u201310 lines \u00D7 2): doc/src/codegen/v2/transmute_helpers.rs:406-415 | doc/src/codegen/v2/transmute_helpers.rs:428-434 \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":"doc/src/codegen/v2/transmute_helpers.rs"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa0c2fd05c361158a5899460a46ba603d86432610913490aaaa22e224d008fee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201310 lines \u00D7 2): doc/src/codegen/v2/lang_freebasic/types.rs:181-190 | doc/src/codegen/v2/lang_vb6/types.rs:217-224 \u2014 \u0060doc/src/codegen/v2/lang_freebasic/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_vb6/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 8 separate duplicated blocks between them, totalling at least 109 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_freebasic/types.rs"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"97dab1cf50dbcba107e8709e299ebf15c84c479182cd680862f8766b244749d9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/codegen/v2/lang_smalltalk/types.rs:135-144 | doc/src/codegen/v2/lang_smalltalk/types.rs:168-177 \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":"doc/src/codegen/v2/lang_smalltalk/types.rs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd79d5efb6454da48e169465b9b55c0c64f6a4972c3f3251770f97f89a2ff3dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): doc/src/codegen/v2/lang_v/types.rs:207-216 | doc/src/codegen/v2/lang_v/types.rs:301-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":"doc/src/codegen/v2/lang_v/types.rs"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"9977d34bfc169d002ad8ab4fd08cb91ad1f0cc241a366f3f8ca8a0decc0b7a09"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): doc/src/codegen/v2/lang_go/wrappers.rs:718-727 | doc/src/codegen/v2/lang_go/wrappers.rs:794-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":"doc/src/codegen/v2/lang_go/wrappers.rs"},"region":{"startLine":718}}}],"partialFingerprints":{"codehealthFindingId/v1":"346a61838238cc246b4ed6e2cd463c11fbaf2bebc4a1b2811c07570ee7dc0ac1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): layout/src/cpurender/compositor.rs:2843-2852 | layout/src/cpurender/compositor.rs:2887-2896 \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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":2843}}}],"partialFingerprints":{"codehealthFindingId/v1":"3aedcffab1ab71716ce1d5c4807ca7b66cd380fc98d3937939dc92b3aa551c66"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): layout/src/cpurender/pixmap.rs:819-827 | layout/src/cpurender/pixmap.rs:866-875 \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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":819}}}],"partialFingerprints":{"codehealthFindingId/v1":"38ff754768cefd86d92725c2a3a450371e8e91a0b0f8faec0fd6e3cdff8d0b28"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): layout/src/cpurender/raster.rs:1029-1038 | layout/src/cpurender/raster.rs:2629-2638 \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":"layout/src/cpurender/raster.rs"},"region":{"startLine":1029}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f6558f7746bf39295317ad49626476abd30b4c86a92c7df438228b7b92e61f7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): layout/src/cpurender/raster.rs:2965-2974 | layout/src/cpurender/raster.rs:3839-3848 \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":"layout/src/cpurender/raster.rs"},"region":{"startLine":2965}}}],"partialFingerprints":{"codehealthFindingId/v1":"beb4f674ac72445a1472b36368b3aac6dc4ba945efc3597c61b228e7f9725e13"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): layout/src/icu_macos.rs:144-153 | layout/src/icu_windows.rs:430-439 \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":"layout/src/icu_macos.rs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"6eb0ea6ef22cd42175848eb3e80b211182f016e2cf4f57afa5a6304706bf87eb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): layout/src/probe.rs:2575-2583 | layout/src/probe.rs:2605-2614 \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":"layout/src/probe.rs"},"region":{"startLine":2575}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff9d9580de433cd1d5d77657886012d7bde09b519f26670bd1dc010da83a5f1b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): layout/src/solver3/cache.rs:2026-2036 | layout/src/solver3/cache.rs:2182-2191 \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":"layout/src/solver3/cache.rs"},"region":{"startLine":2026}}}],"partialFingerprints":{"codehealthFindingId/v1":"35b0fcf4d815a6845a99f206104e801130447a063de856f6a337ab38ca368ba4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): layout/src/solver3/cache.rs:3796-3805 | layout/src/solver3/cache.rs:3820-3829 \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":"layout/src/solver3/cache.rs"},"region":{"startLine":3796}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffd55ef679b9c06668c8f2572f557e8efd3e8c94c0e2acfed785d73e999fd5ab"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): layout/src/solver3/getters.rs:6817-6826 | layout/src/solver3/getters.rs:6856-6865 \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":"layout/src/solver3/getters.rs"},"region":{"startLine":6817}}}],"partialFingerprints":{"codehealthFindingId/v1":"f165af29aa04345df31a4d61c938269fb8c0081b73de6ae575eb83bfe093d6d7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): layout/src/solver3/layout_tree.rs:549-558 | layout/src/solver3/layout_tree.rs:588-597 \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":"layout/src/solver3/layout_tree.rs"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8858a591ce969eb977733b8920247db654df743fc8fece90cc26d57bb2e0f42"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): layout/src/solver3/page_breaks.rs:480-489 | layout/src/solver3/pagination.rs:1192-1201 \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":"layout/src/solver3/page_breaks.rs"},"region":{"startLine":480}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b7607ade34ca3fe8a3917a84292d68b44e40ceecf0794793b984e33fb0d6e85"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): layout/src/solver3/sizing.rs:683-692 | layout/src/solver3/sizing.rs:750-759 \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":"layout/src/solver3/sizing.rs"},"region":{"startLine":683}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd1a71cfbc915619591093400279bf30034ef81b79a7c36d0d805959dc3bd91b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): layout/src/solver3/taffy_bridge.rs:2016-2025 | layout/src/solver3/taffy_bridge.rs:2027-2036 \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":"layout/src/solver3/taffy_bridge.rs"},"region":{"startLine":2016}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e4c7f1acf0edefc32b600e5d6d6784e8f016431a7644569c4b6a40480094aed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): layout/src/text3/cache.rs:6496-6505 | layout/src/text3/cache.rs:6566-6575 \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":"layout/src/text3/cache.rs"},"region":{"startLine":6496}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed9a82a9103b17de406707ba75ce95c8deb879b3b89a624d6f19dbb81c756827"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): layout/src/widgets/file_input.rs:305-314 | layout/src/widgets/file_input.rs:339-348 \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":"layout/src/widgets/file_input.rs"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"15fb943e15995e12ddf3ed5d2ad1c538fb88d0bca3bbf16b5933bfee9f012795"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): layout/src/widgets/node_graph.rs:1464-1472 | layout/src/widgets/node_graph.rs:1900-1909 \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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":1464}}}],"partialFingerprints":{"codehealthFindingId/v1":"d535a1b2cc1ffa52067b6cb8afe12b328774c68feb9b30592bf065aa92c51ec1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): layout/src/widgets/ribbon.rs:1063-1072 | layout/src/widgets/ribbon.rs:1107-1116 \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":"layout/src/widgets/ribbon.rs"},"region":{"startLine":1063}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e80033187dbd0032c6cabc3b4a1658a204e84118a5dc91f025ada10e3d467f0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): layout/src/widgets/ribbon.rs:4092-4101 | layout/src/widgets/ribbon.rs:4109-4118 \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":"layout/src/widgets/ribbon.rs"},"region":{"startLine":4092}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b1a0ed3906ba91896e9d260f76b4019443984bff17b8fd9f44f326c98524d3e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): layout/src/widgets/titlebar.rs:227-235 | layout/src/widgets/titlebar.rs:301-310 \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":"layout/src/widgets/titlebar.rs"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"1715486b4dcb617f25038070340e8f775af9d839abbc54c0e13b1d69a80e19cb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): layout/src/widgets/titlebar.rs:1032-1041 | layout/src/widgets/titlebar.rs:1062-1076 \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":"layout/src/widgets/titlebar.rs"},"region":{"startLine":1032}}}],"partialFingerprints":{"codehealthFindingId/v1":"63b32b85cb7a6259c93c4f0f486cc21503348e77f3a87969fa71d058ea67c955"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): layout/src/window.rs:3220-3229 | layout/src/window.rs:20078-20087 \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":"layout/src/window.rs"},"region":{"startLine":3220}}}],"partialFingerprints":{"codehealthFindingId/v1":"1906ea08f396484ecddf213c758d515d9d805dbf705fbec65a3382c43b8ee9b8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): layout/src/window.rs:12521-12530 | layout/src/window.rs:19010-19019 \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":"layout/src/window.rs"},"region":{"startLine":12521}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c7a6dd14db67880880d83ff8db8b66238364aab1fa695fcda16fbac43219a1a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): layout/src/window.rs:17469-17478 | layout/src/window.rs:17497-17506 \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":"layout/src/window.rs"},"region":{"startLine":17469}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f5c7475ac01ace19d171d1fe3b8783f696a0d05cff254c2377823ece57089e6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): layout/src/widgets/themes/flat.rs:976-985 | layout/src/widgets/themes/flora.rs:1248-1257 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":976}}}],"partialFingerprints":{"codehealthFindingId/v1":"8778883122a391dc175f31dd4ff4aef96c335db4e7017ecb3302f36bd8e5aefc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): layout/src/widgets/themes/flat.rs:1005-1014 | layout/src/widgets/themes/flora.rs:1277-1286 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":1005}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f261d13e63c02d480264dee6756357ca483c6da720e77cb6e34df28dfa66e96"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): layout/src/widgets/themes/flat.rs:1806-1815 | layout/src/widgets/themes/flora.rs:2224-2233 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":1806}}}],"partialFingerprints":{"codehealthFindingId/v1":"c69f4d97e9d8c6704addc5595bdc50abe1e82676bc35ca15c16a54154df127da"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): webrender/core/src/render_task.rs:1998-2007 | webrender/core/src/render_task.rs:2024-2033 \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":"webrender/core/src/render_task.rs"},"region":{"startLine":1998}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c324bb60b08375ee30d499b3d203b91d720e903cd800ee89082d880530ebeec"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20139 lines \u00D7 11): doc/src/autofix/type_index.rs:2024-2032 | doc/src/autofix/type_index.rs:2265-2271 | doc/src/autofix/type_index.rs:2312-2318 | doc/src/autofix/type_index.rs:2413-2419 | doc/src/autofix/type_index.rs:2462-2468 | doc/src/autofix/type_index.rs:2503-2509 | doc/src/autofix/type_index.rs:2544-2550 | doc/src/autofix/type_index.rs:2585-2591 | doc/src/autofix/type_index.rs:2628-2634 | doc/src/autofix/type_index.rs:2679-2685 | doc/src/autofix/type_index.rs:2767-2773 \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":"doc/src/autofix/type_index.rs"},"region":{"startLine":2024}}}],"partialFingerprints":{"codehealthFindingId/v1":"318d68979fafeb2a22789fdb4244966270bfb39cddbbcb25c56f9697e0fff133"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 8): doc/src/codegen/v2/lang_rust.rs:2520-2528 | doc/src/codegen/v2/lang_rust.rs:2595-2603 | doc/src/codegen/v2/rust/dynamic_binding.rs:150-157 | doc/src/codegen/v2/rust/dynamic_binding.rs:279-286 | doc/src/codegen/v2/rust/shared.rs:129-137 | doc/src/codegen/v2/rust/shared.rs:178-186 | doc/src/codegen/v2/rust/static_binding.rs:236-244 | doc/src/codegen/v2/rust/static_binding.rs:304-311 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_rust.rs\u0060 and \u0060doc/src/codegen/v2/rust/shared.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 200 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2520}}}],"partialFingerprints":{"codehealthFindingId/v1":"a99e96556cb9867bbb34c9e23b50ec7ac98ddf45d073bdd053aaad59d9bde661"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 7): doc/src/codegen/v2/lang_cpp/cpp03.rs:333-341 | doc/src/codegen/v2/lang_cpp/cpp03.rs:693-701 | doc/src/codegen/v2/lang_cpp/cpp11.rs:240-248 | doc/src/codegen/v2/lang_cpp/cpp11.rs:615-623 | doc/src/codegen/v2/lang_cpp/cpp17.rs:397-405 | doc/src/codegen/v2/lang_cpp/cpp17.rs:825-833 | doc/src/codegen/v2/lang_cpp/cpp20.rs:949-957 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"2627d1ff324f794d50aae59a5a37bc5dbd2575e0d12b12640920c34ffbbf0dc5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 5): dll/src/desktop/shell2/linux/wayland/mod.rs:7211-7219 | dll/src/desktop/shell2/linux/x11/mod.rs:6548-6556 | dll/src/desktop/shell2/linux/x11/mod.rs:6946-6954 | dll/src/desktop/shell2/windows/mod.rs:1168-1176 | dll/src/desktop/shell2/windows/mod.rs:1658-1666 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":7211}}}],"partialFingerprints":{"codehealthFindingId/v1":"42c02bb1251838421d465994a3b97e22e9c6c59d007c7e25eba282c4c7df74f2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 5): dll/src/desktop/extra/biometric/android.rs:140-148 | dll/src/desktop/extra/geolocation/android.rs:109-117 | dll/src/desktop/extra/keyring/android.rs:107-115 | dll/src/desktop/extra/permission/android.rs:147-155 | dll/src/desktop/extra/sensors/android.rs:81-89 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 5 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 5 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/extra/biometric/android.rs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"f33754b76d40b7818c646f39b6bbb7d88f0b32c59025345ddc80155ac33bad2b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 5): doc/src/codegen/v2/lang_algol68/wrappers.rs:120-128 | doc/src/codegen/v2/lang_cobol/wrappers.rs:88-96 | doc/src/codegen/v2/lang_freebasic/wrappers.rs:86-94 | doc/src/codegen/v2/lang_pascal/wrappers.rs:128-136 | doc/src/codegen/v2/lang_vb6/wrappers.rs:63-71 \u2014 \u0060doc/src/codegen/v2/lang_algol68/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_freebasic/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 35 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_algol68/wrappers.rs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"b45833b5b2507a14898adb6cb2a02f669e931fad4fd4262c065e0605dc7b5a04"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 5): doc/src/dllgen/deploy.rs:1651-1659 | doc/src/dllgen/deploy.rs:1663-1671 | doc/src/dllgen/deploy.rs:1675-1683 | doc/src/dllgen/deploy.rs:1698-1706 | doc/src/dllgen/deploy.rs:1715-1723 \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":"doc/src/dllgen/deploy.rs"},"region":{"startLine":1651}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebc0e5146999773aa83c5a7bffe9cc5f55c5921ea6d9c7909de17ef2e2cb2915"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 5): layout/src/cpurender/compositor.rs:436-444 | layout/src/cpurender/compositor.rs:477-484 | layout/src/cpurender/compositor.rs:513-520 | layout/src/cpurender/compositor.rs:575-582 | layout/src/cpurender/compositor.rs:623-630 \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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":436}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d5e35f5eac3984efc5df9cd9820e49ba190ebbbdd0dccf1f3dc37c6c3f190f5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): dll/src/desktop/shell2/linux/wayland/mod.rs:6260-6268 | dll/src/desktop/shell2/linux/x11/events.rs:1401-1409 | dll/src/desktop/shell2/macos/events.rs:1154-1162 | dll/src/desktop/shell2/windows/mod.rs:2159-2167 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/events.rs\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 249 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":6260}}}],"partialFingerprints":{"codehealthFindingId/v1":"87762a730293e4b3200cac2fd80476b0d04687926378de485c51e684384d48a8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): dll/src/desktop/shell2/linux/wayland/mod.rs:6297-6305 | dll/src/desktop/shell2/linux/x11/events.rs:1438-1446 | dll/src/desktop/shell2/macos/events.rs:1118-1126 | dll/src/desktop/shell2/windows/mod.rs:2202-2210 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/events.rs\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 249 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":6297}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b3d0625dce4dbb093ea08eb970041450b4e6f7e61fbcbdf40a8be7f1d59961f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): doc/src/reftest/mod.rs:1458-1466 | doc/src/reftest/mod.rs:1469-1477 | doc/src/reftest/mod.rs:1480-1488 | doc/src/reftest/mod.rs:1491-1499 \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":"doc/src/reftest/mod.rs"},"region":{"startLine":1458}}}],"partialFingerprints":{"codehealthFindingId/v1":"8162043b615e1212631d6c6585886576d8d17e2c448b1bb82bafce9e95e51c05"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 4): doc/src/codegen/v2/lang_freebasic/types.rs:165-173 | doc/src/codegen/v2/lang_freebasic/types.rs:192-199 | doc/src/codegen/v2/lang_vb6/types.rs:183-191 | doc/src/codegen/v2/lang_vb6/types.rs:228-235 \u2014 \u0060doc/src/codegen/v2/lang_freebasic/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_vb6/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 8 separate duplicated blocks between them, totalling at least 109 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_freebasic/types.rs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"58a52b32ae83d72fc9275aa61ed9eed753fc69cc7b83f015edf47e09513e35e3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): layout/src/cpurender/raster.rs:4913-4921 | layout/src/xml/svg.rs:1868-1876 | layout/src/xml/svg.rs:1885-1893 | layout/src/xml/svg.rs:1909-1917 \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":"layout/src/cpurender/raster.rs"},"region":{"startLine":4913}}}],"partialFingerprints":{"codehealthFindingId/v1":"834336464dc4ec8554ce22a1eed5d476f0c9c0eda7781f9f2df8a6c1e4d7aa76"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): core/src/resources.rs:2734-2742 | core/src/resources.rs:2793-2801 | core/src/resources.rs:2944-2952 \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":"core/src/resources.rs"},"region":{"startLine":2734}}}],"partialFingerprints":{"codehealthFindingId/v1":"8324e64b7207f2759e237d5287ba040b1fb5a2e8e9d5f47e9f4fa5f95091ca78"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): dll/src/desktop/shell2/linux/wayland/mod.rs:4637-4645 | dll/src/desktop/shell2/linux/wayland/mod.rs:5666-5674 | dll/src/desktop/shell2/linux/wayland/mod.rs:5844-5852 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":4637}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c1d6d4cae4b15875317358f46b655d57fe4a486c074762524780a97bf95f2c5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): dll/src/web/symbol_table.rs:1775-1783 | dll/src/web/symbol_table.rs:3105-3113 | dll/src/web/symbol_table.rs:3175-3183 \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":"dll/src/web/symbol_table.rs"},"region":{"startLine":1775}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1f70b4f7d94d5f81d29543db68bf9eb6fbbb491a647db3cfb5fef346a963e08"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): dll/src/web/transpiler_remill.rs:6181-6189 | dll/src/web/transpiler_remill.rs:10932-10940 | dll/src/web/transpiler_remill.rs:11475-11483 \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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":6181}}}],"partialFingerprints":{"codehealthFindingId/v1":"902134d5764c2deac9c6c3c08242c51817156239847497b1b1aa20cc6f72618e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): dll/src/web/transpiler_remill.rs:10933-10941 | dll/src/web/transpiler_remill.rs:11064-11072 | dll/src/web/transpiler_remill.rs:11427-11435 \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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":10933}}}],"partialFingerprints":{"codehealthFindingId/v1":"0da8d3cfd9d7f96fb3ff6e9b2233053c7fda5d8ddfc877cad8746eed6b8df98f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): doc/src/codegen/v2/lang_crystal/model.rs:565-573 | doc/src/codegen/v2/lang_d/model.rs:871-879 | doc/src/codegen/v2/lang_swift/model.rs:872-880 \u2014 \u0060doc/src/codegen/v2/lang_crystal/model.rs\u0060 and \u0060doc/src/codegen/v2/lang_d/model.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 9 separate duplicated blocks between them, totalling at least 74 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/model.rs"},"region":{"startLine":565}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1419b850c3624320682c1181a118feb168f354065820494235131e9cba71e3d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): doc/src/codegen/v2/lang_crystal/wrappers.rs:1018-1026 | doc/src/codegen/v2/lang_d/wrappers.rs:2305-2313 | doc/src/codegen/v2/lang_swift/wrappers.rs:2284-2292 \u2014 \u0060doc/src/codegen/v2/lang_crystal/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 6 separate duplicated blocks between them, totalling at least 51 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/wrappers.rs"},"region":{"startLine":1018}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bb200ce59f6fc8f4db21c2b3c2a18780ff742191e49f11b4367aa81a0d1eec0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): doc/src/codegen/v2/lang_node/wrappers.rs:464-472 | doc/src/codegen/v2/lang_node/wrappers.rs:681-689 | doc/src/codegen/v2/lang_node/wrappers.rs:1153-1161 \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":"doc/src/codegen/v2/lang_node/wrappers.rs"},"region":{"startLine":464}}}],"partialFingerprints":{"codehealthFindingId/v1":"37351c7ba735ca6e7fdccb04c1eb0610b1fbd22cb4b99cf0e5ca951f00fd3db2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20139 lines \u00D7 3): doc/src/codegen/v2/lang_freebasic/functions.rs:123-131 | doc/src/codegen/v2/lang_freebasic/types.rs:368-374 | doc/src/codegen/v2/lang_freebasic/wrappers.rs:434-440 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_freebasic/functions.rs\u0060 and \u0060doc/src/codegen/v2/lang_freebasic/types.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 33 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":"doc/src/codegen/v2/lang_freebasic/functions.rs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb6b0c2a37ed01a414b8507a2aa80af1291fbaabe6e705761b1875d7b0108bf3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5\u20139 lines \u00D7 3): layout/src/image.rs:643-651 | layout/src/image.rs:692-696 | layout/src/image.rs:732-736 \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":"layout/src/image.rs"},"region":{"startLine":643}}}],"partialFingerprints":{"codehealthFindingId/v1":"3143342b6e08be317c2f72c139ba5af7d1830096eb7aca0731db1140e338808d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): layout/src/solver3/paged_layout.rs:492-500 | layout/src/solver3/paged_layout.rs:730-738 | layout/src/solver3/paged_layout.rs:797-805 \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":"layout/src/solver3/paged_layout.rs"},"region":{"startLine":492}}}],"partialFingerprints":{"codehealthFindingId/v1":"e79a8ca871e3bada4af20a906b562251bb27ff5470f828bd45a442a8615fc46b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): core/src/diff.rs:741-750 | core/src/diff.rs:801-809 \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":"core/src/diff.rs"},"region":{"startLine":741}}}],"partialFingerprints":{"codehealthFindingId/v1":"e905ac321f7eb2759562c88f20567c6673ab8d1aaa28d48d4d32a7eac4176925"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): core/src/dom.rs:2495-2503 | core/src/dom.rs:3820-3828 \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":"core/src/dom.rs"},"region":{"startLine":2495}}}],"partialFingerprints":{"codehealthFindingId/v1":"a753ad7070a605df89ade3102762bbc2c4041500fdfc2f34b5d1c57ae0b9d949"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): core/src/gl.rs:4168-4176 | core/src/gl.rs:4185-4193 \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":"core/src/gl.rs"},"region":{"startLine":4168}}}],"partialFingerprints":{"codehealthFindingId/v1":"811cf9db4fb4aad94b159362d27eba22654febd73ff3ae7f968996a6053078f6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): core/src/resources.rs:1454-1462 | core/src/resources.rs:3181-3189 \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":"core/src/resources.rs"},"region":{"startLine":1454}}}],"partialFingerprints":{"codehealthFindingId/v1":"37154c3057b63cfa09c175e3e353f8e3d9f16435e00fd6939cd45388d627c551"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): core/src/resources.rs:2603-2611 | core/src/resources.rs:2722-2730 \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":"core/src/resources.rs"},"region":{"startLine":2603}}}],"partialFingerprints":{"codehealthFindingId/v1":"e65c97468a67cc584c0a043c391cb1a1e6ee4dddf9d6c1dd96b62a0593c235af"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): core/src/xml.rs:4291-4299 | core/src/xml.rs:4467-4475 \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":"core/src/xml.rs"},"region":{"startLine":4291}}}],"partialFingerprints":{"codehealthFindingId/v1":"72f6deaad6715f9b12210532b6d9ba73705f1a42c8785a0c5326040d9e439d5f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): core/src/xml.rs:5439-5447 | core/src/xml.rs:5470-5478 \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":"core/src/xml.rs"},"region":{"startLine":5439}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca66ecc6869c37adb9c0c30fea6cd7da55ff8df18ec691c74e0faba27a6636ab"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): core/src/xml.rs:8452-8461 | core/src/xml.rs:8516-8524 \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":"core/src/xml.rs"},"region":{"startLine":8452}}}],"partialFingerprints":{"codehealthFindingId/v1":"42cab6823038ce8dd15746ab68b2927ac57f8813796454f282c1ba261c1077bf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): css/src/codegen/format.rs:215-223 | css/src/codegen/format.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":"css/src/codegen/format.rs"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"19253ab6b90444dd4895f25776c85ad45fd3ed31487ed6909014c3f3037af9f3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): css/src/props/basic/animation.rs:348-356 | css/src/props/basic/animation.rs:371-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":"css/src/props/basic/animation.rs"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"401721c8b4cf1f08acaa0f2c63ae353382d40f038c7e04d2009baf0707bcaf14"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): css/src/shape_parser.rs:106-114 | css/src/shape_parser.rs:134-142 \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":"css/src/shape_parser.rs"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3d6d5fd708d67abf48beccc942ccbe64cfdb21dd807954802aebbdee6f262c1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): dll/src/desktop/extra/geolocation/ios.rs:128-136 | dll/src/desktop/extra/geolocation/macos.rs:122-130 \u2014 before extracting anything, compare \u0060dll/src/desktop/extra/geolocation/ios.rs\u0060 and \u0060dll/src/desktop/extra/geolocation/macos.rs\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 130 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":"dll/src/desktop/extra/geolocation/ios.rs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"cee132ec232971059d2f2efb9e02ba1034cc58341685c09a7cea5e219fd3e2b3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): dll/src/desktop/extra/geolocation/linux.rs:49-57 | dll/src/desktop/extra/geolocation/windows.rs:68-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":"dll/src/desktop/extra/geolocation/linux.rs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"6db7bcbd82f51d50b40c194efc2d41015ecbb4074f9d3af69eb3fb2942192a67"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): dll/src/desktop/extra/pdf/mod.rs:635-643 | layout/src/window.rs:1804-1812 \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":"dll/src/desktop/extra/pdf/mod.rs"},"region":{"startLine":635}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbc37b217409cb74591e26fac99a6e298d025fa2fa46090985214587ebc98dae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): dll/src/desktop/shell2/android/mod.rs:586-594 | dll/src/desktop/shell2/ios/mod.rs:2034-2042 \u2014 \u0060dll/src/desktop/shell2/android/mod.rs\u0060 and \u0060dll/src/desktop/shell2/ios/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 17 separate duplicated blocks between them, totalling at least 215 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":586}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dd0b8dfd09ae1e98eca67e1570647e7a2a2494da4629bc914be0de3a2962841"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): dll/src/desktop/shell2/common/event.rs:8050-8058 | dll/src/desktop/shell2/common/event.rs:8119-8127 \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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":8050}}}],"partialFingerprints":{"codehealthFindingId/v1":"79db9d2984a2035ffd21b9ae6ad334273421f4ae862250d208af5bb525f55b9f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20139 lines \u00D7 2): dll/src/desktop/shell2/common/layout.rs:561-567 | dll/src/desktop/shell2/common/layout.rs:1135-1143 \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":"dll/src/desktop/shell2/common/layout.rs"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"69ef02b77c0aa939973609677b76bf9266e6476e5793cda1fa058ee1761c3e67"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): dll/src/desktop/shell2/ios/mod.rs:941-949 | dll/src/desktop/shell2/ios/mod.rs:967-975 \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":"dll/src/desktop/shell2/ios/mod.rs"},"region":{"startLine":941}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dd43b7812738b55c988403f4c1ae6df6b2d86b2b4a706dd944392c165fc4af2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/events.rs:1697-1705 | dll/src/desktop/shell2/linux/wayland/events.rs:1715-1723 \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":"dll/src/desktop/shell2/linux/wayland/events.rs"},"region":{"startLine":1697}}}],"partialFingerprints":{"codehealthFindingId/v1":"aecf2dbb10532a6bec1940416f19ce2b46dbabec2e8831ae2ea5db02320fe5d8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:2066-2074 | dll/src/desktop/shell2/linux/x11/mod.rs:3909-3917 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":2066}}}],"partialFingerprints":{"codehealthFindingId/v1":"94f270a9f24c7bbc0dfa99bf191e739057ef44c5e55516745f229efa7e715a75"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:5161-5169 | dll/src/desktop/shell2/linux/wayland/mod.rs:5237-5246 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":5161}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cdb94bdbc67a10bba29a071ab1e8f24ecd7f646192a362bccbd0449cd061618"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): dll/src/desktop/shell2/linux/x11/events.rs:765-773 | dll/src/desktop/shell2/macos/events.rs:394-402 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/x11/events.rs\u0060 and \u0060dll/src/desktop/shell2/macos/events.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 94 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/x11/events.rs"},"region":{"startLine":765}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9aea9b52e94b2f37cdc23717c7126767f4ba996634a7817a3f17a263a0704fa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): dll/src/desktop/shell2/linux/x11/mod.rs:946-954 | dll/src/desktop/shell2/linux/x11/mod.rs:999-1007 \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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":946}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb1ece3197bd76f8894bab88eaee8f84f8850d17273c23bd766cca28de7b1a56"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): dll/src/web/mod.rs:537-545 | dll/src/web/symbol_table.rs:1241-1249 \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":"dll/src/web/mod.rs"},"region":{"startLine":537}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d14ff3ec6c4bfbcb0bb887cea32d6429457a5c974d921ed9cde731343c407c9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): dll/src/desktop/compositor2.rs:1737-1745 | dll/src/desktop/compositor2.rs:1926-1934 \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":"dll/src/desktop/compositor2.rs"},"region":{"startLine":1737}}}],"partialFingerprints":{"codehealthFindingId/v1":"3753140bc2442cb1f8ea3bb1a69a29e041d2359724f1f89147672b01214e3680"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/autofix/diff.rs:946-954 | doc/src/autofix/diff.rs:958-966 \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":"doc/src/autofix/diff.rs"},"region":{"startLine":946}}}],"partialFingerprints":{"codehealthFindingId/v1":"761c546d8588adb677747cc6ef1d9c5b4c5c53a28b77c4a8820f7549ca713492"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/ir_builder.rs:1127-1135 | doc/src/codegen/v2/ir_builder.rs:1245-1253 \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":"doc/src/codegen/v2/ir_builder.rs"},"region":{"startLine":1127}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ca0bf0f8654ad186be74c4f3c017b1b2d79bf6a0988a07231754fc216a430f7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_c.rs:1141-1149 | doc/src/codegen/v2/lang_c.rs:1194-1202 \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":"doc/src/codegen/v2/lang_c.rs"},"region":{"startLine":1141}}}],"partialFingerprints":{"codehealthFindingId/v1":"3100306a116509a4e27433597c5cdcae504ce6014fa3f6c66672cf70fd6a60d3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (1\u20139 lines \u00D7 3): doc/src/codegen/v2/lang_crystal/model.rs:554-562 | doc/src/codegen/v2/lang_d/model.rs:860-868 | doc/src/codegen/v2/lang_swift/model.rs:861-861 \u2014 \u0060doc/src/codegen/v2/lang_crystal/model.rs\u0060 and \u0060doc/src/codegen/v2/lang_d/model.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 9 separate duplicated blocks between them, totalling at least 74 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/model.rs"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ba78d6d76ff4031cba90eb4933bb649509cbd666763d3c9bf1ea1313aa9cf42"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:424-432 | doc/src/codegen/v2/lang_swift/wrappers.rs:398-406 \u2014 \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 29 separate duplicated blocks between them, totalling at least 269 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":424}}}],"partialFingerprints":{"codehealthFindingId/v1":"f42d3cb4a62d522e17d79e4caaeeedf5d5e788b829ec857852e51b4f6890933c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:1234-1242 | doc/src/codegen/v2/lang_d/wrappers.rs:1471-1479 \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":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":1234}}}],"partialFingerprints":{"codehealthFindingId/v1":"061c3f6aac9178f19870b5471f0da021398f6dfe5cc37e8c9e6aee71636a9428"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_java/wrappers.rs:1743-1751 | doc/src/codegen/v2/lang_java/wrappers.rs:1784-1792 \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":"doc/src/codegen/v2/lang_java/wrappers.rs"},"region":{"startLine":1743}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e941e2d24de3ce8ff0681f0821742476fc22dc878a9713b9844d409e99f92ff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_kotlin/wrappers.rs:399-407 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:1981-1989 \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":"doc/src/codegen/v2/lang_kotlin/wrappers.rs"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"c48d08cd0f0beab985e8ba3f34ad754f503193e77f243c5cb53fd901f5cdf2db"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_lua/managed.rs:186-194 | doc/src/codegen/v2/lang_node/managed.rs:142-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":"doc/src/codegen/v2/lang_lua/managed.rs"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbe63ff003bd813720b8ffd422fed3315102a11788f292a27e2a8de98b60a976"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_node/mod.rs:974-982 | doc/src/codegen/v2/lang_ocaml/mod.rs:921-929 \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":"doc/src/codegen/v2/lang_node/mod.rs"},"region":{"startLine":974}}}],"partialFingerprints":{"codehealthFindingId/v1":"7870bebba597d114f48f8742b15dd706595322ba22a39bba57f3a34511362203"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_pascal/wrappers.rs:290-298 | doc/src/codegen/v2/lang_pascal/wrappers.rs:486-494 \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":"doc/src/codegen/v2/lang_pascal/wrappers.rs"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc97f32f4132737877789a5ad7f1ebbf747701b912243b6fe308bb536974b6be"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_reexports.rs:82-90 | doc/src/codegen/v2/lang_reexports.rs:94-102 \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":"doc/src/codegen/v2/lang_reexports.rs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0d842bdda5147826a791a999e21dbe171aff006e8a6d9fa77ec537f861396d0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_reexports.rs:110-118 | doc/src/codegen/v2/lang_reexports.rs:122-130 \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":"doc/src/codegen/v2/lang_reexports.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"48f7a6d388ca42765bd2bffe20a9795b9b5af668b33e4785eeb6a7f191a7b1ca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:2840-2848 | doc/src/codegen/v2/lang_rust.rs:3087-3095 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2840}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4874ae0397968d87e0c9405810051e683f424cef2219449325f4043c78d7bf0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_haskell/cshim.rs:487-495 | doc/src/codegen/v2/managed_host_invoker.rs:384-392 \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":"doc/src/codegen/v2/lang_haskell/cshim.rs"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"7505993b7e3747efe4886b2d5375e9f91efe28a65c2d487753ad165fdae54021"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/patch/mod.rs:377-386 | doc/src/patch/mod.rs:655-663 \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":"doc/src/patch/mod.rs"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8a1763547797d086b39295d958640db1904ed735ab33dea740bcf938174a042"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/patch/parser.rs:1013-1021 | doc/src/patch/parser.rs:1036-1044 \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":"doc/src/patch/parser.rs"},"region":{"startLine":1013}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d47e94b1f469be9bb37395a0a2ca5639d28ca53d40c563c770ddf4098ba939e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/reftest/apply_midlevel.rs:1846-1854 | doc/src/reftest/apply_midlevel.rs:3364-3372 \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":"doc/src/reftest/apply_midlevel.rs"},"region":{"startLine":1846}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a0695bc7d060bd0a9ba4161479c3b12e48e5a1a977d463ade4371dfd0fdb1ea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/reftest/mod.rs:434-442 | doc/src/reftest/mod.rs:477-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":"doc/src/reftest/mod.rs"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"c69efef6d61ed63191e3d3c4d9afc640fdd0da46e9ea26d8e6d172a8d1570fa2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): doc/src/reftest/mod.rs:782-789 | doc/src/reftest/mod.rs:827-835 \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":"doc/src/reftest/mod.rs"},"region":{"startLine":782}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1b66aa073e1e9d4a79d2408e4f198fc16e93f80dc0ccd755f3cd91615e447d8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): doc/src/reftest/regression.rs:721-728 | doc/src/reftest/regression.rs:2365-2373 \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":"doc/src/reftest/regression.rs"},"region":{"startLine":721}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b0728a7c994883447570943c1b6621eb1e5905f9550918ba5ac47f3d4875f2a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/reftest/regression.rs:1707-1715 | doc/src/reftest/regression.rs:1726-1734 \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":"doc/src/reftest/regression.rs"},"region":{"startLine":1707}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c03c81cc6cb450bba58a1cb7445cc2449776e713419b7e216d75a43aa1c38d9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_odin/types.rs:145-153 | doc/src/codegen/v2/lang_v/types.rs:150-158 \u2014 \u0060doc/src/codegen/v2/lang_odin/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_v/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 16 separate duplicated blocks between them, totalling at least 175 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_odin/types.rs"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"20b2810917e4129cd9f83bb0bea1e724ecf4f35f7bf37e2e6347140f60af9e16"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_odin/types.rs:271-279 | doc/src/codegen/v2/lang_v/types.rs:279-287 \u2014 \u0060doc/src/codegen/v2/lang_odin/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_v/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 16 separate duplicated blocks between them, totalling at least 175 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_odin/types.rs"},"region":{"startLine":271}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2499943779a8ba7218ab1dc07543c9e337a3e9d6c4b6c94719f93941bc06558"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): doc/src/codegen/v2/lang_ada/types.rs:424-431 | doc/src/codegen/v2/lang_ada/types.rs:504-512 \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":"doc/src/codegen/v2/lang_ada/types.rs"},"region":{"startLine":424}}}],"partialFingerprints":{"codehealthFindingId/v1":"91cdf205a5fad972ab147700261c1458beed785703991dc89facb297ce184daa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_lisp/types.rs:165-173 | doc/src/codegen/v2/lang_lisp/types.rs:223-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":"doc/src/codegen/v2/lang_lisp/types.rs"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c50ee24c69d4b0a61f68741f31334e7e3fdd285b22ea3aeea892e9f2b75be4c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_perl/types.rs:212-220 | doc/src/codegen/v2/lang_perl/types.rs:353-370 \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":"doc/src/codegen/v2/lang_perl/types.rs"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ec3c04a9bdf625434f52f57943aa3007bde2a49f332c0cfefa3101e1c4e8dbb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): doc/src/codegen/v2/lang_fortran/types.rs:628-636 | doc/src/codegen/v2/lang_fortran/types.rs:789-796 \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":"doc/src/codegen/v2/lang_fortran/types.rs"},"region":{"startLine":628}}}],"partialFingerprints":{"codehealthFindingId/v1":"b47e0ab1bff8df90b20cb3ccd431eb04c32e32e18983fac459164938de41c5f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_java/types.rs:234-242 | doc/src/codegen/v2/lang_java/types.rs:495-503 \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":"doc/src/codegen/v2/lang_java/types.rs"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3db854de8b447048cb551a51425ca180d2d0b273f91cde6eada1a483e258469"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): doc/src/codegen/v2/lang_freebasic/types.rs:150-157 | doc/src/codegen/v2/lang_vb6/types.rs:167-175 \u2014 \u0060doc/src/codegen/v2/lang_freebasic/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_vb6/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 8 separate duplicated blocks between them, totalling at least 109 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_freebasic/types.rs"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c79d81444ce396ab6a09f2dae2d737104d03dedf148f002ddb7e03b99639cc6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_freebasic/types.rs:296-304 | doc/src/codegen/v2/lang_vb6/types.rs:288-296 \u2014 \u0060doc/src/codegen/v2/lang_freebasic/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_vb6/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 8 separate duplicated blocks between them, totalling at least 109 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_freebasic/types.rs"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6d76519ec1918e7d9ea55cd544b98921d9890466e4826bf6bb18db28b5efa09"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_cpp/common.rs:478-486 | doc/src/codegen/v2/lang_cpp/common.rs:536-544 \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":"doc/src/codegen/v2/lang_cpp/common.rs"},"region":{"startLine":478}}}],"partialFingerprints":{"codehealthFindingId/v1":"03c8228f15e7853f18078b0b3780c1759762aa141d81193763543a038c3b1540"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): layout/src/cpurender/compositor.rs:3288-3296 | layout/src/cpurender/compositor.rs:3297-3305 \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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":3288}}}],"partialFingerprints":{"codehealthFindingId/v1":"91d2016fc862abaae7c92dc6a782fd848fad03d9c254209bae484681bfcb1899"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20139 lines \u00D7 2): layout/src/cpurender/svg.rs:61-69 | layout/src/cpurender/svg.rs:126-132 \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":"layout/src/cpurender/svg.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"64cccf3d9a8144fb0f36a1326a281fcfafa9ee0ed702a3e78bc9107d3d6fe722"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): layout/src/document_edit.rs:394-402 | layout/src/document_edit.rs:410-418 \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":"layout/src/document_edit.rs"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5e416f538af60f9de26d982f43ecb80f7a4bd1e374b63e77f2dd59ad681c622"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): layout/src/dom_lint.rs:772-780 | layout/src/dom_lint.rs:859-867 \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":"layout/src/dom_lint.rs"},"region":{"startLine":772}}}],"partialFingerprints":{"codehealthFindingId/v1":"89c971681b87394e227525ffcaf32fbf195b12760c6c0675ded091e7e3bfd60c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): layout/src/managers/gpu_state.rs:492-500 | layout/src/managers/mod.rs:186-194 \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":"layout/src/managers/gpu_state.rs"},"region":{"startLine":492}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e3565393e9978ed6bd216da03f53bc7454f4cdac8f9fbd1c9854199eabbab64"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): layout/src/managers/scroll_state.rs:989-997 | layout/src/managers/scroll_state.rs:1014-1022 \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":"layout/src/managers/scroll_state.rs"},"region":{"startLine":989}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c1e201ecee77a71b53888aabf69546e000525bdb425da14479a5f3c68fc05c6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): layout/src/solver3/display_list.rs:6968-6976 | layout/src/solver3/getters.rs:6834-6842 \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":"layout/src/solver3/display_list.rs"},"region":{"startLine":6968}}}],"partialFingerprints":{"codehealthFindingId/v1":"c42f16fffc6787c81f5da4d6c910605e8f370ca51725520fb989a440a8b1a8cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): layout/src/solver3/display_list.rs:7457-7465 | layout/src/solver3/display_list.rs:7556-7564 \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":"layout/src/solver3/display_list.rs"},"region":{"startLine":7457}}}],"partialFingerprints":{"codehealthFindingId/v1":"4676cd7af96298ae872334cd26d42a4526e669d6e0c1bf3a40cfdee338cd3313"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): layout/src/solver3/getters.rs:3329-3337 | layout/src/solver3/getters.rs:3354-3362 \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":"layout/src/solver3/getters.rs"},"region":{"startLine":3329}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e5aa90671154da979cc0bbfe33bb6427673d676f1c190f1c1f12ccd770c160e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): layout/src/solver3/taffy_bridge.rs:840-848 | layout/src/solver3/taffy_bridge.rs:857-865 \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":"layout/src/solver3/taffy_bridge.rs"},"region":{"startLine":840}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb7b6c4a3cbdef03d552c4499c1940a3e8db1dff4d5b37f8f8b0a912906b9ba9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): layout/src/text3/cache.rs:10198-10207 | layout/src/text3/cache.rs:10259-10267 \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":"layout/src/text3/cache.rs"},"region":{"startLine":10198}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6ff2471d3fb2d439663a9ecd7268d39765ce225d632932e47c94d0a0c133cc0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): layout/src/widgets/alert.rs:257-265 | layout/src/widgets/toast.rs:280-288 \u2014 before extracting anything, compare \u0060layout/src/widgets/alert.rs\u0060 and \u0060layout/src/widgets/toast.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 122 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":"layout/src/widgets/alert.rs"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"31dbae683058195621ec50e6e8abda2f1558e950707d4e891228e04567e9121c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): layout/src/widgets/pagination.rs:517-526 | layout/src/widgets/stepper.rs:584-592 \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":"layout/src/widgets/pagination.rs"},"region":{"startLine":517}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c7a8be7ff48af7ca578ba61c1920a7182df40abce35e95f209b86c3d0bda88a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): layout/src/widgets/ribbon.rs:1080-1088 | layout/src/widgets/ribbon.rs:1210-1218 \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":"layout/src/widgets/ribbon.rs"},"region":{"startLine":1080}}}],"partialFingerprints":{"codehealthFindingId/v1":"39e9a4b4de35be9c5e1ec7e97433a0fdf0d3961cdcad250e0caf43da1b3dd15c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): layout/src/window.rs:3867-3875 | layout/src/window.rs:3890-3898 \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":"layout/src/window.rs"},"region":{"startLine":3867}}}],"partialFingerprints":{"codehealthFindingId/v1":"67908ce32ddaf0e0bcbf5f832a0a0ad49c67c7a6c1dc9400d843c3fe4ce5ed8b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): layout/src/window.rs:12503-12511 | layout/src/window.rs:18992-19000 \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":"layout/src/window.rs"},"region":{"startLine":12503}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4699dacfe7d3e75c4beb8f5302e8c5b3435fc1ee19c63605465e1e9581379a1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): layout/src/window.rs:17410-17418 | layout/src/window.rs:17427-17435 \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":"layout/src/window.rs"},"region":{"startLine":17410}}}],"partialFingerprints":{"codehealthFindingId/v1":"0701afd8be3c654c2cb1dd8154654dcdab56d91e27165b7bf5d10af440661f8e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): layout/src/window.rs:18083-18091 | layout/src/window.rs:18093-18101 \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":"layout/src/window.rs"},"region":{"startLine":18083}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d2de1be80eda8a4bbebeb45b60af776c80666a5cad470861b62b586f4059746"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): layout/src/window.rs:25084-25092 | layout/src/window.rs:25301-25309 \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":"layout/src/window.rs"},"region":{"startLine":25084}}}],"partialFingerprints":{"codehealthFindingId/v1":"25e4ea0f8fd4a93e9c009d9bd3e1fe1b239ddc5dc7b2aecd1e338720e8cf5680"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): layout/src/xml/mod.rs:389-396 | layout/src/xml/mod.rs:943-951 \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":"layout/src/xml/mod.rs"},"region":{"startLine":389}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dff4a555f27747c3d822207d83d971771b5423aae40701404bdda093b8dd171"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): layout/src/xml/svg.rs:1962-1970 | layout/src/xml/svg.rs:1984-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":"layout/src/xml/svg.rs"},"region":{"startLine":1962}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8f0ce10681a1c98e92f82bc6c1adcea8f2f1b3873f92d73f000c772b2f24010"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): layout/src/zip.rs:276-284 | layout/src/zip.rs:368-376 \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":"layout/src/zip.rs"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"52f9e85bcb466b3c38d7bdbdd7045ba2999f7523643295d1a181ffb4de97b50e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): layout/src/widgets/themes/flat.rs:717-726 | layout/src/widgets/themes/flora.rs:978-986 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":717}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7f3256e9114173b07efe579fc7da33472cea4e6ff55b57eb598c2d1670776cf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): layout/src/widgets/themes/flat.rs:993-1001 | layout/src/widgets/themes/flora.rs:1265-1273 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":993}}}],"partialFingerprints":{"codehealthFindingId/v1":"9166d478b62e71c318a498c425eaa162dc9b7fe804eb230f27c103570fdb3429"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 16): dll/src/desktop/shell2/linux/wayland/defines.rs:752-758 | dll/src/desktop/shell2/linux/wayland/defines.rs:793-799 | dll/src/desktop/shell2/linux/wayland/defines.rs:840-846 | dll/src/desktop/shell2/linux/wayland/defines.rs:881-887 | dll/src/desktop/shell2/linux/wayland/defines.rs:933-939 | dll/src/desktop/shell2/linux/wayland/defines.rs:1000-1006 | dll/src/desktop/shell2/linux/wayland/defines.rs:1078-1084 | dll/src/desktop/shell2/linux/wayland/defines.rs:1116-1122 | dll/src/desktop/shell2/linux/wayland/defines.rs:1157-1163 | dll/src/desktop/shell2/linux/wayland/defines.rs:1199-1205 | dll/src/desktop/shell2/linux/wayland/defines.rs:1251-1257 | dll/src/desktop/shell2/linux/wayland/defines.rs:1308-1314 | dll/src/desktop/shell2/linux/wayland/defines.rs:1365-1371 | dll/src/desktop/shell2/linux/wayland/defines.rs:1484-1490 | dll/src/desktop/shell2/linux/wayland/defines.rs:1538-1545 | dll/src/desktop/shell2/linux/wayland/defines.rs:1642-1648 \u2014 all 16 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":"dll/src/desktop/shell2/linux/wayland/defines.rs"},"region":{"startLine":752}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7d64f23e5db4662088420abac5985a4f65173d1bb32e33d8066ffd605fb317c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 15): css/src/system.rs:2230-2236 | css/src/system.rs:2282-2288 | css/src/system.rs:2334-2340 | css/src/system.rs:2386-2392 | css/src/system.rs:2441-2447 | css/src/system.rs:2499-2505 | css/src/system.rs:2548-2554 | css/src/system.rs:2598-2604 | css/src/system.rs:2648-2654 | css/src/system.rs:2697-2703 | css/src/system.rs:2776-2783 | css/src/system.rs:2849-2855 | css/src/system.rs:2904-2910 | css/src/system.rs:2953-2959 | css/src/system.rs:3002-3008 \u2014 all 15 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":"css/src/system.rs"},"region":{"startLine":2230}}}],"partialFingerprints":{"codehealthFindingId/v1":"81acf2393dae04daf13478dc566785785108c74f1631ff55a28f932a00c179bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6\u20138 lines \u00D7 11): doc/src/codegen/v2/lang_ada/mod.rs:222-227 | doc/src/codegen/v2/lang_algol68/mod.rs:381-386 | doc/src/codegen/v2/lang_cobol/types.rs:560-565 | doc/src/codegen/v2/lang_freebasic/mod.rs:173-178 | doc/src/codegen/v2/lang_haskell/types.rs:1115-1120 | doc/src/codegen/v2/lang_nim/mod.rs:200-205 | doc/src/codegen/v2/lang_nim/mod.rs:223-228 | doc/src/codegen/v2/lang_ocaml/mod.rs:933-938 | doc/src/codegen/v2/lang_pascal/mod.rs:294-299 | doc/src/codegen/v2/lang_smalltalk/mod.rs:183-190 | doc/src/codegen/v2/lang_vb6/mod.rs:249-254 \u2014 \u0060doc/src/codegen/v2/lang_freebasic/mod.rs\u0060 and \u0060doc/src/codegen/v2/lang_nim/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 5 separate duplicated blocks between them, totalling at least 66 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_ada/mod.rs"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"36badac637a47173cb631966fefa0509f19e2bb6cc22ee115fa0915ad2823fd5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 5): core/src/resources.rs:2649-2656 | core/src/resources.rs:2710-2717 | core/src/resources.rs:2762-2769 | core/src/resources.rs:2841-2848 | core/src/resources.rs:2909-2916 \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":"core/src/resources.rs"},"region":{"startLine":2649}}}],"partialFingerprints":{"codehealthFindingId/v1":"a974f832dd7e990812f6080035b744c86144f5d61bb7b280703156f7577b26d5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 5): dll/src/desktop/shell2/linux/wayland/defines.rs:2067-2074 | dll/src/desktop/shell2/linux/wayland/defines.rs:2199-2206 | dll/src/desktop/shell2/linux/wayland/defines.rs:2381-2388 | dll/src/desktop/shell2/linux/wayland/defines.rs:2891-2898 | dll/src/desktop/shell2/linux/wayland/defines.rs:3058-3065 \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":"dll/src/desktop/shell2/linux/wayland/defines.rs"},"region":{"startLine":2067}}}],"partialFingerprints":{"codehealthFindingId/v1":"57eff7d62a8741085c99a17732073ab9564171658b9052b11975f3afb3237e38"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 4): dll/src/desktop/shell2/linux/x11/mod.rs:5922-5929 | dll/src/desktop/shell2/linux/x11/mod.rs:5962-5969 | dll/src/desktop/shell2/linux/x11/mod.rs:7382-7388 | dll/src/desktop/shell2/linux/x11/mod.rs:8440-8446 \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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":5922}}}],"partialFingerprints":{"codehealthFindingId/v1":"045a2d86816036eb610504facd94d0d844e5d9d4e84e68a747419016fa93b25d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): dll/src/desktop/shell2/common/debug_server/platform.rs:187-194 | dll/src/desktop/shell2/common/debug_server/platform.rs:399-406 | dll/src/desktop/shell2/common/debug_server/platform.rs:432-439 | dll/src/desktop/shell2/common/debug_server/platform.rs:458-465 \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":"dll/src/desktop/shell2/common/debug_server/platform.rs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2e6404e9cec7ca2e2edeb67eeb73bdbef67c8f6df3cb6fe05e9bb854b14db7c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5\u20138 lines \u00D7 4): doc/src/autofix/mod.rs:3145-3149 | doc/src/autofix/mod.rs:3168-3175 | doc/src/autofix/mod.rs:3198-3205 | doc/src/autofix/mod.rs:3227-3234 \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":"doc/src/autofix/mod.rs"},"region":{"startLine":3145}}}],"partialFingerprints":{"codehealthFindingId/v1":"1814b474072c44778ad400c9a7d92a96cc352f03976afea03f1130bc6e9bee3a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): doc/src/autofix/type_index.rs:2266-2273 | doc/src/autofix/type_index.rs:2313-2320 | doc/src/autofix/type_index.rs:2368-2375 | doc/src/autofix/type_index.rs:2414-2421 \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":"doc/src/autofix/type_index.rs"},"region":{"startLine":2266}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e06fb5926c7d591c69d13906b0f7e36619e78464d8b3fb299c2ed3961e35bbc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): doc/src/codegen/v2/lang_cpp/cpp03.rs:338-345 | doc/src/codegen/v2/lang_cpp/cpp11.rs:245-252 | doc/src/codegen/v2/lang_cpp/cpp17.rs:402-409 | doc/src/codegen/v2/lang_cpp/cpp20.rs:1079-1086 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":338}}}],"partialFingerprints":{"codehealthFindingId/v1":"b017417fcbeb07e22ccb1dba9fce142ab85f5ad3533e6463a4fe163d652fe9a3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): layout/src/widgets/themes/flat.rs:906-913 | layout/src/widgets/themes/flat.rs:1581-1588 | layout/src/widgets/themes/flora.rs:1178-1185 | layout/src/widgets/themes/flora.rs:2000-2007 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":906}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b19d113c6e9f39007c437073ee00908f209edc5dd61c8de1bad1016bd3baa6e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 3): dll/src/desktop/shell2/android/mod.rs:2393-2399 | dll/src/desktop/shell2/android/mod.rs:2455-2461 | dll/src/desktop/shell2/android/mod.rs:3110-3117 \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":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":2393}}}],"partialFingerprints":{"codehealthFindingId/v1":"c05b2695c0207a8777e0df6ed77212cda6d6573b9f80a30ccf74b317221f3f68"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): dll/src/desktop/shell2/linux/wayland/mod.rs:5163-5170 | dll/src/desktop/shell2/linux/wayland/mod.rs:5240-5247 | dll/src/desktop/shell2/linux/x11/mod.rs:4818-4825 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":5163}}}],"partialFingerprints":{"codehealthFindingId/v1":"6edcd68ee4e22874f1518aced1ef44f20ea8d04e31e06b751a1a1cf4b7da121d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): dll/src/desktop/tray/linux.rs:480-487 | dll/src/desktop/tray/linux.rs:634-641 | dll/src/desktop/tray/linux.rs:838-845 \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":"dll/src/desktop/tray/linux.rs"},"region":{"startLine":480}}}],"partialFingerprints":{"codehealthFindingId/v1":"406b49b0dbd2e7238ac9468ea671e0add25dbabdf08fd324fb04a32f6c3e3835"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): doc/src/codegen/v2/lang_crystal/model.rs:520-527 | doc/src/codegen/v2/lang_d/model.rs:816-823 | doc/src/codegen/v2/lang_swift/model.rs:822-829 \u2014 \u0060doc/src/codegen/v2/lang_crystal/model.rs\u0060 and \u0060doc/src/codegen/v2/lang_d/model.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 9 separate duplicated blocks between them, totalling at least 74 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/model.rs"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"64491bb3e00c1e8d103c9642af2581096eff7d164e1dd120f1562bf6415bb84b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): doc/src/codegen/v2/lang_crystal/wrappers.rs:1037-1044 | doc/src/codegen/v2/lang_d/wrappers.rs:1743-1750 | doc/src/codegen/v2/lang_swift/wrappers.rs:1719-1726 \u2014 \u0060doc/src/codegen/v2/lang_crystal/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 6 separate duplicated blocks between them, totalling at least 51 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/wrappers.rs"},"region":{"startLine":1037}}}],"partialFingerprints":{"codehealthFindingId/v1":"456506191040b1ecca9f07d7da33f46d641fefaec25399286da8a2cfcc80ffb1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): doc/src/codegen/v2/lang_rust.rs:4666-4673 | doc/src/codegen/v2/lang_rust.rs:4702-4709 | doc/src/codegen/v2/lang_rust.rs:4734-4741 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":4666}}}],"partialFingerprints":{"codehealthFindingId/v1":"64474b083825e7b759f8caf6e1a4544192b15f650310c6fac7e8c68baa90993c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): doc/src/codegen/v2/lang_java/types.rs:139-146 | doc/src/codegen/v2/lang_java/types.rs:181-188 | doc/src/codegen/v2/lang_java/types.rs:277-284 \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":"doc/src/codegen/v2/lang_java/types.rs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"613741e9b4bcb64094465c7aa2f452a1d780beaf5faabf85698c6b4935422299"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): layout/src/cpurender/pixmap.rs:1325-1332 | layout/src/cpurender/pixmap.rs:1435-1442 | layout/src/cpurender/raster.rs:3842-3849 \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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":1325}}}],"partialFingerprints":{"codehealthFindingId/v1":"688cb299e1e999935cc89df5a0eb141bf99d48b8371ccdcaab63b7193f81cde1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): layout/src/dom_lint.rs:775-782 | layout/src/dom_lint.rs:862-869 | layout/src/dom_lint.rs:1167-1174 \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":"layout/src/dom_lint.rs"},"region":{"startLine":775}}}],"partialFingerprints":{"codehealthFindingId/v1":"685bd9adf94c62e146b0d956b532abba9fb09f57a9db96cd722428d3ff86a860"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): layout/src/solver3/display_list.rs:1030-1037 | layout/src/solver3/display_list.rs:1076-1083 | layout/src/solver3/display_list.rs:1140-1147 \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":"layout/src/solver3/display_list.rs"},"region":{"startLine":1030}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7c0e2bb10698d320f58c8b67e2422b688c6c9fc5ce079729253970f30adeef3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): layout/src/solver3/fc.rs:8890-8897 | layout/src/solver3/fc.rs:9421-9431 | layout/src/solver3/fc.rs:9965-9972 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":8890}}}],"partialFingerprints":{"codehealthFindingId/v1":"83ff34cc6788b6f3b19837ee4a89fed8c37d1e1d2c2da484421f08f326f4933e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): layout/src/widgets/node_graph.rs:1482-1489 | layout/src/widgets/node_graph.rs:1791-1798 | layout/src/widgets/node_graph.rs:1818-1825 \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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":1482}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6bc983b75c8e451a1493d37db8ac60d4ceac10c457786f4f1bee5e7998f665f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): core/src/gl.rs:3504-3511 | core/src/gl.rs:3711-3718 \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":"core/src/gl.rs"},"region":{"startLine":3504}}}],"partialFingerprints":{"codehealthFindingId/v1":"2aa25f72e3e0ec9ad8a42f42791729d9921b4106473e54d366225b4c559c65ed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): core/src/resources.rs:1154-1161 | core/src/resources.rs:1188-1195 \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":"core/src/resources.rs"},"region":{"startLine":1154}}}],"partialFingerprints":{"codehealthFindingId/v1":"59630cfb864ded58c0d0107023476b6a90e9febe71f43a2f6710cc4ff64acf4e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 2): core/src/resources.rs:2674-2680 | core/src/resources.rs:2683-2690 \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":"core/src/resources.rs"},"region":{"startLine":2674}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ac4655809d6008aa7c5ff851780da7d72ce2c451738e9394087b264d3b77767"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): css/src/props/style/transform.rs:957-964 | css/src/props/style/transform.rs:994-1001 \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":"css/src/props/style/transform.rs"},"region":{"startLine":957}}}],"partialFingerprints":{"codehealthFindingId/v1":"c405c0ec59f16e9ee0077a1a11071045c9e25a03a1e19821edf99112826e6df5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/desktop/extra/capability.rs:224-231 | dll/src/desktop/extra/capability.rs:244-251 \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":"dll/src/desktop/extra/capability.rs"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5ff8a6e7a07eb0d94c745594caa13a5cbde74ec719ed1d633f10ce772c5ceea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/desktop/extra/pdf/mod.rs:188-195 | dll/src/desktop/extra/pdf/mod.rs:238-245 \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":"dll/src/desktop/extra/pdf/mod.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"a618bae9505d412355ad0d844950dfb422187de2e423dfacbc3d30dc73e057a1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/desktop/shell2/android/mod.rs:366-373 | dll/src/desktop/shell2/android/mod.rs:394-401 \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":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"85522f637a8d9da4606df04f192a55c8760606863e165d4b78c573818f48c133"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/desktop/shell2/android/mod.rs:1188-1195 | dll/src/desktop/shell2/android/mod.rs:1222-1229 \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":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":1188}}}],"partialFingerprints":{"codehealthFindingId/v1":"98b93a13cd15421ec13b40bb1774a39b2189783ab6eb5db32c9b4ff7ac67f7e4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/desktop/shell2/android/mod.rs:2717-2724 | dll/src/desktop/shell2/android/mod.rs:3015-3022 \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":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":2717}}}],"partialFingerprints":{"codehealthFindingId/v1":"6335c609c60be4a65ea2ba245e17be824214d3d130d60cf14bf4a3a249fda70f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/desktop/shell2/common/event.rs:522-529 | layout/src/window.rs:20057-20064 \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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":522}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d272de4764a74ac6d134857b34c94571ed39c8751ac0ff548f8debbbf905c6a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 2): dll/src/desktop/shell2/common/event.rs:2362-2369 | dll/src/desktop/shell2/linux/x11/mod.rs:8253-8259 \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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":2362}}}],"partialFingerprints":{"codehealthFindingId/v1":"4aa6051cf344fc886e7f62a5406a46b6667c7b178fe38ac518e06de0e282b1d3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/desktop/shell2/common/event.rs:6321-6328 | dll/src/desktop/shell2/common/event.rs:6334-6341 \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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":6321}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8e9e888a5cb4d70928b654d39adef9e18e471a22c8f3c07f2ad7f7e2f329df2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/desktop/shell2/common/event.rs:6742-6749 | dll/src/desktop/shell2/common/event.rs:6929-6936 \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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":6742}}}],"partialFingerprints":{"codehealthFindingId/v1":"8eaaf01ce6af59c214d78277246ee49911ab3cd59b5f086f1b9740f1338ad443"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/desktop/shell2/ios/text_input.rs:730-737 | dll/src/desktop/shell2/ios/text_input.rs:762-769 \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":"dll/src/desktop/shell2/ios/text_input.rs"},"region":{"startLine":730}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe5e1aeff5a0dd07c49659964d70d466d4e0482c98fd6184907f2b62e87d8f92"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/gl.rs:382-388 | dll/src/desktop/shell2/linux/x11/gl.rs:366-373 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/gl.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/gl.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 133 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/gl.rs"},"region":{"startLine":382}}}],"partialFingerprints":{"codehealthFindingId/v1":"3502848895094a62b5bf7392006a0a83039cff3b563b8ac555d32fd0a80ad948"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:1673-1680 | dll/src/desktop/shell2/linux/wayland/mod.rs:10146-10153 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":1673}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0f0299db244e340c97af779ac7e2831df76bbceff10fd688f600f7e99196383"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:7969-7976 | dll/src/desktop/shell2/linux/wayland/mod.rs:7986-7993 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":7969}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d9859c3c38c48957c7f5feec34ae8a160df67d2807004d22d74d4c0c1de0234"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:10576-10583 | dll/src/desktop/shell2/linux/wayland/mod.rs:10608-10615 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":10576}}}],"partialFingerprints":{"codehealthFindingId/v1":"399cdceb1d9b0ab6be208652bae37f155c874df3c532189db91bcaf2487236c2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/desktop/shell2/linux/x11/mod.rs:4258-4265 | dll/src/desktop/shell2/windows/mod.rs:7677-7684 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 and \u0060dll/src/desktop/shell2/windows/mod.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 443 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":4258}}}],"partialFingerprints":{"codehealthFindingId/v1":"3da42d3798e37dd86ffd02ce40d255c0004971bedaf035253da477e7267b9a65"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/desktop/shell2/linux/x11/mod.rs:4271-4278 | dll/src/desktop/shell2/windows/mod.rs:7689-7696 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 and \u0060dll/src/desktop/shell2/windows/mod.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 443 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":4271}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b36e0ac256a3a4f827e63b35d066801e1034d77376ecc316b8c5325ca0d2fe1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/desktop/shell2/linux/x11/mod.rs:8360-8367 | dll/src/desktop/shell2/linux/x11/mod.rs:8389-8396 \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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":8360}}}],"partialFingerprints":{"codehealthFindingId/v1":"50a9e10fc5fb07f2974c5ad1b0db1a1078f400063672be3925fe238bc3cd8db8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/desktop/shell2/macos/mod.rs:560-567 | dll/src/desktop/shell2/macos/mod.rs:597-604 \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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":560}}}],"partialFingerprints":{"codehealthFindingId/v1":"32555737e67678ebe09253197f8f367d0c68226f35e86bbf8059ac4ce29a6597"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/desktop/shell2/macos/mod.rs:2597-2604 | dll/src/desktop/shell2/macos/mod.rs:2620-2627 \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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":2597}}}],"partialFingerprints":{"codehealthFindingId/v1":"31a437191531754124fd9863c9bd3a3718e4f85f7b8e398a31bd1b86bc52409a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/desktop/shell2/windows/mod.rs:3618-3625 | dll/src/desktop/shell2/windows/mod.rs:3661-3668 \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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":3618}}}],"partialFingerprints":{"codehealthFindingId/v1":"621553d99bdf7f59cf988475fdeabbfbfd291b630c385968bbcc4560b03c3710"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/web/server.rs:872-879 | dll/src/web/server.rs:888-895 \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":"dll/src/web/server.rs"},"region":{"startLine":872}}}],"partialFingerprints":{"codehealthFindingId/v1":"ead3d5b8ee8dce10d02e8099bada33f0b0b8609ec47486fdebfe3d3cff7c8e97"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/web/symbol_table.rs:2694-2701 | dll/src/web/symbol_table.rs:2786-2802 \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":"dll/src/web/symbol_table.rs"},"region":{"startLine":2694}}}],"partialFingerprints":{"codehealthFindingId/v1":"57c2b2d8324eb662bd511f8e4eafaaadb1413adaa2f1c65f4989e74de0427dd2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/web/transpiler_remill.rs:1434-1441 | dll/src/web/transpiler_remill.rs:6748-6755 \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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":1434}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f38c475d7281a6e2b6584d3346215f480fd87537b25b53de9b50674637b09df"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 2): dll/src/desktop/extra/permission/linux.rs:151-158 | dll/src/desktop/eyedropper/wayland.rs:102-108 \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":"dll/src/desktop/extra/permission/linux.rs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"58f9aad92b1eefaa4e1ce62f913d2d58364beed7dd35c76c215146022674f87e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/desktop/extra/permission/ios.rs:40-50 | dll/src/desktop/extra/permission/macos.rs:97-104 \u2014 before extracting anything, compare \u0060dll/src/desktop/extra/permission/ios.rs\u0060 and \u0060dll/src/desktop/extra/permission/macos.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 100 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":"dll/src/desktop/extra/permission/ios.rs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a6bfe7d85159e79b194b80a7279ca05fac548b76f0ff10b1146e28971b01c3d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/desktop/compositor2.rs:1728-1735 | dll/src/desktop/compositor2.rs:1917-1924 \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":"dll/src/desktop/compositor2.rs"},"region":{"startLine":1728}}}],"partialFingerprints":{"codehealthFindingId/v1":"035a1a6b33ef920f4f11a263de411a13279df4960de0a4105bd2d841a0119c95"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/api.rs:98-105 | doc/src/api.rs:148-155 \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":"doc/src/api.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"a11764bd981368b4fa91d753955bedb9d601ae7822275cf17eabc84cbe870cc9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/api.rs:2647-2654 | doc/src/api.rs:2744-2751 \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":"doc/src/api.rs"},"region":{"startLine":2647}}}],"partialFingerprints":{"codehealthFindingId/v1":"5be64e01799c676c16641391bd7c621e59c78daf4df4b610f18bbc1fa034af22"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/autofix/diff.rs:587-594 | doc/src/autofix/diff.rs:2212-2219 \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":"doc/src/autofix/diff.rs"},"region":{"startLine":587}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5b1042d851049d8ac79c6c860be9ff22573ad966b7f9679183cdee9179dd690"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/autofix/diff.rs:604-611 | doc/src/autofix/diff.rs:2225-2232 \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":"doc/src/autofix/diff.rs"},"region":{"startLine":604}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdfb0d932cffc7ca157cb5f6faa606ecf59e387c935682dee7be903d84ef60fc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/autofix/type_index.rs:1031-1038 | doc/src/patch/index.rs:667-674 \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":"doc/src/autofix/type_index.rs"},"region":{"startLine":1031}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fac2abc0f22298fde5d13706c1c30181d28fbdbd077fa3b494d825290cdcce7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/autofix/type_index.rs:2082-2089 | doc/src/autofix/type_index.rs:2160-2167 \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":"doc/src/autofix/type_index.rs"},"region":{"startLine":2082}}}],"partialFingerprints":{"codehealthFindingId/v1":"9574d53134db753897d84214b6e535719b03aa5c5f2350467e6343111e3fd77f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 2): doc/src/codegen/v2/lang_c.rs:920-926 | doc/src/codegen/v2/lang_c.rs:1007-1014 \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":"doc/src/codegen/v2/lang_c.rs"},"region":{"startLine":920}}}],"partialFingerprints":{"codehealthFindingId/v1":"6615204dda21ffc3856a7ce501a2563e2b3611ce042cfedc8ea9694cfe76ee18"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6\u20138 lines \u00D7 2): doc/src/codegen/v2/lang_crystal/model.rs:302-307 | doc/src/codegen/v2/lang_swift/model.rs:374-381 \u2014 \u0060doc/src/codegen/v2/lang_crystal/model.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/model.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 10 separate duplicated blocks between them, totalling at least 85 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/model.rs"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"080c74a26d5e1b58a6b50e949568d27f2cc28b2735ef263040e9bcc14d30d6fe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_crystal/wrappers.rs:1553-1562 | doc/src/codegen/v2/lang_pascal/managed.rs:274-281 \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":"doc/src/codegen/v2/lang_crystal/wrappers.rs"},"region":{"startLine":1553}}}],"partialFingerprints":{"codehealthFindingId/v1":"b691d6695d3d6371a98231e29ff90ea9c00d5c8c1252694098d9e82b32a5eeb0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_csharp/wrappers.rs:1649-1659 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:1848-1855 \u2014 \u0060doc/src/codegen/v2/lang_csharp/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_kotlin/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 13 separate duplicated blocks between them, totalling at least 142 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":1649}}}],"partialFingerprints":{"codehealthFindingId/v1":"5523479432beba6bc524e0bbd56444834485a82a8663a722e3fa0d4b17c07bf7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_d/model.rs:862-869 | doc/src/codegen/v2/lang_swift/model.rs:863-870 \u2014 \u0060doc/src/codegen/v2/lang_d/model.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/model.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 20 separate duplicated blocks between them, totalling at least 209 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/model.rs"},"region":{"startLine":862}}}],"partialFingerprints":{"codehealthFindingId/v1":"932a48e3b621fb9b6c871a1aaa98849b68c7b77463dae4611fbca84472abd7d8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_d/model.rs:966-973 | doc/src/codegen/v2/lang_swift/model.rs:995-1002 \u2014 \u0060doc/src/codegen/v2/lang_d/model.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/model.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 20 separate duplicated blocks between them, totalling at least 209 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/model.rs"},"region":{"startLine":966}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7819b0d5c579ec20466441528058a29ea124d9d3f3b9131d15a4ae634e40e00"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:2153-2160 | doc/src/codegen/v2/lang_swift/wrappers.rs:2111-2118 \u2014 \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 29 separate duplicated blocks between them, totalling at least 269 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":2153}}}],"partialFingerprints":{"codehealthFindingId/v1":"f88680e52018309854180e662f663c97798e1a16e5e0cd63ecfe7cfcc83acb4f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_haskell/functions.rs:565-572 | doc/src/codegen/v2/lang_haskell/functions.rs:627-634 \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":"doc/src/codegen/v2/lang_haskell/functions.rs"},"region":{"startLine":565}}}],"partialFingerprints":{"codehealthFindingId/v1":"89e973f3b491ce7c72c07fb5332eea69b242d71fc14d865003131c05c7596291"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_haskell/types.rs:353-360 | doc/src/codegen/v2/lang_haskell/types.rs:981-988 \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":"doc/src/codegen/v2/lang_haskell/types.rs"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5973205aa8e447a96fb3547f6cb13c6acb90c45cf217b27f3b83e9e5c9703c4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_java/managed.rs:955-962 | doc/src/codegen/v2/lang_lua/managed.rs:173-180 \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":"doc/src/codegen/v2/lang_java/managed.rs"},"region":{"startLine":955}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3d5b6f620e4d6c4fed4be1d6e1b2518551595bf9868990d90919b7daf063aad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_node/wrappers.rs:421-429 | doc/src/codegen/v2/lang_php/wrappers.rs:112-119 \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":"doc/src/codegen/v2/lang_node/wrappers.rs"},"region":{"startLine":421}}}],"partialFingerprints":{"codehealthFindingId/v1":"747ccf2d7a2fa5080e260cb4c581a86d8deabfcf85a415965c5a1b7a7de774f0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_ocaml/wrappers.rs:1584-1591 | doc/src/codegen/v2/lang_ocaml/wrappers.rs:1688-1695 \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":"doc/src/codegen/v2/lang_ocaml/wrappers.rs"},"region":{"startLine":1584}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6c18214b19e397cb02f494591ea5a29c3d6a6af5b0cd20af53278009b7c7d96"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_python.rs:2585-2592 | doc/src/codegen/v2/lang_python.rs:2726-2733 \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":"doc/src/codegen/v2/lang_python.rs"},"region":{"startLine":2585}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce143020738a17dab145da4f91f0289d2391ad05fe03d919895c207043f4363e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_swift/wrappers.rs:1951-1958 | doc/src/codegen/v2/lang_swift/wrappers.rs:1979-1986 \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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":1951}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a53c2db373557feec39c08a81eaae018154f7b19c676277acc279f0bdca958a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_zig/wrappers.rs:502-509 | doc/src/codegen/v2/lang_zig/wrappers.rs:841-848 \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":"doc/src/codegen/v2/lang_zig/wrappers.rs"},"region":{"startLine":502}}}],"partialFingerprints":{"codehealthFindingId/v1":"770cd2119a0f4e6f84b466826c9810dda7b242b9dbfdb2ccb9ad68d064df6ec0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/dllgen/deploy.rs:1799-1806 | doc/src/dllgen/deploy.rs:2722-2729 \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":"doc/src/dllgen/deploy.rs"},"region":{"startLine":1799}}}],"partialFingerprints":{"codehealthFindingId/v1":"c251c1fef338673e1d1da3124c81b28581127ed37d7b76e7a1b6971cc1318bd4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/mobile/toolchain.rs:454-461 | doc/src/mobile/toolchain.rs:484-491 \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":"doc/src/mobile/toolchain.rs"},"region":{"startLine":454}}}],"partialFingerprints":{"codehealthFindingId/v1":"3eb68358c31708b4562e508bb6d1bb621e53de00b27d29b84e7f72b46d99c62c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/patch/parser.rs:1149-1156 | doc/src/patch/parser.rs:1163-1172 \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":"doc/src/patch/parser.rs"},"region":{"startLine":1149}}}],"partialFingerprints":{"codehealthFindingId/v1":"0932b4d31f9d51f4d4e470159bd76eaa980710583a130e7160b31ebc5a2e79f1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_kotlin/mod.rs:477-484 | doc/src/codegen/v2/lang_kotlin/mod.rs:712-719 \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":"doc/src/codegen/v2/lang_kotlin/mod.rs"},"region":{"startLine":477}}}],"partialFingerprints":{"codehealthFindingId/v1":"b22e0c4f4e192dad31faa503d4187f33c3f25883625ab08d196003ef8b0ef9d1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_lisp/types.rs:381-388 | doc/src/codegen/v2/lang_lisp/types.rs:410-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":"doc/src/codegen/v2/lang_lisp/types.rs"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"02492c30925f13d1f56a83ae3edad6ff0e369ca2dbc84844bba873721283e9a1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_perl/types.rs:572-579 | doc/src/codegen/v2/lang_ruby/types.rs:786-793 \u2014 \u0060doc/src/codegen/v2/lang_perl/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_ruby/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 5 separate duplicated blocks between them, totalling at least 49 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_perl/types.rs"},"region":{"startLine":572}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca8e0cab11cc7fa84b3d89f698bdcb465fd2b2bc7fc43dc826ec0d6ce0cd60fd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_fortran/types.rs:589-599 | doc/src/codegen/v2/lang_fortran/types.rs:832-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":"doc/src/codegen/v2/lang_fortran/types.rs"},"region":{"startLine":589}}}],"partialFingerprints":{"codehealthFindingId/v1":"666896e2c086f3ea0a7fab1db649150ea7e45b68c396d2ccb758ec52a543cff7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_perl/functions.rs:61-68 | doc/src/codegen/v2/lang_ruby/functions.rs:80-87 \u2014 \u0060doc/src/codegen/v2/lang_perl/functions.rs\u0060 and \u0060doc/src/codegen/v2/lang_ruby/functions.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 47 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_perl/functions.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"94c846e0eb9ae1489cc1eecf99bc732952ecf918461519db8514af9a2a1f52bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_freebasic/wrappers.rs:344-351 | doc/src/codegen/v2/lang_vb6/wrappers.rs:317-324 \u2014 \u0060doc/src/codegen/v2/lang_freebasic/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_vb6/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 43 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_freebasic/wrappers.rs"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"c18700299c47c91d55513002d2a66822d29d165bac9af6ae95b27914ad00a538"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 2): doc/src/codegen/v2/lang_php/wrappers.rs:428-435 | doc/src/codegen/v2/lang_php/wrappers.rs:546-552 \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":"doc/src/codegen/v2/lang_php/wrappers.rs"},"region":{"startLine":428}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f31e7c082122a3787b256897bdb68d70cdf1f76d7d60a09dbb7acbb512d9d05"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/docgen/apidocs.rs:390-397 | doc/src/docgen/apidocs.rs:411-418 \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":"doc/src/docgen/apidocs.rs"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"e30fc1cfeb902e30f02a0064d3a1302b425ed4d9b439497e30c1b049eb1ef13f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 2): layout/src/callbacks.rs:3683-3690 | layout/src/callbacks.rs:3788-3794 \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":"layout/src/callbacks.rs"},"region":{"startLine":3683}}}],"partialFingerprints":{"codehealthFindingId/v1":"25fb15a2c3fd6e6e2dcb8e9ad78c684b02fed417a1a19c257df0513636db15f5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): layout/src/cpurender/pixmap.rs:245-252 | layout/src/cpurender/pixmap.rs:445-452 \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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"728bb984b724ecb5a86b747ef0aa23cb3b4c5251db27a59fc8bc62e929d61a3b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 2): layout/src/cpurender/raster.rs:83-90 | layout/src/cpurender/raster.rs:114-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":"layout/src/cpurender/raster.rs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"3569af1c64a284dc08fef218a208c8848bc68fa1976243f0e3a609c229dd5cc3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): layout/src/cpurender/raster.rs:2870-2877 | layout/src/cpurender/raster.rs:4346-4353 \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":"layout/src/cpurender/raster.rs"},"region":{"startLine":2870}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a7b2bc901355ae7c1ae6debf7de2159b4bb7b5e8d577fd5b2747bb850203708"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): layout/src/desktop/dialogs.rs:573-580 | layout/src/desktop/dialogs.rs:651-658 \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":"layout/src/desktop/dialogs.rs"},"region":{"startLine":573}}}],"partialFingerprints":{"codehealthFindingId/v1":"285ec3bd4aad18d7b489f3fafb529c0f55a86dc745366923c76ca0207f5143ef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): layout/src/fluent.rs:360-367 | layout/src/icu.rs:1283-1290 \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":"layout/src/fluent.rs"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"cca740438a7491ef8ba09210c1f238200241f67a6d5364ab3a9af2cac78e4313"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 2): layout/src/scroll_timer.rs:519-525 | layout/src/scroll_timer.rs:687-694 \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":"layout/src/scroll_timer.rs"},"region":{"startLine":519}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bb3b04702b7ed5d9b30deb7f6c217d69f3657b160139ccd04a37e406562478f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): layout/src/solver3/display_list.rs:7263-7270 | layout/src/solver3/display_list.rs:7277-7284 \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":"layout/src/solver3/display_list.rs"},"region":{"startLine":7263}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ef747090bf8ca427b8bfd7df54d78148295b5652ec0ca6443ac7b9f245ded39"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 2): layout/src/solver3/fc.rs:3587-3593 | layout/src/solver3/fc.rs:8683-8690 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":3587}}}],"partialFingerprints":{"codehealthFindingId/v1":"291f9fcd97789d48aea32d153ea0644a1e21b0429bd0bbbc57f17fa22bf76ca2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 2): layout/src/solver3/fc.rs:6482-6488 | layout/src/solver3/fc.rs:7959-7966 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":6482}}}],"partialFingerprints":{"codehealthFindingId/v1":"70caf4d14da0b9ee5fcd352ac13c4ab8825c30b3c668e7e9d5e2133937f255ae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): layout/src/solver3/getters.rs:1376-1383 | layout/src/solver3/getters.rs:1403-1410 \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":"layout/src/solver3/getters.rs"},"region":{"startLine":1376}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c9c59910d73ae0401f9aac2a778e769d57ef72c6edc5c49271a423bd23a5c1c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): layout/src/solver3/getters.rs:1934-1941 | layout/src/solver3/getters.rs:1976-1983 \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":"layout/src/solver3/getters.rs"},"region":{"startLine":1934}}}],"partialFingerprints":{"codehealthFindingId/v1":"d70eeec333e5774923cec7e3d5223ea92f264dff7c4e754b4326973518168808"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): layout/src/telemetry/sharedconfig.rs:291-298 | layout/src/telemetry/sharedconfig.rs:322-329 \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":"layout/src/telemetry/sharedconfig.rs"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"822fe5c9e55a0de8bbec5b17616dac3e74035d62a30eaec82e78dd9ebe83430e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): layout/src/widgets/avatar.rs:140-147 | layout/src/widgets/badge.rs:165-172 \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":"layout/src/widgets/avatar.rs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2922c0c9c3cc0922197d3794f239a048d2d23a852bd2c61fe4f1a7591e56142"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): layout/src/widgets/backstage.rs:417-424 | layout/src/widgets/backstage.rs:427-434 \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":"layout/src/widgets/backstage.rs"},"region":{"startLine":417}}}],"partialFingerprints":{"codehealthFindingId/v1":"09b1c8e17a61f04ef8df87817ac13286459420ebb1dec978ae8c6f9967219ab3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): layout/src/widgets/combobox.rs:891-898 | layout/src/widgets/combobox.rs:1034-1041 \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":"layout/src/widgets/combobox.rs"},"region":{"startLine":891}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f7ac9caa276e89ba3b8f67becda3e43c7d1121dd599bc97d1fc445a32f0bd86"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): layout/src/widgets/quick_access.rs:337-344 | layout/src/widgets/statusbar.rs:360-367 \u2014 before extracting anything, compare \u0060layout/src/widgets/quick_access.rs\u0060 and \u0060layout/src/widgets/statusbar.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 106 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":"layout/src/widgets/quick_access.rs"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6d869451a7bdf4dd859f5421ec4356c546aca4e83f4eb810b45d87bdbbfb030"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): layout/src/widgets/text_area.rs:613-620 | layout/src/widgets/text_input.rs:963-970 \u2014 before extracting anything, compare \u0060layout/src/widgets/text_area.rs\u0060 and \u0060layout/src/widgets/text_input.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 147 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":"layout/src/widgets/text_area.rs"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"9179913b1a0ed8d32608f88bd10a219b9a54b2a1a93abf6c3b40487fdb93fcc2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): layout/src/window.rs:8803-8810 | layout/src/window.rs:9419-9426 \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":"layout/src/window.rs"},"region":{"startLine":8803}}}],"partialFingerprints":{"codehealthFindingId/v1":"a99431bd114f4d1ff7882b16e1f8e8b052abecdf402a0891f18cf52ac10472b9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): layout/src/widgets/themes/flat.rs:844-851 | layout/src/widgets/themes/flora.rs:1116-1123 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":844}}}],"partialFingerprints":{"codehealthFindingId/v1":"2801e90b63de0f931316df296ae51173e711c4da8396de23ee6869ed5e2ea63b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): webrender/core/src/render_task.rs:2755-2762 | webrender/core/src/render_task.rs:2788-2795 \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":"webrender/core/src/render_task.rs"},"region":{"startLine":2755}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ade99d39cbb8490b2686d0e4a2e30921a1b3a773c41edd290fa7445e2f064b5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 8): dll/src/desktop/shell2/windows/mod.rs:4671-4677 | dll/src/desktop/shell2/windows/mod.rs:4881-4887 | dll/src/desktop/shell2/windows/mod.rs:5022-5028 | dll/src/desktop/shell2/windows/mod.rs:5118-5124 | dll/src/desktop/shell2/windows/mod.rs:5168-5174 | dll/src/desktop/shell2/windows/mod.rs:5223-5229 | dll/src/desktop/shell2/windows/mod.rs:5251-5257 | dll/src/desktop/shell2/windows/mod.rs:5483-5489 \u2014 all 8 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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":4671}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e1b37c48217c961fee71958a742ea67553632cd9a3be361a25241c8f449fab0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 8): doc/src/codegen/v2/lang_cpp/cpp03.rs:336-342 | doc/src/codegen/v2/lang_cpp/cpp03.rs:696-702 | doc/src/codegen/v2/lang_cpp/cpp11.rs:243-249 | doc/src/codegen/v2/lang_cpp/cpp11.rs:618-624 | doc/src/codegen/v2/lang_cpp/cpp17.rs:400-406 | doc/src/codegen/v2/lang_cpp/cpp17.rs:828-834 | doc/src/codegen/v2/lang_cpp/cpp20.rs:952-958 | doc/src/codegen/v2/lang_cpp/cpp20.rs:1077-1083 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":336}}}],"partialFingerprints":{"codehealthFindingId/v1":"991d60b5a69e98570d7b61ae787f3f57221ce84ddf72a278631b4cb417e67f13"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 6): doc/src/codegen/v2/lang_ada/types.rs:562-568 | doc/src/codegen/v2/lang_csharp/types.rs:800-806 | doc/src/codegen/v2/lang_java/types.rs:1048-1054 | doc/src/codegen/v2/lang_kotlin/mod.rs:1268-1274 | doc/src/codegen/v2/lang_ocaml/types.rs:964-970 | doc/src/codegen/v2/lang_smalltalk/types.rs:411-417 \u2014 \u0060doc/src/codegen/v2/lang_ada/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_smalltalk/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 34 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_ada/types.rs"},"region":{"startLine":562}}}],"partialFingerprints":{"codehealthFindingId/v1":"616c4b68d2316c84e64de2cdcd625acbe70de55fac94c031f31346bfb0a00d3e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 5): dll/src/desktop/shell2/common/event.rs:6581-6587 | dll/src/desktop/shell2/common/event.rs:11164-11170 | dll/src/desktop/shell2/common/event.rs:11842-11849 | dll/src/desktop/shell2/common/event.rs:11935-11942 | dll/src/desktop/shell2/common/event.rs:12146-12152 \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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":6581}}}],"partialFingerprints":{"codehealthFindingId/v1":"8018c7cfdb764da082ceee272f074e9dc9449d15f7b0ddac456476e772d4c94f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 5): doc/src/main.rs:1636-1642 | doc/src/main.rs:1647-1653 | doc/src/main.rs:1674-1680 | doc/src/main.rs:1685-1691 | doc/src/main.rs:1696-1702 \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":"doc/src/main.rs"},"region":{"startLine":1636}}}],"partialFingerprints":{"codehealthFindingId/v1":"6416a510ff424309e93686c868208764509778b17c91048598263b5b74262980"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 5): webrender/core/src/prim_store/picture.rs:785-791 | webrender/core/src/prim_store/picture.rs:812-818 | webrender/core/src/prim_store/picture.rs:901-907 | webrender/core/src/prim_store/picture.rs:920-926 | webrender/core/src/prim_store/picture.rs:949-955 \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":"webrender/core/src/prim_store/picture.rs"},"region":{"startLine":785}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9a4eec0287945723de29d8763ef2806a68721c878fcbdd9b640831f52e41017"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): dll/src/desktop/shell2/linux/wayland/mod.rs:7526-7532 | dll/src/desktop/shell2/linux/x11/mod.rs:6583-6589 | dll/src/desktop/shell2/macos/mod.rs:8081-8087 | dll/src/desktop/shell2/windows/mod.rs:1199-1205 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":7526}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbe23506ce4ba11088e5793b26d483aff0bb907b59f6db29e79c7e6ea12f7bd5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): doc/src/autofix/type_index.rs:2027-2033 | doc/src/autofix/type_index.rs:2045-2051 | doc/src/autofix/type_index.rs:2204-2210 | doc/src/autofix/type_index.rs:2240-2246 \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":"doc/src/autofix/type_index.rs"},"region":{"startLine":2027}}}],"partialFingerprints":{"codehealthFindingId/v1":"9716577cb712ca981402f4f93c19b56862d9e3aeaf5553b87fd9743065c0db64"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): doc/src/codegen/v2/lang_cpp/cpp03.rs:38-50 | doc/src/codegen/v2/lang_cpp/cpp11.rs:38-52 | doc/src/codegen/v2/lang_cpp/cpp14.rs:32-38 | doc/src/codegen/v2/lang_cpp/cpp17.rs:37-50 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b5d994d4ee116dfa54d1442436a28884fc8077591263171a9ca2251e4899892"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): doc/src/codegen/v2/lang_csharp/types.rs:430-436 | doc/src/codegen/v2/lang_csharp/types.rs:466-472 | doc/src/codegen/v2/lang_kotlin/mod.rs:496-502 | doc/src/codegen/v2/lang_kotlin/mod.rs:533-539 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_csharp/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_kotlin/mod.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 43 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_csharp/types.rs"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f05c577aeaa02975acf3b58ba9e5ca613549681e53eba712ee931a3bac961f7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): layout/src/widgets/alert.rs:258-264 | layout/src/widgets/badge.rs:163-169 | layout/src/widgets/chip.rs:273-279 | layout/src/widgets/toast.rs:281-287 \u2014 before extracting anything, compare \u0060layout/src/widgets/alert.rs\u0060 and \u0060layout/src/widgets/toast.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 122 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":"layout/src/widgets/alert.rs"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce4e791c5c5ed35f13d0b68be2a962769a362533718267ecb3ad2e6716200358"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): layout/src/widgets/quick_access.rs:364-370 | layout/src/widgets/quick_access.rs:407-413 | layout/src/widgets/statusbar.rs:427-433 | layout/src/widgets/statusbar.rs:466-472 \u2014 before extracting anything, compare \u0060layout/src/widgets/quick_access.rs\u0060 and \u0060layout/src/widgets/statusbar.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 106 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":"layout/src/widgets/quick_access.rs"},"region":{"startLine":364}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e3ec4dbaf263bde868803b1b0a7119e69e920e6913926d2d6960f9d2b0a6e20"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): core/src/events.rs:1780-1786 | core/src/events.rs:1910-1916 | core/src/events.rs:2069-2075 \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":"core/src/events.rs"},"region":{"startLine":1780}}}],"partialFingerprints":{"codehealthFindingId/v1":"478d92bda0977512bf0c8b0ae76255f2b33a1ccf667651fadafaf3c3fa74fd89"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): core/src/xml.rs:7294-7300 | core/src/xml.rs:8504-8510 | core/src/xml.rs:8801-8807 \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":"core/src/xml.rs"},"region":{"startLine":7294}}}],"partialFingerprints":{"codehealthFindingId/v1":"c23d99776af9c05a37c0f5d1e9e960c8eef359b1fee423498d0ae2286b4330c5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): dll/src/desktop/shell2/linux/x11/mod.rs:4423-4429 | dll/src/desktop/shell2/linux/x11/mod.rs:5640-5646 | dll/src/desktop/shell2/linux/x11/mod.rs:7930-7936 \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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":4423}}}],"partialFingerprints":{"codehealthFindingId/v1":"31b08c53573b1f4f9f1db0da7f14f7946812f95624c17d0b4995704ed45c7439"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): doc/src/codegen/v2/lang_c.rs:634-641 | doc/src/codegen/v2/lang_c.rs:912-918 | doc/src/codegen/v2/lang_c.rs:999-1005 \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":"doc/src/codegen/v2/lang_c.rs"},"region":{"startLine":634}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f1941e9c5460566d3257659814f1f79d54112d17deebe58fb2ae2d978acaaba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): doc/src/codegen/v2/lang_crystal/model.rs:511-517 | doc/src/codegen/v2/lang_d/model.rs:807-813 | doc/src/codegen/v2/lang_swift/model.rs:813-819 \u2014 \u0060doc/src/codegen/v2/lang_crystal/model.rs\u0060 and \u0060doc/src/codegen/v2/lang_d/model.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 9 separate duplicated blocks between them, totalling at least 74 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/model.rs"},"region":{"startLine":511}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d11a5bf06dcd96c18c4d5a9b778491f1c8a406dc72386a7d25002aa8807cec1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (2\u20137 lines \u00D7 4): doc/src/codegen/v2/lang_csharp/wrappers.rs:114-120 | doc/src/codegen/v2/lang_java/wrappers.rs:1274-1280 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:111-117 | doc/src/codegen/v2/lang_node/wrappers.rs:1336-1337 \u2014 \u0060doc/src/codegen/v2/lang_csharp/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_java/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 14 separate duplicated blocks between them, totalling at least 156 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"e33d75cfff75b93ed2d286728a680b25f3944817393af05adebdd48b10a8ee59"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): doc/src/codegen/v2/lang_csharp/wrappers.rs:1770-1776 | doc/src/codegen/v2/lang_csharp/wrappers.rs:1838-1844 | doc/src/codegen/v2/lang_csharp/wrappers.rs:1886-1892 \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":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":1770}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5610f965fa95ce180dd4b06299de70891b060734edcb023bf7085eba6f95b44"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): doc/src/codegen/v2/lang_java/managed.rs:967-973 | doc/src/codegen/v2/lang_lua/managed.rs:185-191 | doc/src/codegen/v2/lang_node/managed.rs:141-147 \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":"doc/src/codegen/v2/lang_java/managed.rs"},"region":{"startLine":967}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ed738832049a6f47126b6f0b09d1325a7e244ab27fa96bf841d54f6c7440e3e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): doc/src/codegen/v2/lang_java/wrappers.rs:1574-1580 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:1609-1615 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:1850-1856 \u2014 \u0060doc/src/codegen/v2/lang_java/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_kotlin/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 15 separate duplicated blocks between them, totalling at least 173 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_java/wrappers.rs"},"region":{"startLine":1574}}}],"partialFingerprints":{"codehealthFindingId/v1":"d08ca76c05b5ff0503f17a4a19884780e6c37890420325545967ee0679121ab2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): doc/src/main.rs:649-655 | doc/src/main.rs:686-692 | doc/src/main.rs:1153-1159 \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":"doc/src/main.rs"},"region":{"startLine":649}}}],"partialFingerprints":{"codehealthFindingId/v1":"67c872fc1f35a059d80788aaa0c88583fb65b80e00bc204d8dabc09b65f6f128"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): doc/src/main.rs:744-750 | doc/src/main.rs:964-970 | doc/src/main.rs:1212-1218 \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":"doc/src/main.rs"},"region":{"startLine":744}}}],"partialFingerprints":{"codehealthFindingId/v1":"b54494e3c0cb9a3538a8dc9bfe5cf02d724323a6d9f03f346aa177fd6e56eb26"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): doc/src/codegen/v2/lang_ada/types.rs:142-148 | doc/src/codegen/v2/lang_cobol/types.rs:165-171 | doc/src/codegen/v2/lang_pascal/types.rs:99-105 \u2014 \u0060doc/src/codegen/v2/lang_ada/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_cobol/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 48 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_ada/types.rs"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"0795dd80f149fe849ee07c0ac96840f955829d54c55dc9a0a7779df4395af9eb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): doc/src/codegen/v2/lang_crystal/functions.rs:89-95 | doc/src/codegen/v2/lang_odin/functions.rs:61-67 | doc/src/codegen/v2/lang_v/functions.rs:80-86 \u2014 \u0060doc/src/codegen/v2/lang_crystal/functions.rs\u0060 and \u0060doc/src/codegen/v2/lang_v/functions.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 30 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/functions.rs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"98fcc37fa3467eac3d016d37a74f542506dfb64b38b160afedc032919bf29862"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): doc/src/codegen/v2/lang_ruby/types.rs:270-276 | doc/src/codegen/v2/lang_ruby/types.rs:508-514 | doc/src/codegen/v2/lang_ruby/types.rs:619-625 \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":"doc/src/codegen/v2/lang_ruby/types.rs"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"8944269b99aa2d2b27a6d10a77e6acb5fed2d47af3ce39c2124d80886df170be"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): layout/src/callbacks.rs:1568-1574 | layout/src/callbacks.rs:1592-1598 | layout/src/callbacks.rs:1616-1622 \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":"layout/src/callbacks.rs"},"region":{"startLine":1568}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b7af9077cd3422a04f4d98bf00b454e10405ab345f80bfb095ef628f82ca69d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): layout/src/solver3/paged_layout.rs:309-317 | layout/src/solver3/paged_layout.rs:2549-2557 | layout/src/window.rs:5659-5665 \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":"layout/src/solver3/paged_layout.rs"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"89f2150fe6e87a6551d3fe64d65f519a3cf24d3d1540f0e68d7046d24e7c744c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): core/src/path_parser.rs:315-321 | core/src/path_parser.rs:363-369 \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":"core/src/path_parser.rs"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d5b2af4ba303c6c1441c0084298e6dbf2e9077884ff5efdaaa99054d9814d91"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): core/src/prop_cache.rs:3258-3264 | core/src/prop_cache.rs:3280-3286 \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":"core/src/prop_cache.rs"},"region":{"startLine":3258}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d51bfd3728d9ffe2ff01305cb47a51425cde8efddc2c18e028abeed58ca6b60"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6\u20137 lines \u00D7 2): core/src/styled_dom.rs:1523-1529 | layout/src/xml/mod.rs:256-261 \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":"core/src/styled_dom.rs"},"region":{"startLine":1523}}}],"partialFingerprints":{"codehealthFindingId/v1":"7769c02de1ac47f9598c1116206581d097e480917412dbcdb428b68cd3eea1e7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): css/src/props/basic/time.rs:242-248 | css/src/props/basic/time.rs:252-258 \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":"css/src/props/basic/time.rs"},"region":{"startLine":242}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cd3cbc72b0dc2211df8cd6e98d187e7c9a8b694e0e8974780b67ecef66d0dee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): css/src/system.rs:2433-2439 | css/src/system.rs:2484-2490 \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":"css/src/system.rs"},"region":{"startLine":2433}}}],"partialFingerprints":{"codehealthFindingId/v1":"764bd21e3ff91c2a7ee9b1af1fbdeab8c5c03e340b2fdd738de737e663ddd6d9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): dll/src/desktop/extra/geolocation/ios.rs:211-217 | dll/src/desktop/extra/geolocation/macos.rs:205-211 \u2014 before extracting anything, compare \u0060dll/src/desktop/extra/geolocation/ios.rs\u0060 and \u0060dll/src/desktop/extra/geolocation/macos.rs\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 130 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":"dll/src/desktop/extra/geolocation/ios.rs"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"eba1e2a4f49b2c8ae9c4f50d78a4d5ec223fd624025ae57dbd92604ac00079ee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): dll/src/desktop/extra/sqlite/mod.rs:1491-1497 | layout/src/journal.rs:143-149 \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":"dll/src/desktop/extra/sqlite/mod.rs"},"region":{"startLine":1491}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecd378179b8317bad01b4257a7a8c9f700b2e75549a96c3296981be6861dd818"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): dll/src/desktop/shell2/android/clipboard.rs:181-187 | dll/src/desktop/shell2/android/mod.rs:2521-2527 \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":"dll/src/desktop/shell2/android/clipboard.rs"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"da50f1f06cb230629da48097d27446f5935a7b498773d256469dd8213cdc9a0b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): dll/src/desktop/shell2/ios/text_input.rs:528-534 | dll/src/desktop/shell2/ios/text_input.rs:616-622 \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":"dll/src/desktop/shell2/ios/text_input.rs"},"region":{"startLine":528}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5b065a9b857fc752366c1d0060b3827027c2490f70cb5e19d43ff5c121aa668"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): dll/src/desktop/shell2/linux/system_style.rs:851-857 | dll/src/desktop/shell2/macos/system_style.rs:566-572 \u2014 \u0060dll/src/desktop/shell2/linux/system_style.rs\u0060 and \u0060dll/src/desktop/shell2/macos/system_style.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 50 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":851}}}],"partialFingerprints":{"codehealthFindingId/v1":"a587677e5e42a36d162edf83885863ef4b23efb15c56b4bb372befcf947e7cd5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:1669-1675 | dll/src/desktop/shell2/linux/wayland/mod.rs:3752-3758 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":1669}}}],"partialFingerprints":{"codehealthFindingId/v1":"121a0ef5d722be108a15792bcea1d7bf2e81623de51202fd0793ef15da207f0c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:6042-6048 | dll/src/desktop/shell2/linux/wayland/mod.rs:6112-6118 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":6042}}}],"partialFingerprints":{"codehealthFindingId/v1":"380734b3270286655d3dc00ce4c15cfe2f4c2eb624ea5227f912b2fa70b92325"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/screencopy.rs:68-74 | dll/src/desktop/shell2/linux/wayland/screencopy.rs:317-323 \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":"dll/src/desktop/shell2/linux/wayland/screencopy.rs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"415fc08df5810047431e058d62c5c7adec655b4560bce4cff0d9f58f2c89c3ff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): dll/src/desktop/shell2/linux/x11/mod.rs:4511-4517 | dll/src/desktop/shell2/linux/x11/mod.rs:4657-4663 \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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":4511}}}],"partialFingerprints":{"codehealthFindingId/v1":"17b41e64e097a64ff085e946ebe244465cfe16d5e222bfb9826dc9054dfb53c2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6\u20137 lines \u00D7 2): dll/src/desktop/shell2/macos/mod.rs:7005-7010 | dll/src/desktop/shell2/macos/mod.rs:7012-7018 \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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":7005}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed47df1abb9de9e88dd742ff3f04b12e80d1eb1c63a5dd19757dcc63fb674d43"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): dll/src/desktop/shell2/windows/mod.rs:1536-1542 | dll/src/desktop/shell2/windows/mod.rs:1769-1775 \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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":1536}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e9415d36783577be75d1f0b014e16e85c800c5bd47f69ccb79af24d5b65d57e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): dll/src/desktop/wr_translate2.rs:1828-1834 | dll/src/desktop/wr_translate2.rs:1869-1875 \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":"dll/src/desktop/wr_translate2.rs"},"region":{"startLine":1828}}}],"partialFingerprints":{"codehealthFindingId/v1":"31f7a3a73ec45a477dee97151b7b410e81b838a0234b769b1e71a8c0675652f6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): dll/src/web/symbol_table.rs:1667-1673 | dll/src/web/symbol_table.rs:1976-1982 \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":"dll/src/web/symbol_table.rs"},"region":{"startLine":1667}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6047f316a08415460183646d1f846d4e707e6e6441bc57769b51eb9c69b96df"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): dll/src/web/transpiler_remill.rs:8469-8475 | dll/src/web/transpiler_remill.rs:8480-8486 \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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":8469}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef1d78ba672ad7c6464347310f95fe46ae66c4c716ebb5d57d6d4bbc5c593731"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): dll/src/web/transpiler_remill.rs:11795-11801 | dll/src/web/transpiler_remill.rs:11836-11842 \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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":11795}}}],"partialFingerprints":{"codehealthFindingId/v1":"8abaa38a53e016731723e9ab0aee98b47a045fe448ff90f154fbb13a58bdf905"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): dll/src/desktop/compositor2.rs:137-143 | dll/src/desktop/compositor2.rs:924-930 \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":"dll/src/desktop/compositor2.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b2b00b81b51ac1dbb3c4561f907a82e4f394f19e506ba87ca38c522710da6df"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/autofix/diff.rs:640-647 | doc/src/autofix/diff.rs:2260-2266 \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":"doc/src/autofix/diff.rs"},"region":{"startLine":640}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa4fd1b7d31a1b6c18782e55529e46699fc0feb01d1aa1c5892210051b17f17f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_crystal/model.rs:547-553 | doc/src/codegen/v2/lang_d/model.rs:853-859 \u2014 \u0060doc/src/codegen/v2/lang_crystal/model.rs\u0060 and \u0060doc/src/codegen/v2/lang_d/model.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 9 separate duplicated blocks between them, totalling at least 74 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/model.rs"},"region":{"startLine":547}}}],"partialFingerprints":{"codehealthFindingId/v1":"f487d19d49d2cda2992bd991290a26f7777956e839b57b93d00ef84308c7faeb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_crystal/wrappers.rs:1163-1169 | doc/src/codegen/v2/lang_swift/wrappers.rs:1890-1897 \u2014 \u0060doc/src/codegen/v2/lang_crystal/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 8 separate duplicated blocks between them, totalling at least 74 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/wrappers.rs"},"region":{"startLine":1163}}}],"partialFingerprints":{"codehealthFindingId/v1":"1874f74ef438ef522b3ba53865994225ec9f11706b50ef850f230c81ed2f4478"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_d/model.rs:278-284 | doc/src/codegen/v2/lang_swift/model.rs:286-292 \u2014 \u0060doc/src/codegen/v2/lang_d/model.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/model.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 20 separate duplicated blocks between them, totalling at least 209 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/model.rs"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"6feed0913970ed5e502c0eacd5073d0bc48a347adca39ce2cb2b8b440b97537b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_d/model.rs:605-611 | doc/src/codegen/v2/lang_swift/model.rs:621-627 \u2014 \u0060doc/src/codegen/v2/lang_d/model.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/model.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 20 separate duplicated blocks between them, totalling at least 209 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/model.rs"},"region":{"startLine":605}}}],"partialFingerprints":{"codehealthFindingId/v1":"66a83f306716cbc001a0c6efaf760f010c11410c58cf85b7d0dc13b9a111f7cf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:2028-2034 | doc/src/codegen/v2/lang_swift/wrappers.rs:1972-1978 \u2014 \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 29 separate duplicated blocks between them, totalling at least 269 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":2028}}}],"partialFingerprints":{"codehealthFindingId/v1":"88dbc50652e804e3cfb44581ae598185579459e1fc1f80f53749a77829a8d563"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_kotlin/managed.rs:61-67 | doc/src/codegen/v2/lang_kotlin/managed.rs:343-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":"doc/src/codegen/v2/lang_kotlin/managed.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bbc8279728729c2669454d0dc13b35a752183646efc8c20c98e14d1adab2107"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_node/wrappers.rs:429-435 | doc/src/codegen/v2/lang_node/wrappers.rs:1707-1713 \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":"doc/src/codegen/v2/lang_node/wrappers.rs"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffb934ff761ce4c2e3e0dbec3f7253b5df19a2dfb70c464b97b7ed1b053d7978"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_pascal/wrappers.rs:330-336 | doc/src/codegen/v2/lang_pascal/wrappers.rs:538-544 \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":"doc/src/codegen/v2/lang_pascal/wrappers.rs"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"d780fd5c17927cfd15d2164664920ef660eeb743d289a93ea8091b6fcceb09c4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_python.rs:1122-1128 | doc/src/codegen/v2/lang_rust.rs:4766-4772 \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":"doc/src/codegen/v2/lang_python.rs"},"region":{"startLine":1122}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1e418919df2ace03bf8387e66a3aa30fcaa10880492e93e4555343b371c35b0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_swift/wrappers.rs:793-799 | doc/src/codegen/v2/lang_swift/wrappers.rs:840-846 \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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":793}}}],"partialFingerprints":{"codehealthFindingId/v1":"eee121773d81fa230e26d7c2e252c77b3dc4ea0e14ce4e4a4a752c79f86ac0f0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_odin/types.rs:119-125 | doc/src/codegen/v2/lang_v/types.rs:124-130 \u2014 \u0060doc/src/codegen/v2/lang_odin/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_v/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 16 separate duplicated blocks between them, totalling at least 175 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_odin/types.rs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"216353c2702be9d79d4c0bac6c56ee60519e0cf6b902ec3314c5a6c60b7c2226"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_cobol/types.rs:120-126 | doc/src/codegen/v2/lang_cobol/types.rs:267-273 \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":"doc/src/codegen/v2/lang_cobol/types.rs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"9836d9e684b77a650458d18991bd4b778e4eddb20359c1288223253ca937f605"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_perl/types.rs:77-83 | doc/src/codegen/v2/lang_perl/types.rs:403-409 \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":"doc/src/codegen/v2/lang_perl/types.rs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"577b6317590d8841d019f82faed50fd42c7c91db4aaae35f6d63099a6dc63705"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_ruby/types.rs:97-103 | doc/src/codegen/v2/lang_ruby/types.rs:575-581 \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":"doc/src/codegen/v2/lang_ruby/types.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f39013088398aba0dfc9cd5964e91e4139b64283592a4d90bfbf21d8327080b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_ruby/types.rs:158-164 | doc/src/codegen/v2/lang_ruby/types.rs:204-210 \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":"doc/src/codegen/v2/lang_ruby/types.rs"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"933387e96a638e239a55b6926b87f34068b31a6b0144689cf48411f25d251c40"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_odin/mod.rs:163-169 | doc/src/codegen/v2/lang_v/mod.rs:187-193 \u2014 \u0060doc/src/codegen/v2/lang_odin/mod.rs\u0060 and \u0060doc/src/codegen/v2/lang_v/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 8 separate duplicated blocks between them, totalling at least 118 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_odin/mod.rs"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"81c90fde824066c76d7966beb979302b754230ae2469541318d5b5bbad0e77fa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_cpp/common.rs:1983-1989 | doc/src/codegen/v2/lang_cpp/common.rs:2029-2036 \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":"doc/src/codegen/v2/lang_cpp/common.rs"},"region":{"startLine":1983}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5ec0a53f3c0d5a96492f839ef4a28b5227b0aa1143f04ef760183db052b5b4c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): layout/src/cpurender/pixmap.rs:1543-1549 | layout/src/cpurender/pixmap.rs:1595-1601 \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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":1543}}}],"partialFingerprints":{"codehealthFindingId/v1":"208d4a2ebc6cd529f7d93e7c676e2a460f93923216988263af85658ba44f73d8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): layout/src/cpurender/raster.rs:1054-1060 | layout/src/cpurender/raster.rs:2647-2653 \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":"layout/src/cpurender/raster.rs"},"region":{"startLine":1054}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bb664d1cd3cf40dabf36613d2e1230cdfffb9a382b551b8a64bf280328d969c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): layout/src/cpurender/raster.rs:4816-4822 | layout/src/cpurender/raster.rs:4888-4894 \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":"layout/src/cpurender/raster.rs"},"region":{"startLine":4816}}}],"partialFingerprints":{"codehealthFindingId/v1":"590332ec7d5fc69e77451067aca2145c126bd88a2c0367c7cbf602f410c78f7c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): layout/src/cpurender/svg.rs:508-514 | layout/src/solver3/display_list.rs:11113-11119 \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":"layout/src/cpurender/svg.rs"},"region":{"startLine":508}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bb39f905a3c42b6cc8a6a92a9fbba24023272c0a36036bfed606b2434a416fb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): layout/src/document_edit.rs:333-339 | layout/src/document_edit.rs:355-361 \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":"layout/src/document_edit.rs"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa423450acaad74bcf1333f3510a2e73cc1afc23b10137731ce4d5eb30548b0d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): layout/src/solver3/display_list.rs:8455-8461 | layout/src/solver3/layout_tree.rs:1895-1901 \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":"layout/src/solver3/display_list.rs"},"region":{"startLine":8455}}}],"partialFingerprints":{"codehealthFindingId/v1":"a09ea1a2c376abf4551d46bf12e42e872a8c43dd5be3b43b6fe4d33fdca97a1b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): layout/src/solver3/fc.rs:5103-5109 | layout/src/solver3/fc.rs:7962-7968 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":5103}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae8cac63c72ec64659356a09c6d94506885c09b88db1190f2c9909167b2eec7e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): layout/src/solver3/mod.rs:1305-1311 | layout/src/solver3/mod.rs:1391-1397 \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":"layout/src/solver3/mod.rs"},"region":{"startLine":1305}}}],"partialFingerprints":{"codehealthFindingId/v1":"97a8abbc59fca24d630514340bd69a89be16aa06405bafd09bd56b9741c07aa6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): layout/src/telemetry/sharedconfig.rs:284-290 | layout/src/telemetry/sharedconfig.rs:301-307 \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":"layout/src/telemetry/sharedconfig.rs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e4b7af23f50a0af4b38c53d95c919c75513be193d166694bf7b41c5fd2c7d28"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): layout/src/text3/dense.rs:623-629 | layout/src/text3/dense.rs:1155-1161 \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":"layout/src/text3/dense.rs"},"region":{"startLine":623}}}],"partialFingerprints":{"codehealthFindingId/v1":"cef4858e2d9848cfbbf0a123793b7543559d23060c7dad6d139241e980e8f8af"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): layout/src/text3/dense.rs:943-949 | layout/src/text3/dense.rs:1491-1499 \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":"layout/src/text3/dense.rs"},"region":{"startLine":943}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d6f02735502033d17f7a23b0a430dc18c42835e9a7c8131776ca5041efbf996"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): layout/src/updater.rs:600-606 | layout/src/updater.rs:1138-1144 \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":"layout/src/updater.rs"},"region":{"startLine":600}}}],"partialFingerprints":{"codehealthFindingId/v1":"8345c5a7fa8e528871cce4fd082d573a68c937600dd7146458b8bd2280665c4d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): layout/src/widgets/date_picker.rs:961-967 | layout/src/widgets/date_picker.rs:1070-1076 \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":"layout/src/widgets/date_picker.rs"},"region":{"startLine":961}}}],"partialFingerprints":{"codehealthFindingId/v1":"039bbfc99fe0f2c8eb782de17b31255729cc0e03633b6e86922f5c848c6b2689"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): layout/src/widgets/number_input.rs:383-389 | layout/src/widgets/slider.rs:267-273 \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":"layout/src/widgets/number_input.rs"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"49602a29f6a1ba5dfbe32160112cdcfa74465675ebae552e8bd6a186e5fda290"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): layout/src/widgets/text_area.rs:630-636 | layout/src/widgets/text_input.rs:1003-1009 \u2014 before extracting anything, compare \u0060layout/src/widgets/text_area.rs\u0060 and \u0060layout/src/widgets/text_input.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 147 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":"layout/src/widgets/text_area.rs"},"region":{"startLine":630}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5dad599f987d8ce1a1ce6236c3f8cba2ead4925c3a93e764ea2afcde533d7ca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): layout/src/window.rs:8784-8790 | layout/src/window.rs:8807-8813 \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":"layout/src/window.rs"},"region":{"startLine":8784}}}],"partialFingerprints":{"codehealthFindingId/v1":"60d8381732f97d0b9194482835012f51bbcc5d071da14d18a8abdfb2fe23e290"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): layout/src/zip.rs:268-274 | layout/src/zip.rs:360-366 \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":"layout/src/zip.rs"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7300b7351e59b467808668f8f78ab5b41e62c303d4d1d99111d9f98f5bb7ba9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): layout/src/widgets/themes/flat.rs:1439-1447 | layout/src/widgets/themes/flora.rs:1848-1854 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":1439}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f83e01263be05bd374cc805077286dda8da3f859e0ae7956583dac8c04c797a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 12): css/src/props/basic/color.rs:902-907 | css/src/props/basic/color.rs:914-919 | css/src/props/basic/color.rs:926-931 | css/src/props/basic/color.rs:938-943 | css/src/props/basic/color.rs:950-955 | css/src/props/basic/color.rs:962-967 | css/src/props/basic/color.rs:974-979 | css/src/props/basic/color.rs:986-991 | css/src/props/basic/color.rs:998-1003 | css/src/props/basic/color.rs:1010-1015 | css/src/props/basic/color.rs:1022-1027 | css/src/props/basic/color.rs:1034-1039 \u2014 all 12 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":"css/src/props/basic/color.rs"},"region":{"startLine":902}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4feb19c059604d142096900b34cffd557f9d21b5a3c65969695dafaabd34713"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 6): dll/src/desktop/shell2/linux/wayland/screencopy.rs:67-72 | dll/src/desktop/shell2/linux/wayland/screencopy.rs:95-100 | dll/src/desktop/shell2/linux/wayland/screencopy.rs:133-138 | dll/src/desktop/shell2/linux/wayland/screencopy.rs:173-178 | dll/src/desktop/shell2/linux/wayland/screencopy.rs:245-250 | dll/src/desktop/shell2/linux/wayland/screencopy.rs:316-321 \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":"dll/src/desktop/shell2/linux/wayland/screencopy.rs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e2c4815c2885786edee1e0d53f2b29427114ee7ec15dd397179266498465013"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (4\u20136 lines \u00D7 6): dll/src/desktop/extra/camera/windows.rs:453-458 | dll/src/desktop/extra/capture_slot.rs:127-132 | dll/src/desktop/extra/screencap/windows.rs:361-366 | layout/src/cpurender/raster.rs:4623-4626 | layout/src/cpurender/raster.rs:4632-4637 | layout/src/cpurender/raster.rs:4640-4645 \u2014 there are 6 copies across 4 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 6 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/extra/camera/windows.rs"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6d0097561acdc3cbc48b98f5197065938f6b7948aa1d4a8dac9c5fd71c6c9fb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 5): dll/src/desktop/shell2/android/mod.rs:414-419 | dll/src/desktop/shell2/headless/mod.rs:1748-1753 | dll/src/desktop/shell2/headless/mod.rs:1913-1918 | dll/src/desktop/shell2/ios/mod.rs:1813-1818 | dll/src/desktop/shell2/ios/mod.rs:1964-1969 \u2014 \u0060dll/src/desktop/shell2/android/mod.rs\u0060 and \u0060dll/src/desktop/shell2/headless/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 65 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"502c025e1f713cf7c0b6f6785d3cebf303632c30ea96579bacefe1fad7eb3ddc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 5): dll/src/desktop/shell2/linux/x11/mod.rs:4423-4428 | dll/src/desktop/shell2/linux/x11/mod.rs:4785-4790 | dll/src/desktop/shell2/linux/x11/mod.rs:5600-5605 | dll/src/desktop/shell2/linux/x11/mod.rs:5640-5645 | dll/src/desktop/shell2/linux/x11/mod.rs:7930-7935 \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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":4423}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e86b50a0674bd9332017267befc2801181545c4fd5149c26bad1105b158d844"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 5): dll/src/web/transpiler_remill.rs:1641-1646 | dll/src/web/transpiler_remill.rs:1665-1670 | dll/src/web/transpiler_remill.rs:1691-1696 | dll/src/web/transpiler_remill.rs:1722-1727 | dll/src/web/transpiler_remill.rs:1794-1799 \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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":1641}}}],"partialFingerprints":{"codehealthFindingId/v1":"8061dc06b4cbe61fda7fd70219bb26e67bc921298408a70a1de9529c85095e2c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 5): doc/src/codegen/v2/lang_cpp/cpp11.rs:38-49 | doc/src/codegen/v2/lang_cpp/cpp14.rs:32-37 | doc/src/codegen/v2/lang_cpp/cpp17.rs:37-47 | doc/src/codegen/v2/lang_cpp/cpp20.rs:47-57 | doc/src/codegen/v2/lang_cpp/cpp20.rs:443-448 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp14.rs\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 164 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":"doc/src/codegen/v2/lang_cpp/cpp11.rs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc4951da13afa085bd20173eb7f5c26f5dc9b205d2ea034524fabf41f79a0d30"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 5): doc/src/codegen/v2/lang_crystal/types.rs:172-177 | doc/src/codegen/v2/lang_d/types.rs:138-143 | doc/src/codegen/v2/lang_julia/types.rs:217-222 | doc/src/codegen/v2/lang_odin/types.rs:156-161 | doc/src/codegen/v2/lang_v/types.rs:162-167 \u2014 \u0060doc/src/codegen/v2/lang_crystal/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_d/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 67 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/types.rs"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0395d5fcb887b8babd452bc8f9a1a8a14de3e8a5b9e61faa997ec1e80ce5dbd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 4): dll/src/desktop/compositor2.rs:670-675 | dll/src/desktop/compositor2.rs:1417-1422 | dll/src/desktop/wr_translate2.rs:1829-1834 | dll/src/desktop/wr_translate2.rs:1870-1875 \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":"dll/src/desktop/compositor2.rs"},"region":{"startLine":670}}}],"partialFingerprints":{"codehealthFindingId/v1":"db1c77f2abbd5701ce5ea69619788a961f01c233d1d3f10a27ae790cda9e3f9c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 4): dll/src/desktop/compositor2.rs:682-687 | dll/src/desktop/compositor2.rs:1429-1434 | dll/src/desktop/wr_translate2.rs:1841-1846 | dll/src/desktop/wr_translate2.rs:1882-1887 \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":"dll/src/desktop/compositor2.rs"},"region":{"startLine":682}}}],"partialFingerprints":{"codehealthFindingId/v1":"68e18494772c672f76f551fd46adaadf7af0635bd12c10b85a10e8092692bb26"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 4): doc/src/codegen/v2/lang_crystal/types.rs:328-333 | doc/src/codegen/v2/lang_julia/types.rs:315-320 | doc/src/codegen/v2/lang_odin/types.rs:274-279 | doc/src/codegen/v2/lang_v/types.rs:282-287 \u2014 \u0060doc/src/codegen/v2/lang_crystal/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_julia/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 5 separate duplicated blocks between them, totalling at least 35 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/types.rs"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c4172ef3416720d1dc1fd90f45e17dccf7d282cc284ad200bd4be426ba63ec1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): css/src/system.rs:808-813 | css/src/system.rs:862-867 | css/src/system.rs:925-930 \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":"css/src/system.rs"},"region":{"startLine":808}}}],"partialFingerprints":{"codehealthFindingId/v1":"59a2124068136100f013e747110845843695b5b92ce7f168ad78ab7239e8d035"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (3\u20136 lines \u00D7 6): css/src/system.rs:2214-2219 | css/src/system.rs:2268-2271 | css/src/system.rs:2318-2323 | css/src/system.rs:2370-2375 | css/src/system.rs:2429-2431 | css/src/system.rs:2480-2482 \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":"css/src/system.rs"},"region":{"startLine":2214}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb046a034590737205a52121e24773d2151fe8e8e47139a9941f25b6566c6968"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): dll/src/desktop/extra/geolocation/ios.rs:211-216 | dll/src/desktop/extra/geolocation/linux.rs:220-225 | dll/src/desktop/extra/geolocation/macos.rs:205-210 \u2014 before extracting anything, compare \u0060dll/src/desktop/extra/geolocation/ios.rs\u0060 and \u0060dll/src/desktop/extra/geolocation/macos.rs\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 130 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":"dll/src/desktop/extra/geolocation/ios.rs"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"258df9e6aa9eadc5c64cb772996ec9a0c60dbe2282365a089628418daf67f528"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): dll/src/desktop/shell2/linux/x11/mod.rs:8360-8365 | dll/src/desktop/shell2/linux/x11/mod.rs:8389-8394 | dll/src/desktop/shell2/linux/x11/mod.rs:8520-8525 \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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":8360}}}],"partialFingerprints":{"codehealthFindingId/v1":"108e482967317eee5b53d7af1448d1e5765c2d915f2b5e119be851b6fb3fdedb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): doc/src/codegen/v2/lang_csharp/wrappers.rs:87-92 | doc/src/codegen/v2/lang_java/wrappers.rs:1245-1250 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:84-89 \u2014 \u0060doc/src/codegen/v2/lang_csharp/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_java/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 14 separate duplicated blocks between them, totalling at least 156 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b306ce11286c0a5ab55c3ed4d8f016a071234bf3a935b9d64a649b23d2535cf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): doc/src/codegen/v2/lang_kotlin/managed.rs:61-66 | doc/src/codegen/v2/lang_kotlin/managed.rs:343-348 | doc/src/codegen/v2/lang_lisp/managed.rs:135-140 \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":"doc/src/codegen/v2/lang_kotlin/managed.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"a89ca6d3f0604f7c68a89ee0080a5146fde1f75dab497c0f2228b0e9da1e2e5a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): doc/src/codegen/v2/lang_fortran/types.rs:485-490 | doc/src/codegen/v2/lang_fortran/types.rs:530-535 | doc/src/codegen/v2/lang_fortran/types.rs:817-822 \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":"doc/src/codegen/v2/lang_fortran/types.rs"},"region":{"startLine":485}}}],"partialFingerprints":{"codehealthFindingId/v1":"101f792de6603f55acbfd9a5e37078c70cd94d5e2353fb944d122f937a6b63d0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): layout/src/cpurender/pixmap.rs:110-115 | layout/src/cpurender/pixmap.rs:294-299 | layout/src/cpurender/pixmap.rs:475-480 \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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"f342fe0ed5a46533e0bd6a1726b725c0ac488d8b63d4a076eddf2d718f38cffc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (4\u20136 lines \u00D7 4): layout/src/cpurender/pixmap.rs:119-124 | layout/src/cpurender/pixmap.rs:303-308 | layout/src/cpurender/pixmap.rs:484-489 | layout/src/cpurender/raster.rs:4684-4687 \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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"0964ffaaf6758ef89b0c18bd95a625b5e4a392be42932b8de7dfa7b4e113c108"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): layout/src/cpurender/raster.rs:2965-2970 | layout/src/cpurender/raster.rs:3839-3844 | layout/src/cpurender/raster.rs:4250-4255 \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":"layout/src/cpurender/raster.rs"},"region":{"startLine":2965}}}],"partialFingerprints":{"codehealthFindingId/v1":"874ac045a358769df6260d841022013bb8e8423cf3be62ced2939343d6a4e59e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): layout/src/widgets/backstage.rs:351-356 | layout/src/widgets/ribbon.rs:993-998 | layout/src/widgets/ribbon.rs:1270-1275 \u2014 before extracting anything, compare \u0060layout/src/widgets/backstage.rs\u0060 and \u0060layout/src/widgets/ribbon.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 62 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":"layout/src/widgets/backstage.rs"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9295b66e80c9c249fa938f2e79e401b1a5fb69e4d18cb2da2ec61acbc073b0e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): layout/src/window.rs:3327-3340 | layout/src/window.rs:3353-3361 | layout/src/window.rs:3377-3382 \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":"layout/src/window.rs"},"region":{"startLine":3327}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c826bc9193631240853c2af20a681fe56d1cebf09c910eac0fef116b9c67174"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): core/src/prop_cache.rs:614-619 | core/src/prop_cache.rs:653-658 \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":"core/src/prop_cache.rs"},"region":{"startLine":614}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f95fd9a560eb9d3bf7f0972171cb1831ed19ca86842249bbdd4cfddc8bd0e7c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): core/src/prop_cache.rs:683-688 | core/src/prop_cache.rs:741-746 \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":"core/src/prop_cache.rs"},"region":{"startLine":683}}}],"partialFingerprints":{"codehealthFindingId/v1":"e40e2a8fc41c2172871cd2ff223da5219429eada495105a512aef4a74cf77e84"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): core/src/xml.rs:8442-8447 | core/src/xml.rs:8509-8514 \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":"core/src/xml.rs"},"region":{"startLine":8442}}}],"partialFingerprints":{"codehealthFindingId/v1":"afd389c49ab845be1113b8784c19ace8b103e03b1d7a78957f7fd9ed601f8ad6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): css/src/system.rs:2584-2589 | css/src/system.rs:2684-2689 \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":"css/src/system.rs"},"region":{"startLine":2584}}}],"partialFingerprints":{"codehealthFindingId/v1":"61d809a0a711e9973129e3df8c3435a81f19b0f3a7629814b5e290dbe5941c3b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): css/src/system.rs:2744-2749 | css/src/system.rs:2820-2825 \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":"css/src/system.rs"},"region":{"startLine":2744}}}],"partialFingerprints":{"codehealthFindingId/v1":"50480e5d3035b6263dfc149549cc65dfaa989c9810d523e42175ac1b99693594"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): dll/src/desktop/extra/iroh/mod.rs:63-68 | dll/src/desktop/extra/iroh/mod.rs:293-298 \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":"dll/src/desktop/extra/iroh/mod.rs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"4afcca76ddf0a44279ad52318c32d03419f4441b4ea616d8d332bfab4af9f257"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): dll/src/desktop/extra/video_codec/mod.rs:714-719 | dll/src/desktop/extra/video_codec/mod.rs:738-743 \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":"dll/src/desktop/extra/video_codec/mod.rs"},"region":{"startLine":714}}}],"partialFingerprints":{"codehealthFindingId/v1":"d50b21c2179cf456ec0659d21c5e9830c0953abe8cc01524cf2842d9d67313fd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): dll/src/desktop/shell2/android/mod.rs:1682-1687 | dll/src/desktop/shell2/ios/mod.rs:673-678 \u2014 \u0060dll/src/desktop/shell2/android/mod.rs\u0060 and \u0060dll/src/desktop/shell2/ios/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 17 separate duplicated blocks between them, totalling at least 215 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":1682}}}],"partialFingerprints":{"codehealthFindingId/v1":"3dea22e351c8cbce6f093b3970bf6b074228663cc72e509127a08a5d24a61036"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): dll/src/desktop/shell2/headless/mod.rs:2413-2420 | dll/src/desktop/shell2/headless/mod.rs:2433-2438 \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":"dll/src/desktop/shell2/headless/mod.rs"},"region":{"startLine":2413}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cddb359c122776c6618356eb29faf50181a4bcf05e4361db3a433d18e99b9c3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): dll/src/desktop/shell2/ios/text_input.rs:204-209 | dll/src/desktop/shell2/ios/text_input.rs:225-230 \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":"dll/src/desktop/shell2/ios/text_input.rs"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"9105893483f1d05abf5903048cb481c6c9f7b827e0e0eb652e4ca233d5ed0145"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): dll/src/desktop/shell2/linux/gnome_menu/protocol_impl.rs:386-391 | dll/src/desktop/shell2/linux/gnome_menu/protocol_impl.rs:463-468 \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":"dll/src/desktop/shell2/linux/gnome_menu/protocol_impl.rs"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e41848a61b268e08088b46629c85a4044c14eff4df44fcac9f934843bcb3935"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): dll/src/desktop/shell2/linux/system_style.rs:1350-1355 | dll/src/desktop/shell2/linux/system_style.rs:1495-1500 \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":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":1350}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cee560cf8e415b5a5fe3b52fdebc5ac59dd62f82a0fafeece3a6f73fd0172a7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): dll/src/desktop/shell2/linux/system_style.rs:1358-1363 | dll/src/desktop/shell2/linux/system_style.rs:1504-1509 \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":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":1358}}}],"partialFingerprints":{"codehealthFindingId/v1":"b926cb2c9bb377b1d718c81dcdb3326be42a9d5c110fa43552a1c985d8cdee0b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): dll/src/desktop/shell2/linux/system_style.rs:1367-1372 | dll/src/desktop/shell2/linux/system_style.rs:1513-1518 \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":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":1367}}}],"partialFingerprints":{"codehealthFindingId/v1":"97f8769248798364e147032d6bbaaa6e71506ef2e991b607b516c2844a522e20"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:1609-1614 | dll/src/desktop/shell2/linux/x11/mod.rs:7870-7875 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":1609}}}],"partialFingerprints":{"codehealthFindingId/v1":"2daf9175473ee62518ed136c1716ddf5ad46ca5dfe22bf1e10bc0373c28edac7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): dll/src/desktop/tray/linux.rs:511-516 | dll/src/desktop/tray/linux.rs:940-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":"dll/src/desktop/tray/linux.rs"},"region":{"startLine":511}}}],"partialFingerprints":{"codehealthFindingId/v1":"802ac7ef9d75a54c7178ca79e10c27bdb5d82d0666d9e2d93f3fbdad294ba638"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): dll/src/desktop/shell2/linux/system_icons.rs:195-200 | dll/src/desktop/shell2/linux/system_icons.rs:220-225 \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":"dll/src/desktop/shell2/linux/system_icons.rs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"326ea22c95463daf1e408e79c33eb557f1f1e1fbf18018488ae8bf6c64ee5d3e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/api.rs:2603-2609 | doc/src/api.rs:2746-2751 \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":"doc/src/api.rs"},"region":{"startLine":2603}}}],"partialFingerprints":{"codehealthFindingId/v1":"93e7b577dad6a7ee7eadf17f26550df11ae5b9872912318aa6dc5138c25b4988"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/ir_builder.rs:287-293 | doc/src/codegen/v2/ir_builder.rs:315-320 \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":"doc/src/codegen/v2/ir_builder.rs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1f47e7ace19c93d0bed511b20180f598bed3f8c563e895f28de94f88a39900d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/ir_builder.rs:1042-1047 | doc/src/codegen/v2/ir_builder.rs:1152-1157 \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":"doc/src/codegen/v2/ir_builder.rs"},"region":{"startLine":1042}}}],"partialFingerprints":{"codehealthFindingId/v1":"733a52885e813ed8e0a04d82ca0adc63f7eb80bb55c0a8b9e4e6370e9941625e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_c.rs:1032-1037 | doc/src/codegen/v2/lang_zig/c_decls.rs:468-473 \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":"doc/src/codegen/v2/lang_c.rs"},"region":{"startLine":1032}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e448c591006ad50424cb062a4c78f1207029f2cd90e2c47ba25d4b905fdceaf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_c.rs:1103-1108 | doc/src/codegen/v2/lang_zig/c_decls.rs:524-529 \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":"doc/src/codegen/v2/lang_c.rs"},"region":{"startLine":1103}}}],"partialFingerprints":{"codehealthFindingId/v1":"529f496027e1d7fc425465bbaa01b900df94d546cdf66bb46561e3b1ef67f044"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:151-156 | doc/src/codegen/v2/lang_swift/wrappers.rs:113-118 \u2014 \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 29 separate duplicated blocks between them, totalling at least 269 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c2bab4d20627ab07dca28aa505518b8947d14830c661ec4081c66cae41e1778"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:619-624 | doc/src/codegen/v2/lang_swift/wrappers.rs:452-457 \u2014 \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 29 separate duplicated blocks between them, totalling at least 269 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":619}}}],"partialFingerprints":{"codehealthFindingId/v1":"18ad3ec1fdb8b280d9cd65980348c202ed34999dd065cc25ab0f786dbb55ae53"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:1994-1999 | doc/src/codegen/v2/lang_d/wrappers.rs:2022-2027 \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":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":1994}}}],"partialFingerprints":{"codehealthFindingId/v1":"575ad2d69699da639f9a579b580efdd4494a29cba03d34272606c97fbb0a45db"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_haskell/wrappers.rs:1377-1382 | doc/src/codegen/v2/lang_node/managed.rs:130-141 \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":"doc/src/codegen/v2/lang_haskell/wrappers.rs"},"region":{"startLine":1377}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4428ee00fa1f7d7b27fe40b22832fa894d7116a0c97e76de075de3a87d4b3d6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_python.rs:1540-1545 | doc/src/codegen/v2/lang_python.rs:1589-1594 \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":"doc/src/codegen/v2/lang_python.rs"},"region":{"startLine":1540}}}],"partialFingerprints":{"codehealthFindingId/v1":"f082f65d607a5e6c825b3d14bbac98b253d6dc240365419b67fdaf96bcaa8c77"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:1583-1588 | doc/src/codegen/v2/lang_rust.rs:1901-1906 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":1583}}}],"partialFingerprints":{"codehealthFindingId/v1":"2105853aa5ea722fe7206a69066f72856b49509b495eb95814adc771438874cf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_swift/wrappers.rs:1032-1037 | doc/src/codegen/v2/lang_swift/wrappers.rs:3153-3158 \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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":1032}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc522caa9f09344aab6a77b825590fe4777d84aabf9be8e02f018591cab1593b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/patch/index.rs:187-192 | doc/src/patch/index.rs:282-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":"doc/src/patch/index.rs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac6c653ac8e262920eb39f3e595ec19954e3c0db6304148fd6c7003c8f17e6bc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/patch/index.rs:1244-1249 | doc/src/patch/index.rs:1325-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":"doc/src/patch/index.rs"},"region":{"startLine":1244}}}],"partialFingerprints":{"codehealthFindingId/v1":"62c8b92a69264e1babe1d04ab9064de40877ed058bc0fb7dbc8ee1d059922ae9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/reftest/autodebug.rs:2174-2181 | doc/src/reftest/autodoc.rs:915-920 \u2014 before extracting anything, compare \u0060doc/src/reftest/autodebug.rs\u0060 and \u0060doc/src/reftest/autodoc.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 35 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":"doc/src/reftest/autodebug.rs"},"region":{"startLine":2174}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c7e4b953569a3d2cdfc3bca6b7f5001d7cd56db19c43d6677ad7f836c858d41"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/reftest/debug.rs:392-397 | doc/src/reftest/mod.rs:574-579 \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":"doc/src/reftest/debug.rs"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"faa9390c0df370d5c1b1c4e6fd06bf641db9ad9cdbb34e915e326ab40c866746"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/main.rs:1661-1666 | doc/src/main.rs:1964-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":"doc/src/main.rs"},"region":{"startLine":1661}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf9492c717b94a925b574e971173d60eea4159fc621a6f235c80c8155667367d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_ada/types.rs:299-304 | doc/src/codegen/v2/lang_ada/types.rs:445-450 \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":"doc/src/codegen/v2/lang_ada/types.rs"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"90a8a1508f0d6f931d09b257349aca0c883e9524659988d4fb243d9fd98ecd6d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_lisp/types.rs:253-260 | doc/src/codegen/v2/lang_smalltalk/types.rs:197-202 \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":"doc/src/codegen/v2/lang_lisp/types.rs"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5c34680959e9f554bf4a4e3fee5c5c1939f1795a73ab143742470ff4cfd3dca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_fortran/types.rs:84-89 | doc/src/codegen/v2/lang_fortran/types.rs:118-123 \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":"doc/src/codegen/v2/lang_fortran/types.rs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"1913b3b90a2bdaadc958745a1a3266ba4c72e7cee4283c33617d12336a6871e5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_crystal/types.rs:397-402 | doc/src/codegen/v2/lang_julia/mod.rs:296-301 \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":"doc/src/codegen/v2/lang_crystal/types.rs"},"region":{"startLine":397}}}],"partialFingerprints":{"codehealthFindingId/v1":"2873b5611db429c63ea26e2c7d2378484bd760899b132619a57ce4b7d1b756a9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_pascal/types.rs:306-311 | doc/src/codegen/v2/lang_pascal/types.rs:316-321 \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":"doc/src/codegen/v2/lang_pascal/types.rs"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec9dce01091d2f3f30a0beb9da3f32d3f1ad876d66c8c67a315744bb14c94d6c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_cpp/common.rs:1860-1868 | doc/src/codegen/v2/lang_cpp/common.rs:1945-1950 \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":"doc/src/codegen/v2/lang_cpp/common.rs"},"region":{"startLine":1860}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cc971a1887f98d695b9c41316b19eb14f4b99f63ab85a03523528bb9a6cbe3b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_csharp/types.rs:162-167 | doc/src/codegen/v2/lang_csharp/types.rs:345-350 \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":"doc/src/codegen/v2/lang_csharp/types.rs"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b75f898b6c8c4f8f02bc01f6a48e684b399eaa38cad5b7f713b32c9676c4fc6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): layout/src/cpurender/compositor.rs:428-433 | layout/src/cpurender/compositor.rs:469-474 \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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":428}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5a6c53a5edaef14356f0506e91ce359a65ea10e8cc48eada88f34065232b78f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): layout/src/cpurender/compositor.rs:3117-3122 | layout/src/cpurender/compositor.rs:3174-3179 \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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":3117}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd8c00c32b8c1d084ba4a71e6fda7494bd5c69d3c5bc5fc9fdeb7b335e65b8bb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): layout/src/cpurender/pixmap.rs:1339-1344 | layout/src/cpurender/pixmap.rs:1444-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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":1339}}}],"partialFingerprints":{"codehealthFindingId/v1":"21c6bdb764678e6270fbf016820166be2e401ac46a285349880184a5b2711416"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): layout/src/cpurender/svg.rs:175-180 | layout/src/cpurender/svg.rs:464-469 \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":"layout/src/cpurender/svg.rs"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"35a103975ef5f0e87bde13002f5cca25436c59a61caddc6896102aacead8bcfb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): layout/src/font.rs:2263-2268 | layout/src/font.rs:2311-2316 \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":"layout/src/font.rs"},"region":{"startLine":2263}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2ccbdfec894830f00a15baa0bd49f22dbc869a225505f356a84e924cc43483c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): layout/src/managers/a11y_snapshot.rs:478-483 | layout/src/window.rs:12379-12385 \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":"layout/src/managers/a11y_snapshot.rs"},"region":{"startLine":478}}}],"partialFingerprints":{"codehealthFindingId/v1":"95ef0643958d30cde454d6a4dc53e4569b23501f2f897cb303fa8119d9a95ebb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): layout/src/managers/gesture.rs:2539-2544 | layout/src/managers/gesture.rs:2556-2561 \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":"layout/src/managers/gesture.rs"},"region":{"startLine":2539}}}],"partialFingerprints":{"codehealthFindingId/v1":"281e317ae0ee693f32ffcfeb16a8007f948c106ba195993a897e6cf998630caa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): layout/src/solver3/cache.rs:3119-3124 | layout/src/solver3/cache.rs:3188-3193 \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":"layout/src/solver3/cache.rs"},"region":{"startLine":3119}}}],"partialFingerprints":{"codehealthFindingId/v1":"faa6ba20041ba7f64b4a505579213e2162d10ff269d6b249dab9570ab4f6477a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): layout/src/widgets/chip.rs:275-280 | layout/src/widgets/switch.rs:180-185 \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":"layout/src/widgets/chip.rs"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"962b76a0c78cb35f01c1bd5fd3e3173c92841d5e321d920503f8370af5b5ab30"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): layout/src/widgets/node_graph.rs:1073-1078 | layout/src/widgets/node_graph.rs:1091-1097 \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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":1073}}}],"partialFingerprints":{"codehealthFindingId/v1":"be78dbb6898b1d7f7da03206561cb427be8e0511a602db19ea2dbbf869ad9d3f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): layout/src/widgets/ribbon.rs:949-954 | layout/src/widgets/ribbon.rs:1095-1100 \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":"layout/src/widgets/ribbon.rs"},"region":{"startLine":949}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e42b860910cfb72f92b85e5f83d40d08277933dd94e607c35ec8b4ed9701efe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): layout/src/window.rs:10563-10568 | layout/src/window.rs:20142-20147 \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":"layout/src/window.rs"},"region":{"startLine":10563}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e25c6c80c7b150510dc9aca3f4e3fb276a691b2ef8fc2a3a937e2f4adb0e5a3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): layout/src/xml/svg.rs:1855-1860 | layout/src/xml/svg.rs:1896-1901 \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":"layout/src/xml/svg.rs"},"region":{"startLine":1855}}}],"partialFingerprints":{"codehealthFindingId/v1":"96fd815e43b2b4901a08a057f5517bb4f3097643238c904b6428e6a7e2cebf00"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): webrender/core/src/renderer/mod.rs:3841-3846 | webrender/core/src/renderer/mod.rs:3849-3854 \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":"webrender/core/src/renderer/mod.rs"},"region":{"startLine":3841}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa5e330e07e5c75a4832e82be2b2e39aee0a0423e0ad0d43a879f279c080e7c2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 9): layout/src/callbacks.rs:3460-3464 | layout/src/callbacks.rs:3485-3489 | layout/src/callbacks.rs:3510-3514 | layout/src/callbacks.rs:3535-3539 | layout/src/callbacks.rs:3560-3564 | layout/src/callbacks.rs:3586-3590 | layout/src/callbacks.rs:3637-3641 | layout/src/callbacks.rs:3656-3660 | layout/src/callbacks.rs:3788-3792 \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":"layout/src/callbacks.rs"},"region":{"startLine":3460}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e908e02d0dafafd1a8186644f19258e4e8b0a8ba0e75024573b3e162c560ba1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 6): dll/src/web/transpiler_remill.rs:1642-1646 | dll/src/web/transpiler_remill.rs:1666-1670 | dll/src/web/transpiler_remill.rs:1692-1696 | dll/src/web/transpiler_remill.rs:1723-1727 | dll/src/web/transpiler_remill.rs:1795-1799 | dll/src/web/transpiler_remill.rs:1820-1824 \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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":1642}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a366b021027e185635efcf57a7226843cd1144220742968a43e4d273faf840f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 6): layout/src/widgets/backstage.rs:351-355 | layout/src/widgets/backstage.rs:383-387 | layout/src/widgets/ribbon.rs:993-997 | layout/src/widgets/ribbon.rs:1270-1274 | layout/src/widgets/ribbon.rs:1326-1330 | layout/src/widgets/ribbon.rs:1440-1444 \u2014 before extracting anything, compare \u0060layout/src/widgets/backstage.rs\u0060 and \u0060layout/src/widgets/ribbon.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 62 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":"layout/src/widgets/backstage.rs"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"5af5d1912192b023a8f75d03310a78712d08e7211cb05de339063ee7b5ac38a3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 5): doc/src/codegen/v2/lang_crystal/mod.rs:290-294 | doc/src/codegen/v2/lang_d/mod.rs:418-422 | doc/src/codegen/v2/lang_julia/mod.rs:184-188 | doc/src/codegen/v2/lang_odin/mod.rs:119-123 | doc/src/codegen/v2/lang_v/mod.rs:142-146 \u2014 \u0060doc/src/codegen/v2/lang_crystal/mod.rs\u0060 and \u0060doc/src/codegen/v2/lang_d/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 39 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/mod.rs"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"05c1b35aba75604d100cafcc35215f76bada8fc1616e520038d323bf006cc11c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): css/src/system.rs:2222-2226 | css/src/system.rs:2274-2278 | css/src/system.rs:2326-2330 | css/src/system.rs:2378-2382 \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":"css/src/system.rs"},"region":{"startLine":2222}}}],"partialFingerprints":{"codehealthFindingId/v1":"3975b363294b6484457a34f6f9353f140187c823932d124de9257d6e6402bcc5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): css/src/system.rs:2689-2693 | css/src/system.rs:2896-2900 | css/src/system.rs:2945-2949 | css/src/system.rs:2994-2998 \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":"css/src/system.rs"},"region":{"startLine":2689}}}],"partialFingerprints":{"codehealthFindingId/v1":"764df7d56c87d2825fa9ac49ff94390ca9d28fe3656815d5ab7b48e8556584af"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): doc/src/codegen/v2/lang_crystal/functions.rs:91-95 | doc/src/codegen/v2/lang_d/functions.rs:53-57 | doc/src/codegen/v2/lang_odin/functions.rs:63-67 | doc/src/codegen/v2/lang_v/functions.rs:82-86 \u2014 \u0060doc/src/codegen/v2/lang_crystal/functions.rs\u0060 and \u0060doc/src/codegen/v2/lang_v/functions.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 30 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/functions.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"de7285f8808cac62b38a128ee1ecb1957b2501b16dc5f579352c083eafa95dc5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): core/src/diff.rs:741-746 | core/src/diff.rs:787-791 | core/src/diff.rs:801-805 \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":"core/src/diff.rs"},"region":{"startLine":741}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d72daae75b41054299617e92ef8b2008e9a6875e00ec61c1a97866700e31403"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): css/src/props/property.rs:1586-1608 | css/src/props/property.rs:1833-1867 | css/src/props/property.rs:1874-1878 \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":"css/src/props/property.rs"},"region":{"startLine":1586}}}],"partialFingerprints":{"codehealthFindingId/v1":"39a90964d64456ee995c7cc76eed89cd8650862d5c442a55bf098f7e6ffe01fd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): css/src/system.rs:2539-2543 | css/src/system.rs:2590-2594 | css/src/system.rs:2640-2644 \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":"css/src/system.rs"},"region":{"startLine":2539}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ee989173e2f925c0b36f190bb1639eab27722a2cb7c7366ccf815e286fa8754"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): dll/src/desktop/shell2/linux/gnome_menu/protocol_impl.rs:187-191 | dll/src/desktop/shell2/linux/gnome_menu/protocol_impl.rs:403-407 | dll/src/desktop/shell2/linux/gnome_menu/protocol_impl.rs:503-507 \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":"dll/src/desktop/shell2/linux/gnome_menu/protocol_impl.rs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6150c0d2cd3bcbf4050cfa9a48f9dda4aea82f6318d97294371272cb7d3a3cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): dll/src/desktop/shell2/linux/x11/events.rs:1542-1546 | dll/src/desktop/shell2/linux/x11/mod.rs:8029-8033 | dll/src/desktop/shell2/windows/mod.rs:7583-7587 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/x11/events.rs\u0060 and \u0060dll/src/desktop/shell2/windows/mod.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 86 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/x11/events.rs"},"region":{"startLine":1542}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc88848ada7b64899384437c23262eeb58a992de2805ce675e3384b03415262a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): doc/src/codegen/v2/lang_crystal/model.rs:581-585 | doc/src/codegen/v2/lang_d/model.rs:896-900 | doc/src/codegen/v2/lang_swift/model.rs:897-901 \u2014 \u0060doc/src/codegen/v2/lang_crystal/model.rs\u0060 and \u0060doc/src/codegen/v2/lang_d/model.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 9 separate duplicated blocks between them, totalling at least 74 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/model.rs"},"region":{"startLine":581}}}],"partialFingerprints":{"codehealthFindingId/v1":"820304dab747e57a9d590cc85cb0e242a54ea45fb903eb3d229a202ae0d0f64d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): doc/src/codegen/v2/lang_cobol/types.rs:136-140 | doc/src/codegen/v2/lang_cobol/types.rs:319-323 | doc/src/codegen/v2/lang_cobol/types.rs:357-361 \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":"doc/src/codegen/v2/lang_cobol/types.rs"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"d664592ec8dc415dab26e991489b792a37159b2b2ca034437cb736941e6d1e5d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): layout/src/widgets/backstage.rs:356-360 | layout/src/widgets/ribbon.rs:998-1002 | layout/src/widgets/ribbon.rs:1180-1184 \u2014 before extracting anything, compare \u0060layout/src/widgets/backstage.rs\u0060 and \u0060layout/src/widgets/ribbon.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 62 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":"layout/src/widgets/backstage.rs"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"a20e31c8c9453904345d294fe33ca241457c5a5a538efcc5e397de9b5a5140aa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): layout/src/widgets/backstage.rs:387-391 | layout/src/widgets/ribbon.rs:1046-1050 | layout/src/widgets/ribbon.rs:1094-1098 \u2014 before extracting anything, compare \u0060layout/src/widgets/backstage.rs\u0060 and \u0060layout/src/widgets/ribbon.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 62 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":"layout/src/widgets/backstage.rs"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"28f17259719201da33f733e72ea0232df5d0ef7efe1754c9170ef95951dd6f0e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): layout/src/widgets/ribbon.rs:949-953 | layout/src/widgets/ribbon.rs:1047-1051 | layout/src/widgets/ribbon.rs:1095-1099 \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":"layout/src/widgets/ribbon.rs"},"region":{"startLine":949}}}],"partialFingerprints":{"codehealthFindingId/v1":"498f0a28244fbe89b26efbd3412c86498c13b04c13542f511bf300808b167243"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): layout/src/widgets/ribbon.rs:999-1003 | layout/src/widgets/ribbon.rs:1181-1185 | layout/src/widgets/ribbon.rs:1224-1228 \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":"layout/src/widgets/ribbon.rs"},"region":{"startLine":999}}}],"partialFingerprints":{"codehealthFindingId/v1":"a88f40c71ef6e52ef86e803371fa67c2a76537eb49a0d6cb13a2e78a7154a8c8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): core/src/json.rs:463-467 | core/src/json.rs:479-483 \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":"core/src/json.rs"},"region":{"startLine":463}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9855dc5e5e56e6a208e74024f8d62b6d98fe4bd78212a44c7e095a28f11c936"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): dll/src/desktop/display.rs:500-504 | dll/src/desktop/display.rs:506-516 \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":"dll/src/desktop/display.rs"},"region":{"startLine":500}}}],"partialFingerprints":{"codehealthFindingId/v1":"c390a5d37ed10563eb06afad46678097a0613a1b635aa802ccfd9922073b2f66"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): dll/src/desktop/extra/video_codec/demux.rs:137-141 | dll/src/desktop/extra/video_codec/videotoolbox.rs:524-530 \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":"dll/src/desktop/extra/video_codec/demux.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"e94030f498a9e4a72d375ae88fd8c42dbbf79e7a3073db49b51a988bf9463ac0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): dll/src/desktop/extra/video_codec/videotoolbox.rs:671-675 | dll/src/desktop/extra/video_codec/videotoolbox.rs:794-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":"dll/src/desktop/extra/video_codec/videotoolbox.rs"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"e461eaed12cd14d6cb66b1e75faf917340bfcb5825d62db23cf75d39afd82840"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): dll/src/desktop/shell2/android/mod.rs:212-216 | dll/src/desktop/shell2/ios/mod.rs:1611-1615 \u2014 \u0060dll/src/desktop/shell2/android/mod.rs\u0060 and \u0060dll/src/desktop/shell2/ios/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 17 separate duplicated blocks between them, totalling at least 215 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"98414e8c88aa46fea154ae17a91f89012ab54aef8ac6e622d99f4efc50a3abf8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): dll/src/desktop/shell2/headless/mod.rs:2396-2400 | dll/src/desktop/shell2/headless/mod.rs:2413-2417 \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":"dll/src/desktop/shell2/headless/mod.rs"},"region":{"startLine":2396}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fb19a5bc92b8b2d0ee8bf5640e75d1e3f7e46bc8c558d77b95ac372c2d9ff74"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (3\u20135 lines \u00D7 3): dll/src/desktop/shell2/linux/system_style.rs:771-775 | dll/src/desktop/shell2/linux/system_style.rs:1468-1472 | dll/src/desktop/shell2/linux/system_style.rs:1579-1581 \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":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":771}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d8340d8494adb7e922cb42b8c517f591e52313e4fbe349f548d3355e32254fc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): dll/src/desktop/shell2/linux/system_style.rs:3007-3011 | dll/src/desktop/shell2/linux/system_style.rs:3017-3021 \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":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":3007}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfff90fd42034fa7fd968a1d6fcefa7e7e110caa121dab2891920a0418c017ff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:2074-2078 | dll/src/desktop/shell2/linux/wayland/mod.rs:9501-9505 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":2074}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b0fc57de58747e86c3176eba63a74e158c32dc932676803d4517512d41e7dbc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): dll/src/desktop/extra/biometric/android.rs:38-44 | dll/src/desktop/extra/keyring/android.rs:32-36 \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":"dll/src/desktop/extra/biometric/android.rs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc1ef4ab990d49f566951f12e39f73e78c1b64add335d25f33d299a003db4bef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/api.rs:1878-1885 | doc/src/api.rs:1984-1988 \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":"doc/src/api.rs"},"region":{"startLine":1878}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6b8a246a6a768f3ef915c0a2a891cdac2fd01ba94d07cba090c5f69c1ae853b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/autofix/type_index.rs:2019-2023 | doc/src/autofix/type_index.rs:2188-2192 \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":"doc/src/autofix/type_index.rs"},"region":{"startLine":2019}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2dc2c4726e3ac169b1fe18cbc385afab4b18823ec71ecc165dff9aceb40ef00"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/codegen/v2/lang_crystal/wrappers.rs:1073-1077 | doc/src/codegen/v2/lang_crystal/wrappers.rs:1627-1631 \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":"doc/src/codegen/v2/lang_crystal/wrappers.rs"},"region":{"startLine":1073}}}],"partialFingerprints":{"codehealthFindingId/v1":"d76c139af2765d99e159d1c55dabc9dbebde876d514918bc232e82ce1a679f49"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:646-650 | doc/src/codegen/v2/lang_swift/wrappers.rs:479-483 \u2014 \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 29 separate duplicated blocks between them, totalling at least 269 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":646}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5081aa508decc977f8533f33f50132ec939d5ef84b160348fcb9f2a75800d66"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:1787-1791 | doc/src/codegen/v2/lang_swift/wrappers.rs:1763-1767 \u2014 \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 29 separate duplicated blocks between them, totalling at least 269 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":1787}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7454363521aa0cd79e5b7a0d8252a35f02c88b9f2c94d38de687dc63298be6f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:2537-2541 | doc/src/codegen/v2/lang_swift/wrappers.rs:2585-2589 \u2014 \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 29 separate duplicated blocks between them, totalling at least 269 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":2537}}}],"partialFingerprints":{"codehealthFindingId/v1":"c842d047d098056d0bef5cb07f37f136da3cde9a9052bf78b7154cc38d44fd5c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:2696-2700 | doc/src/codegen/v2/lang_d/wrappers.rs:2710-2715 \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":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":2696}}}],"partialFingerprints":{"codehealthFindingId/v1":"225a4ebd56c5f7c2544ac6c11946a773955237d278c3ae997beb933dd8ee7100"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/codegen/v2/lang_ocaml/wrappers.rs:110-114 | doc/src/codegen/v2/lang_ocaml/wrappers.rs:167-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":"doc/src/codegen/v2/lang_ocaml/wrappers.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed82f1eeba7b91e21b5284ca37f75ceaa091c092866b121812b69fc400055947"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/codegen/v2/lang_swift/wrappers.rs:2746-2750 | doc/src/codegen/v2/lang_swift/wrappers.rs:2760-2764 \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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":2746}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2dac09bd6e7707b566d271697bfc78ae5dd5caa056df057bc35ccc191d494e7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/lint_examples.rs:498-502 | doc/src/lint_examples.rs:551-555 \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":"doc/src/lint_examples.rs"},"region":{"startLine":498}}}],"partialFingerprints":{"codehealthFindingId/v1":"77786e8e10fc12143894037e4bc41ead549c536ea50d4dd68972013e90d5db9a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/reftest/autoreview.rs:1462-1466 | doc/src/reftest/autoreview.rs:1991-1995 \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":"doc/src/reftest/autoreview.rs"},"region":{"startLine":1462}}}],"partialFingerprints":{"codehealthFindingId/v1":"1195ea45659420da23403210c8cfb745815584a01db33697c9f9795c7de42ce6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/codegen/v2/lang_ada/types.rs:415-419 | doc/src/codegen/v2/lang_ada/types.rs:454-458 \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":"doc/src/codegen/v2/lang_ada/types.rs"},"region":{"startLine":415}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1d328ec27bf2845d6bdd62e572e3a0622cabd8b5cff2d845b601e5c940d333f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/codegen/v2/lang_ruby/types.rs:214-218 | doc/src/codegen/v2/lang_ruby/types.rs:358-362 \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":"doc/src/codegen/v2/lang_ruby/types.rs"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"3025b49e76b9388fcd78d31ee4ca7e37fcc44478499e26fdb5cd9926a493bc71"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/autofix/debug.rs:763-767 | doc/src/autofix/debug.rs:1068-1072 \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":"doc/src/autofix/debug.rs"},"region":{"startLine":763}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1665414b5aced6584a3d5fc33811ad97657a7c8181814156593230614bc37e9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/codegen/v2/lang_freebasic/types.rs:328-332 | doc/src/codegen/v2/lang_vb6/types.rs:320-324 \u2014 \u0060doc/src/codegen/v2/lang_freebasic/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_vb6/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 8 separate duplicated blocks between them, totalling at least 109 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_freebasic/types.rs"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"289f5d4f0a013c9dbb2c40c947b67e5b2aecdea446d7449ecbb664f9737066f3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): layout/src/cpurender/compositor.rs:568-572 | layout/src/cpurender/raster.rs:2671-2675 \u2014 before extracting anything, compare \u0060layout/src/cpurender/compositor.rs\u0060 and \u0060layout/src/cpurender/raster.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 56 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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":568}}}],"partialFingerprints":{"codehealthFindingId/v1":"725ec4e67f7f4fc072d2b2eceabe20b3102dd21265c67c4d07b1edf08c750c83"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): layout/src/cpurender/compositor.rs:2372-2378 | layout/src/cpurender/raster.rs:4002-4006 \u2014 before extracting anything, compare \u0060layout/src/cpurender/compositor.rs\u0060 and \u0060layout/src/cpurender/raster.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 56 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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":2372}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ea6f3ee35cce0cf89fb7f1abbc3093362c456a4cb146b2fd6cf0a1b223b7937"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): layout/src/cpurender/pixmap.rs:275-279 | layout/src/cpurender/pixmap.rs:456-460 \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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"cee7e810fb8f6858df962df2a9c2b8cc3ab395a56cf55716f8911d15c76271bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): layout/src/cpurender/raster.rs:4762-4766 | layout/src/cpurender/raster.rs:4776-4780 \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":"layout/src/cpurender/raster.rs"},"region":{"startLine":4762}}}],"partialFingerprints":{"codehealthFindingId/v1":"d14c07d82be5ee567e84cb7dfb6c571c75258999d20801764e9458f7b960e0ac"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): layout/src/cpurender/svg.rs:515-519 | layout/src/xml/svg.rs:2038-2042 \u2014 \u0060layout/src/cpurender/svg.rs\u0060 and \u0060layout/src/xml/svg.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 35 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/cpurender/svg.rs"},"region":{"startLine":515}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c5d5ea9b3e65337e33956ea8a11cdabf20ddabefeb395ebed28bb789da57938"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): layout/src/document_edit.rs:493-497 | layout/src/document_edit.rs:556-560 \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":"layout/src/document_edit.rs"},"region":{"startLine":493}}}],"partialFingerprints":{"codehealthFindingId/v1":"68d07ca5a994bb3ff23f9e1fbf901e702cf216df0b65dcd6cf25e20a894bfe27"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): layout/src/font.rs:2146-2150 | layout/src/glyph_cache.rs:672-676 \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":"layout/src/font.rs"},"region":{"startLine":2146}}}],"partialFingerprints":{"codehealthFindingId/v1":"dffb510806a0c1d39150a3298f8cf307a58c801b4c8b8f0886e48926d68f1bda"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): layout/src/http.rs:673-677 | layout/src/http.rs:691-695 \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":"layout/src/http.rs"},"region":{"startLine":673}}}],"partialFingerprints":{"codehealthFindingId/v1":"27ecc5638d911ba6ff0dbd470be28345d5d1d051a7433850fdc39c96fb941ac2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): layout/src/scroll_timer.rs:594-600 | layout/src/scroll_timer.rs:651-655 \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":"layout/src/scroll_timer.rs"},"region":{"startLine":594}}}],"partialFingerprints":{"codehealthFindingId/v1":"aef1351b01c2daab401b84ce9de24603be3f9349648b94fa4475713f8107c34e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): layout/src/solver3/fc.rs:7469-7473 | layout/src/solver3/fc.rs:7479-7483 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":7469}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c1da02507811193382b7ba322502c0013eb40d711d862353013149c7d9a9722"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): layout/src/text3/cache.rs:11868-11873 | layout/src/text3/knuth_plass.rs:693-697 \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":"layout/src/text3/cache.rs"},"region":{"startLine":11868}}}],"partialFingerprints":{"codehealthFindingId/v1":"571ac1a7253c1d5a01cccdde4c0d630243bc17f6cec5d54edc7725e9ff825115"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): layout/src/text3/dense.rs:564-568 | layout/src/text3/dense.rs:593-597 \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":"layout/src/text3/dense.rs"},"region":{"startLine":564}}}],"partialFingerprints":{"codehealthFindingId/v1":"875255245c054f77c4f4570049179048f7c79a2da75b4b4c02002e82a4eb7115"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): layout/src/widgets/ribbon.rs:962-966 | layout/src/widgets/ribbon.rs:1223-1227 \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":"layout/src/widgets/ribbon.rs"},"region":{"startLine":962}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fa2438af71c8d44e178dc5ab9758045c7e1857030ed42bda062320f7618c70b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): layout/src/widgets/ribbon.rs:1451-1455 | layout/src/widgets/ribbon.rs:1513-1517 \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":"layout/src/widgets/ribbon.rs"},"region":{"startLine":1451}}}],"partialFingerprints":{"codehealthFindingId/v1":"e646ef6ec98eced93b20bd66506c184a34174fbcb36c58213a7119f8ec27302d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): layout/src/window.rs:8266-8270 | layout/src/window.rs:8277-8282 \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":"layout/src/window.rs"},"region":{"startLine":8266}}}],"partialFingerprints":{"codehealthFindingId/v1":"0be059fc982f44d857ffe6eff791aaff211077cebec17200132f9ff214b47609"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): core/src/callbacks.rs:665-671 | core/src/callbacks.rs:1431-1437 | layout/src/callbacks.rs:7298-7304 \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":"core/src/callbacks.rs"},"region":{"startLine":665}}}],"partialFingerprints":{"codehealthFindingId/v1":"97c84ec9aa4fd5a23d5e975b910ed9bf5b4c77b53c11a6c51ae5e9eaaaad68e2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): core/src/task.rs:1266-1272 | layout/src/thread.rs:176-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":"core/src/task.rs"},"region":{"startLine":1266}}}],"partialFingerprints":{"codehealthFindingId/v1":"b70eedc45c4fd1f0ef93f0097afb34a2ac063f3ba1f92a74889a76730781ad65"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): css/src/props/style/filter.rs:173-179 | css/src/props/style/transform.rs:229-235 \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":"css/src/props/style/filter.rs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"cae66daece996384c488bc149e31ed48d71dc711f7db49d0d4a980e06770e25d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): dll/src/desktop/extra/geolocation/ios.rs:69-79 | dll/src/desktop/extra/geolocation/macos.rs:65-75 \u2014 before extracting anything, compare \u0060dll/src/desktop/extra/geolocation/ios.rs\u0060 and \u0060dll/src/desktop/extra/geolocation/macos.rs\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 130 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":"dll/src/desktop/extra/geolocation/ios.rs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca7014940f755d5e1e1ed72cfb2c47fe3259975cbf0a536c18fa5c50ff38cab0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): dll/src/desktop/extra/geolocation/ios.rs:139-147 | dll/src/desktop/extra/geolocation/macos.rs:133-141 \u2014 before extracting anything, compare \u0060dll/src/desktop/extra/geolocation/ios.rs\u0060 and \u0060dll/src/desktop/extra/geolocation/macos.rs\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 130 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":"dll/src/desktop/extra/geolocation/ios.rs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffcba9cabc737515cf9a66b0e25f524315cb437ed3fe0fddb8657fb2c4d6add1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): dll/src/desktop/extra/geolocation/ios.rs:226-234 | dll/src/desktop/extra/geolocation/macos.rs:218-226 \u2014 before extracting anything, compare \u0060dll/src/desktop/extra/geolocation/ios.rs\u0060 and \u0060dll/src/desktop/extra/geolocation/macos.rs\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 130 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":"dll/src/desktop/extra/geolocation/ios.rs"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fdecd618ee40e9a2c054766a02c56a1f5486be8b4c2b24912ef11304e389cc3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): dll/src/desktop/extra/geolocation/ios.rs:239-247 | dll/src/desktop/extra/geolocation/macos.rs:231-239 \u2014 before extracting anything, compare \u0060dll/src/desktop/extra/geolocation/ios.rs\u0060 and \u0060dll/src/desktop/extra/geolocation/macos.rs\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 130 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":"dll/src/desktop/extra/geolocation/ios.rs"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"1395a3eab275afa95752ad7d0a1a161768380ea75bf8a45588b3b7bdab8f497c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): dll/src/desktop/extra/geolocation/linux.rs:62-68 | dll/src/desktop/extra/geolocation/windows.rs:81-87 \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":"dll/src/desktop/extra/geolocation/linux.rs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"5abc4020ebabdecd7b74957fadb21b2b286de69ed6774b6b215dea2ef58f5438"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): dll/src/desktop/extra/keyring/apple.rs:35-40 | dll/src/desktop/extra/keyring/linux.rs:177-182 | dll/src/desktop/extra/keyring/windows.rs:35-40 \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 all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/extra/keyring/apple.rs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee166afe230101372c8036b521eb74cc1b7d9bcb7c8ddd89570295f572444c85"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): dll/src/desktop/extra/sensors/linux.rs:238-243 | dll/src/desktop/extra/sensors/windows.rs:424-429 \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":"dll/src/desktop/extra/sensors/linux.rs"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b4c033b006ba63fc51af86d3dad14b85e7f7f0a2916427ff8175cce74299ae3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): dll/src/desktop/extra/sensors/apple.rs:235-240 | dll/src/desktop/extra/sqlite/mod.rs:318-323 \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":"dll/src/desktop/extra/sensors/apple.rs"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"aea9fdab5290a1a8c8987812b5eae4b61766b357d388ee67aac0371fc5d1aa28"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): dll/src/desktop/extra/sqlite/mod.rs:332-337 | dll/src/unified/sqlite.rs:105-110 \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":"dll/src/desktop/extra/sqlite/mod.rs"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"feefea3e84296517b8ef38e7109758852cc33c057198714bc6a09005a8b27636"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): dll/src/desktop/shell2/android/mod.rs:596-601 | dll/src/desktop/shell2/ios/mod.rs:2044-2049 | dll/src/desktop/shell2/linux/wayland/mod.rs:10097-10102 \u2014 \u0060dll/src/desktop/shell2/android/mod.rs\u0060 and \u0060dll/src/desktop/shell2/ios/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 17 separate duplicated blocks between them, totalling at least 215 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":596}}}],"partialFingerprints":{"codehealthFindingId/v1":"cde1e6a904d3d805c79ca0d12254f7d962b818801cb4ff61347ab40b07a86a11"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): dll/src/desktop/shell2/android/mod.rs:602-606 | dll/src/desktop/shell2/ios/mod.rs:2050-2054 | dll/src/desktop/shell2/linux/wayland/mod.rs:10104-10108 \u2014 \u0060dll/src/desktop/shell2/android/mod.rs\u0060 and \u0060dll/src/desktop/shell2/ios/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 17 separate duplicated blocks between them, totalling at least 215 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":602}}}],"partialFingerprints":{"codehealthFindingId/v1":"9af423dddfe36aff6ffb0314301026600e656ec91509be0ba43bcb506f68bb9a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): dll/src/desktop/shell2/android/mod.rs:613-619 | dll/src/desktop/shell2/ios/mod.rs:2061-2067 | dll/src/desktop/shell2/linux/wayland/mod.rs:10117-10123 \u2014 \u0060dll/src/desktop/shell2/android/mod.rs\u0060 and \u0060dll/src/desktop/shell2/ios/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 17 separate duplicated blocks between them, totalling at least 215 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"03c19b314a27019ad9714e7f71d4538fd0e381381f89f4401c14c5ba189b17b7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): dll/src/desktop/shell2/android/mod.rs:623-629 | dll/src/desktop/shell2/ios/mod.rs:2071-2077 | dll/src/desktop/shell2/linux/wayland/mod.rs:10128-10134 \u2014 \u0060dll/src/desktop/shell2/android/mod.rs\u0060 and \u0060dll/src/desktop/shell2/ios/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 17 separate duplicated blocks between them, totalling at least 215 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":623}}}],"partialFingerprints":{"codehealthFindingId/v1":"019757905b9b832007b64c8b3ab15ce16fdeaa4317014e1e2ab2f38435e32a06"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/desktop/shell2/android/mod.rs:3269-3276 | dll/src/desktop/shell2/ios/mod.rs:869-876 \u2014 \u0060dll/src/desktop/shell2/android/mod.rs\u0060 and \u0060dll/src/desktop/shell2/ios/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 17 separate duplicated blocks between them, totalling at least 215 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":3269}}}],"partialFingerprints":{"codehealthFindingId/v1":"f262c8ac6d66af869b8790dc6dc8e394ffdb261de0e5d91c83f2a951fa26dbb5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): dll/src/desktop/shell2/headless/mod.rs:2043-2059 | dll/src/desktop/shell2/ios/mod.rs:1857-1870 \u2014 \u0060dll/src/desktop/shell2/headless/mod.rs\u0060 and \u0060dll/src/desktop/shell2/ios/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 6 separate duplicated blocks between them, totalling at least 136 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/headless/mod.rs"},"region":{"startLine":2043}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf55881d28866932dc891b176e177ef9fbc19d733a08bcf53c01eb686ad038dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 3): dll/src/desktop/shell2/linux/wayland/mod.rs:1591-1606 | dll/src/desktop/shell2/linux/x11/mod.rs:7852-7867 | dll/src/desktop/shell2/windows/mod.rs:7341-7356 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":1591}}}],"partialFingerprints":{"codehealthFindingId/v1":"86202a5d13225bbcc76c0153d90541f362321d0b6c40a4d090a22314f6cee981"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:1645-1655 | dll/src/desktop/shell2/linux/x11/mod.rs:7906-7916 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":1645}}}],"partialFingerprints":{"codehealthFindingId/v1":"5769f12f87007b1050b1b8b00717298ce2933a6c3f94179b3d709bbcbbf71077"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): dll/src/desktop/shell2/linux/wayland/mod.rs:1660-1666 | dll/src/desktop/shell2/linux/x11/mod.rs:7921-7927 | dll/src/desktop/shell2/macos/mod.rs:4415-4421 | dll/src/desktop/shell2/windows/mod.rs:7437-7443 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":1660}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab0ccc1a8b9f66b0879dadbdc12f0676960c27a01a84d711c5d40e5e8ba61fff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): dll/src/desktop/shell2/linux/x11/accessibility.rs:34-40 | dll/src/desktop/shell2/windows/accessibility.rs:44-50 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/x11/accessibility.rs\u0060 and \u0060dll/src/desktop/shell2/windows/accessibility.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 63 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/x11/accessibility.rs"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"01464b3f1cdb7d3a609e9fdd16387209855b8187bc42cfdb0ba23e37f6ab00a2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/desktop/shell2/linux/x11/accessibility.rs:160-167 | dll/src/desktop/shell2/windows/accessibility.rs:137-144 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/x11/accessibility.rs\u0060 and \u0060dll/src/desktop/shell2/windows/accessibility.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 63 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/x11/accessibility.rs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c9bb43f5c9ff0f4dba1c9e013068bda0e9c3ff83a952d4ff4f8b3e7dc522e3d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): dll/src/desktop/shell2/macos/clipboard.rs:195-201 | dll/src/desktop/shell2/windows/clipboard.rs:201-207 \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":"dll/src/desktop/shell2/macos/clipboard.rs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"f416882e51047e99fc17da9b1601111677dade1798508c30a82c25279428734f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): dll/src/desktop/extra/file_picker/android.rs:48-54 | dll/src/desktop/extra/file_picker/ios.rs:64-70 \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":"dll/src/desktop/extra/file_picker/android.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"84d29455f110bf9dbade3417ae6f65c858b1cc5c3b20a89a1697dd0d6d533153"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/desktop/extra/permission/ios.rs:133-140 | dll/src/desktop/extra/permission/macos.rs:233-240 \u2014 before extracting anything, compare \u0060dll/src/desktop/extra/permission/ios.rs\u0060 and \u0060dll/src/desktop/extra/permission/macos.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 100 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":"dll/src/desktop/extra/permission/ios.rs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2cad32f95ddc9d1ce72ed840e65f9b2f2d99e31bd32cdcd5cf658b7e5cd2660"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): dll/src/desktop/extra/permission/ios.rs:179-187 | dll/src/desktop/extra/permission/macos.rs:312-320 \u2014 before extracting anything, compare \u0060dll/src/desktop/extra/permission/ios.rs\u0060 and \u0060dll/src/desktop/extra/permission/macos.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 100 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":"dll/src/desktop/extra/permission/ios.rs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c236fe48af95b3eaed4e2f0effd6aec7d7754e816cfef5faa4920d56a75f67b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): dll/src/desktop/extra/map/mod.rs:59-65 | layout/src/widgets/map.rs:2262-2268 \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":"dll/src/desktop/extra/map/mod.rs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"587e041526f24a9e989b940fde6ac754b8a6dd4b76387747632fe58b175543b9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/assemble_context.rs:205-210 | doc/src/lint_examples.rs:71-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":"doc/src/assemble_context.rs"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"e99bf17513c3187ef98c932dd93653f3738a9802ffe25351a6e78a54a24ab3a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 5): doc/src/codegen/v2/lang_cpp/cpp03.rs:615-619 | doc/src/codegen/v2/lang_cpp/cpp11.rs:537-541 | doc/src/codegen/v2/lang_cpp/cpp17.rs:729-733 | doc/src/codegen/v2/lang_cpp/cpp20.rs:845-849 | doc/src/codegen/v2/lang_cpp/cpp20.rs:912-916 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":615}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6a36823c4a7116eac02382791228f37f520e37d688140e190236f2e0729c60a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): doc/src/codegen/v2/lang_cpp/cpp11.rs:308-318 | doc/src/codegen/v2/lang_cpp/cpp17.rs:488-498 | doc/src/codegen/v2/lang_cpp/cpp20.rs:174-184 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp17.rs\u0060 as WHOLE FILES: this scan already matched 38 separate duplicated blocks between them, totalling at least 759 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":"doc/src/codegen/v2/lang_cpp/cpp11.rs"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"dade2b31e2b5a1cd4d2f0cb85fb2bb6b4c1edd19f7be33efecdbb08c8ba93899"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): doc/src/codegen/v2/lang_cpp/cpp11.rs:516-529 | doc/src/codegen/v2/lang_cpp/cpp17.rs:708-721 | doc/src/codegen/v2/lang_cpp/cpp20.rs:407-420 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp17.rs\u0060 as WHOLE FILES: this scan already matched 38 separate duplicated blocks between them, totalling at least 759 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":"doc/src/codegen/v2/lang_cpp/cpp11.rs"},"region":{"startLine":516}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1c069ce165f9332dc82701c7929baec8073ec657fcda4d54e59d215bb3187d6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): doc/src/codegen/v2/lang_crystal/model.rs:392-397 | doc/src/codegen/v2/lang_d/model.rs:564-569 | doc/src/codegen/v2/lang_swift/model.rs:579-584 \u2014 \u0060doc/src/codegen/v2/lang_crystal/model.rs\u0060 and \u0060doc/src/codegen/v2/lang_d/model.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 9 separate duplicated blocks between them, totalling at least 74 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/model.rs"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"6301580a69b97a00abdf3e1223652b89a786bf8fed0ccb8561d1665b093f36bf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): doc/src/codegen/v2/lang_crystal/model.rs:417-425 | doc/src/codegen/v2/lang_d/model.rs:589-597 | doc/src/codegen/v2/lang_swift/model.rs:604-612 \u2014 \u0060doc/src/codegen/v2/lang_crystal/model.rs\u0060 and \u0060doc/src/codegen/v2/lang_d/model.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 9 separate duplicated blocks between them, totalling at least 74 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/model.rs"},"region":{"startLine":417}}}],"partialFingerprints":{"codehealthFindingId/v1":"e74362b8b2360544ab27618ee4f24edacd302583c5540d678815692e79b66e27"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): doc/src/codegen/v2/lang_crystal/wrappers.rs:1384-1390 | doc/src/codegen/v2/lang_d/wrappers.rs:2286-2292 | doc/src/codegen/v2/lang_swift/wrappers.rs:2265-2271 \u2014 \u0060doc/src/codegen/v2/lang_crystal/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 6 separate duplicated blocks between them, totalling at least 51 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/wrappers.rs"},"region":{"startLine":1384}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e1875b480d6ae609356514eb603df319eb016617dd2b5b60dfa4d555021941f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): doc/src/codegen/v2/lang_csharp/managed.rs:800-806 | doc/src/codegen/v2/lang_java/managed.rs:393-399 | doc/src/codegen/v2/lang_kotlin/managed.rs:958-964 | doc/src/codegen/v2/lang_node/managed.rs:753-759 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 4 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 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_csharp/managed.rs"},"region":{"startLine":800}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d66b849ae24148953a48432463f627d58d3545022ce343918c53eb877f609e3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): doc/src/codegen/v2/lang_csharp/wrappers.rs:162-169 | doc/src/codegen/v2/lang_java/wrappers.rs:1324-1331 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:151-158 \u2014 \u0060doc/src/codegen/v2/lang_csharp/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_java/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 14 separate duplicated blocks between them, totalling at least 156 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"8288584fd3423c49cfde3b14660daf258bb54530e4583e3c59667435ff1935fb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_d/model.rs:774-779 | doc/src/codegen/v2/lang_swift/model.rs:780-785 \u2014 \u0060doc/src/codegen/v2/lang_d/model.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/model.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 20 separate duplicated blocks between them, totalling at least 209 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/model.rs"},"region":{"startLine":774}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cb4daf96ac1e045e9d0862ae4fbc0815279f6c26a0e4f7998d83457439e5d33"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:76-84 | doc/src/codegen/v2/lang_swift/wrappers.rs:54-62 \u2014 \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 29 separate duplicated blocks between them, totalling at least 269 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4ed8c05cbc11ec84181470646589e86ed50b2c2ad6a0632b8ce6a95a3a5e63a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:2894-2900 | doc/src/codegen/v2/lang_swift/wrappers.rs:3824-3830 \u2014 \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 29 separate duplicated blocks between them, totalling at least 269 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":2894}}}],"partialFingerprints":{"codehealthFindingId/v1":"71810380b78417bfdeb799f0238b32e3c100e96f40e45d79456a10ce43813f00"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 20): doc/src/codegen/v2/lang_ada/types.rs:200-214 | doc/src/codegen/v2/lang_ada/wrappers.rs:85-99 | doc/src/codegen/v2/lang_algol68/types.rs:101-115 | doc/src/codegen/v2/lang_algol68/types.rs:117-131 | doc/src/codegen/v2/lang_algol68/wrappers.rs:133-147 | doc/src/codegen/v2/lang_cobol/types.rs:37-51 | doc/src/codegen/v2/lang_cobol/types.rs:53-67 | doc/src/codegen/v2/lang_cobol/wrappers.rs:101-115 | doc/src/codegen/v2/lang_fortran/types.rs:321-335 | doc/src/codegen/v2/lang_fortran/types.rs:337-351 | doc/src/codegen/v2/lang_fortran/wrappers.rs:496-510 | doc/src/codegen/v2/lang_freebasic/types.rs:97-111 | doc/src/codegen/v2/lang_freebasic/types.rs:113-127 | doc/src/codegen/v2/lang_freebasic/wrappers.rs:99-113 | doc/src/codegen/v2/lang_ocaml/wrappers.rs:235-249 | doc/src/codegen/v2/lang_pascal/wrappers.rs:149-163 | doc/src/codegen/v2/lang_smalltalk/types.rs:83-97 | doc/src/codegen/v2/lang_vb6/types.rs:114-128 | doc/src/codegen/v2/lang_vb6/types.rs:130-144 | doc/src/codegen/v2/lang_vb6/wrappers.rs:76-90 \u2014 \u0060doc/src/codegen/v2/lang_ada/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_cobol/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 48 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_ada/types.rs"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f4ce0fb7c070f5c4a6b0776fc12ca3bc6cbc627ae440d58ff024fbc4edd7bbd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_go/types.rs:568-574 | doc/src/codegen/v2/lang_ocaml/mod.rs:142-148 \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":"doc/src/codegen/v2/lang_go/types.rs"},"region":{"startLine":568}}}],"partialFingerprints":{"codehealthFindingId/v1":"92f9b1c765cf6b85cba85d997706cd3e772f32a124d2fe5accc8214611ee037c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): doc/src/codegen/v2/lang_haskell/functions.rs:864-871 | doc/src/codegen/v2/lang_haskell/types.rs:1073-1080 | doc/src/codegen/v2/lang_haskell/wrappers.rs:2352-2359 \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 all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_haskell/functions.rs"},"region":{"startLine":864}}}],"partialFingerprints":{"codehealthFindingId/v1":"a00180aa55231f431be0e4b5b3b522c2c7578682df8d9a35f00eedba322c38a3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): doc/src/codegen/v2/lang_go/mod.rs:97-106 | doc/src/codegen/v2/lang_haskell/mod.rs:370-379 | doc/src/codegen/v2/lang_node/mod.rs:409-418 | doc/src/codegen/v2/lang_vb6/mod.rs:167-176 \u2014 \u0060doc/src/codegen/v2/lang_go/mod.rs\u0060 and \u0060doc/src/codegen/v2/lang_vb6/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 35 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_go/mod.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a52c2efc385948861cef25c90dc73ef72a9b8e98d147d639c37b231d4745b72"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/codegen/v2/lang_kotlin/derives.rs:143-147 | doc/src/codegen/v2/lang_python.rs:107-111 \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":"doc/src/codegen/v2/lang_kotlin/derives.rs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"1585c2d43f80da861de091446586a61d53a25c9cd9fa280b71fbd6afcd2ce144"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): doc/src/codegen/v2/lang_kotlin/wrappers.rs:1139-1144 | doc/src/codegen/v2/lang_node/wrappers.rs:1865-1870 | doc/src/codegen/v2/lang_ruby/wrappers.rs:1443-1448 \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":"doc/src/codegen/v2/lang_kotlin/wrappers.rs"},"region":{"startLine":1139}}}],"partialFingerprints":{"codehealthFindingId/v1":"9947cbe3ff5e79b179a9a639f9af266d946a8fd50817ceda856926a0c4dbf0cb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): doc/src/codegen/v2/lang_node/wrappers.rs:355-368 | doc/src/codegen/v2/lang_php/wrappers.rs:75-85 | doc/src/codegen/v2/lang_php/wrappers.rs:87-97 | doc/src/codegen/v2/lang_zig/wrappers.rs:274-287 \u2014 there are 4 copies across 3 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":"doc/src/codegen/v2/lang_node/wrappers.rs"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8cf953b88c0578e95e7780bc5b4f2bc98e282f31fe7eaf7a4253901f1b1eabb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): doc/src/codegen/v2/lang_lua/wrappers.rs:161-166 | doc/src/codegen/v2/lang_node/types.rs:317-322 | doc/src/codegen/v2/lang_node/wrappers.rs:377-382 \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":"doc/src/codegen/v2/lang_lua/wrappers.rs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"37f037bdc73a40f168950d832f2ceeb44afab3b1b15a2209246f6a97a1ebe30a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/codegen/v2/lang_lua/wrappers.rs:1016-1020 | doc/src/codegen/v2/lang_node/wrappers.rs:1354-1358 \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":"doc/src/codegen/v2/lang_lua/wrappers.rs"},"region":{"startLine":1016}}}],"partialFingerprints":{"codehealthFindingId/v1":"2453c76eb32f491a45b18d8be50d440066a28e880d14d8946f3a18c66b5b3378"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): doc/src/codegen/v2/lang_ada/wrappers.rs:101-107 | doc/src/codegen/v2/lang_ocaml/wrappers.rs:251-257 | doc/src/codegen/v2/lang_perl/wrappers.rs:71-77 | doc/src/codegen/v2/lang_ruby/wrappers.rs:251-257 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 4 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 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_ada/wrappers.rs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"cea9c38d020c8d75896c87f13de2dfb503c148fb2f6018edb4b7c4a11c72d109"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/codegen/v2/rust/dynamic_binding.rs:83-87 | doc/src/codegen/v2/rust/static_binding.rs:155-159 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/rust/dynamic_binding.rs\u0060 and \u0060doc/src/codegen/v2/rust/static_binding.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 66 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":"doc/src/codegen/v2/rust/dynamic_binding.rs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e14e384f169d2bef14489961d7e9575c7a579874cbc34811790d7a291fc2585"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): doc/src/codegen/v2/lang_ada/types.rs:216-227 | doc/src/codegen/v2/lang_ocaml/types.rs:342-353 | doc/src/codegen/v2/lang_smalltalk/types.rs:99-110 \u2014 \u0060doc/src/codegen/v2/lang_ada/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_smalltalk/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 34 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_ada/types.rs"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c4cb57f966d751825f2f5124d134004ec40d8dec33ada5d7a32c5b250b6d4d5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 20): doc/src/codegen/v2/lang_csharp/types.rs:243-255 | doc/src/codegen/v2/lang_csharp/types.rs:257-268 | doc/src/codegen/v2/lang_java/types.rs:389-403 | doc/src/codegen/v2/lang_java/types.rs:405-420 | doc/src/codegen/v2/lang_julia/mod.rs:380-391 | doc/src/codegen/v2/lang_julia/mod.rs:393-404 | doc/src/codegen/v2/lang_kotlin/mod.rs:154-167 | doc/src/codegen/v2/lang_kotlin/mod.rs:169-180 | doc/src/codegen/v2/lang_lisp/types.rs:119-132 | doc/src/codegen/v2/lang_lisp/types.rs:134-145 | doc/src/codegen/v2/lang_odin/mod.rs:301-312 | doc/src/codegen/v2/lang_odin/mod.rs:314-325 | doc/src/codegen/v2/lang_pascal/types.rs:217-233 | doc/src/codegen/v2/lang_pascal/types.rs:235-246 | doc/src/codegen/v2/lang_racket/types.rs:112-123 | doc/src/codegen/v2/lang_racket/types.rs:125-136 | doc/src/codegen/v2/lang_ruby/types.rs:375-389 | doc/src/codegen/v2/lang_ruby/types.rs:391-405 | doc/src/codegen/v2/lang_v/mod.rs:333-344 | doc/src/codegen/v2/lang_v/mod.rs:346-357 \u2014 \u0060doc/src/codegen/v2/lang_csharp/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_java/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 40 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_csharp/types.rs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c00979b60a89f15217868532ed507b111f378c8dca203dbf3040354d6ba408e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_lua/wrappers.rs:1068-1073 | doc/src/codegen/v2/lang_ruby/types.rs:955-960 \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":"doc/src/codegen/v2/lang_lua/wrappers.rs"},"region":{"startLine":1068}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc62f8b345e4ea12dc7eaead267dc62f941bab729eec02ec30751e184ead4151"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_perl/types.rs:91-97 | doc/src/codegen/v2/lang_ruby/types.rs:137-143 \u2014 \u0060doc/src/codegen/v2/lang_perl/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_ruby/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 5 separate duplicated blocks between them, totalling at least 49 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_perl/types.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6004e32385844b9e09bf71fb49c4f2089f2ce43aeb4e6b4cbc256a26fa26fbb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_perl/functions.rs:180-188 | doc/src/codegen/v2/lang_ruby/functions.rs:209-217 \u2014 \u0060doc/src/codegen/v2/lang_perl/functions.rs\u0060 and \u0060doc/src/codegen/v2/lang_ruby/functions.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 47 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_perl/functions.rs"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac3d4033b9070a5f96a813e9d1da783658b0cbd0a09e8b8aa1cb55d6b2051f7c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_crystal/types.rs:407-414 | doc/src/codegen/v2/lang_julia/mod.rs:304-311 \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":"doc/src/codegen/v2/lang_crystal/types.rs"},"region":{"startLine":407}}}],"partialFingerprints":{"codehealthFindingId/v1":"eaa127f21518fb96056f162446d024be0bb1f343e8c16a94176cac218d5b2de5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): layout/src/dialogs/report_problem.rs:687-695 | layout/src/dialogs/telemetry_consent.rs:285-293 \u2014 before extracting anything, compare \u0060layout/src/dialogs/report_problem.rs\u0060 and \u0060layout/src/dialogs/telemetry_consent.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 37 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":"layout/src/dialogs/report_problem.rs"},"region":{"startLine":687}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d41fc0fa62ca1c925c56e1e39498f61f76631a5aab582300a84cfddb8861436"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): layout/src/fluent.rs:343-354 | layout/src/icu.rs:1253-1264 \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":"layout/src/fluent.rs"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"18fbed87fee0344c67157c4e39b136c85963a98a2018ef9c8a722c8c06233ce5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): layout/src/font.rs:229-237 | layout/src/probe.rs:629-634 \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":"layout/src/font.rs"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"1345215dd92698fa16663d15e5a2b5de4d5043a2343d7d4ccd224065236d2e83"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): layout/src/icu_macos.rs:57-65 | layout/src/icu_windows.rs:350-358 \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":"layout/src/icu_macos.rs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"e393e09bf518e756aa347f6a4e710b7556985edafe42f45b132e2a7ef99e29c2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): layout/src/managers/biometric.rs:185-190 | layout/src/managers/eyedropper.rs:189-194 | layout/src/managers/keyring.rs:150-155 \u2014 before extracting anything, compare \u0060layout/src/managers/biometric.rs\u0060 and \u0060layout/src/managers/keyring.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 42 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":"layout/src/managers/biometric.rs"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e776bd21c9f203ccce76980d56d7c79b120565f848520cd8888471a7dbd0bb9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): layout/src/managers/biometric.rs:195-200 | layout/src/managers/keyring.rs:159-164 \u2014 before extracting anything, compare \u0060layout/src/managers/biometric.rs\u0060 and \u0060layout/src/managers/keyring.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 42 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":"layout/src/managers/biometric.rs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"e54807b1dc7dff41a3d22c50e747f47bf5fab024a3430d800f61c645249330a9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): layout/src/managers/biometric.rs:219-224 | layout/src/managers/eyedropper.rs:172-177 | layout/src/managers/keyring.rs:119-124 \u2014 before extracting anything, compare \u0060layout/src/managers/biometric.rs\u0060 and \u0060layout/src/managers/keyring.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 42 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":"layout/src/managers/biometric.rs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"1398cad0416a3a777c58c04e1183267f0cb98c39a5a55cc08c055919e27b7261"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): layout/src/managers/biometric.rs:229-234 | layout/src/managers/eyedropper.rs:180-185 | layout/src/managers/keyring.rs:128-133 \u2014 before extracting anything, compare \u0060layout/src/managers/biometric.rs\u0060 and \u0060layout/src/managers/keyring.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 42 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":"layout/src/managers/biometric.rs"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fa49441455720345263d738af8bec997e7960cfeed162e3b50edb7d2e5dd252"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): layout/src/managers/biometric.rs:243-247 | layout/src/managers/keyring.rs:137-141 \u2014 before extracting anything, compare \u0060layout/src/managers/biometric.rs\u0060 and \u0060layout/src/managers/keyring.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 42 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":"layout/src/managers/biometric.rs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f13501b04c500d6dad6ef6eb29cd5f0f71951c6a152eea45f83030da30de12d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): layout/src/managers/gpu_state.rs:477-484 | layout/src/managers/mod.rs:169-176 \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":"layout/src/managers/gpu_state.rs"},"region":{"startLine":477}}}],"partialFingerprints":{"codehealthFindingId/v1":"28a5817cff5a8f6890325a1d3cce9dceca40b851f8ce7ebc34529cb8ebc878b0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 7): layout/src/widgets/alert.rs:468-472 | layout/src/widgets/avatar.rs:291-295 | layout/src/widgets/badge.rs:268-272 | layout/src/widgets/button.rs:547-551 | layout/src/widgets/chip.rs:455-459 | layout/src/widgets/label.rs:121-125 | layout/src/widgets/toast.rs:497-501 \u2014 before extracting anything, compare \u0060layout/src/widgets/alert.rs\u0060 and \u0060layout/src/widgets/toast.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 122 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":"layout/src/widgets/alert.rs"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"cafdae28ee78d90790dbceced8a770b904c60c94b9beef083c94f21dce2659a7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): layout/src/widgets/backstage.rs:1059-1066 | layout/src/widgets/quick_access.rs:1036-1043 | layout/src/widgets/ribbon.rs:3601-3608 | layout/src/widgets/statusbar.rs:1483-1490 \u2014 before extracting anything, compare \u0060layout/src/widgets/backstage.rs\u0060 and \u0060layout/src/widgets/quick_access.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 41 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":"layout/src/widgets/backstage.rs"},"region":{"startLine":1059}}}],"partialFingerprints":{"codehealthFindingId/v1":"eea745aba44cdcd1a301e5178d717ff285a60fd895547a5327bd1b84dd8b6fb3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): layout/src/widgets/breadcrumb.rs:216-220 | layout/src/widgets/radio_group.rs:402-406 | layout/src/widgets/segmented.rs:348-352 | layout/src/widgets/stepper.rs:425-429 \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 all 4 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/widgets/breadcrumb.rs"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf1aa3aeec7bb5850f3c1b23f5b7c5e33e2734ec5e6827c8787d97b72a9cf2e6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): layout/src/widgets/camera.rs:121-127 | layout/src/widgets/screencap.rs:96-102 \u2014 before extracting anything, compare \u0060layout/src/widgets/camera.rs\u0060 and \u0060layout/src/widgets/screencap.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 107 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":"layout/src/widgets/camera.rs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"3debcc7d297237441eb5804c04072d5d59dd9d2d685cf8d2c687ad952b3dbc33"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): layout/src/widgets/camera.rs:149-156 | layout/src/widgets/screencap.rs:124-131 \u2014 before extracting anything, compare \u0060layout/src/widgets/camera.rs\u0060 and \u0060layout/src/widgets/screencap.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 107 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":"layout/src/widgets/camera.rs"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"af3ad76a07f314c4cefa7689b547a81d4a41e0755a1c59ce61b2c2d18dcb6510"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): layout/src/widgets/camera.rs:166-171 | layout/src/widgets/screencap.rs:136-141 \u2014 before extracting anything, compare \u0060layout/src/widgets/camera.rs\u0060 and \u0060layout/src/widgets/screencap.rs\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 107 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":"layout/src/widgets/camera.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"30cd5df2ef355f40120a5e8362dce8d1a9a74dbd3fb12493f2090b30c7521961"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): layout/src/widgets/date_picker.rs:689-693 | layout/src/widgets/slider.rs:367-371 \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":"layout/src/widgets/date_picker.rs"},"region":{"startLine":689}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec93fd2b99f66bef50c369fac11d29b665f0dba0bef7c016878dfc5ec0da7441"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): layout/src/widgets/quick_access.rs:684-690 | layout/src/widgets/ribbon.rs:2823-2829 | layout/src/widgets/ribbon.rs:3024-3030 | layout/src/widgets/statusbar.rs:1059-1065 \u2014 before extracting anything, compare \u0060layout/src/widgets/quick_access.rs\u0060 and \u0060layout/src/widgets/ribbon.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 60 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":"layout/src/widgets/quick_access.rs"},"region":{"startLine":684}}}],"partialFingerprints":{"codehealthFindingId/v1":"50b878d82e66d00e0beda9ff138bc2dd2be1541fe97dd87d4c5b0b7b76af3a42"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): layout/src/widgets/quick_access.rs:354-361 | layout/src/widgets/statusbar.rs:417-424 \u2014 before extracting anything, compare \u0060layout/src/widgets/quick_access.rs\u0060 and \u0060layout/src/widgets/statusbar.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 106 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":"layout/src/widgets/quick_access.rs"},"region":{"startLine":354}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1836ae838b97b82874278e57e8e81e7b895c86674333d3e09aac6c4a683e26f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): layout/src/widgets/text_area.rs:591-604 | layout/src/widgets/text_input.rs:941-954 \u2014 before extracting anything, compare \u0060layout/src/widgets/text_area.rs\u0060 and \u0060layout/src/widgets/text_input.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 147 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":"layout/src/widgets/text_area.rs"},"region":{"startLine":591}}}],"partialFingerprints":{"codehealthFindingId/v1":"c02798f2daea5c8637a1ff09aff0f444109bbdd4fef4a910529e894e8b157d30"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/widgets/themes/flat.rs:2169-2179 | layout/src/widgets/themes/flora.rs:2483-2493 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":2169}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbac118dd0bda178a8bfe95bc69b340586d71719317336267225ebe61b055711"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): layout/src/widgets/themes/flat.rs:2183-2193 | layout/src/widgets/themes/flora.rs:2497-2507 \u2014 before extracting anything, compare \u0060layout/src/widgets/themes/flat.rs\u0060 and \u0060layout/src/widgets/themes/flora.rs\u0060 as WHOLE FILES: this scan already matched 33 separate duplicated blocks between them, totalling at least 733 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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":2183}}}],"partialFingerprints":{"codehealthFindingId/v1":"a35cc3bb9a1ad6a9d8927457b44d63f523c02ce86aee35a71b2ab6811486cbf2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 7): webrender/api/src/display_item.rs:69-75 | webrender/api/src/display_item.rs:973-979 | webrender/api/src/font.rs:236-242 | webrender/api/src/lib.rs:636-642 | webrender/api/src/lib.rs:728-734 | webrender/core/src/clip.rs:872-878 | webrender/core/src/gpu_types.rs:619-625 \u2014 there are 7 copies across 5 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 7 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"webrender/api/src/display_item.rs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"c174a830d170495f1bdbf1d95b9201323a572874ee19b9114937e89b2298189e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): css/src/props/layout/column.rs:349-356 | css/src/props/style/scrollbar.rs:1060-1067 \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":"css/src/props/layout/column.rs"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c2a94403c7fa918f2d663b054d9c16e6e4e19c22d37a84427791fbc780814a5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 23): css/src/props/layout/display.rs:214-220 | css/src/props/layout/display.rs:293-299 | css/src/props/layout/flex.rs:327-333 | css/src/props/layout/flex.rs:498-504 | css/src/props/layout/flex.rs:589-595 | css/src/props/layout/flex.rs:677-683 | css/src/props/layout/flex.rs:784-790 | css/src/props/layout/fragmentation.rs:225-231 | css/src/props/layout/fragmentation.rs:286-292 | css/src/props/layout/fragmentation.rs:412-418 | css/src/props/style/effects.rs:730-736 | css/src/props/style/effects.rs:819-825 | css/src/props/style/effects.rs:919-925 | css/src/props/style/effects.rs:1119-1125 | css/src/props/style/lists.rs:155-161 | css/src/props/style/lists.rs:224-230 | css/src/props/style/scrollbar.rs:954-960 | css/src/props/style/scrollbar.rs:1008-1014 | css/src/props/style/scrollbar.rs:1130-1136 | css/src/props/style/scrollbar.rs:1180-1186 | css/src/props/style/scrollbar.rs:1239-1245 | css/src/props/style/text.rs:1393-1399 | css/src/props/style/transform.rs:725-731 \u2014 there are 23 copies across 8 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 23 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"css/src/props/layout/display.rs"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c8a142ea13645c76371e7f8f37bac226a37b4aaa45d70363cede34ea3ae4fba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): dll/src/desktop/extra/audio/avfoundation_mic.rs:327-335 | dll/src/desktop/extra/camera/avfoundation.rs:413-421 \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":"dll/src/desktop/extra/audio/avfoundation_mic.rs"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"862d587982cd9cc3fe691606c83ffb3a24f907caa6990f1538b490deca9ca740"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): dll/src/desktop/extra/audio/mod.rs:211-215 | dll/src/desktop/extra/video_codec/mod.rs:313-317 | dll/src/desktop/extra/video_codec/mod.rs:463-467 \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":"dll/src/desktop/extra/audio/mod.rs"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"aab8ed0cd53f58f11b783ea69b4f86010057068cd351d0efcc6185417ea3f89d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): dll/src/desktop/shell2/macos/menu.rs:143-148 | layout/src/managers/media_keys.rs:81-86 | layout/src/managers/media_keys.rs:103-108 \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":"dll/src/desktop/shell2/macos/menu.rs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3cbfae7abd587433725b5b6b3f21667125dd918079489ca2c9a678e2c54aecf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 9): doc/src/codegen/v2/lang_algol68/types.rs:370-380 | doc/src/codegen/v2/lang_crystal/mod.rs:392-402 | doc/src/codegen/v2/lang_d/mod.rs:470-480 | doc/src/codegen/v2/lang_freebasic/types.rs:400-410 | doc/src/codegen/v2/lang_julia/mod.rs:269-279 | doc/src/codegen/v2/lang_nim/types.rs:473-483 | doc/src/codegen/v2/lang_odin/mod.rs:218-228 | doc/src/codegen/v2/lang_pascal/types.rs:548-558 | doc/src/codegen/v2/lang_v/mod.rs:243-253 \u2014 \u0060doc/src/codegen/v2/lang_crystal/mod.rs\u0060 and \u0060doc/src/codegen/v2/lang_d/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 39 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_algol68/types.rs"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa2c39bf87cab07fb045789081671548645b3cd321a9f14f1a7c3051323695ac"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 7): doc/src/codegen/v2/lang_algol68/types.rs:384-391 | doc/src/codegen/v2/lang_crystal/mod.rs:405-412 | doc/src/codegen/v2/lang_d/mod.rs:482-489 | doc/src/codegen/v2/lang_julia/mod.rs:282-289 | doc/src/codegen/v2/lang_nim/types.rs:505-512 | doc/src/codegen/v2/lang_odin/mod.rs:231-238 | doc/src/codegen/v2/lang_v/mod.rs:256-263 \u2014 \u0060doc/src/codegen/v2/lang_crystal/mod.rs\u0060 and \u0060doc/src/codegen/v2/lang_d/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 39 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_algol68/types.rs"},"region":{"startLine":384}}}],"partialFingerprints":{"codehealthFindingId/v1":"1eb5744ed808e7ca878ab85f07f10a42aff679b32ce42c86af9ff5887008e063"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): layout/src/dialogs/crash_reporter.rs:94-102 | layout/src/dialogs/report_problem.rs:137-145 \u2014 before extracting anything, compare \u0060layout/src/dialogs/crash_reporter.rs\u0060 and \u0060layout/src/dialogs/report_problem.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 37 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":"layout/src/dialogs/crash_reporter.rs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"da825f38854208f675315de73524743eb09f066ac49627b8b62d900ab2a3fab4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): layout/src/managers/biometric.rs:154-166 | layout/src/managers/keyring.rs:98-110 \u2014 before extracting anything, compare \u0060layout/src/managers/biometric.rs\u0060 and \u0060layout/src/managers/keyring.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 42 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":"layout/src/managers/biometric.rs"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdf376dd1006609aabc886635fdd4948b24a72840c6de70f96b287d3ead5dfc7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): layout/src/managers/geolocation.rs:297-303 | layout/src/managers/geolocation.rs:316-322 | layout/src/managers/sensors.rs:178-184 \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":"layout/src/managers/geolocation.rs"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"3da6bcb14013aef16bf7b49c9dbe4d49300e307fe3f29d6082d9f7e5d2a42376"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): layout/src/managers/geolocation.rs:307-313 | layout/src/managers/geolocation.rs:326-332 | layout/src/managers/hid.rs:80-86 | layout/src/managers/sensors.rs:188-194 \u2014 there are 4 copies across 3 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":"layout/src/managers/geolocation.rs"},"region":{"startLine":307}}}],"partialFingerprints":{"codehealthFindingId/v1":"355daa52da83a1e8b066067688278d4502b72bd8201c819702242a96d7fbba56"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): layout/src/widgets/alert.rs:444-451 | layout/src/widgets/toast.rs:473-480 \u2014 before extracting anything, compare \u0060layout/src/widgets/alert.rs\u0060 and \u0060layout/src/widgets/toast.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 122 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":"layout/src/widgets/alert.rs"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"826633e037b288f39efb9853361e8141ffbf287495d9206d8ad4f6f35cbd98f2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 4): layout/src/widgets/capture_common.rs:111-116 | layout/src/widgets/map.rs:1318-1323 | layout/src/widgets/map.rs:1357-1362 | layout/src/widgets/microphone.rs:75-80 \u2014 there are 4 copies across 3 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":"layout/src/widgets/capture_common.rs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfe1a98e9186bf450b77a145e892b0de88a0c9a6d8983429bb5f43636fb79a66"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): layout/src/widgets/card.rs:224-228 | layout/src/widgets/modal.rs:474-478 \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":"layout/src/widgets/card.rs"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8bcea43249f0825e7a1886c355f791cb8f5f2156abfad1c0810ad14bbb3f108"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): layout/src/widgets/check_box.rs:218-233 | layout/src/widgets/switch.rs:271-287 \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":"layout/src/widgets/check_box.rs"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"9aa4e5d80362f2864779f01f30f5fda44fd996153c3c9c344b45c28f97367ecb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 4): layout/src/widgets/quick_access.rs:379-384 | layout/src/widgets/quick_access.rs:422-427 | layout/src/widgets/statusbar.rs:404-409 | layout/src/widgets/statusbar.rs:452-457 \u2014 before extracting anything, compare \u0060layout/src/widgets/quick_access.rs\u0060 and \u0060layout/src/widgets/statusbar.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 106 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":"layout/src/widgets/quick_access.rs"},"region":{"startLine":379}}}],"partialFingerprints":{"codehealthFindingId/v1":"7424f7223e99bd5c8f11bdcd7284b978f8d4f3bf0f6698a8818fc4b8941b8bb2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): layout/src/widgets/slider.rs:544-549 | layout/src/widgets/split_pane.rs:570-575 \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":"layout/src/widgets/slider.rs"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e360228dbaa6248bc4d1fd29a6a7486d6926f9f0224c0dd706773d0bb67c48b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): layout/src/widgets/text_area.rs:442-449 | layout/src/widgets/text_input.rs:781-788 \u2014 before extracting anything, compare \u0060layout/src/widgets/text_area.rs\u0060 and \u0060layout/src/widgets/text_input.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 147 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":"layout/src/widgets/text_area.rs"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e4ba0ff963df84f1b12471caa2304bb05f860da3aa4c4a38811459b9fafba9a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): webrender/core/src/gpu_cache.rs:105-109 | webrender/core/src/renderer/gpu_buffer.rs:155-159 \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":"webrender/core/src/gpu_cache.rs"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"9567d0285e66d01f05bab6f1e60a456e2c59b9754580625b03d91d54323bd204"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): webrender/core/src/prim_store/gradient/conic.rs:72-83 | webrender/core/src/prim_store/gradient/radial.rs:74-85 \u2014 before extracting anything, compare \u0060webrender/core/src/prim_store/gradient/conic.rs\u0060 and \u0060webrender/core/src/prim_store/gradient/radial.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 84 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":"webrender/core/src/prim_store/gradient/conic.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"2caef7d020d7c0999151d6faf5419e0c268c2049106e1e59a69636494e1ad622"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): webrender/core/src/prim_store/gradient/conic.rs:109-122 | webrender/core/src/prim_store/gradient/radial.rs:112-125 \u2014 before extracting anything, compare \u0060webrender/core/src/prim_store/gradient/conic.rs\u0060 and \u0060webrender/core/src/prim_store/gradient/radial.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 84 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":"webrender/core/src/prim_store/gradient/conic.rs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"565c825adeecfadc148c97370f04f186f08e60844c2e9935791af19701b69c1f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 2): dll/src/web/transpiler_remill.rs:505-532 | dll/src/web/transpiler_remill.rs:542-571 \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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":505}}}],"partialFingerprints":{"codehealthFindingId/v1":"54c5a235f95b2ab34e5bc141ce1ba5687b8af5a2d99a1bd437d52a8600b1b01d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): dll/src/desktop/extra/audio/alsa.rs:82-104 | dll/src/desktop/extra/audio/alsa.rs:176-197 \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":"dll/src/desktop/extra/audio/alsa.rs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"7aa139d3d78694d09be2d507f354e482fbc98932c76632bed1dc6e293616d933"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): dll/src/desktop/shell2/linux/system_style.rs:3149-3170 | dll/src/desktop/shell2/macos/system_style.rs:927-946 \u2014 \u0060dll/src/desktop/shell2/linux/system_style.rs\u0060 and \u0060dll/src/desktop/shell2/macos/system_style.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 50 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":3149}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7b21ada96b9e74508ffea857e7b983d317e1a70b8c805b12f1e312704513f54"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): dll/src/desktop/shell2/macos/mod.rs:6284-6305 | dll/src/desktop/shell2/windows/mod.rs:2304-2324 \u2014 \u0060dll/src/desktop/shell2/macos/mod.rs\u0060 and \u0060dll/src/desktop/shell2/windows/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 12 separate duplicated blocks between them, totalling at least 186 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":6284}}}],"partialFingerprints":{"codehealthFindingId/v1":"b41b884cbafacc7e74319f6d6dc79e14773fd2bf73857fe81fddbb09c0e5891e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): doc/src/autofix/workspace.rs:2109-2129 | doc/src/autofix/workspace.rs:2160-2180 \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":"doc/src/autofix/workspace.rs"},"region":{"startLine":2109}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fdbef52acf5313b612034852cf6ebacec71490afe2679246c3e23000658a281"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/dllgen/deploy.rs:2811-2831 | doc/src/main.rs:2264-2271 \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":"doc/src/dllgen/deploy.rs"},"region":{"startLine":2811}}}],"partialFingerprints":{"codehealthFindingId/v1":"4318a29552f696e6861de53a4390d39194ee2befcff881db2c5a8803f5fbce5c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:7126-7143 | dll/src/desktop/shell2/linux/x11/mod.rs:6428-6442 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":7126}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a3d698c04f1af0347e9f2ba5bc89b4cdc170792c2e4271ab8a4a89358537494"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:10846-10863 | dll/src/desktop/shell2/linux/x11/mod.rs:8607-8621 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":10846}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b7c605b90a427a769348d6438542ba1a08acf28424dc7bf7342f181b2e71ea1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:150-160 | doc/src/codegen/v2/lang_rust.rs:2377-2394 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"01b33448dd8c37b0fb43c17fc4120d158721ef245033c99faeb35c21e1d5cd11"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): doc/src/codegen/v2/lang_java/wrappers.rs:239-256 | doc/src/codegen/v2/lang_node/wrappers.rs:513-527 \u2014 \u0060doc/src/codegen/v2/lang_java/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_node/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 35 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_java/wrappers.rs"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"a04b28e1dec492edf737ef5b69257d4b4a6497b0227a960deb59bf496151899d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:1800-1817 | dll/src/desktop/shell2/linux/wayland/mod.rs:6422-6437 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":1800}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9760e0ae0f59410ebaac85e69d1a7d1e04b4ff667fb608bb3369673b09ddb53"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): doc/src/codegen/v2/lang_cpp/common.rs:554-570 | doc/src/codegen/v2/lang_cpp/common.rs:972-988 \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":"doc/src/codegen/v2/lang_cpp/common.rs"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"58e2299798e29e0ec69edefb418908a5e1a183bd6930594595c4b83722dc8473"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/codegen/v2/lang_java/wrappers.rs:1809-1825 | doc/src/codegen/v2/lang_java/wrappers.rs:1915-1924 \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":"doc/src/codegen/v2/lang_java/wrappers.rs"},"region":{"startLine":1809}}}],"partialFingerprints":{"codehealthFindingId/v1":"a732b7be4504a7c52dbf5b01122ac45fccfdb8e33743b4a0aa8280ec331f7d2c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): doc/src/codegen/v2/lang_lua/wrappers.rs:1130-1146 | doc/src/codegen/v2/lang_lua/wrappers.rs:1192-1206 \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":"doc/src/codegen/v2/lang_lua/wrappers.rs"},"region":{"startLine":1130}}}],"partialFingerprints":{"codehealthFindingId/v1":"588f37de1b8de55bd03fa0fa6b4e94fc43e6f7732f49d030f544429ce44f82b4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): dll/src/desktop/shell2/android/mod.rs:2799-2815 | dll/src/desktop/shell2/android/mod.rs:3066-3082 \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":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":2799}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfd65b648ccdb014c4907424cac7bd32d3f722cf9a586e6f882d7803ed37aa37"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): doc/src/codegen/v2/lang_ruby/types.rs:1035-1051 | doc/src/codegen/v2/lang_ruby/types.rs:1106-1117 \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":"doc/src/codegen/v2/lang_ruby/types.rs"},"region":{"startLine":1035}}}],"partialFingerprints":{"codehealthFindingId/v1":"28d172d394bb30fa78b56dde26982e3b3a74f60d07671bfdaa5f6d6d7559cdca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): doc/src/autofix/mod.rs:386-401 | doc/src/autofix/mod.rs:418-433 \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":"doc/src/autofix/mod.rs"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d4b282b5d6f7b77fd358f12bd3b08229a6382941a67041fdd44ea79a07af896"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 3): dll/src/desktop/shell2/linux/wayland/mod.rs:3717-3731 | dll/src/desktop/shell2/linux/wayland/mod.rs:9853-9867 | dll/src/desktop/shell2/windows/mod.rs:2014-2029 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/windows/mod.rs\u0060 as WHOLE FILES: this scan already matched 21 separate duplicated blocks between them, totalling at least 292 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":3717}}}],"partialFingerprints":{"codehealthFindingId/v1":"4393eff6ec92d0e37087675150262b2f6f1f2d9587ab5bc2a189d8b75bebf279"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): layout/src/text3/cache.rs:6351-6366 | layout/src/text3/cache.rs:6440-6455 \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":"layout/src/text3/cache.rs"},"region":{"startLine":6351}}}],"partialFingerprints":{"codehealthFindingId/v1":"87279f7d46fb45441300a69b613598912f09b9a4e24c1eae845e2e3f7336e67a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): core/src/xml.rs:3094-3104 | core/src/xml.rs:3107-3122 \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":"core/src/xml.rs"},"region":{"startLine":3094}}}],"partialFingerprints":{"codehealthFindingId/v1":"14cf01d9445c19e7d6036e156e75ae58d95c5c1d9968bdbaccec7d93a9cbfe75"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 4): dll/src/desktop/display.rs:1120-1135 | dll/src/desktop/display.rs:1192-1207 | dll/src/desktop/display.rs:1278-1293 | dll/src/desktop/display.rs:1404-1419 \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":"dll/src/desktop/display.rs"},"region":{"startLine":1120}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ed769898e8a65ef2fb34b379b374cef0fb1e2f792bae0e1bea2f2257271dc88"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): dll/src/desktop/wr_translate2.rs:1778-1793 | dll/src/desktop/wr_translate2.rs:1805-1820 \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":"dll/src/desktop/wr_translate2.rs"},"region":{"startLine":1778}}}],"partialFingerprints":{"codehealthFindingId/v1":"33986c89c6cd9a68438d50f2b97eea506f2a9faf36b0589e37ee189e1db4d797"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): layout/src/solver3/cache.rs:1987-2001 | layout/src/solver3/cache.rs:2150-2159 \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":"layout/src/solver3/cache.rs"},"region":{"startLine":1987}}}],"partialFingerprints":{"codehealthFindingId/v1":"291c2605e010a2dcf4e12946e144a8a055950c76549f40a08e99abc6298e19ed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): core/src/xml.rs:3081-3090 | core/src/xml.rs:3094-3103 | core/src/xml.rs:3107-3121 \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":"core/src/xml.rs"},"region":{"startLine":3081}}}],"partialFingerprints":{"codehealthFindingId/v1":"777e59ff105b0b1790d2e3ee2cd89a3578f1b443231453a5b11b0bf90b8ca1f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): doc/src/lint_orphans.rs:146-160 | doc/src/lint_orphans.rs:216-230 \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":"doc/src/lint_orphans.rs"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"3548604a7a54d675b53827053a1429be937375354324221aecb655440b25419e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:10958-10972 | dll/src/desktop/shell2/linux/x11/mod.rs:8715-8728 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":10958}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbf3d63b4da65b234476274b1564ae9553d8f2896994890bf0d1faf1b0c51917"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): layout/src/text3/cache.rs:6478-6492 | layout/src/text3/cache.rs:6548-6562 \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":"layout/src/text3/cache.rs"},"region":{"startLine":6478}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f0e9deb16e3bdfcb15ad0a035e83327a56b73d13d8ec4bfe76733a34f6a0c81"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): doc/src/codegen/v2/lang_lua/wrappers.rs:1079-1093 | doc/src/codegen/v2/lang_lua/wrappers.rs:1151-1165 \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":"doc/src/codegen/v2/lang_lua/wrappers.rs"},"region":{"startLine":1079}}}],"partialFingerprints":{"codehealthFindingId/v1":"36fb238e142c48899dadb0b8e887cf08812f283480804010111410a40f96e4dc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): layout/src/solver3/fc.rs:9028-9036 | layout/src/solver3/fc.rs:9043-9057 \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":"layout/src/solver3/fc.rs"},"region":{"startLine":9028}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2df4ae471e420e433d1f79a570a81601107636d6e4d09235017dc74cf2e2994"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): doc/src/reftest/autodebug.rs:2152-2166 | doc/src/reftest/autodoc.rs:899-912 \u2014 before extracting anything, compare \u0060doc/src/reftest/autodebug.rs\u0060 and \u0060doc/src/reftest/autodoc.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 35 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":"doc/src/reftest/autodebug.rs"},"region":{"startLine":2152}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf3b8580df49f14dc5cf1578fef71717f3c12bd4417e60d4290ccae7c8a0fd87"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): dll/src/desktop/shell2/common/event.rs:12811-12825 | dll/src/desktop/shell2/common/event.rs:13271-13285 \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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":12811}}}],"partialFingerprints":{"codehealthFindingId/v1":"6abf748bee528aa65dc8b937902d62557111944e4748107f220f908338c1e14c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): dll/src/desktop/shell2/android/clipboard.rs:212-225 | dll/src/desktop/shell2/android/mod.rs:2541-2553 \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":"dll/src/desktop/shell2/android/clipboard.rs"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"39f41cea2d8cc6cde27b0a076ec6da1512b2bbb2223e2201d3867e09767643cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_swift/wrappers.rs:2804-2817 | doc/src/codegen/v2/lang_swift/wrappers.rs:2828-2834 \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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":2804}}}],"partialFingerprints":{"codehealthFindingId/v1":"f16e338b79eaac12c0ca2ec3b6c27b56101a5c6ac86376d1ed01fe95214e28be"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/codegen/v2/lang_fortran/mod.rs:751-764 | doc/src/codegen/v2/lang_red/mod.rs:290-294 \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":"doc/src/codegen/v2/lang_fortran/mod.rs"},"region":{"startLine":751}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8b2d46dcd6892d791a53797cda3b66578ed2c8157619f8b5b6b3789d8b0bcdb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): doc/src/codegen/v2/lang_python.rs:1470-1483 | doc/src/codegen/v2/lang_python.rs:1663-1676 | doc/src/codegen/v2/lang_python.rs:1744-1757 | doc/src/codegen/v2/lang_python.rs:1825-1838 \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":"doc/src/codegen/v2/lang_python.rs"},"region":{"startLine":1470}}}],"partialFingerprints":{"codehealthFindingId/v1":"2be495567996046c6a2c3158aa3174c49d73de9328e43081f188b278b6109c47"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): doc/src/codegen/v2/lang_java/managed.rs:462-474 | doc/src/codegen/v2/lang_java/managed.rs:736-749 \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":"doc/src/codegen/v2/lang_java/managed.rs"},"region":{"startLine":462}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec2eea9c6f15c5d7363e8b18a581ee90ffe8d77a9ea01cdf9a20adc602425730"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): doc/src/api.rs:1879-1892 | doc/src/api.rs:1932-1945 \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":"doc/src/api.rs"},"region":{"startLine":1879}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0374b038fbaab18b9937da9b16c9e1f9ccf9bf738d75ae05b78a5eef2c60424"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/codegen/v2/lang_crystal/wrappers.rs:1174-1183 | doc/src/codegen/v2/lang_swift/wrappers.rs:1906-1919 \u2014 \u0060doc/src/codegen/v2/lang_crystal/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 8 separate duplicated blocks between them, totalling at least 74 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/wrappers.rs"},"region":{"startLine":1174}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5ed8daac004b92609a87e46605290eda20b2517df7d92b89b3fa35dceadc1f5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): dll/src/web/native_remill.rs:177-190 | dll/src/web/native_remill.rs:313-326 \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":"dll/src/web/native_remill.rs"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"6371c07d4124d1678915485ed3eda38fc75d798d0c3879a5fa66d1534cf3e09f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): dll/src/desktop/extra/file_picker/ios.rs:342-355 | dll/src/desktop/extra/file_picker/ios.rs:429-439 \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":"dll/src/desktop/extra/file_picker/ios.rs"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"c41c0755820e7935ffa5cfbee010530f58116be22f1eb50e8969c026be4a3745"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): doc/src/codegen/v2/lang_java/managed.rs:465-478 | doc/src/codegen/v2/lang_kotlin/managed.rs:368-381 \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":"doc/src/codegen/v2/lang_java/managed.rs"},"region":{"startLine":465}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1da0df855af83a68c9da0f3f0d44045367e11fc017eeb4acafc076928070134"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): doc/src/autofix/workspace.rs:1070-1081 | doc/src/autofix/workspace.rs:1091-1103 | doc/src/autofix/workspace.rs:1271-1284 \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":"doc/src/autofix/workspace.rs"},"region":{"startLine":1070}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac84ef84ee883abe62436cad95d81d0f002f9ba14d3221b23f06c2c8c79718df"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): doc/src/codegen/v2/lang_rust.rs:3155-3166 | doc/src/codegen/v2/lang_rust.rs:3225-3237 | doc/src/codegen/v2/lang_rust.rs:3278-3289 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":3155}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dc7643e2fc342050f96b11ae82ebeff5dbc0cb4dbfd5d817a5acbada1ce8a50"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): doc/src/reftest/autodoc.rs:567-579 | doc/src/reftest/autodoc.rs:590-602 \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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":567}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf6faf8d3c4b641c8a402fedd8de53fb85eb16047d2bd2091b50e83b1e5697de"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:1610-1622 | doc/src/codegen/v2/lang_rust.rs:1945-1956 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":1610}}}],"partialFingerprints":{"codehealthFindingId/v1":"9afdfff44d4141b286aa661f89cc3daf00f49eebf0bdd6f81765340587399a50"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): dll/src/desktop/extra/sqlite/mod.rs:1717-1729 | dll/src/desktop/extra/sqlite/mod.rs:1747-1759 \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":"dll/src/desktop/extra/sqlite/mod.rs"},"region":{"startLine":1717}}}],"partialFingerprints":{"codehealthFindingId/v1":"863f37d1b89d4e89aa7ea7f93ed36931325b9f764308e2c358bebc527858a6db"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_java/wrappers.rs:1771-1783 | doc/src/codegen/v2/lang_java/wrappers.rs:1892-1897 \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":"doc/src/codegen/v2/lang_java/wrappers.rs"},"region":{"startLine":1771}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f04970f2df701c80f3a3539573e0e40cbbd21b64df534c8120335af9ba1ac16"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): doc/src/codegen/v2/lang_rust.rs:1321-1333 | doc/src/codegen/v2/lang_rust.rs:1345-1355 | doc/src/codegen/v2/lang_rust.rs:1674-1685 | doc/src/codegen/v2/lang_rust.rs:1989-2001 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":1321}}}],"partialFingerprints":{"codehealthFindingId/v1":"686d4d4e10805dded730898b32e4c9ebd12a40b69bcc75da963f9bc466bfcbce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/codegen/v2/lang_cobol/types.rs:505-514 | doc/src/codegen/v2/lang_fortran/mod.rs:670-682 \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":"doc/src/codegen/v2/lang_cobol/types.rs"},"region":{"startLine":505}}}],"partialFingerprints":{"codehealthFindingId/v1":"92bf0b3dc66ad85831e0603e7efafb303a745df5b5ad91567b51d7d835e89fa9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): dll/src/web/native_remill.rs:314-326 | dll/src/web/native_remill.rs:360-372 \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":"dll/src/web/native_remill.rs"},"region":{"startLine":314}}}],"partialFingerprints":{"codehealthFindingId/v1":"22822a03199963d78d0e4cac940eaeb6677cade9dd54be37557df3d9484dea20"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): doc/src/reftest/autodoc.rs:1009-1020 | doc/src/reftest/autoreview.rs:629-640 | doc/src/reftest/autoreview.rs:859-871 | doc/src/reftest/autoreview.rs:1782-1793 \u2014 before extracting anything, compare \u0060doc/src/reftest/autodoc.rs\u0060 and \u0060doc/src/reftest/autoreview.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 207 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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":1009}}}],"partialFingerprints":{"codehealthFindingId/v1":"556f8905658d6216509f7f1358bbd32747eb37f6ae6b877d74a1eeba62f163ee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): doc/src/autofix/mod.rs:4977-4989 | doc/src/autofix/mod.rs:5015-5027 \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":"doc/src/autofix/mod.rs"},"region":{"startLine":4977}}}],"partialFingerprints":{"codehealthFindingId/v1":"597a9252b96b2135887b285baa1003008ae40981f4eb8c0b579c051e2191a707"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:1512-1524 | doc/src/codegen/v2/lang_rust.rs:1544-1556 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":1512}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e27a94dc4af8df4c0a3caba9f23def680110c8d3b019d3cff5954cc768a81f5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): doc/src/reftest/autodebug.rs:2246-2258 | doc/src/reftest/autoreview.rs:1189-1198 | doc/src/reftest/autoreview.rs:1628-1637 \u2014 before extracting anything, compare \u0060doc/src/reftest/autodebug.rs\u0060 and \u0060doc/src/reftest/autoreview.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 52 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":"doc/src/reftest/autodebug.rs"},"region":{"startLine":2246}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb29d32ee32b33201f43dacc0091f29ec27cac09bcf30c273cc1d8126525b1ec"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): dll/src/desktop/wr_translate2.rs:1606-1618 | dll/src/desktop/wr_translate2.rs:2514-2526 \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":"dll/src/desktop/wr_translate2.rs"},"region":{"startLine":1606}}}],"partialFingerprints":{"codehealthFindingId/v1":"030045b889e2fc72878bbf349214ed011d18e89cb527a542ea92c073d9b3b257"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): doc/src/main.rs:1195-1207 | doc/src/main.rs:1272-1284 \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":"doc/src/main.rs"},"region":{"startLine":1195}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ff75885b3db01f922e7158ea2b1d2273afa5119ae05416edfedc1a186ba71f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): dll/src/web/transpiler_remill.rs:7006-7018 | dll/src/web/transpiler_remill.rs:7037-7048 | dll/src/web/transpiler_remill.rs:7067-7078 | dll/src/web/transpiler_remill.rs:7097-7108 \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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":7006}}}],"partialFingerprints":{"codehealthFindingId/v1":"003f0ce841639e059b09a27bce9ba66031728abb6c653203bdf844ebdd39857b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:2001-2013 | dll/src/desktop/shell2/linux/x11/mod.rs:3263-3275 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":2001}}}],"partialFingerprints":{"codehealthFindingId/v1":"319ff377d528a41ef3ec986a8e7ce21dd269025f38febb6d0a06799ee0dd3848"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): dll/src/desktop/shell2/android/mod.rs:982-994 | dll/src/desktop/shell2/android/mod.rs:1746-1758 | dll/src/desktop/shell2/android/mod.rs:1942-1954 \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":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":982}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dbb8fc633718d44f4ae534bf4b068483033e415dba79bec4f222964fdfeb106"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): doc/src/autofix/workspace.rs:993-1004 | doc/src/autofix/workspace.rs:1005-1016 \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":"doc/src/autofix/workspace.rs"},"region":{"startLine":993}}}],"partialFingerprints":{"codehealthFindingId/v1":"27830001cf8cd27a9055a7c491036fc987eb91ebb78c512a5734007902a9761b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): doc/src/dllgen/deploy.rs:107-118 | doc/src/dllgen/deploy.rs:125-136 | doc/src/dllgen/deploy.rs:143-154 \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":"doc/src/dllgen/deploy.rs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ef0088880537d14439901e071fd23c1ba6ac96511c10b860520558446db9299"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): doc/src/codegen/v2/lang_csharp/mod.rs:232-242 | doc/src/codegen/v2/lang_java/mod.rs:261-272 | doc/src/codegen/v2/lang_node/mod.rs:1005-1014 \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":"doc/src/codegen/v2/lang_csharp/mod.rs"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"bee84f461d48f4dc6044808bdd92fd58f3fd8b0b725e48436efe629f80c608c9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_kotlin/mod.rs:357-363 | doc/src/codegen/v2/lang_kotlin/mod.rs:987-998 \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":"doc/src/codegen/v2/lang_kotlin/mod.rs"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"96600a7f5923e65c8dc8faac5fcf5062efa6a1c903f55b8876cfc9c74a8806d9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): doc/src/codegen/v2/lang_ocaml/wrappers.rs:1527-1538 | doc/src/codegen/v2/lang_ocaml/wrappers.rs:1797-1808 \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":"doc/src/codegen/v2/lang_ocaml/wrappers.rs"},"region":{"startLine":1527}}}],"partialFingerprints":{"codehealthFindingId/v1":"a89444bc9040dbfe1139597c8b6eb5ba4d78cb0fdfcd8e16c79cd2c5468387c6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 6): doc/src/codegen/v2/lang_rust.rs:603-614 | doc/src/codegen/v2/lang_rust.rs:3027-3035 | doc/src/codegen/v2/lang_rust.rs:3170-3177 | doc/src/codegen/v2/lang_rust.rs:3241-3249 | doc/src/codegen/v2/lang_rust.rs:3293-3300 | doc/src/codegen/v2/lang_rust.rs:3332-3339 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":603}}}],"partialFingerprints":{"codehealthFindingId/v1":"1524da476f55cb04b2f67bbe46678241efe99352a63a0a18a2bc5a052f4110e8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): doc/src/codegen/v2/lang_rust.rs:1689-1697 | doc/src/codegen/v2/lang_rust.rs:1717-1728 | doc/src/codegen/v2/lang_rust.rs:1748-1759 | doc/src/codegen/v2/lang_rust.rs:1768-1779 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":1689}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c1da1d454969b11bf5dae7494702f04510442b21624744ff93c20ae5378a062"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:8754-8765 | dll/src/desktop/shell2/linux/wayland/tooltip.rs:273-283 \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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":8754}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0709c4cca985ff1eaed5c36a6dc0e655a45a8c4c1faea026b6ccaab1465b65c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): doc/src/codegen/v2/lang_ocaml/mod.rs:448-459 | doc/src/codegen/v2/lang_ocaml/mod.rs:493-504 \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":"doc/src/codegen/v2/lang_ocaml/mod.rs"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"00decaa860c2cc77df86655ccacdc086aa34e9cd90427db670a7d97e39ae1aad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): dll/src/desktop/shell2/common/event.rs:5917-5927 | dll/src/desktop/shell2/common/event.rs:6033-6044 \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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":5917}}}],"partialFingerprints":{"codehealthFindingId/v1":"583425e7775b458c41395e51a24503c53d23ac1e48bde5ee8a427a04e4c522c7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/codegen/v2/lang_kotlin/mod.rs:460-471 | doc/src/codegen/v2/lang_kotlin/mod.rs:798-807 \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":"doc/src/codegen/v2/lang_kotlin/mod.rs"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"153428767e6dfcae72ff632c5dfb427e2513ee54cdd8a8342f678bf7d8b10067"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): dll/src/desktop/shell2/linux/wayland/mod.rs:10972-10983 | dll/src/desktop/shell2/linux/x11/mod.rs:8729-8737 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":10972}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad5be1a525b1d338b9973585c974e5c64cee5205c559b71c59cbc3d2f8164090"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 21): dll/src/desktop/shell2/linux/wayland/defines.rs:914-925 | dll/src/desktop/shell2/linux/wayland/defines.rs:1060-1071 | dll/src/desktop/shell2/linux/wayland/defines.rs:1099-1110 | dll/src/desktop/shell2/linux/wayland/defines.rs:1237-1248 | dll/src/desktop/shell2/linux/wayland/defines.rs:1351-1362 | dll/src/desktop/shell2/linux/wayland/defines.rs:1470-1481 | dll/src/desktop/shell2/linux/wayland/defines.rs:1519-1530 | dll/src/desktop/shell2/linux/wayland/defines.rs:1627-1638 | dll/src/desktop/shell2/linux/wayland/defines.rs:1960-1971 | dll/src/desktop/shell2/linux/wayland/defines.rs:2012-2023 | dll/src/desktop/shell2/linux/wayland/defines.rs:2054-2065 | dll/src/desktop/shell2/linux/wayland/defines.rs:2114-2125 | dll/src/desktop/shell2/linux/wayland/defines.rs:2186-2197 | dll/src/desktop/shell2/linux/wayland/defines.rs:2241-2252 | dll/src/desktop/shell2/linux/wayland/defines.rs:2368-2379 | dll/src/desktop/shell2/linux/wayland/defines.rs:2408-2419 | dll/src/desktop/shell2/linux/wayland/defines.rs:2555-2566 | dll/src/desktop/shell2/linux/wayland/defines.rs:2598-2609 | dll/src/desktop/shell2/linux/wayland/defines.rs:2643-2654 | dll/src/desktop/shell2/linux/wayland/defines.rs:2909-2920 | dll/src/desktop/shell2/linux/wayland/defines.rs:2994-3005 \u2014 all 21 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":"dll/src/desktop/shell2/linux/wayland/defines.rs"},"region":{"startLine":914}}}],"partialFingerprints":{"codehealthFindingId/v1":"8652a2ba5782fd7ea25523d0a90654df2f8df45cff30db31f82a09ba0ba8cdf8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/codegen/v2/lang_ruby/wrappers.rs:1299-1308 | doc/src/codegen/v2/lang_ruby/wrappers.rs:1363-1374 \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":"doc/src/codegen/v2/lang_ruby/wrappers.rs"},"region":{"startLine":1299}}}],"partialFingerprints":{"codehealthFindingId/v1":"e229ba0dcdc41cc3af93027aa8ddc42ec50a1b42c814a42cb093c4e916edc0c4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): doc/src/autofix/debug.rs:53-64 | doc/src/autofix/debug.rs:78-89 \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":"doc/src/autofix/debug.rs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"78f41a52c1c5f8931411a612e0be51e1e7cf62838a3c7d33d957ec9f4e400ede"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): dll/src/desktop/shell2/linux/wayland/screencopy.rs:222-233 | dll/src/desktop/shell2/linux/wayland/screencopy.rs:299-310 | dll/src/desktop/shell2/linux/wayland/screencopy.rs:354-365 | dll/src/desktop/shell2/linux/wayland/screencopy.rs:407-418 \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":"dll/src/desktop/shell2/linux/wayland/screencopy.rs"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"325cebb5c1b32d400fd5e868e4e322c29b10edba7a8dd021956f4ba89c789eb7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): doc/src/codegen/v2/lang_perl/types.rs:46-57 | doc/src/codegen/v2/lang_ruby/types.rs:40-51 \u2014 \u0060doc/src/codegen/v2/lang_perl/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_ruby/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 5 separate duplicated blocks between them, totalling at least 49 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_perl/types.rs"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aa8970d4ff576510f59f7181c698d0edd472c5a3dbdc092a19bed150a2b8bf3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 13): dll/src/desktop/shell2/linux/wayland/defines.rs:775-786 | dll/src/desktop/shell2/linux/wayland/defines.rs:821-832 | dll/src/desktop/shell2/linux/wayland/defines.rs:863-874 | dll/src/desktop/shell2/linux/wayland/defines.rs:956-967 | dll/src/desktop/shell2/linux/wayland/defines.rs:1139-1150 | dll/src/desktop/shell2/linux/wayland/defines.rs:1185-1196 | dll/src/desktop/shell2/linux/wayland/defines.rs:1294-1305 | dll/src/desktop/shell2/linux/wayland/defines.rs:1664-1675 | dll/src/desktop/shell2/linux/wayland/defines.rs:2438-2449 | dll/src/desktop/shell2/linux/wayland/defines.rs:2679-2690 | dll/src/desktop/shell2/linux/wayland/defines.rs:2877-2888 | dll/src/desktop/shell2/linux/wayland/defines.rs:2946-2957 | dll/src/desktop/shell2/linux/wayland/defines.rs:3036-3047 \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":"dll/src/desktop/shell2/linux/wayland/defines.rs"},"region":{"startLine":775}}}],"partialFingerprints":{"codehealthFindingId/v1":"860211280b3c61aa9e3d2dbc21545e5d4e9bef83989292454d4b551474aad4cb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/codegen/v2/lang_haskell/functions.rs:636-645 | doc/src/codegen/v2/lang_ocaml/functions.rs:154-164 \u2014 \u0060doc/src/codegen/v2/lang_haskell/functions.rs\u0060 and \u0060doc/src/codegen/v2/lang_ocaml/functions.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 58 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_haskell/functions.rs"},"region":{"startLine":636}}}],"partialFingerprints":{"codehealthFindingId/v1":"44d10ca29ebf6217964671c84fa7fe2dd63766465b763d43da194ffa1faa4d0d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): doc/src/codegen/v2/lang_freebasic/types.rs:313-323 | doc/src/codegen/v2/lang_vb6/types.rs:305-315 \u2014 \u0060doc/src/codegen/v2/lang_freebasic/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_vb6/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 8 separate duplicated blocks between them, totalling at least 109 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_freebasic/types.rs"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"87d34a3446ab5a9773d5c0fe85cc5a857b4ef1bd913e5991bfb25f9f102b9667"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): doc/src/reftest/autoreview.rs:1504-1514 | doc/src/reftest/autoreview.rs:2029-2039 \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":"doc/src/reftest/autoreview.rs"},"region":{"startLine":1504}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6dbc5a58f6de58351738df39bff646e2a77c5bab87cc2698a6053dd27824485"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): doc/src/codegen/v2/lang_cpp/cpp03.rs:134-144 | doc/src/codegen/v2/lang_cpp/cpp11.rs:652-661 | doc/src/codegen/v2/lang_cpp/cpp17.rs:148-158 | doc/src/codegen/v2/lang_cpp/cpp20.rs:625-634 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_cpp/cpp03.rs\u0060 and \u0060doc/src/codegen/v2/lang_cpp/cpp11.rs\u0060 as WHOLE FILES: this scan already matched 28 separate duplicated blocks between them, totalling at least 483 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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5beaa90a742a54c32e07523283db89290ae728168747ad0a383079c3e87400b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): doc/src/codegen/v2/ir_builder.rs:2450-2460 | doc/src/codegen/v2/ir_builder.rs:2473-2483 \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":"doc/src/codegen/v2/ir_builder.rs"},"region":{"startLine":2450}}}],"partialFingerprints":{"codehealthFindingId/v1":"10fdc2a01c05b46aa9341c1acf843a3955c78b42b4640fc42a9a29ac8768e99a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/codegen/v2/lang_csharp/wrappers.rs:1040-1049 | doc/src/codegen/v2/lang_csharp/wrappers.rs:1103-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":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":1040}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb309968c807a1eae11ffaa14d9ed5f5f2f4ba78d0be4e6e29f20412b57efb2c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): core/src/xml.rs:3257-3267 | core/src/xml.rs:3291-3299 \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":"core/src/xml.rs"},"region":{"startLine":3257}}}],"partialFingerprints":{"codehealthFindingId/v1":"c58f122218dc3b23ebdcee72a546d6ff468a90075a818b6566d24d0f24c9deaf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): doc/src/codegen/v2/lang_node/types.rs:341-351 | doc/src/codegen/v2/lang_node/types.rs:367-377 \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":"doc/src/codegen/v2/lang_node/types.rs"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"89fb65c83cd7fb2581b2b31c46372e3dbf52d0cd8b833a0fd710d18166454eb7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): core/src/xml.rs:3258-3268 | core/src/xml.rs:3292-3300 | core/src/xml.rs:3326-3336 \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":"core/src/xml.rs"},"region":{"startLine":3258}}}],"partialFingerprints":{"codehealthFindingId/v1":"16f7539462c11c329084ddf2417842249e3f3630dd54c11cefcf00098186e043"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): doc/src/autofix/mod.rs:2402-2412 | doc/src/autofix/mod.rs:2454-2464 \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":"doc/src/autofix/mod.rs"},"region":{"startLine":2402}}}],"partialFingerprints":{"codehealthFindingId/v1":"63e7feffa6b1d869c81c9e83b68b354eea61e5ef854fee9b3fc480bd3f36f9c4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): doc/src/codegen/v2/lang_rust.rs:4084-4094 | doc/src/codegen/v2/lang_rust.rs:4106-4116 | doc/src/codegen/v2/lang_rust.rs:4133-4143 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":4084}}}],"partialFingerprints":{"codehealthFindingId/v1":"41376b141194f463266bcb1504662196c28846ed972ed1b20a03b975b8d6b828"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 5): doc/src/codegen/v2/lang_rust.rs:2895-2902 | doc/src/codegen/v2/lang_rust.rs:2917-2927 | doc/src/codegen/v2/lang_rust.rs:2935-2942 | doc/src/codegen/v2/rust/static_binding.rs:375-385 | doc/src/codegen/v2/rust/static_binding.rs:418-428 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_rust.rs\u0060 and \u0060doc/src/codegen/v2/rust/static_binding.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 68 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2895}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8df7a8cd54e6a6a338817a590e73679e6de8b4ed861fc2d4cdfe29693240253"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): doc/src/codegen/v2/lang_java/wrappers.rs:1796-1806 | doc/src/codegen/v2/lang_java/wrappers.rs:1902-1912 \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":"doc/src/codegen/v2/lang_java/wrappers.rs"},"region":{"startLine":1796}}}],"partialFingerprints":{"codehealthFindingId/v1":"879038ce36ef96310862821adf830700e2731f737b5298daca545bb0e712d71a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): core/src/xml.rs:3210-3220 | core/src/xml.rs:3258-3268 | core/src/xml.rs:3292-3300 | core/src/xml.rs:3326-3336 \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":"core/src/xml.rs"},"region":{"startLine":3210}}}],"partialFingerprints":{"codehealthFindingId/v1":"12d928c755b1d935a14790df507709c740a230b8a74edb3805c8340eba0190a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:661-669 | doc/src/codegen/v2/lang_rust.rs:2033-2043 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":661}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fc17b5e9133df08fba69279d1b3aab09f0aff3297c8165c7a7c17f1b6e62861"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/reftest/regression.rs:1887-1897 | doc/src/reftest/regression.rs:1899-1908 \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":"doc/src/reftest/regression.rs"},"region":{"startLine":1887}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dd21be758d3bc96d1c8d4f10139b0858e783221586806c67e5df761a8be51ec"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): webrender/core/src/render_backend.rs:1678-1688 | webrender/core/src/render_backend.rs:1690-1700 | webrender/core/src/render_backend.rs:1702-1712 \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":"webrender/core/src/render_backend.rs"},"region":{"startLine":1678}}}],"partialFingerprints":{"codehealthFindingId/v1":"10813684b35a29e813fd74f9127afffcfc9ff647e844ac74c544df6c03b4b1a8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:1452-1462 | doc/src/codegen/v2/lang_rust.rs:1468-1478 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":1452}}}],"partialFingerprints":{"codehealthFindingId/v1":"57c819e591036a3c8345d3d5bea04bd0772bb3ef89d1a24f088915db402fe209"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): dll/src/desktop/shell2/linux/wayland/screencopy.rs:79-89 | dll/src/desktop/shell2/linux/wayland/screencopy.rs:113-123 | dll/src/desktop/shell2/linux/wayland/screencopy.rs:156-166 \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":"dll/src/desktop/shell2/linux/wayland/screencopy.rs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"790c9ad97790bb23b28685582ec075c3a24f7a41cfa944a6b855400a137ed776"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): dll/src/web/transpiler_remill.rs:11803-11813 | dll/src/web/transpiler_remill.rs:11872-11882 \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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":11803}}}],"partialFingerprints":{"codehealthFindingId/v1":"e13c0aba8373a915e766831193d6ceb28648892c57ce338ab8cf93e4c4496490"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/codegen/v2/lang_node/managed.rs:644-653 | doc/src/codegen/v2/lang_php/managed.rs:191-200 \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":"doc/src/codegen/v2/lang_node/managed.rs"},"region":{"startLine":644}}}],"partialFingerprints":{"codehealthFindingId/v1":"7219b205f5e82aebba9ecdf7cbe99ea58e88ce51996e4f97b1844eddbd26925f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/codegen/v2/mod.rs:639-648 | doc/src/codegen/v2/mod.rs:675-684 \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":"doc/src/codegen/v2/mod.rs"},"region":{"startLine":639}}}],"partialFingerprints":{"codehealthFindingId/v1":"16d9c193a3dae994a8dc8dd8f37f79e201f3221718a9a340a2e494258ec7dcd6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_java/wrappers.rs:1305-1314 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:138-144 \u2014 \u0060doc/src/codegen/v2/lang_java/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_kotlin/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 15 separate duplicated blocks between them, totalling at least 173 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_java/wrappers.rs"},"region":{"startLine":1305}}}],"partialFingerprints":{"codehealthFindingId/v1":"81ea7a225903ec8d519e582f039835d80494f6c01a717b4e61c8e64fa929c471"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_csharp/types.rs:395-403 | doc/src/codegen/v2/lang_csharp/types.rs:518-527 \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":"doc/src/codegen/v2/lang_csharp/types.rs"},"region":{"startLine":395}}}],"partialFingerprints":{"codehealthFindingId/v1":"90b3d444f25baa1620fd24a03df7636dfe6bfadf2f875d6b1014d5228804ff52"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_ruby/wrappers.rs:1093-1098 | doc/src/codegen/v2/lang_ruby/wrappers.rs:1134-1143 \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":"doc/src/codegen/v2/lang_ruby/wrappers.rs"},"region":{"startLine":1093}}}],"partialFingerprints":{"codehealthFindingId/v1":"2acfb307674c490d3e0c0cdf3d1e9d743515fe026a983823e4510ecb2c3322d6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:1081-1090 | doc/src/codegen/v2/lang_rust.rs:3949-3955 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":1081}}}],"partialFingerprints":{"codehealthFindingId/v1":"7398cca120b9b8d141c693b8bb963207f7d77af6a4c5d8d72990370741110454"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): dll/src/web/server.rs:254-263 | dll/src/web/server.rs:275-284 \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":"dll/src/web/server.rs"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dc3759cf1c8f8d48d4ab2ce0bcd848214dd890a44df48cf26b46039cd178f10"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:3470-3479 | doc/src/codegen/v2/lang_rust.rs:3483-3492 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":3470}}}],"partialFingerprints":{"codehealthFindingId/v1":"13f554283d5a5f8b3ad2beb5fedb36132f978538f6c890882dda4f433ae78489"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/codegen/v2/lang_node/wrappers.rs:1325-1334 | doc/src/codegen/v2/lang_node/wrappers.rs:1338-1347 \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":"doc/src/codegen/v2/lang_node/wrappers.rs"},"region":{"startLine":1325}}}],"partialFingerprints":{"codehealthFindingId/v1":"d54ff77cf8ed0f074e5fbdb1a4145dced4f0f9c23365aa370796cc744f1548d4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): core/src/xml.rs:3125-3134 | core/src/xml.rs:3136-3145 \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":"core/src/xml.rs"},"region":{"startLine":3125}}}],"partialFingerprints":{"codehealthFindingId/v1":"201da4887737684e83ff93a57e6c3ea184ffdb0f8879f575b8d1d00502c10aef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 5): doc/src/codegen/v2/lang_csharp/types.rs:349-355 | doc/src/codegen/v2/lang_lisp/types.rs:251-258 | doc/src/codegen/v2/lang_node/types.rs:390-397 | doc/src/codegen/v2/lang_racket/types.rs:204-213 | doc/src/codegen/v2/lang_smalltalk/types.rs:195-200 \u2014 \u0060doc/src/codegen/v2/lang_lisp/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_racket/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 84 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_csharp/types.rs"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"354bce80f14efe05bb61f86864638f0be0be5c24ef57da8a2591aec73ea16d4d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_ocaml/wrappers.rs:1367-1373 | doc/src/codegen/v2/lang_ocaml/wrappers.rs:1423-1432 \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":"doc/src/codegen/v2/lang_ocaml/wrappers.rs"},"region":{"startLine":1367}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cf2c54c3334cb6fb7e3c6988bc0b0a0a7aa02b952937241b9b2aeb95402a204"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): core/src/xml.rs:3200-3208 | core/src/xml.rs:3255-3264 | core/src/xml.rs:3289-3296 \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":"core/src/xml.rs"},"region":{"startLine":3200}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0912aaa430b03d7293694b4b6f23d73cabae0d4485e8c1dcd6d963b8f07de2f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): doc/src/autofix/type_index.rs:259-268 | doc/src/autofix/type_index.rs:310-319 | doc/src/autofix/type_index.rs:499-508 | doc/src/autofix/type_index.rs:535-544 \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":"doc/src/autofix/type_index.rs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b047238e4524dfd4fbbcd34f630a5c5aa7b3b629a068f9200a50ca7c7c5eb0a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): doc/src/autofix/workspace.rs:1117-1125 | doc/src/autofix/workspace.rs:1136-1144 | doc/src/autofix/workspace.rs:1222-1231 \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":"doc/src/autofix/workspace.rs"},"region":{"startLine":1117}}}],"partialFingerprints":{"codehealthFindingId/v1":"84b76c5e787c14503b9de11a09e117309196de6964f0d604d45ea0de501dff8f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): core/src/xml.rs:8696-8702 | core/src/xml.rs:8791-8800 \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":"core/src/xml.rs"},"region":{"startLine":8696}}}],"partialFingerprints":{"codehealthFindingId/v1":"694757b0e593c71fa6a037dc7d5c764de2a153c6c5b1512ba121f686477c7f53"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 5): dll/src/desktop/shell2/linux/wayland/mod.rs:10903-10912 | dll/src/desktop/shell2/linux/wayland/mod.rs:11034-11043 | dll/src/desktop/shell2/linux/x11/mod.rs:8660-8669 | dll/src/desktop/shell2/linux/x11/mod.rs:8785-8794 | dll/src/desktop/tray/linux.rs:1178-1185 \u2014 \u0060dll/src/desktop/shell2/linux/wayland/mod.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 45 separate duplicated blocks between them, totalling at least 685 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":10903}}}],"partialFingerprints":{"codehealthFindingId/v1":"7517d8c926bb1fa18b768f0c31b3cf6654bf9078b8063890d59e943881c93326"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): dll/src/desktop/extra/media_keys/apple.rs:456-465 | dll/src/desktop/extra/media_keys/apple.rs:475-481 \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":"dll/src/desktop/extra/media_keys/apple.rs"},"region":{"startLine":456}}}],"partialFingerprints":{"codehealthFindingId/v1":"f962e9892f1f3179e35d6022ef72992ea246263f0c1c439544d1ef487e801bd7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_node/wrappers.rs:1525-1534 | doc/src/codegen/v2/lang_node/wrappers.rs:1671-1677 \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":"doc/src/codegen/v2/lang_node/wrappers.rs"},"region":{"startLine":1525}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2021f5e2e2c24b45b42913d49cb090af95c7187755dd5f511b02c34e1d7cddf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:1028-1037 | doc/src/codegen/v2/lang_d/wrappers.rs:1084-1091 \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":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":1028}}}],"partialFingerprints":{"codehealthFindingId/v1":"a57c2e3c1b8d9c5f385e6a07bd77eceaddeb7a9ec0d7edae7a94e426b419abe3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): doc/src/patch/index.rs:1523-1532 | doc/src/patch/index.rs:1618-1627 \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":"doc/src/patch/index.rs"},"region":{"startLine":1523}}}],"partialFingerprints":{"codehealthFindingId/v1":"18ca946822e6b9636247beded4190dcff6cbafab3049e0245b0d47f66781d37d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_csharp/derives.rs:306-314 | doc/src/codegen/v2/lang_csharp/derives.rs:332-338 \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":"doc/src/codegen/v2/lang_csharp/derives.rs"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d83ac5c5e55f06bd50d52c9f5ee1545dff2d20eab6844f13df2950959644f93"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:636-644 | doc/src/codegen/v2/lang_rust.rs:655-663 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":636}}}],"partialFingerprints":{"codehealthFindingId/v1":"c16c5ece5cf0a36dfabe36a9b582efca266146db0821a70177ff4a03f841199d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_perl/types.rs:67-75 | doc/src/codegen/v2/lang_ruby/types.rs:87-95 \u2014 \u0060doc/src/codegen/v2/lang_perl/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_ruby/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 5 separate duplicated blocks between them, totalling at least 49 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_perl/types.rs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"b14e9019c63eca414c16bfac36ea7c44db6bbd77ace6e9af9656b3c04b91aca8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): doc/src/codegen/v2/lang_crystal/types.rs:354-362 | doc/src/codegen/v2/lang_odin/types.rs:300-308 | doc/src/codegen/v2/lang_v/types.rs:310-318 \u2014 \u0060doc/src/codegen/v2/lang_crystal/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_odin/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 7 separate duplicated blocks between them, totalling at least 52 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/types.rs"},"region":{"startLine":354}}}],"partialFingerprints":{"codehealthFindingId/v1":"4aaf6009ea1c0694035dc551ac33c4c9a5d5deb7d89444c9740a5ca809e6a75d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/reftest/autodoc.rs:1628-1636 | doc/src/reftest/pipeline.rs:422-430 \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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":1628}}}],"partialFingerprints":{"codehealthFindingId/v1":"7401c674fee3e9b39a74e8933048973853af4dddb738d71ce9f5e29f5cd6a2e8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/autofix/mod.rs:2430-2438 | doc/src/autofix/mod.rs:2518-2526 \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":"doc/src/autofix/mod.rs"},"region":{"startLine":2430}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbac30253939ffb34c118aff8e718ca176d74df16e19369bad993d0dbc05b957"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_cobol/types.rs:507-515 | doc/src/codegen/v2/lang_racket/mod.rs:316-321 \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":"doc/src/codegen/v2/lang_cobol/types.rs"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccbfcc6de42f2a4c324789d91b43471eb91858397d3db00ef9f35476bf99ddf5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_kotlin/wrappers.rs:234-242 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:286-294 \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":"doc/src/codegen/v2/lang_kotlin/wrappers.rs"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"661911cb2b38c0b26696a8f41cdfd0bdb375fb2b2ecac1dd7c326da28330a9e7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_java/derives.rs:375-381 | doc/src/codegen/v2/lang_java/wrappers.rs:852-860 \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":"doc/src/codegen/v2/lang_java/derives.rs"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fba60820b682b552c205e8975b58448a21731e935eb304bdec003f03073a84f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:780-788 | doc/src/codegen/v2/lang_rust.rs:1985-1993 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":780}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d2033e6ae945ceca65023368d77df31d9f7017f3d3e67b1504868f8e91ef699"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): webrender/core/src/device/gl.rs:2485-2493 | webrender/core/src/device/gl.rs:2568-2576 \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":"webrender/core/src/device/gl.rs"},"region":{"startLine":2485}}}],"partialFingerprints":{"codehealthFindingId/v1":"15d19bdcaa7ab59e1d574dba30496e05ff42321cfb93065c0ab3352ea63ad391"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/config.rs:527-534 | doc/src/codegen/v2/config.rs:724-732 \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":"doc/src/codegen/v2/config.rs"},"region":{"startLine":527}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6260c9c4ae5e78a59fe27c79420895bbaa80b7e7e1266f6934057f61ba03db9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): doc/src/codegen/v2/lang_freebasic/functions.rs:123-131 | doc/src/codegen/v2/lang_freebasic/types.rs:368-374 | doc/src/codegen/v2/lang_freebasic/wrappers.rs:434-440 | doc/src/codegen/v2/lang_pascal/functions.rs:178-184 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_freebasic/functions.rs\u0060 and \u0060doc/src/codegen/v2/lang_freebasic/types.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 33 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":"doc/src/codegen/v2/lang_freebasic/functions.rs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"827a01fdca28123876d84b8fc5a6d5d67ff0eafa3e8da888f47152fb76674f71"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_kotlin/managed.rs:234-242 | doc/src/codegen/v2/lang_kotlin/managed.rs:253-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":"doc/src/codegen/v2/lang_kotlin/managed.rs"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a2245af79dda1f02c6dfb00dddc5d156042d0478636021c1b976f7e0125224f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_go/managed.rs:850-855 | doc/src/codegen/v2/lang_go/managed.rs:866-874 \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":"doc/src/codegen/v2/lang_go/managed.rs"},"region":{"startLine":850}}}],"partialFingerprints":{"codehealthFindingId/v1":"4583a940ee99c4645b8608b2b4d711d6ed9382398a1781826944effecd2bdc52"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): dll/src/desktop/shell2/linux/gnome_menu/protocol_impl.rs:235-243 | dll/src/desktop/shell2/linux/gnome_menu/protocol_impl.rs:362-370 \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":"dll/src/desktop/shell2/linux/gnome_menu/protocol_impl.rs"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bc4f0e5586145753d0b40eee3f0db7025e35ac21671d2d8a64c4e8f5f7fb726"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:1341-1347 | doc/src/codegen/v2/lang_rust.rs:3979-3987 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":1341}}}],"partialFingerprints":{"codehealthFindingId/v1":"08ea31b96bc3159d573f61f1735a84015f35bb866105f1101dffa376e7a4d48e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_nim/functions.rs:137-143 | doc/src/codegen/v2/lang_nim/wrappers.rs:214-222 \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":"doc/src/codegen/v2/lang_nim/functions.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"dde03a96c4d65411ec4535b9fefa2d9332982c2563a1f549b5d14734a47e60db"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): layout/src/solver3/layout_tree.rs:2620-2628 | layout/src/solver3/layout_tree.rs:2631-2639 \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":"layout/src/solver3/layout_tree.rs"},"region":{"startLine":2620}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ea54d3dd6fc82d8c254acac9aa6d0bbad2f1350e7b07b030f72ba687d2e7286"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/config.rs:523-531 | doc/src/codegen/v2/config.rs:552-560 \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":"doc/src/codegen/v2/config.rs"},"region":{"startLine":523}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cdf73ed1a19c28260f9cc0f01763df5a380f7cfd7acf92ee75e9a504ae43108"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): dll/src/desktop/extra/audio/avfoundation_mic.rs:288-296 | dll/src/desktop/extra/camera/avfoundation.rs:334-342 \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":"dll/src/desktop/extra/audio/avfoundation_mic.rs"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d7c61ec21d415f1a5ef2d220941ac1c30dd7c7830136a58c50e2fde5d1ce831"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): doc/src/codegen/v2/lang_crystal/types.rs:138-146 | doc/src/codegen/v2/lang_julia/types.rs:174-182 | doc/src/codegen/v2/lang_odin/types.rs:122-130 | doc/src/codegen/v2/lang_v/types.rs:127-135 \u2014 \u0060doc/src/codegen/v2/lang_crystal/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_julia/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 5 separate duplicated blocks between them, totalling at least 35 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/types.rs"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d44a1c22335750af6fbb86484a6d8e537ad381e71829f9f98a3f7ebc762f28b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): doc/src/codegen/v2/lang_java/wrappers.rs:530-538 | doc/src/codegen/v2/lang_java/wrappers.rs:567-575 \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":"doc/src/codegen/v2/lang_java/wrappers.rs"},"region":{"startLine":530}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aea9f850c41aa3b9f109ad0e34dd1465bd5874fa6fa83157f1e5d96c940de02"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/codegen/v2/lang_swift/wrappers.rs:102-106 | doc/src/codegen/v2/lang_swift/wrappers.rs:122-130 \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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"a36d4cf143436ddbadefb3f45240c64f48576a1a02e8005b3794ac9a05196053"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): doc/src/codegen/v2/lang_d/functions.rs:33-39 | doc/src/codegen/v2/lang_odin/functions.rs:36-43 | doc/src/codegen/v2/lang_odin/functions.rs:93-100 \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":"doc/src/codegen/v2/lang_d/functions.rs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"db4ea5d0b4d7ce210f6c6d25d644ea61a21b3907da244e5c6baf408d8e2394c5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_java/types.rs:945-952 | doc/src/codegen/v2/lang_kotlin/mod.rs:1002-1009 \u2014 before extracting anything, compare \u0060doc/src/codegen/v2/lang_java/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_kotlin/mod.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 32 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_java/types.rs"},"region":{"startLine":945}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a6481539a1313e137bcf78922c6afceae63e86a0097b62d7c207892d8ece9cf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): dll/src/desktop/tray/linux.rs:471-478 | dll/src/desktop/tray/linux.rs:829-836 | dll/src/desktop/tray/linux.rs:912-919 \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":"dll/src/desktop/tray/linux.rs"},"region":{"startLine":471}}}],"partialFingerprints":{"codehealthFindingId/v1":"3751b10561235ae046f936f938078b045086035eb16c29ef2f4db38899a9faa1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_swift/wrappers.rs:2912-2919 | doc/src/codegen/v2/lang_swift/wrappers.rs:2934-2941 \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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":2912}}}],"partialFingerprints":{"codehealthFindingId/v1":"44dd8641e8abdf397cf3f5d7b090da815a00df4c33e4650de7d27600e3f1a4bf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): doc/src/codegen/v2/lang_crystal/functions.rs:96-103 | doc/src/codegen/v2/lang_odin/functions.rs:68-75 | doc/src/codegen/v2/lang_v/functions.rs:87-94 \u2014 \u0060doc/src/codegen/v2/lang_crystal/functions.rs\u0060 and \u0060doc/src/codegen/v2/lang_v/functions.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 30 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/functions.rs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"1507cc4e2833d23e98216e40d54cb9667018271bc6053137049c4bf778f9331a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_csharp/types.rs:117-124 | doc/src/codegen/v2/lang_csharp/types.rs:176-183 \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":"doc/src/codegen/v2/lang_csharp/types.rs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"defe7429dbe4d7e0b771af8bd51102ecbd00109c27a5ad1328086e2a49370aae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_swift/wrappers.rs:2724-2729 | doc/src/codegen/v2/lang_swift/wrappers.rs:2737-2744 \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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":2724}}}],"partialFingerprints":{"codehealthFindingId/v1":"43c7dbdbbe31046d78c57ed7f9b9cdd57dfd818fe0796b70c27941d3a4aee6bf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_odin/types.rs:285-292 | doc/src/codegen/v2/lang_v/types.rs:293-300 \u2014 \u0060doc/src/codegen/v2/lang_odin/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_v/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 16 separate duplicated blocks between them, totalling at least 175 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_odin/types.rs"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"2806300053573aaeb60d58bf3a6047d7e1a572058e49bd237cd0bd27863b28d7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_fortran/types.rs:545-551 | doc/src/codegen/v2/lang_pascal/types.rs:436-443 \u2014 \u0060doc/src/codegen/v2/lang_fortran/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_pascal/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 40 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_fortran/types.rs"},"region":{"startLine":545}}}],"partialFingerprints":{"codehealthFindingId/v1":"a45e6502ba42b06bd072b2b35fc4d49ba776a5765117350f3b94849a09c3841e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/autofix/mod.rs:600-606 | doc/src/autofix/mod.rs:609-616 \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":"doc/src/autofix/mod.rs"},"region":{"startLine":600}}}],"partialFingerprints":{"codehealthFindingId/v1":"979ad55bf950f3e0eee9d98f8a3101230ccb11c93c0303a01541fdfba24e1331"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 4): core/src/xml.rs:3194-3201 | core/src/xml.rs:3249-3256 | core/src/xml.rs:3285-3290 | core/src/xml.rs:3315-3320 \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":"core/src/xml.rs"},"region":{"startLine":3194}}}],"partialFingerprints":{"codehealthFindingId/v1":"be0b60ab2fb72edaf4014c07141807d7e52f21c64a97bee81134698a7f88b810"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): doc/src/codegen/v2/lang_crystal/types.rs:161-168 | doc/src/codegen/v2/lang_odin/types.rs:145-152 | doc/src/codegen/v2/lang_v/types.rs:150-157 \u2014 \u0060doc/src/codegen/v2/lang_crystal/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_odin/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 7 separate duplicated blocks between them, totalling at least 52 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/types.rs"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b4a376342b44823730610b0ca2d7175601d5f2202a67af360d15c8741c77c73"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/desktop/shell2/windows/gl.rs:210-217 | dll/src/desktop/shell2/windows/gl.rs:221-228 \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":"dll/src/desktop/shell2/windows/gl.rs"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"8872b2b4cfc5f56c1b6114666cf7a609b33feda3727047906d1ff7f88287bcaa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_csharp/wrappers.rs:223-230 | doc/src/codegen/v2/lang_csharp/wrappers.rs:298-305 \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":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"675661a6c2b737290a923679795b3076307bf0ac30da1c76e7a5cb269fefb8fa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/reftest/autodebug.rs:2278-2285 | doc/src/reftest/autoreview.rs:2120-2127 \u2014 before extracting anything, compare \u0060doc/src/reftest/autodebug.rs\u0060 and \u0060doc/src/reftest/autoreview.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 52 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":"doc/src/reftest/autodebug.rs"},"region":{"startLine":2278}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc2cbfde498fc3cb9ce82da4e40a616ef6db971d6043de6a373aee1b875fb299"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_kotlin/wrappers.rs:198-205 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:262-269 \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":"doc/src/codegen/v2/lang_kotlin/wrappers.rs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4485eac7d63342f780b14c66abd5fe3db7f027434f6ba291aa7638cb10fd62a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/desktop/extra/audio/mod.rs:256-263 | dll/src/desktop/extra/audio/mod.rs:269-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":"dll/src/desktop/extra/audio/mod.rs"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ae5a2b0580502f0c6fc8d7a14e17f4417eb009ffe4085c5a7a1b02a75773c75"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:1056-1063 | doc/src/codegen/v2/lang_rust.rs:1295-1302 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":1056}}}],"partialFingerprints":{"codehealthFindingId/v1":"42e0ad26baade7b0aaabfe9f53cc35a66ebb2a228a04651a76dc610b83bfaf6b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/patch/mod.rs:450-457 | doc/src/patch/mod.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":"doc/src/patch/mod.rs"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"471a517305e8fb3ca7ea59eab956111a083e2d942e5805b0e494f32d949304c8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): doc/src/docgen/apidocs.rs:301-308 | doc/src/docgen/apidocs.rs:333-340 \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":"doc/src/docgen/apidocs.rs"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"a29a9470ab5fe78e786b5a4c7940b817b3a02a2d4c43366f1cc864072a8ff60c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 5): doc/src/codegen/v2/lang_crystal/types.rs:179-186 | doc/src/codegen/v2/lang_d/types.rs:145-152 | doc/src/codegen/v2/lang_julia/types.rs:224-231 | doc/src/codegen/v2/lang_odin/types.rs:163-170 | doc/src/codegen/v2/lang_v/types.rs:169-176 \u2014 \u0060doc/src/codegen/v2/lang_crystal/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_d/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 67 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/types.rs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"c60f40bd07c04a51b18bf0d30c06d261d3006158c1f63975d8b10f9ac27000e2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): dll/src/desktop/extra/sqlite/mod.rs:1289-1296 | dll/src/desktop/extra/sqlite/mod.rs:1319-1326 \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":"dll/src/desktop/extra/sqlite/mod.rs"},"region":{"startLine":1289}}}],"partialFingerprints":{"codehealthFindingId/v1":"42070244be5fdb666f4384169d4015c0e9d5ce7b3f4c6707eb47380f4badb44e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): doc/src/autofix/mod.rs:2602-2609 | doc/src/autofix/mod.rs:2658-2665 | doc/src/autofix/mod.rs:2694-2701 \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":"doc/src/autofix/mod.rs"},"region":{"startLine":2602}}}],"partialFingerprints":{"codehealthFindingId/v1":"44b7a087b60da9bf212c3d08ead955720f72da5379b9edbbdd5a3a4e95d45a79"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/codegen/v2/lang_ruby/types.rs:319-326 | doc/src/codegen/v2/lang_ruby/types.rs:642-646 \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":"doc/src/codegen/v2/lang_ruby/types.rs"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b6cd272990c3989f79f3e2271c14486fd81e45c65938aeab0536452a60248d2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): core/src/dom.rs:6234-6241 | core/src/dom.rs:6289-6296 \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":"core/src/dom.rs"},"region":{"startLine":6234}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cba2620011014aa46550e7daa1a497f4472d8b574c3da83a6ad315818ab24b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): layout/src/solver3/display_list.rs:1223-1230 | layout/src/solver3/display_list.rs:1266-1273 \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":"layout/src/solver3/display_list.rs"},"region":{"startLine":1223}}}],"partialFingerprints":{"codehealthFindingId/v1":"04ab8943c587c87f1e0ae9f97e777f8fd689a88dfaace01891256ba1cc9c46ce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_lisp/types.rs:262-268 | doc/src/codegen/v2/lang_smalltalk/types.rs:204-210 \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":"doc/src/codegen/v2/lang_lisp/types.rs"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"01a66d3193dfd834b1bfad271a49db2a196a676bcc7303887e8b1a8e1b7abac6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_swift/wrappers.rs:1396-1402 | doc/src/codegen/v2/lang_swift/wrappers.rs:1427-1433 \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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":1396}}}],"partialFingerprints":{"codehealthFindingId/v1":"bda860f99d0dedde8162718bc3dd484b92d70f69a51b2939ef57f7fecf3e6809"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:2646-2650 | doc/src/codegen/v2/lang_swift/wrappers.rs:2695-2701 \u2014 \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 29 separate duplicated blocks between them, totalling at least 269 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":2646}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9bba97f7032dc246091ea4f8f6d6050795c1dd0de06a1a2af7fe895c3c6f0ff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/reftest/apply_midlevel.rs:3440-3446 | doc/src/reftest/telegram.rs:70-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":"doc/src/reftest/apply_midlevel.rs"},"region":{"startLine":3440}}}],"partialFingerprints":{"codehealthFindingId/v1":"e11ffbe97d04480c7466aaff870a130fb1dbd81ed9490e50797f0e4623ad25bb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): dll/src/web/transpiler_remill.rs:5309-5315 | dll/src/web/transpiler_remill.rs:5390-5396 | dll/src/web/transpiler_remill.rs:5446-5452 \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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":5309}}}],"partialFingerprints":{"codehealthFindingId/v1":"47f46ebf0ab43d74bf44ece34b85ce4992209b320dce8dffbc94378eeda56ad1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_swift/wrappers.rs:2895-2901 | doc/src/codegen/v2/lang_swift/wrappers.rs:2975-2981 \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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":2895}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d4170ddd3e15e9b0c75ee8b1d631913db636425dc99d08eff15c9722fb48df5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/main.rs:1291-1297 | doc/src/main.rs:1407-1413 \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":"doc/src/main.rs"},"region":{"startLine":1291}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f43aa37b9bbf50e91f3046d2ac9ba9cd2544919cfbc5749757cf9ae80562759"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/docgen/search.rs:131-137 | doc/src/docgen/search.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":"doc/src/docgen/search.rs"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"c651b0dcb584b30be941f664250967362a7ea8a57ae44aa3d85a55bf09d975d3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): dll/src/web/transpiler_remill.rs:11785-11791 | dll/src/web/transpiler_remill.rs:11826-11832 \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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":11785}}}],"partialFingerprints":{"codehealthFindingId/v1":"3da97f2c67943c1ad55eb1ac771550bdc99f2cf72dd1f5bb86e0136caa8534d9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): dll/src/desktop/extra/geolocation/ios.rs:153-159 | dll/src/desktop/extra/geolocation/macos.rs:147-153 \u2014 before extracting anything, compare \u0060dll/src/desktop/extra/geolocation/ios.rs\u0060 and \u0060dll/src/desktop/extra/geolocation/macos.rs\u0060 as WHOLE FILES: this scan already matched 12 separate duplicated blocks between them, totalling at least 130 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":"dll/src/desktop/extra/geolocation/ios.rs"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa984ef76c1a4a97a40225b235986e4acedad6f7ee083a5026bcde9e1cf1cadd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:2664-2670 | doc/src/codegen/v2/lang_d/wrappers.rs:2681-2686 \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":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":2664}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d80e1ab5a9e49d012883a160aee50ca30e91619b83456aabb1c34cc8333d99e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_smalltalk/types.rs:373-379 | doc/src/codegen/v2/lang_smalltalk/types.rs:380-386 \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":"doc/src/codegen/v2/lang_smalltalk/types.rs"},"region":{"startLine":373}}}],"partialFingerprints":{"codehealthFindingId/v1":"260e93b8b8abf11f29491a6111fc4caa534e0825ba68cab2d4aae3c152bb9ce2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): doc/src/codegen/v2/lang_cobol/types.rs:510-516 | doc/src/codegen/v2/lang_lisp/mod.rs:471-477 | doc/src/codegen/v2/lang_racket/mod.rs:316-322 \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":"doc/src/codegen/v2/lang_cobol/types.rs"},"region":{"startLine":510}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d6f7e6354dc5c61704b5e80614e62ad6949839add4f56662e02cea9706332ac"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): dll/src/desktop/shell2/headless/mod.rs:2387-2393 | dll/src/desktop/shell2/headless/mod.rs:2405-2410 \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":"dll/src/desktop/shell2/headless/mod.rs"},"region":{"startLine":2387}}}],"partialFingerprints":{"codehealthFindingId/v1":"40020c24d219482daa2a4abc67dd43ab22ec61e699f2aaec8417adb9fe241a72"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): dll/src/desktop/shell2/linux/system_style.rs:2146-2151 | dll/src/desktop/shell2/linux/system_style.rs:2153-2159 \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":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":2146}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe2ceaa4f6a983371b4b6db023e0742d053c48e39da2865094d74474fd4d9f72"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/reftest/autoreview.rs:1209-1215 | doc/src/reftest/autoreview.rs:1648-1654 \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":"doc/src/reftest/autoreview.rs"},"region":{"startLine":1209}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fd384ba3644af53e2b0a0b07c9ac794f4aa980976c28ebe60e38bc7f297f2a2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_swift/wrappers.rs:1988-1994 | doc/src/codegen/v2/lang_swift/wrappers.rs:1996-2002 \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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":1988}}}],"partialFingerprints":{"codehealthFindingId/v1":"05b4f3e936030ae7757871919d04679a46a789100d812f4d1f345e7525e9c50b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): layout/src/solver3/cache.rs:3097-3103 | layout/src/solver3/cache.rs:3115-3120 | layout/src/solver3/cache.rs:3184-3189 \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":"layout/src/solver3/cache.rs"},"region":{"startLine":3097}}}],"partialFingerprints":{"codehealthFindingId/v1":"79f9573ae2e245f983094334eef1b2f49d502e77bd317cc9f0f787be53a9949d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): dll/src/desktop/extra/camera/mod.rs:66-72 | dll/src/desktop/extra/camera/mod.rs:83-89 \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":"dll/src/desktop/extra/camera/mod.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"73d856bdf574c4a673713e6b012a51e9ac74b4a07665cc5922ac04690681f84d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_java/managed.rs:435-441 | doc/src/codegen/v2/lang_kotlin/managed.rs:336-341 \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":"doc/src/codegen/v2/lang_java/managed.rs"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"562376486f0a5b3015055bfe373c647867854ccd7d82bf1ef0647890f68115f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): doc/src/codegen/v2/lang_haskell/functions.rs:78-84 | doc/src/codegen/v2/lang_haskell/functions.rs:106-112 | doc/src/codegen/v2/lang_haskell/functions.rs:245-251 \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":"doc/src/codegen/v2/lang_haskell/functions.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"bca01f28da151a682118ce412c11171389481784b7a1122ea13a923d74be31e3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): doc/src/codegen/v2/lang_swift/wrappers.rs:2907-2911 | doc/src/codegen/v2/lang_swift/wrappers.rs:2929-2933 | doc/src/codegen/v2/lang_swift/wrappers.rs:2952-2958 \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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":2907}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc7df398da86f5061ef6dcaa8c1f86394107594186cb8d65cd12f38ad92d5830"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_swift/wrappers.rs:1403-1409 | doc/src/codegen/v2/lang_swift/wrappers.rs:1434-1440 \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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":1403}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9f9168f9b60d3f1fc1c45c3fb7177cd1916c7c1ea8e24f428dfe5cd9a8a8e80"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_lua/wrappers.rs:476-481 | doc/src/codegen/v2/lang_lua/wrappers.rs:502-507 \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":"doc/src/codegen/v2/lang_lua/wrappers.rs"},"region":{"startLine":476}}}],"partialFingerprints":{"codehealthFindingId/v1":"51f237fd05843c87d9ebfd59313ffd3380059d47bfbdd0a1a5e896c364037322"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): core/src/xml.rs:513-518 | core/src/xml.rs:622-627 \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":"core/src/xml.rs"},"region":{"startLine":513}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d681dae85ec5ac95cc2e6c12f7e28aaa1b7a5ab52b8566d5fc5b6ce0f6080b9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): dll/src/web/transpiler_remill.rs:1138-1143 | dll/src/web/transpiler_remill.rs:1535-1540 \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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":1138}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c0c67c2fb4996520bffc546810c8ac7fb9210b5d48d98f2f2aa60058d6f07f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_rust.rs:441-446 | doc/src/codegen/v2/lang_rust.rs:467-472 \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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":441}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d55acf4aa6890fd36015b91fae9f023015ca90f8804fa0305ee3d7911f21e07"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_ocaml/wrappers.rs:2573-2578 | doc/src/codegen/v2/lang_ocaml/wrappers.rs:2669-2674 \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":"doc/src/codegen/v2/lang_ocaml/wrappers.rs"},"region":{"startLine":2573}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec7a8343b2f0b1b5425f3492e8b53d014494eb51284224633f1452e0a37bc0af"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_csharp/wrappers.rs:2010-2015 | doc/src/codegen/v2/lang_java/wrappers.rs:2024-2029 \u2014 \u0060doc/src/codegen/v2/lang_csharp/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_java/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 14 separate duplicated blocks between them, totalling at least 156 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":2010}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cec5a72846be85eaa20c834b8401540bc422f0d6de6317c188460b2dc1bab08"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 5): doc/src/codegen/v2/lang_crystal/types.rs:328-333 | doc/src/codegen/v2/lang_d/types.rs:213-217 | doc/src/codegen/v2/lang_julia/types.rs:315-320 | doc/src/codegen/v2/lang_odin/types.rs:274-279 | doc/src/codegen/v2/lang_v/types.rs:282-287 \u2014 \u0060doc/src/codegen/v2/lang_crystal/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_d/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 4 separate duplicated blocks between them, totalling at least 67 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/types.rs"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab7f84c80fe5ef8fb13f9e7e3be16ebaf94ee76dc1f770171fd47463e9dd9ba1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_crystal/wrappers.rs:1436-1441 | doc/src/codegen/v2/lang_swift/wrappers.rs:2342-2347 \u2014 \u0060doc/src/codegen/v2/lang_crystal/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 8 separate duplicated blocks between them, totalling at least 74 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/wrappers.rs"},"region":{"startLine":1436}}}],"partialFingerprints":{"codehealthFindingId/v1":"31db21ffafb9c571506c38efffe1756ff93995dc50d2b59a10522d112e338de7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/codegen/v2/lang_c.rs:522-527 | doc/src/codegen/v2/lang_c.rs:588-592 \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":"doc/src/codegen/v2/lang_c.rs"},"region":{"startLine":522}}}],"partialFingerprints":{"codehealthFindingId/v1":"55d9b7b71acb09c8f058d310bd8cf118fdc989b1d82bf0c275ce6ab236b6483b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): doc/src/reftest/autodebug.rs:2184-2189 | doc/src/reftest/autoreview.rs:1131-1135 | doc/src/reftest/autoreview.rs:1570-1574 \u2014 before extracting anything, compare \u0060doc/src/reftest/autodebug.rs\u0060 and \u0060doc/src/reftest/autoreview.rs\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 52 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":"doc/src/reftest/autodebug.rs"},"region":{"startLine":2184}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbac686176d7453f9c33fb8bb916eb9454f2ee6bb4fc7e2a25b6350a89514d55"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): dll/src/web/transpiler_remill.rs:8704-8709 | dll/src/web/transpiler_remill.rs:8716-8721 \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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":8704}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a47bddd39f25ce7cebe973c4cb52198ad9f9ae4c5a5af8ac971afa951beadc1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): doc/src/codegen/v2/lang_crystal/wrappers.rs:1435-1440 | doc/src/codegen/v2/lang_d/wrappers.rs:2364-2369 | doc/src/codegen/v2/lang_swift/wrappers.rs:2341-2346 \u2014 \u0060doc/src/codegen/v2/lang_crystal/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 6 separate duplicated blocks between them, totalling at least 51 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/wrappers.rs"},"region":{"startLine":1435}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5a96cfa5ff72774d174dd9cd2221d2c2d39cdd821e019f9b733ff42a8fab48c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/reftest/apply_midlevel.rs:2777-2781 | doc/src/reftest/apply_midlevel.rs:3321-3326 \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":"doc/src/reftest/apply_midlevel.rs"},"region":{"startLine":2777}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c64900fbe69d5d608ed99cc9d4c40340c9b66053c889844bb04f01d763bbe60"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_haskell/wrappers.rs:1100-1105 | doc/src/codegen/v2/lang_haskell/wrappers.rs:1133-1138 \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":"doc/src/codegen/v2/lang_haskell/wrappers.rs"},"region":{"startLine":1100}}}],"partialFingerprints":{"codehealthFindingId/v1":"4652bc81730f3b05284c59d87c78106c0672e09043b56447b2d435c1080d8f62"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_ocaml/managed.rs:683-688 | doc/src/codegen/v2/lang_red/mod.rs:613-618 \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":"doc/src/codegen/v2/lang_ocaml/managed.rs"},"region":{"startLine":683}}}],"partialFingerprints":{"codehealthFindingId/v1":"e779ed94bf5b889eede16ee1c473e478e4022d2deb8c6b9eeecb326329986e9f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): core/src/xml.rs:429-434 | core/src/xml.rs:513-518 | core/src/xml.rs:622-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":"core/src/xml.rs"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"576fecec1db05744daf1a94b9c79c299b91a70141b5d6971e7bc95265be08b97"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): layout/src/glyph_cache.rs:758-763 | layout/src/glyph_cache.rs:777-782 \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":"layout/src/glyph_cache.rs"},"region":{"startLine":758}}}],"partialFingerprints":{"codehealthFindingId/v1":"346ccd26d269d5ff588d12ead36bd22d3a5a0dea55dac5d0a5ee76e9f49bd16a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/codegen/v2/lang_nim/types.rs:414-418 | doc/src/codegen/v2/lang_vb6/types.rs:320-324 \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":"doc/src/codegen/v2/lang_nim/types.rs"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a97cfbc2040689e466b1017463a115aa2f21a22e1e894f280c30b8df4274377"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (4\u20135 lines \u00D7 3): doc/src/reftest/debug.rs:577-580 | doc/src/reftest/regression.rs:1701-1705 | doc/src/reftest/regression.rs:1720-1724 \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":"doc/src/reftest/debug.rs"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fe2deda73149e520a5029b240203b077d32404a868f104242c8e4c26b6c6511"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): dll/src/desktop/shell2/linux/system_style.rs:2329-2333 | dll/src/desktop/shell2/linux/system_style.rs:2335-2339 \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":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":2329}}}],"partialFingerprints":{"codehealthFindingId/v1":"70b431223f45d3a8bf40d240223cd3664f0247d058dfeaaec52eaeafc61609f0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:141-145 | doc/src/codegen/v2/lang_d/wrappers.rs:160-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":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"5addc5982de2f9e6dd8af8ea729067d1473881ef9828d0adff53945817504f2d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): css/src/system.rs:809-813 | css/src/system.rs:836-840 | css/src/system.rs:863-867 | css/src/system.rs:926-930 \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":"css/src/system.rs"},"region":{"startLine":809}}}],"partialFingerprints":{"codehealthFindingId/v1":"a88b0ce39a10870addcab8baf9bb46a685f4f89947992e19dea49e1b7629c25a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/autofix/workspace.rs:1176-1180 | doc/src/autofix/workspace.rs:1228-1232 \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":"doc/src/autofix/workspace.rs"},"region":{"startLine":1176}}}],"partialFingerprints":{"codehealthFindingId/v1":"98994e7067672f48c63d1bce673168ea570ae79d669310923c4f8de91403bb21"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): dll/src/desktop/extra/file_picker/ios.rs:254-258 | dll/src/desktop/shell2/ios/mod.rs:992-996 \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":"dll/src/desktop/extra/file_picker/ios.rs"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c287f59e7feec67e1d8fd3fb3749586437a3ccf84d4badafb5ef9195481ed71"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:173-177 | doc/src/codegen/v2/lang_swift/wrappers.rs:135-139 \u2014 \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 29 separate duplicated blocks between them, totalling at least 269 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"a12d44e31f031f1f37e64a6efb57b073a6c1e75243fd68cccc05d9629b68a8c0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): css/src/props/basic/pixel.rs:579-583 | css/src/props/basic/pixel.rs:616-620 \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":"css/src/props/basic/pixel.rs"},"region":{"startLine":579}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d933b95afcd3fe4d2466c47964fece3d4aeb9bd60ad0fb2a4437d9f6f752e7a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): css/src/props/layout/shape.rs:48-54 | css/src/props/layout/shape.rs:94-100 | css/src/props/layout/shape.rs:140-146 \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":"css/src/props/layout/shape.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d2d00507b779343c6c5b707aef65b272558605c07670ac1c2a9d926293b42f2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): dll/src/desktop/app.rs:276-280 | dll/src/desktop/app.rs:320-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":"dll/src/desktop/app.rs"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc019012f124f0b1d0d09c0e3da0767c46fa80b0d0f49ea40ab78d1742f17fa0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): dll/src/desktop/shell2/android/mod.rs:3521-3525 | dll/src/desktop/shell2/android/mod.rs:3545-3549 \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":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":3521}}}],"partialFingerprints":{"codehealthFindingId/v1":"b422d17f218b07f5c9825e97646ee0ce8f5e1083fb3457249b3af58607d30e30"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): dll/src/desktop/shell2/common/layout.rs:1789-1793 | dll/src/desktop/shell2/common/layout.rs:1802-1806 \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":"dll/src/desktop/shell2/common/layout.rs"},"region":{"startLine":1789}}}],"partialFingerprints":{"codehealthFindingId/v1":"a64319d768977e2cb2c13a6a72bf554362cd9b2a29c2b8636521a022fc57ac2c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): dll/src/desktop/shell2/linux/wayland/events.rs:2594-2598 | dll/src/desktop/shell2/linux/x11/mod.rs:1531-1535 | layout/src/fetch.rs:163-167 \u2014 before extracting anything, compare \u0060dll/src/desktop/shell2/linux/wayland/events.rs\u0060 and \u0060dll/src/desktop/shell2/linux/x11/mod.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 54 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/events.rs"},"region":{"startLine":2594}}}],"partialFingerprints":{"codehealthFindingId/v1":"66a6b68ee28da46575e5d130e7faa94f678c600dd06d0a784312a8d72b5e0c37"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): dll/src/desktop/extra/video_codec/stream.rs:332-336 | dll/src/desktop/extra/video_codec/stream.rs:337-341 \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":"dll/src/desktop/extra/video_codec/stream.rs"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"861620f02128c4cec912069dcb0db799a9c4b1da417d59ae4106f975af0087b0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/api.rs:2582-2586 | doc/src/codegen/v2/lang_c.rs:1269-1273 \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":"doc/src/api.rs"},"region":{"startLine":2582}}}],"partialFingerprints":{"codehealthFindingId/v1":"aeccbfcdc724afd047f407767a63a0ece0d84b8c64cd7b4455a3e07815c57f50"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): doc/src/autofix/type_index.rs:1117-1121 | doc/src/autofix/type_index.rs:1218-1222 | doc/src/autotest/extract.rs:92-96 \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":"doc/src/autofix/type_index.rs"},"region":{"startLine":1117}}}],"partialFingerprints":{"codehealthFindingId/v1":"1735e4ddf6dd6b89dcd66901cb9d4f3006a761dd6ee0b4769e93193c74d4b57e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/codegen/v2/lang_crystal/wrappers.rs:1871-1875 | doc/src/codegen/v2/lang_d/wrappers.rs:2840-2844 \u2014 \u0060doc/src/codegen/v2/lang_crystal/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 6 separate duplicated blocks between them, totalling at least 51 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_crystal/wrappers.rs"},"region":{"startLine":1871}}}],"partialFingerprints":{"codehealthFindingId/v1":"761310387b4d73b916fe6a9ac68355bc9b3a0e28c79ed15b63856cf6d09ea265"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:1830-1836 | doc/src/codegen/v2/lang_swift/wrappers.rs:1792-1798 \u2014 \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 29 separate duplicated blocks between them, totalling at least 269 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":1830}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fdf1480e5af418a5b6acd628444cc04a35fcf1753856985ab53e4495db1ddb7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:2376-2380 | doc/src/codegen/v2/lang_swift/wrappers.rs:2356-2360 \u2014 \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 29 separate duplicated blocks between them, totalling at least 269 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":2376}}}],"partialFingerprints":{"codehealthFindingId/v1":"6966bb53163cd79d8734985bfe79524692e421f99a55be229defd8665b5a0c85"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/codegen/v2/lang_d/wrappers.rs:2639-2643 | doc/src/codegen/v2/lang_swift/wrappers.rs:2689-2693 \u2014 \u0060doc/src/codegen/v2/lang_d/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_swift/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 29 separate duplicated blocks between them, totalling at least 269 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":2639}}}],"partialFingerprints":{"codehealthFindingId/v1":"b84c3826ae9d52c90cf5d97e4c67ff012a484abf32129b5759b7b164719507db"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_java/wrappers.rs:843-848 | doc/src/codegen/v2/lang_kotlin/wrappers.rs:1232-1237 \u2014 \u0060doc/src/codegen/v2/lang_java/wrappers.rs\u0060 and \u0060doc/src/codegen/v2/lang_kotlin/wrappers.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 15 separate duplicated blocks between them, totalling at least 173 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_java/wrappers.rs"},"region":{"startLine":843}}}],"partialFingerprints":{"codehealthFindingId/v1":"984a4d6207abefcd0f8b6061b2316b3361a1d4650bc96715ebd1ed59d4aa76c0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/patch/index.rs:449-453 | doc/src/patch/index.rs:465-469 \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":"doc/src/patch/index.rs"},"region":{"startLine":449}}}],"partialFingerprints":{"codehealthFindingId/v1":"291155d3fb12e219dfc891a860211639578fe42a9d15c8356c20166ad9c84fe8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/reftest/autodebug.rs:1602-1606 | doc/src/reftest/mod.rs:944-948 \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":"doc/src/reftest/autodebug.rs"},"region":{"startLine":1602}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b54f3e407dbe551c5c5bf93e73085fd853b19f39666f671d03ed2a375304223"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/reftest/regression.rs:1420-1424 | doc/src/reftest/regression.rs:1426-1430 \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":"doc/src/reftest/regression.rs"},"region":{"startLine":1420}}}],"partialFingerprints":{"codehealthFindingId/v1":"36682c471c806c49bf0d14c93f07d14515aca2d6c753396977419812fca5d022"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): doc/src/codegen/v2/lang_odin/types.rs:337-341 | doc/src/codegen/v2/lang_v/types.rs:348-352 \u2014 \u0060doc/src/codegen/v2/lang_odin/types.rs\u0060 and \u0060doc/src/codegen/v2/lang_v/types.rs\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 16 separate duplicated blocks between them, totalling at least 175 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_odin/types.rs"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"5164debb99f1ff487dafd0c190a3543f61c5478693fdb6c52edea6fb3aa20003"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): doc/src/main.rs:1807-1813 | doc/src/main.rs:1818-1824 | doc/src/main.rs:1830-1836 | doc/src/main.rs:1842-1848 \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":"doc/src/main.rs"},"region":{"startLine":1807}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d451336cafbeacbc600de0a3442d0fc9c32d7d5313b4078e8279da58885e491"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): doc/src/codegen/v2/lang_fortran/makefile.rs:38-43 | doc/src/codegen/v2/lang_fortran/makefile.rs:47-52 \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":"doc/src/codegen/v2/lang_fortran/makefile.rs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"080c84b6472f62992c6c5dcd3ae4d54be0093076a3eea4f76b02b72e7e078e4d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): layout/src/cpurender/compositor.rs:2387-2391 | layout/src/cpurender/compositor.rs:2429-2433 \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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":2387}}}],"partialFingerprints":{"codehealthFindingId/v1":"c37a1bf6500b09418905374322b485a51d3cf27c8c3ef4f2519cd647d41a4081"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): layout/src/cpurender/compositor.rs:2393-2397 | layout/src/cpurender/compositor.rs:2437-2441 | layout/src/cpurender/compositor.rs:2449-2453 \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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":2393}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dcaa8ceccf95385c8ca2935ed66060966fc83d3a5ac6c4889a66c663e0b25ca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): layout/src/cpurender/raster.rs:2737-2741 | layout/src/cpurender/raster.rs:2750-2754 \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":"layout/src/cpurender/raster.rs"},"region":{"startLine":2737}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb0105877e5b587dbba42494cb7797f3eea37c4a21bb889b1b115b7499dee06f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): layout/src/cpurender/raster.rs:2936-2941 | layout/src/cpurender/raster.rs:3540-3545 \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":"layout/src/cpurender/raster.rs"},"region":{"startLine":2936}}}],"partialFingerprints":{"codehealthFindingId/v1":"48f3318aefa75a38b9b64ac58620dc586e7f9841d3acf3efe9614324918d8087"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): layout/src/font.rs:174-179 | layout/src/font.rs:200-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":"layout/src/font.rs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"379a8c03b4da6c8e54bf548227f5f23ed8f04cdf5c1b15b3001a755e4ecd7f47"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): layout/src/managers/a11y.rs:1033-1037 | layout/src/managers/a11y_snapshot.rs:403-407 \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":"layout/src/managers/a11y.rs"},"region":{"startLine":1033}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f7334303bac7d08b3c8502647009ac43adb1e5a0d4459bb720e6c504175b676"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): layout/src/widgets/map.rs:1505-1509 | layout/src/widgets/map.rs:1627-1631 \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":"layout/src/widgets/map.rs"},"region":{"startLine":1505}}}],"partialFingerprints":{"codehealthFindingId/v1":"4897cd41b69b0cad496b3e67d5399c421ad8f96da219a165ebc28a1ad55be2f5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): layout/src/widgets/quick_access.rs:269-273 | layout/src/widgets/statusbar.rs:290-294 \u2014 before extracting anything, compare \u0060layout/src/widgets/quick_access.rs\u0060 and \u0060layout/src/widgets/statusbar.rs\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 106 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":"layout/src/widgets/quick_access.rs"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"082b29ca95be721849212c415e16ef2dc2a73436c71d9bcdcfbd23455b748b51"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): layout/src/xml/svg.rs:1862-1866 | layout/src/xml/svg.rs:1903-1907 \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":"layout/src/xml/svg.rs"},"region":{"startLine":1862}}}],"partialFingerprints":{"codehealthFindingId/v1":"d15d9d56c1884ef106557f740f84ef683d0d13a325613ee55d32d8c08f4ac748"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): webrender/core/src/border.rs:342-347 | webrender/core/src/border.rs:349-354 \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":"webrender/core/src/border.rs"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"61dd89d930cc064a7e77b564526aaba3f6cc4f5f85fc8a00f33df52655f5f28d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): scripts/android/NativeTextBridge.java:452-464 | scripts/android/NativeTextBridge.java:481-493 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060scripts/android/NativeTextBridge.java:452\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/android/NativeTextBridge.java"},"region":{"startLine":452}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ee270c63766cb8af4c45f1c691f4b5ec197ca99f9806766a97aaca45913e358"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): scripts/android/AzulFilePicker.java:95-101 | scripts/android/AzulFilePicker.java:124-130 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060scripts/android/AzulFilePicker.java:95\u0060 it runs out through the closing brace of the declaration holding it \u2014 the window is that declaration\u0027s tail, not a fragment that begins part-way through something, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/android/AzulFilePicker.java"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"3da6713ef77fc7e78ac77b6ab07873cc2860310b84157b88f5eac5b6252ed876"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): scripts/strip_coff_lib.py:128-132 | scripts/strip_coff_lib.py: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":"scripts/strip_coff_lib.py"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"667f9ec712924a546920a4e38e50db72c0cc1c313d225074a75bc39219f5a18b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): examples/python/widgets.py:34-49 | examples/python/widgets.py:51-66 \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":"examples/python/widgets.py"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"69b0b0b369b28415cd4cbb2a9ac21deb7161439164085e619fd889b74449fba8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): examples/python/infinity.py:102-106 | examples/python/opengl.py:11-15 \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. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"examples/python/infinity.py"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"0873613ed33e9eb938859ce3bb2ae25d49f04ef22cdd08ba204946a2a7e11a30"}},{"ruleId":"D5","level":"warning","message":{"text":"Unstable project webrender: webrender has instability 0.83 with 1 dependents."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d21434d5e31526eae040375fcac1e71d8c2b2bb020438650da9c4cfd78052507"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: webrender_build: webrender_build: abstractness 0.00, instability 0.00, distance 1.00 \u2014 zone of pain \u2014 concrete and depended on by 1 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"377dda2eb515d6e6205bee0288072ea9279e6b3626ee8d42fd78dd0f12cef550"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: azul-css: azul-css: abstractness 0.02, instability 0.00, distance 0.98 \u2014 zone of pain \u2014 concrete and depended on by 6 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"3db4a8c5bcd2fafd35c9ce038cdb260e48320325cc1e2c8d36518eb6f7591a5f"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: azul-core: azul-core: abstractness 0.02, instability 0.14, distance 0.84 \u2014 zone of pain \u2014 concrete and depended on by 6 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"476f71ce6c52d0faea1806f259ce1d55181f4f5e6ea45f02411d367e39e81119"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CssPropertyCache (LCOM4 25): CssPropertyCache\u0027s methods fall into 25 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 25 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"core/src/prop_cache.rs"},"region":{"startLine":1017}}}],"partialFingerprints":{"codehealthFindingId/v1":"9335fee47217913b4dd7908a568f6904e9decda7a546ee7a57f674d0b0115fa9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HttpRequestConfig (LCOM4 10): HttpRequestConfig\u0027s methods fall into 10 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 10 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/http.rs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"21bbc6e432281867a99cfe82bc777c188415f36f1bf89ed418af99f24f43a605"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CallbackInfo (LCOM4 9): CallbackInfo\u0027s methods fall into 9 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 9 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/callbacks.rs"},"region":{"startLine":1290}}}],"partialFingerprints":{"codehealthFindingId/v1":"04c505721f15464f4035f832ee116bf49eb5d543c90f99f93f84531755cb62c0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Button (LCOM4 8): Button\u0027s methods fall into 8 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 8 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/widgets/button.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9600797a41853ad6f9260b598b7f6e2324ef12c61aa38a846d95d123e2ca767"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ShaderContext (LCOM4 7): ShaderContext\u0027s methods fall into 7 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 7 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"webrender/swgl/src/common.rs"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"12e33143572210413b9aef12b15603414486283921221e5981168561a083786c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CoreVideoFunctions (LCOM4 6): CoreVideoFunctions\u0027s methods fall into 6 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 6 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/macos/corevideo.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ca1052f8bc5ce59b5d6f2242b4f0f9180b1eca432f799a37017ff7ebe00bead"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TextArea (LCOM4 6): TextArea\u0027s methods fall into 6 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 6 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/widgets/text_area.rs"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"194c80045b24c92c61425fa8cc7c44953f2e88c2951eb46cfa9c538ec7de4bc6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TextInput (LCOM4 6): TextInput\u0027s methods fall into 6 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 6 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/widgets/text_input.rs"},"region":{"startLine":527}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a17f19ad669c486df94f1364652b23978c8879b46fc5c3a20a1f6cd5527ae51"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: VirtualViewCallbackInfo (LCOM4 5): VirtualViewCallbackInfo\u0027s methods fall into 5 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 5 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"core/src/callbacks.rs"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"327eac19600874fdc33a4e7a8f18629f515b8d964cbb7c0d743ce976c509f43f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DynamicSelectorContext (LCOM4 5): DynamicSelectorContext\u0027s methods fall into 5 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 5 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"css/src/dynamic_selector.rs"},"region":{"startLine":979}}}],"partialFingerprints":{"codehealthFindingId/v1":"611c1e7517cc43b773750d0b5704b8010f282626e9ccd16329d7f7c094304a05"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MacOSWindow (LCOM4 5): MacOSWindow\u0027s methods fall into 5 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 5 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":4009}}}],"partialFingerprints":{"codehealthFindingId/v1":"52f4e334c634d0161e7f263d58653a0e9f3085559aeee960c379a62041b574a7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RenderImageCallbackInfo (LCOM4 5): RenderImageCallbackInfo\u0027s methods fall into 5 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 5 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/callbacks.rs"},"region":{"startLine":7239}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d4a0e1a6a8540ae61e9eae114ea1238cb716929eea0bbe7d9ef96312dac68f0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SlicerConfig (LCOM4 5): SlicerConfig\u0027s methods fall into 5 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 5 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/solver3/display_list.rs"},"region":{"startLine":9490}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6ce72af2516ce2d3f6004b1f9d25a8885d232cae1e76d30c52e66e5b4c59aa8"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CheckBox (LCOM4 5): CheckBox\u0027s methods fall into 5 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 5 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/widgets/check_box.rs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"92d051ee0cf41cad791d79070996239b323b87a44a7694f90377dabcd8540228"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DropDown (LCOM4 5): DropDown\u0027s methods fall into 5 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 5 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/widgets/drop_down.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"7678b67cdf2b68f6eec23e260f67713257a86dfff3989e36f2a7ff62e5c4ba5b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ProgressBar (LCOM4 5): ProgressBar\u0027s methods fall into 5 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 5 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/widgets/progressbar.rs"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a26c3b8ae1d4fa78ed639b87bc152936770d8b95e078db4a27fcef95e6ab811"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LocationFix (LCOM4 4): LocationFix\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"core/src/geolocation.rs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ac0f3db4de9445b6461f08011dd137b8ffe8bad1a350cfa624b68f5bd80c414"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AndroidWindow (LCOM4 4): AndroidWindow\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"a01a72cd6593d61a5df22ff31408238c539ae220412d0a30193e18453405979a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: WaylandWindow (LCOM4 4): WaylandWindow\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"50ba62fde8b2c569748fd40943541708c72a36e55a9706c410622dddb29fec80"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ObjcLib (LCOM4 4): ObjcLib\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/macos/system_style.rs"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d3ca1c81ede5ae45972d8002dbbb295a01974f3917f34d0a089255f66c051d8"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DpiFunctions (LCOM4 4): DpiFunctions\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/shell2/windows/dpi.rs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"112710c9994facf4301a70231214c57b22d14bf43109e7afe825a8bfd0039f68"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Avatar (LCOM4 4): Avatar\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/widgets/avatar.rs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"180e6c99dbd72e4d9e864327b3b9d0a8a74284b55308b9716bf5a1e763ea4767"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ListView (LCOM4 4): ListView\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/widgets/list_view.rs"},"region":{"startLine":783}}}],"partialFingerprints":{"codehealthFindingId/v1":"16bef5c36cc580f1ba6713d04ef9f1319c2179d88f69674aa98d1cd0f0144c75"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Slider (LCOM4 4): Slider\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/widgets/slider.rs"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"6deb7009f88011f7e7a34af29592541508f057dc96d7ee2c56310f73fc7bb018"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Switch (LCOM4 4): Switch\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/widgets/switch.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa6172f7e3758adddf1720f7c31d9bf41d29f8d73b46894669a30079d67205a2"}},{"ruleId":"D8","level":"warning","message":{"text":"Coverage not measured \u2014 no coverage collector is wired up: Coverage NOT MEASURED: \u0060--collect:\u0022XPlat Code Coverage\u0022\u0060 names a data collector that ships in the \u0060coverlet.collector\u0060 package, and this repository wires up none \u2014 no test project references it and no runsettings declares one. The absence of coverage here is therefore not evidence about the suite or about our analyzer environment: without a collector, \u0060--collect\u0060 produces nothing even from a suite that builds and passes. Add a \u0060coverlet.collector\u0060 PackageReference to the test project(s) (or commit the Cobertura/OpenCover/lcov report your CI produces) and real coverage will be measured. It is excluded from the score rather than counted as a near-zero defect."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"62e63e619c28f057e129f2997c965d32a457366a9ce18ca019ffb6bdfba85c99"}},{"ruleId":"D12","level":"warning","message":{"text":"No Gemfile.lock committed by an application: This repository declares 1 gem(s) across 1 Bundler manifest(s) and ships no application \u0060.gemspec\u0060, so it is an APPLICATION \u2014 but no \u0060Gemfile.lock\u0060 is committed. Nothing records the versions a working build resolved to, so \u0060bundle install\u0060 re-resolves against whatever rubygems.org serves today and two deploys of this commit are not guaranteed to be the same deploy. Run \u0060bundle install\u0060 and commit the resulting \u0060Gemfile.lock\u0060. (A published GEM correctly omits its lock, which is why this is asked only of a repository that ships no .gemspec.)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"cce86a6764b0429f696055851835123ad1dee71ace60575c329aed06e5e6bcd7"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/shell2/common/event.rs: dll/src/desktop/shell2/common/event.rs changed 221 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 315 in PlatformWindow::apply_user_change at line 4824. 102 of those changes were fix/bug commits, and the other 119 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/shell2/common/event.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":"dll/src/desktop/shell2/common/event.rs"},"region":{"startLine":4824}}}],"partialFingerprints":{"codehealthFindingId/v1":"184230b7278a019e40559b248d9216c498ebc70da7cef1b036aa6f513f2c03d2"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/window.rs: layout/src/window.rs changed 338 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 89 in LayoutWindow::layout_dom_recursive_impl at line 5543. 137 of those changes were fix/bug commits, and the other 201 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/window.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":"layout/src/window.rs"},"region":{"startLine":5543}}}],"partialFingerprints":{"codehealthFindingId/v1":"c65c4e26c9c7ddab926f2aab3c0b714f5e947b718f59d43e20fdc386f6f170f6"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/shell2/windows/mod.rs: dll/src/desktop/shell2/windows/mod.rs changed 106 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 205 in azul_dll::desktop::shell2::windows::window_proc at line 4025. 58 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/shell2/windows/mod.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":"dll/src/desktop/shell2/windows/mod.rs"},"region":{"startLine":4025}}}],"partialFingerprints":{"codehealthFindingId/v1":"daaaf1a16eb150b0bce1d379d3ab0ae040bd0231172ae2ab5b0783a5bc5e9b47"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/shell2/linux/wayland/mod.rs: dll/src/desktop/shell2/linux/wayland/mod.rs changed 149 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 104 in WaylandWindow::generate_frame_if_needed at line 7011. 79 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/shell2/linux/wayland/mod.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":"dll/src/desktop/shell2/linux/wayland/mod.rs"},"region":{"startLine":7011}}}],"partialFingerprints":{"codehealthFindingId/v1":"03eeed4f0c265606486a2d1600ef7b15d151c9dd83cfeca7ecc24b022efd7603"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/shell2/headless/mod.rs: dll/src/desktop/shell2/headless/mod.rs changed 128 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 92 in HeadlessWindow::run at line 2258. 73 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/shell2/headless/mod.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":"dll/src/desktop/shell2/headless/mod.rs"},"region":{"startLine":2258}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbf8e1e62db6061287938d99b9668ac75cbd2cb0fb10e058ac25e09d2d7254bf"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/main.rs: doc/src/main.rs changed 42 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 266 in azul_doc::main at line 76. 16 of those changes were fix/bug commits, and the other 26 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/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":"doc/src/main.rs"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"902de37964ef553181f390a2d1a57d8220799a387288766951889a11910d4a3f"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/solver3/fc.rs: layout/src/solver3/fc.rs changed 89 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 123 in azul_layout::solver3::fc::layout_bfc at line 1214. 35 of those changes were fix/bug commits, and the other 54 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/solver3/fc.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":"layout/src/solver3/fc.rs"},"region":{"startLine":1214}}}],"partialFingerprints":{"codehealthFindingId/v1":"feb97fa34a9513db59cc79754f8e8203389fbc44cb46fac145648448ae19cb1e"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: core/src/dom.rs: core/src/dom.rs changed 47 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 184 in NodeType::to_library_owned_nodetype at line 692. 14 of those changes were fix/bug commits, and the other 33 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- core/src/dom.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":"core/src/dom.rs"},"region":{"startLine":692}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cce2a222d79e2058a37fdb30b4c17fd2eb9ec7343b6147e3d80a74bb7ceea62"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/cpurender/raster.rs: layout/src/cpurender/raster.rs changed 101 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 85 in azul_layout::cpurender::raster::render_single_item at line 1830. 38 of those changes were fix/bug commits, and the other 63 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/cpurender/raster.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":"layout/src/cpurender/raster.rs"},"region":{"startLine":1830}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba51bf1733129821354bd51f421ddf280fa06349840a5624f5b18bd6d41fd0ca"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/shell2/linux/x11/mod.rs: dll/src/desktop/shell2/linux/x11/mod.rs changed 119 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 72 in X11Window::handle_event at line 4836. 61 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/shell2/linux/x11/mod.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":"dll/src/desktop/shell2/linux/x11/mod.rs"},"region":{"startLine":4836}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d63f290a979a837fa56fe6f7d5be05874629d7ef648d1d174128295d1940a6e"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: core/src/xml.rs: core/src/xml.rs changed 48 times in last 90 days, max cyclomatic complexity 170 in azul_core::xml::tag_to_node_type at line 2670. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- core/src/xml.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":"core/src/xml.rs"},"region":{"startLine":2670}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f1bb120a4a4eb336ba8d7de96a0f692116f317399f36d56bed86964862c116e"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/text3/cache.rs: layout/src/text3/cache.rs changed 111 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 72 in azul_layout::text3::cache::position_one_line at line 11839. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/text3/cache.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":"layout/src/text3/cache.rs"},"region":{"startLine":11839}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ac1f499ba9e20d05cc24661ef0c4b564ef701ded0df71a6c08ccc5cb4e7f5c0"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: core/src/events.rs: core/src/events.rs changed 92 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 86 in azul_core::events::matches_window_filter at line 2038. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- core/src/events.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":"core/src/events.rs"},"region":{"startLine":2038}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf7c32bcc98137fd5cc418c93b6dc2005ea442ef39cc63c460089e4efaab8f18"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/solver3/display_list.rs: layout/src/solver3/display_list.rs changed 120 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 55 in DisplayListItem::is_visually_equal at line 1883. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/solver3/display_list.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":"layout/src/solver3/display_list.rs"},"region":{"startLine":1883}}}],"partialFingerprints":{"codehealthFindingId/v1":"da04cc996a0ee61f702813b70a79c3838aea11564f42d9a6765b548d4f625a98"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/callbacks.rs: layout/src/callbacks.rs changed 136 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 46 in CallbackInfo::get_node_attribute at line 3680. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/callbacks.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":"layout/src/callbacks.rs"},"region":{"startLine":3680}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a8fcd19bc98a6361759b0bd96b7eae31c3e39b367d7dd862000225370a677b8"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/shell2/macos/mod.rs: dll/src/desktop/shell2/macos/mod.rs changed 105 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 56 in MacOSWindow::render_and_present_in_draw_rect at line 7700. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/shell2/macos/mod.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":"dll/src/desktop/shell2/macos/mod.rs"},"region":{"startLine":7700}}}],"partialFingerprints":{"codehealthFindingId/v1":"30919e76846d8a1a829d46743be2b80f60f57f9df3afc767a34e66cfeec46e18"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/solver3/mod.rs: layout/src/solver3/mod.rs changed 54 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 96 in azul_layout::solver3::layout_document at line 544. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/solver3/mod.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":"layout/src/solver3/mod.rs"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"38a7f3a222dde27ce03dcb51ae214b45af8e3c4069d745c99052cda5a766c69d"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/shell2/common/layout.rs: dll/src/desktop/shell2/common/layout.rs changed 65 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 79 in azul_dll::desktop::shell2::common::layout::regenerate_layout at line 236. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/shell2/common/layout.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":"dll/src/desktop/shell2/common/layout.rs"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ccc5c4c0ddda6d086893419ff4bdc32bb18442eb2bfad52b361ba72e535df6d"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: core/src/compact.rs: core/src/compact.rs changed 27 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 190 in azul_core::compact::apply_css_property_to_compact at line 1305. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- core/src/compact.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":"core/src/compact.rs"},"region":{"startLine":1305}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3aa2b049c9c4282324a41a218baa6e91b0186e4cb9527e5045c31050bff637f"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: css/src/props/property.rs: css/src/props/property.rs changed 25 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 195 in azul_css::props::property::parse_css_property at line 3216. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- css/src/props/property.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":"css/src/props/property.rs"},"region":{"startLine":3216}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa671fa95bcb2791f9533f6b499f76f405f26eb09129e958c31a1b6b0fb2d281"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: core/src/ua_css.rs: core/src/ua_css.rs changed 22 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 213 in azul_core::ua_css::get_ua_property at line 620. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- core/src/ua_css.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":"core/src/ua_css.rs"},"region":{"startLine":620}}}],"partialFingerprints":{"codehealthFindingId/v1":"43229c545e764d86a942f55c3406145e68a9ca913e1566709a995e2fb0ce6eb4"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/event_determination.rs: layout/src/event_determination.rs changed 40 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 114 in azul_layout::event_determination::determine_all_events at line 599. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/event_determination.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":"layout/src/event_determination.rs"},"region":{"startLine":599}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cec81b55a3ad0438eb572b465436d5dda079e96f9a13607c29dbf3a6ca3ae9a"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: core/src/prop_cache.rs: core/src/prop_cache.rs changed 52 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 85 in CssPropertyCache::get_computed_css_style_string at line 2149. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- core/src/prop_cache.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":"core/src/prop_cache.rs"},"region":{"startLine":2149}}}],"partialFingerprints":{"codehealthFindingId/v1":"f289c37865aa140e75ebdfcc606d4f9da13e2678eb48df02aac9598b32df10ce"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/shell2/android/mod.rs: dll/src/desktop/shell2/android/mod.rs changed 64 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 68 in azul_dll::desktop::shell2::android::drain_input at line 1262. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/shell2/android/mod.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":"dll/src/desktop/shell2/android/mod.rs"},"region":{"startLine":1262}}}],"partialFingerprints":{"codehealthFindingId/v1":"476132fc7aa00643f015b78015ab2393b37188aad0f19a21840948e6c042462b"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/web/transpiler_remill.rs: dll/src/web/transpiler_remill.rs changed 50 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 86 in RemillTranspiler::lift_with_transitive_deps_sequential at line 2167. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/web/transpiler_remill.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":"dll/src/web/transpiler_remill.rs"},"region":{"startLine":2167}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1d02280bdfc46af5675364dbb027c3a5579148fe3d06232f572203e1eae8147"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/scroll_timer.rs: layout/src/scroll_timer.rs changed 38 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 109 in azul_layout::scroll_timer::scroll_physics_timer_callback at line 334. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/scroll_timer.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":"layout/src/scroll_timer.rs"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d710f3ac9c6b1942ceac9e8cc4085280b81f003062fb69781547d500ed9d275"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/shell2/linux/x11/events.rs: dll/src/desktop/shell2/linux/x11/events.rs changed 31 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 131 in azul_dll::desktop::shell2::linux::x11::events::keysym_to_virtual_keycode at line 1755. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/shell2/linux/x11/events.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":"dll/src/desktop/shell2/linux/x11/events.rs"},"region":{"startLine":1755}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9e0a2175084f64264dcf67246ff8b2090f5d88478e732161da1086ee417be36"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: css/src/css.rs: css/src/css.rs changed 21 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 185 in NodeTypeTag::from_str at line 1308. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- css/src/css.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":"css/src/css.rs"},"region":{"startLine":1308}}}],"partialFingerprints":{"codehealthFindingId/v1":"16a9dd55f5e37fe947bfb0a7c58398b071bff678abaeeae87092c7f1e875485f"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/solver3/cache.rs: layout/src/solver3/cache.rs changed 63 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 60 in azul_layout::solver3::cache::reconcile_recursive at line 1540. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/solver3/cache.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":"layout/src/solver3/cache.rs"},"region":{"startLine":1540}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e949130702a5723820d37ecda5648d30e72e72db561cc3759d4ec160c6f6210"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/solver3/taffy_bridge.rs: layout/src/solver3/taffy_bridge.rs changed 46 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 74 in TaffyBridge::translate_style_to_taffy at line 734. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/solver3/taffy_bridge.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":"layout/src/solver3/taffy_bridge.rs"},"region":{"startLine":734}}}],"partialFingerprints":{"codehealthFindingId/v1":"8edff8c7c806972b33d403035405628519954c470382c60a04a458dd2b66e2c4"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/solver3/getters.rs: layout/src/solver3/getters.rs changed 82 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 41 in azul_layout::solver3::getters::get_style_properties_for_state at line 3042. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/solver3/getters.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":"layout/src/solver3/getters.rs"},"region":{"startLine":3042}}}],"partialFingerprints":{"codehealthFindingId/v1":"494e53c1e2640a4c394ac251113951fa184cfd53d36c3e9398face9afb930a78"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/solver3/sizing.rs: layout/src/solver3/sizing.rs changed 45 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 66 in azul_layout::solver3::sizing::calculate_used_size_for_node at line 1730. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/solver3/sizing.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":"layout/src/solver3/sizing.rs"},"region":{"startLine":1730}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0891d335896504c94461372b12425c5102771a5153125d4e979a72e59f5f9cb"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/cpurender/compositor.rs: layout/src/cpurender/compositor.rs changed 63 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 43 in CompositorState::allocate_layers_from_display_list at line 369. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/cpurender/compositor.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":"layout/src/cpurender/compositor.rs"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a6bed622beb92cf4abb1365a21d00b6c4a887f4cec5095b7ef95a48cc1a7617"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/xml/mod.rs: layout/src/xml/mod.rs changed 29 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 91 in azul_layout::xml::parse_xml_to_fast_dom_with_css at line 334. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/xml/mod.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":"layout/src/xml/mod.rs"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"14c8ee541c60b4d2a347e63352578855cc757c78ac7c5f63f11ef8a8739eabcb"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/solver3/layout_tree.rs: layout/src/solver3/layout_tree.rs changed 63 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 41 in LayoutTreeBuilder::process_node at line 2062. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/solver3/layout_tree.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":"layout/src/solver3/layout_tree.rs"},"region":{"startLine":2062}}}],"partialFingerprints":{"codehealthFindingId/v1":"4af66bd927bffea5be5b96d8b0144c4f0c0cb7be8ad058c56909594c2ca3516e"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/shell2/run.rs: dll/src/desktop/shell2/run.rs changed 43 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 53 in azul_dll::desktop::shell2::run::run at line 1963. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/shell2/run.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":"dll/src/desktop/shell2/run.rs"},"region":{"startLine":1963}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8ba5bb9e311e3a4cded6e9803e3f5f711835325fa37537699d03504fc4bc6a0"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/shell2/ios/mod.rs: dll/src/desktop/shell2/ios/mod.rs changed 47 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 44 in azul_dll::desktop::shell2::ios::handle_touch at line 331. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/shell2/ios/mod.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":"dll/src/desktop/shell2/ios/mod.rs"},"region":{"startLine":331}}}],"partialFingerprints":{"codehealthFindingId/v1":"548cd3d7bb2fa94a639a133d2b3b1996c7b687bdc764fde1e6e80b0996d135ac"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/dllgen/deploy.rs: doc/src/dllgen/deploy.rs changed 58 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 35 in azul_doc::dllgen::deploy::verify_examples 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/dllgen/deploy.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":"doc/src/dllgen/deploy.rs"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"12ca6ee97b8087ac619f94b83f73380c5103f31cd089c08a4aa4d560b77d57d1"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/solver3/positioning.rs: layout/src/solver3/positioning.rs changed 23 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 88 in azul_layout::solver3::positioning::position_out_of_flow_elements at line 160. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/solver3/positioning.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":"layout/src/solver3/positioning.rs"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"59c1b14617fd79741992150202f4c72a635783b0c58317949d38324284965ce1"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/shell2/linux/wayland/events.rs: dll/src/desktop/shell2/linux/wayland/events.rs changed 63 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 30 in azul_dll::desktop::shell2::linux::wayland::events::registry_global_handler at line 495. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/shell2/linux/wayland/events.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":"dll/src/desktop/shell2/linux/wayland/events.rs"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1de349a538761f69785b7469a755f8379ec06b27e3092c4fc5418e3f917768e"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: css/src/codegen/rust.rs: css/src/codegen/rust.rs changed 10 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 184 in azul_css::codegen::rust::format_node_type at line 97. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- css/src/codegen/rust.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":"css/src/codegen/rust.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"1080d48eae53a38b84c211e2d8d400266984cb38959c49a23e17009bf71ca534"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: css/src/parser2.rs: css/src/parser2.rs changed 22 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 72 in azul_css::parser2::new_from_str_inner at line 1465. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- css/src/parser2.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":"css/src/parser2.rs"},"region":{"startLine":1465}}}],"partialFingerprints":{"codehealthFindingId/v1":"29a694b7d55d67a108fb579c8d7df84e3ce90060a7d7bf7ed47dd64354b49a14"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/managers/a11y.rs: layout/src/managers/a11y.rs changed 23 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 62 in A11yManager::build_node at line 851. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/managers/a11y.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":"layout/src/managers/a11y.rs"},"region":{"startLine":851}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dc3c750ca2004b910f21bb821e7d349b095f204e9602a41fdd300b0497b9fd9"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: core/src/diff.rs: core/src/diff.rs changed 30 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 47 in azul_core::diff::reconcile_dom at line 569. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- core/src/diff.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":"core/src/diff.rs"},"region":{"startLine":569}}}],"partialFingerprints":{"codehealthFindingId/v1":"2edb2b8310f50d2db82a17c473c559f483e1ae25b465958c58a5e54a36a9fefd"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/gene2e.rs: doc/src/gene2e.rs changed 33 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 39 in azul_doc::gene2e::parse_schema at line 641. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/gene2e.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":"doc/src/gene2e.rs"},"region":{"startLine":641}}}],"partialFingerprints":{"codehealthFindingId/v1":"64324658e13aa6a4e0077ad0573c1e97c9244dc9ea5065b93ef98244bde251d5"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/shell2/linux/system_style.rs: dll/src/desktop/shell2/linux/system_style.rs changed 24 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 49 in azul_dll::desktop::shell2::linux::system_style::discover_kde_style at line 1642. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/shell2/linux/system_style.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":"dll/src/desktop/shell2/linux/system_style.rs"},"region":{"startLine":1642}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f26141b654c2e69030d4926749fdf54d712206694fdb382714b3b92ffe016f4"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/web/symbol_table.rs: dll/src/web/symbol_table.rs changed 12 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 94 in azul_dll::web::symbol_table::classify_for_name at line 2437. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/web/symbol_table.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":"dll/src/web/symbol_table.rs"},"region":{"startLine":2437}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfe5b4b1e4ca46d3a05b608ee20c80bc88306e8d0e1867e3ee13c1fbe120163d"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/widgets/node_graph.rs: layout/src/widgets/node_graph.rs changed 27 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 37 in azul_layout::widgets::node_graph::nodegraph_drag_graph_or_nodes at line 3109. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/widgets/node_graph.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":"layout/src/widgets/node_graph.rs"},"region":{"startLine":3109}}}],"partialFingerprints":{"codehealthFindingId/v1":"08f273a1199952a760382508c65da6d207d3a79bd28a9cea0273296c599db682"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/widgets/map.rs: layout/src/widgets/map.rs changed 52 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 19 in azul_layout::widgets::map::map_widget_render at line 2590. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/widgets/map.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":"layout/src/widgets/map.rs"},"region":{"startLine":2590}}}],"partialFingerprints":{"codehealthFindingId/v1":"19ef711580c857137f7dab2f60210d48ac512cfee31282cbfceda1f51d4528b6"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/default_actions.rs: layout/src/default_actions.rs changed 21 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 47 in azul_layout::default_actions::determine_keyboard_default_action_with_editing at line 95. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/default_actions.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":"layout/src/default_actions.rs"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4c5f02d688a25c41400e704bc0a145bd563ce3d80bf4a4f9855aa50e979ede2"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: css/src/dynamic_selector.rs: css/src/dynamic_selector.rs changed 29 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 34 in CssPropertyWithConditionsVec::parse_at_rule at line 2260. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- css/src/dynamic_selector.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":"css/src/dynamic_selector.rs"},"region":{"startLine":2260}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b2baff4b39273734645caec75d86feb6d0b7b401ba85ec8d7ff35e4cd69d225"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_python.rs: doc/src/codegen/v2/lang_python.rs changed 14 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 70 in PythonGenerator::generate_pymethod at line 2467. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_python.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":"doc/src/codegen/v2/lang_python.rs"},"region":{"startLine":2467}}}],"partialFingerprints":{"codehealthFindingId/v1":"88d782fc09a575bec9f744dd4fb0b5bc0b11a04d84115b8ea18c0a7761a5b4bb"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: core/src/resources.rs: core/src/resources.rs changed 48 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 20 in azul_core::resources::build_add_font_resource_updates at line 3669. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- core/src/resources.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":"core/src/resources.rs"},"region":{"startLine":3669}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3a02fb2cb044dfd3c88eb8de83f75ee845a54c0c178195cbbc24eb231bc2820"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/autofix/mod.rs: doc/src/autofix/mod.rs changed 8 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 117 in azul_doc::autofix::check_ffi_safety at line 1828. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/autofix/mod.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":"doc/src/autofix/mod.rs"},"region":{"startLine":1828}}}],"partialFingerprints":{"codehealthFindingId/v1":"25ba828a0ad25d1b97cf9e2ccfe09aba3aa83322f85414479ec2ed55db458c40"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/solver3/paged_layout.rs: layout/src/solver3/paged_layout.rs changed 46 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 20 in azul_layout::solver3::paged_layout::layout_document_tokenized_from at line 2492. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/solver3/paged_layout.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":"layout/src/solver3/paged_layout.rs"},"region":{"startLine":2492}}}],"partialFingerprints":{"codehealthFindingId/v1":"046ce8cb11fdea95946d81489e356e4bad4f8f5c569835bae012f5f494147979"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/compositor2.rs: dll/src/desktop/compositor2.rs changed 8 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 107 in azul_dll::desktop::compositor2::translate_displaylist_to_wr at line 174. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/compositor2.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":"dll/src/desktop/compositor2.rs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"af23ab42b9dfd9d31d06dbf092b1869fdc2300ebd837e6a883de76d9b0559bdb"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/autofix/module_map.rs: doc/src/autofix/module_map.rs changed 20 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 42 in azul_doc::autofix::module_map::module_from_external_path at line 802. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/autofix/module_map.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":"doc/src/autofix/module_map.rs"},"region":{"startLine":802}}}],"partialFingerprints":{"codehealthFindingId/v1":"766d0a5a758ce42b48f3c80e562f0c9f315602c8bb0c6f3914e58c32c36e2424"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/widgets/ribbon.rs: layout/src/widgets/ribbon.rs changed 34 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 24 in Ribbon::build_chrome at line 3210. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/widgets/ribbon.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":"layout/src/widgets/ribbon.rs"},"region":{"startLine":3210}}}],"partialFingerprints":{"codehealthFindingId/v1":"61aac5d35b6bb7eaaa1e78315273760753a357525df766d98b42be27dad055b4"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/ir_builder.rs: doc/src/codegen/v2/ir_builder.rs changed 15 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 54 in IRBuilder::validate_api_json at line 100. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/ir_builder.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":"doc/src/codegen/v2/ir_builder.rs"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"875fcaa9ec3c54ddf68c04161dd93773c8a6ec13a170fdba991f6547e30ad989"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_csharp/wrappers.rs: doc/src/codegen/v2/lang_csharp/wrappers.rs changed 13 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 61 in azul_doc::codegen::v2::lang_csharp::wrappers::emit_wrapper_method at line 1419. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_csharp/wrappers.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":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":1419}}}],"partialFingerprints":{"codehealthFindingId/v1":"d02cb454283e6a05e5b6c112504fa9849086e6499c766f7b95e3813040ece74d"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: core/src/styled_dom.rs: core/src/styled_dom.rs changed 38 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 20 in azul_core::styled_dom::is_layout_equivalent at line 3281. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- core/src/styled_dom.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":"core/src/styled_dom.rs"},"region":{"startLine":3281}}}],"partialFingerprints":{"codehealthFindingId/v1":"06f5a2e4418f0c60b017ec879b9b69fbc87d9b96a558e11a2f75f314a634b6c0"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/xml/svg.rs: layout/src/xml/svg.rs changed 15 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 49 in azul_layout::xml::svg::render_node_clipmask_cpu at line 1766. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/xml/svg.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":"layout/src/xml/svg.rs"},"region":{"startLine":1766}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a1db006e8105a774045227750bce3da838413a05c896177e5bb351baba9fc8b"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/cpurender/pixmap.rs: layout/src/cpurender/pixmap.rs changed 28 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 25 in azul_layout::cpurender::pixmap::blit_pixmap_projective_clipped at line 342. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/cpurender/pixmap.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":"layout/src/cpurender/pixmap.rs"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"d85cd3fd7e56ceb24f51f3ad62d9f72ea5da3d3ab7ea59bd4356abf92b04d0a7"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/shell2/macos/system_style.rs: dll/src/desktop/shell2/macos/system_style.rs changed 13 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 50 in azul_dll::desktop::shell2::macos::system_style::discover 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/shell2/macos/system_style.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":"dll/src/desktop/shell2/macos/system_style.rs"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa31e76d625bfcabc16f8b1a386fbfe82fa7a4a661f2c4ef9f4e0f5eb0a84aca"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/wr_translate2.rs: dll/src/desktop/wr_translate2.rs changed 23 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 28 in azul_dll::desktop::wr_translate2::merge_overlay_env at line 437. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/wr_translate2.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":"dll/src/desktop/wr_translate2.rs"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c1ebb681da53f968691ba2a96b34717f116c0bd17cf6f72006227f62cb12385"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/api.rs: doc/src/api.rs changed 11 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 56 in azul_doc::api::find_unused_types at line 2009. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/api.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":"doc/src/api.rs"},"region":{"startLine":2009}}}],"partialFingerprints":{"codehealthFindingId/v1":"e19bbff29297610f8c701ed3d39224b0616b4e959401ae338a65ea289e18551d"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/shell2/macos/events.rs: dll/src/desktop/shell2/macos/events.rs changed 30 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 20 in MacOSWindow::handle_scroll_wheel at line 459. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/shell2/macos/events.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":"dll/src/desktop/shell2/macos/events.rs"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8f2569963a0d82fd50c5158626c80a343f04de9966e70a55e43479e8224aa4d"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_rust.rs: doc/src/codegen/v2/lang_rust.rs changed 26 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 23 in RustGenerator::generate_transmute_trait_impls_enum at line 2963. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_rust.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":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2963}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4d6cee05bcf0e95517871a38ea640bbb64719bc56eb4707ea102ab4c4c4c260"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: core/src/path_parser.rs: core/src/path_parser.rs changed 15 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 39 in azul_core::path_parser::parse_svg_path_d at line 423. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- core/src/path_parser.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":"core/src/path_parser.rs"},"region":{"startLine":423}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c32f9d937f637d87abd9d33c59367ef181b125d98ed2076cad3eaf01cec37d1"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/font.rs: layout/src/font.rs changed 25 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 23 in ParsedFont::from_provider 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/font.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":"layout/src/font.rs"},"region":{"startLine":1011}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c8b90f3be087740ce9b3f5a77ae68bc70c4a9d888395d776d8a918e23130e4a"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_d/wrappers.rs: doc/src/codegen/v2/lang_d/wrappers.rs changed 7 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 82 in Emitter::plan_method at line 1727. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_d/wrappers.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":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":1727}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cecaff490388cf446699409dcb89d84c660a2f45522a4b42998da13bf7f7c09"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/text3/knuth_plass.rs: layout/src/text3/knuth_plass.rs changed 20 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 28 in azul_layout::text3::knuth_plass::find_optimal_breakpoints at line 362. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/text3/knuth_plass.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":"layout/src/text3/knuth_plass.rs"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fc2d382fad1713f9638648f3a4502fa248dd696d0c99281d7ee6f072d6692f3"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/shell2/common/transient.rs: dll/src/desktop/shell2/common/transient.rs changed 18 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 31 in azul_dll::desktop::shell2::common::transient::sync_parent at line 451. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/shell2/common/transient.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":"dll/src/desktop/shell2/common/transient.rs"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"552db4991aab2f1ddce98a1c0385cadce9aa264fb1c63809410c549151bd5b15"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/text3/dense.rs: layout/src/text3/dense.rs changed 24 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 23 in DenseText::from_unified_with_content at line 223. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/text3/dense.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":"layout/src/text3/dense.rs"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"97a199480110f6842572b146608613bd19f6399eff46ad53cb39c1c9edfc9c3b"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: core/src/callbacks.rs: core/src/callbacks.rs changed 32 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in SystemStyleDependencies::dom_depends_on_change at line 1217. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- core/src/callbacks.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":"core/src/callbacks.rs"},"region":{"startLine":1217}}}],"partialFingerprints":{"codehealthFindingId/v1":"f946909ea484acf7a9e8cb6a54cc0f94f1e6a6ca98c3251eb95d64826e913e13"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_haskell/wrappers.rs: doc/src/codegen/v2/lang_haskell/wrappers.rs changed 11 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 49 in azul_doc::codegen::v2::lang_haskell::wrappers::emit_function at line 2049. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_haskell/wrappers.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":"doc/src/codegen/v2/lang_haskell/wrappers.rs"},"region":{"startLine":2049}}}],"partialFingerprints":{"codehealthFindingId/v1":"552e9dca9dac14f5243abdf96514862aaaa81aa628d0a270f2f62564e2a57aec"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_swift/wrappers.rs: doc/src/codegen/v2/lang_swift/wrappers.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 88 in Emitter::plan_method at line 1710. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_swift/wrappers.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":"doc/src/codegen/v2/lang_swift/wrappers.rs"},"region":{"startLine":1710}}}],"partialFingerprints":{"codehealthFindingId/v1":"6043baf6b88d71cb160761ebe69adfe7fa649987d774332615cdd84cacc2b1ea"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/lint_derives.rs: doc/src/lint_derives.rs changed 33 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in azul_doc::lint_derives::check at line 1398. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/lint_derives.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":"doc/src/lint_derives.rs"},"region":{"startLine":1398}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c11c993af6454494b1e1465e8f4d1130ee5b8c92df93f298781969b5aa8e1f1"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/web/html_render.rs: dll/src/web/html_render.rs changed 13 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 36 in azul_dll::web::html_render::event_filter_to_js_name at line 999. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/web/html_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":"dll/src/web/html_render.rs"},"region":{"startLine":999}}}],"partialFingerprints":{"codehealthFindingId/v1":"15f65ce0b80b4fb52ad02da230ab2fdb0e051878cdb44d29c75feeb50f68f6d5"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/widgets/themes/flat.rs: layout/src/widgets/themes/flat.rs changed 30 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in azul_layout::widgets::themes::flat::button at line 567. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/widgets/themes/flat.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":"layout/src/widgets/themes/flat.rs"},"region":{"startLine":567}}}],"partialFingerprints":{"codehealthFindingId/v1":"14944ef58f447ebf53b8af3f7d3cee9c6f3f9b735a1136d53dcb77f27187a2ae"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/headless.rs: layout/src/headless.rs changed 25 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 18 in azul_layout::headless::resolve_virtual_view_placements at line 575. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/headless.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":"layout/src/headless.rs"},"region":{"startLine":575}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c7d4627fb9834bfdecf4bfb657eec0d36055a9e01a8191dab0fad81586dd42e"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/autofix/diff.rs: doc/src/autofix/diff.rs changed 11 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 40 in azul_doc::autofix::diff::find_dead_type_clusters at line 1491. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/autofix/diff.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":"doc/src/autofix/diff.rs"},"region":{"startLine":1491}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ac746617a78891e2a5bd6686948b5e3a20b0eff5eaf5e8ca10fb1ac6eaae6b5"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/web/mod.rs: dll/src/web/mod.rs changed 11 times in last 90 days, max cyclomatic complexity 38 in azul_dll::web::eventloop_symbol_addr 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/web/mod.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":"dll/src/web/mod.rs"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e69799a798257467f1addde5a5283a1a65eb925ea3d0ba4782c1f18a3f6f2a1"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_go/wrappers.rs: doc/src/codegen/v2/lang_go/wrappers.rs changed 18 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 23 in azul_doc::codegen::v2::lang_go::wrappers::emit_instance_method 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_go/wrappers.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":"doc/src/codegen/v2/lang_go/wrappers.rs"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"51e3050e558cf992604206f72b552e0968803a5034482e56601928c7faa36fd2"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/solver3/page_breaks.rs: layout/src/solver3/page_breaks.rs changed 14 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 28 in azul_layout::solver3::page_breaks::compute_page_breaks_impl at line 265. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/solver3/page_breaks.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":"layout/src/solver3/page_breaks.rs"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"cffaf7478ff4d0a765e989c9880a2b17f2845d2114d219b23bd3d6874ab961d2"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/managers/focus_cursor.rs: layout/src/managers/focus_cursor.rs changed 26 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in azul_layout::managers::focus_cursor::resolve_focus_target at line 746. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/managers/focus_cursor.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":"layout/src/managers/focus_cursor.rs"},"region":{"startLine":746}}}],"partialFingerprints":{"codehealthFindingId/v1":"0479301850935f2c20f204351962f6467983e7fd1ae299cb6d7eebd438c70a2f"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_java/wrappers.rs: doc/src/codegen/v2/lang_java/wrappers.rs changed 11 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 35 in azul_doc::codegen::v2::lang_java::wrappers::emit_wrapper_method at line 1336. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_java/wrappers.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":"doc/src/codegen/v2/lang_java/wrappers.rs"},"region":{"startLine":1336}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c05a2fd29e72c0abea26c67d72ffceb0fb487b989c9d931df942abea873f419"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: core/src/gl.rs: core/src/gl.rs changed 20 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 19 in GlShader::draw at line 4236. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- core/src/gl.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":"core/src/gl.rs"},"region":{"startLine":4236}}}],"partialFingerprints":{"codehealthFindingId/v1":"833d74aa14ec8ef81bf784575e5aa8425cedf558f48c87dff55cb7f3dd8a8110"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/docgen/apidocs.rs: doc/src/docgen/apidocs.rs changed 14 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 27 in azul_doc::docgen::apidocs::render_class at line 281. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/docgen/apidocs.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":"doc/src/docgen/apidocs.rs"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe06dae4706dc8b8f7dbe9bafe1de6addec0fb663a5b9ed99b35b625e3d181ee"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/autofix/function_diff.rs: doc/src/autofix/function_diff.rs changed 7 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 52 in azul_doc::autofix::function_diff::generate_add_type_patches at line 1192. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/autofix/function_diff.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":"doc/src/autofix/function_diff.rs"},"region":{"startLine":1192}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9428e72e273c90c093299cc23190ef5d094511aff60b3d8097f58906af2c081"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_ocaml/wrappers.rs: doc/src/codegen/v2/lang_ocaml/wrappers.rs changed 24 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in SmartCtor::emit_implementation at line 1013. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_ocaml/wrappers.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":"doc/src/codegen/v2/lang_ocaml/wrappers.rs"},"region":{"startLine":1013}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a79b553b3a26b9a2280cb6e9250545707c7b39fc15a499cd6127f11f310c7a8"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/dom_lint.rs: layout/src/dom_lint.rs changed 15 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 23 in azul_layout::dom_lint::collect_findings at line 182. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/dom_lint.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":"layout/src/dom_lint.rs"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"0814eb6ec4bddfdb8268f022449729bf4d072afba3b2b6e4358c131e502ec3d0"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_go/managed.rs: doc/src/codegen/v2/lang_go/managed.rs changed 19 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 18 in azul_doc::codegen::v2::lang_go::managed::emit_register_fns at line 713. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_go/managed.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":"doc/src/codegen/v2/lang_go/managed.rs"},"region":{"startLine":713}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ed4aca5dd46faa6b03bc81aac87ed92f10675751044667aedc843a8cf7c7042"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/updater.rs: layout/src/updater.rs changed 12 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 28 in azul_layout::updater::parse_release_document at line 1001. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/updater.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":"layout/src/updater.rs"},"region":{"startLine":1001}}}],"partialFingerprints":{"codehealthFindingId/v1":"34dcca0bcecee8d9f0390bc432f64bd7cfba1a5e28e4d616d44987ee893360bc"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/web/eventloop.rs: dll/src/web/eventloop.rs changed 14 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 24 in azul_dll::web::eventloop::AzStartup_dispatchEvent at line 1843. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/web/eventloop.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":"dll/src/web/eventloop.rs"},"region":{"startLine":1843}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e23c50f3932f39bc185959403ebdba1ae1a74589286b024fa20aa4da4d41c44"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/native_screenshot.rs: dll/src/desktop/native_screenshot.rs changed 9 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 37 in azul_dll::desktop::native_screenshot::take_native_screenshot_xlib_bytes at line 770. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/native_screenshot.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":"dll/src/desktop/native_screenshot.rs"},"region":{"startLine":770}}}],"partialFingerprints":{"codehealthFindingId/v1":"3146ae3bcf3a7963f675dec2b750d8fb89206bdea2645f63960249bb86455e79"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/widgets/themes/flora.rs: layout/src/widgets/themes/flora.rs changed 19 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in azul_layout::widgets::themes::flora::button at line 789. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/widgets/themes/flora.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":"layout/src/widgets/themes/flora.rs"},"region":{"startLine":789}}}],"partialFingerprints":{"codehealthFindingId/v1":"924f638f31b67dee41970e5eb9b83f1c9cd59093c5c96ee8182e514633630f32"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: core/src/transform.rs: core/src/transform.rs changed 16 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 20 in ComputedTransform3D::from_style_transform at line 403. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- core/src/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":"core/src/transform.rs"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ad1c21fcd47b9b1835dbb2368138161917a19dc82b3fa394218ff49bfdfceb9"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/tray/linux.rs: dll/src/desktop/tray/linux.rs changed 8 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 40 in azul_dll::desktop::tray::linux::menu_message at line 778. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/tray/linux.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":"dll/src/desktop/tray/linux.rs"},"region":{"startLine":778}}}],"partialFingerprints":{"codehealthFindingId/v1":"eafc1dae9e7c50ab8d0ac5a079bac70dfbe71385965e23744fc99f2f3f8095db"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/managers/virtual_view.rs: layout/src/managers/virtual_view.rs changed 20 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in VirtualViewState::scroll_demand at line 613. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/managers/virtual_view.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":"layout/src/managers/virtual_view.rs"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea4c070efd105027a2e2fa8744279441671fd025fd3f61976128bfa9471021ba"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_kotlin/wrappers.rs: doc/src/codegen/v2/lang_kotlin/wrappers.rs changed 13 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 24 in azul_doc::codegen::v2::lang_kotlin::wrappers::emit_wrapper at line 392. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_kotlin/wrappers.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":"doc/src/codegen/v2/lang_kotlin/wrappers.rs"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"2845941af85a4c09bbeb216242a0f2613b429efb61c6242b6a3835c8b787b8be"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/widgets/capture_common.rs: layout/src/widgets/capture_common.rs changed 18 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in azul_layout::widgets::capture_common::run_capture_loop at line 683. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/widgets/capture_common.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":"layout/src/widgets/capture_common.rs"},"region":{"startLine":683}}}],"partialFingerprints":{"codehealthFindingId/v1":"f07e617c36756843921a4fc18351691ba257ab639bba3ac305d5031e66f2a7d3"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/text3/edit.rs: layout/src/text3/edit.rs changed 19 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in azul_layout::text3::edit::delete_range at line 383. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/text3/edit.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":"layout/src/text3/edit.rs"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"0571a9b96e5e655d940ea93a48adaa194b4f240b9783bd0cc26e39e6a94255cf"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_cpp/common.rs: doc/src/codegen/v2/lang_cpp/common.rs changed 13 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 23 in azul_doc::codegen::v2::lang_cpp::common::generate_freefn_trait_helpers at line 2965. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_cpp/common.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":"doc/src/codegen/v2/lang_cpp/common.rs"},"region":{"startLine":2965}}}],"partialFingerprints":{"codehealthFindingId/v1":"df94b2018999b0b4f388b447124d5515ecb95be9924d8d58cb703aa7b523f5cd"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: css/src/props/basic/animation.rs: css/src/props/basic/animation.rs changed 14 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 21 in azul_css::props::basic::animation::parse_style_animation at line 2720. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- css/src/props/basic/animation.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":"css/src/props/basic/animation.rs"},"region":{"startLine":2720}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f5f99a0f02de127a267234a73873710a1453eb7480fda6d89a8cbcd428bd55d"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/autofix/workspace.rs: doc/src/autofix/workspace.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 73 in azul_doc::autofix::workspace::generate_patches at line 432. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/autofix/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":"doc/src/autofix/workspace.rs"},"region":{"startLine":432}}}],"partialFingerprints":{"codehealthFindingId/v1":"14d3c6836c13fed8e4f5b11cd1ce24e9a5ae3e431cf32b23b60a403fedf81e81"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: core/src/style.rs: core/src/style.rs changed 17 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in azul_core::style::matches_html_element at line 63. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- core/src/style.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":"core/src/style.rs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bd7378cd6173b9b89585997a1e733f7b0494cf863ce1ba564a5baa601fd1e5d"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_lua/wrappers.rs: doc/src/codegen/v2/lang_lua/wrappers.rs changed 13 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 22 in azul_doc::codegen::v2::lang_lua::wrappers::emit_instance_method at line 785. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_lua/wrappers.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":"doc/src/codegen/v2/lang_lua/wrappers.rs"},"region":{"startLine":785}}}],"partialFingerprints":{"codehealthFindingId/v1":"7613d57e3fa354efee85086f54540c749ed532e7e262b0e0cd17dd6e760c5e81"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/reftest/autodoc.rs: doc/src/reftest/autodoc.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 47 in azul_doc::reftest::autodoc::build_autodoc_prompt at line 345. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/reftest/autodoc.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":"doc/src/reftest/autodoc.rs"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"f06b51c46acd98e906a2009ddf2de8ac0a66fc5a33c1a06c5d44d299f023239b"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/widgets/pagination.rs: layout/src/widgets/pagination.rs changed 14 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 19 in azul_layout::widgets::pagination::on_page_click at line 500. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/widgets/pagination.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":"layout/src/widgets/pagination.rs"},"region":{"startLine":500}}}],"partialFingerprints":{"codehealthFindingId/v1":"d789f56f74ed81c303a414b89984d540c53c03027975090d74e7cc4ffe5e8891"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/reftest/autodebug.rs: doc/src/reftest/autodebug.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 53 in azul_doc::reftest::autodebug::discover_failing_tests at line 987. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/reftest/autodebug.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":"doc/src/reftest/autodebug.rs"},"region":{"startLine":987}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e465a3b9feb4497f4e1257217a74909c668b8c9ff76aaaf382f0de0dbd25169"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/web/server.rs: dll/src/web/server.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 44 in azul_dll::web::server::handle_connection 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/web/server.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":"dll/src/web/server.rs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"77b79238cc045c1ad8e614ce2d43390a4107f6e3ca2f6932b4ac157f1e5ecd1e"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_fortran/mod.rs: doc/src/codegen/v2/lang_fortran/mod.rs changed 10 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 26 in azul_doc::codegen::v2::lang_fortran::map_type_to_fortran at line 664. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_fortran/mod.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":"doc/src/codegen/v2/lang_fortran/mod.rs"},"region":{"startLine":664}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc37ac0b7eb96bc8ef0c2896adf449f30687ab64ae3a529bc9de9ec6ffceabc3"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/reftest/apply_midlevel.rs: doc/src/reftest/apply_midlevel.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 85 in azul_doc::reftest::apply_midlevel::run at line 186. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/reftest/apply_midlevel.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":"doc/src/reftest/apply_midlevel.rs"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec7fa82cc89fc4cce6802a6352029cd2fe5150e53ec09264daf07ac77e791c54"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_c.rs: doc/src/codegen/v2/lang_c.rs changed 14 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 18 in CGenerator::generate_function_declaration at line 869. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_c.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":"doc/src/codegen/v2/lang_c.rs"},"region":{"startLine":869}}}],"partialFingerprints":{"codehealthFindingId/v1":"4be88f83b96fecd75b99355810558a8c7f63db97beb4f33eda99af945b42ded8"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_ocaml/mod.rs: doc/src/codegen/v2/lang_ocaml/mod.rs changed 8 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 31 in azul_doc::codegen::v2::lang_ocaml::map_type_to_ocaml_typ at line 762. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_ocaml/mod.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":"doc/src/codegen/v2/lang_ocaml/mod.rs"},"region":{"startLine":762}}}],"partialFingerprints":{"codehealthFindingId/v1":"0130b84ecf4976a17713b60f136f1f763c6158b17d16ebc7bbf236246fc19952"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/shell2/common/capability_pump.rs: dll/src/desktop/shell2/common/capability_pump.rs changed 11 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 22 in azul_dll::desktop::shell2::common::capability_pump::pump 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/shell2/common/capability_pump.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":"dll/src/desktop/shell2/common/capability_pump.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d851f50977264b4e64120400404bba0a388bf4e01885c0efb77ae36886d0b1a"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/widgets/stepper.rs: layout/src/widgets/stepper.rs changed 14 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in azul_layout::widgets::stepper::on_step_click at line 567. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/widgets/stepper.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":"layout/src/widgets/stepper.rs"},"region":{"startLine":567}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c8f41a99e448d08c7d18dbd2669750fb50c59204ab5b8aca0bbeaa58d2b649f"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/transient.rs: layout/src/transient.rs changed 14 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in TransientWindowManager::reconcile at line 836. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/transient.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":"layout/src/transient.rs"},"region":{"startLine":836}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdba785b51f6b4a4b479cc5982a1e860482ab568ef4e6fc8a74adfcad6306149"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_cpp/cpp17.rs: doc/src/codegen/v2/lang_cpp/cpp17.rs changed 10 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 23 in Cpp17Generator::generate_method_implementations at line 277. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_cpp/cpp17.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":"doc/src/codegen/v2/lang_cpp/cpp17.rs"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"5355ee8b66d0ae254f2e36418ea2bcbe3cd920ed06a4ccb64f125765f7358a53"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/extra/screencap/macos.rs: dll/src/desktop/extra/screencap/macos.rs changed 7 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 32 in azul_dll::desktop::extra::screencap::macos::open at line 293. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/extra/screencap/macos.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":"dll/src/desktop/extra/screencap/macos.rs"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"672769a256eac4835b041ab0a369e69ebe44e5153bf64f13bce378c328b6cb44"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: css/src/props/style/text.rs: css/src/props/style/text.rs changed 14 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in azul_css::props::style::text::parse_style_text_box_edge at line 3086. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- css/src/props/style/text.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":"css/src/props/style/text.rs"},"region":{"startLine":3086}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bdb5ac4d4202f22a8c94f29c8cdf416dfe3dc8e8867d8a240f8e299359fe5dd"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/extra/gamepad/apple.rs: dll/src/desktop/extra/gamepad/apple.rs changed 7 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 32 in azul_dll::desktop::extra::gamepad::apple::poll at line 112. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/extra/gamepad/apple.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":"dll/src/desktop/extra/gamepad/apple.rs"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"43d722bb90dff404c2aaf7762ba907bcb8aa67f39ebd94eb2b8cd9a59456bd8b"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_zig/wrappers.rs: doc/src/codegen/v2/lang_zig/wrappers.rs changed 13 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in azul_doc::codegen::v2::lang_zig::wrappers::classify_arg at line 1268. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_zig/wrappers.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":"doc/src/codegen/v2/lang_zig/wrappers.rs"},"region":{"startLine":1268}}}],"partialFingerprints":{"codehealthFindingId/v1":"770ad129a967b245912fa86e275bbe63c2eb0984d7338d364abc5803c8dd3dad"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_cpp/cpp03.rs: doc/src/codegen/v2/lang_cpp/cpp03.rs changed 11 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 20 in Cpp03Generator::generate_method_implementations at line 236. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_cpp/cpp03.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":"doc/src/codegen/v2/lang_cpp/cpp03.rs"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"20e1a23b6059d699030c06eafca1fcc1d14ab2cfff8decee5b52527e3a454947"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/extra/video_codec/stream.rs: dll/src/desktop/extra/video_codec/stream.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 44 in azul_dll::desktop::extra::video_codec::stream::decode_stream at line 96. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/extra/video_codec/stream.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":"dll/src/desktop/extra/video_codec/stream.rs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"65fadd950219552a44631403c9a7b1647befa4954ff45ba10ca91b890c6838b8"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/lint_examples.rs: doc/src/lint_examples.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 36 in azul_doc::lint_examples::check_line at line 442. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/lint_examples.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":"doc/src/lint_examples.rs"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"68d8a0a2a2f353376aba456a12de753cefab43e38faa33910194ab7fb6348358"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: core/src/transient.rs: core/src/transient.rs changed 12 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 18 in TransientWindowConfig::apply_attr at line 286. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- core/src/transient.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":"core/src/transient.rs"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"80a58f0b851c22d5a6dc8ebf7da0899e10f77710fab7cfb62d8da8e206faacc6"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/autofix/patch_format.rs: doc/src/autofix/patch_format.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 43 in AutofixPatch::modify_to_class_patch at line 951. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/autofix/patch_format.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":"doc/src/autofix/patch_format.rs"},"region":{"startLine":951}}}],"partialFingerprints":{"codehealthFindingId/v1":"4da191e95175b58c7cc5e1d5903ec27547b7e41ec5a728b14959862e93ff3b71"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_kotlin/managed.rs: doc/src/codegen/v2/lang_kotlin/managed.rs changed 10 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 21 in azul_doc::codegen::v2::lang_kotlin::managed::emit_kt_data_typed_invoker_sam at line 726. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_kotlin/managed.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":"doc/src/codegen/v2/lang_kotlin/managed.rs"},"region":{"startLine":726}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b48ed548d7fdee97c411ffd805def7204b294bcb68cdd11db5247535f823ce5"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: css/src/props/basic/pixel.rs: css/src/props/basic/pixel.rs changed 10 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 21 in PixelValue::resolve_with_context at line 609. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- css/src/props/basic/pixel.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":"css/src/props/basic/pixel.rs"},"region":{"startLine":609}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a2892c17c02c5bdb2ab5a5225294d524b6b33594d6793a932ef0c43d548a388"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/extra/pdf/mod.rs: dll/src/desktop/extra/pdf/mod.rs changed 14 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in azul_dll::desktop::extra::pdf::engine::page_ops at line 455. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/extra/pdf/mod.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":"dll/src/desktop/extra/pdf/mod.rs"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"255650468371b1b570580a6989601640731446e8d2f9ae8cc92d345740d3e353"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_ocaml/types.rs: doc/src/codegen/v2/lang_ocaml/types.rs changed 11 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 19 in azul_doc::codegen::v2::lang_ocaml::types::emit_forward_struct_decls at line 58. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_ocaml/types.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":"doc/src/codegen/v2/lang_ocaml/types.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"cff58f9b09993714385b5e1b44ce3a88f8ddfbdb1659bf8c1d836a07d2d54757"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_pascal/wrappers.rs: doc/src/codegen/v2/lang_pascal/wrappers.rs changed 12 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in azul_doc::codegen::v2::lang_pascal::wrappers::emit_wrapper_class_decl at line 257. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_pascal/wrappers.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":"doc/src/codegen/v2/lang_pascal/wrappers.rs"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"01139ef02f6f23f6f71c0b227e49bd23b0e14926b19abd9b727a775037e7b2f7"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_haskell/cshim.rs: doc/src/codegen/v2/lang_haskell/cshim.rs changed 10 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 20 in azul_doc::codegen::v2::lang_haskell::cshim::emit_inbound_trampoline at line 235. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_haskell/cshim.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":"doc/src/codegen/v2/lang_haskell/cshim.rs"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"50887d11d7ae25faed19485197c392077e6df8d28e0c7ebada449127f9259770"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_kotlin/mod.rs: doc/src/codegen/v2/lang_kotlin/mod.rs changed 10 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 20 in azul_doc::codegen::v2::lang_kotlin::emit_tagged_union at line 387. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_kotlin/mod.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":"doc/src/codegen/v2/lang_kotlin/mod.rs"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"15292ba5cb491eed8f43e44804b46f958143692aa51d2c7b0b7e76de6722686e"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/managers/a11y_snapshot.rs: layout/src/managers/a11y_snapshot.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 33 in A11ySnapshot::build at line 142. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/managers/a11y_snapshot.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":"layout/src/managers/a11y_snapshot.rs"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab42079ce14792db41dcf41a80076a43b1ed92cf25044bfbba25b5f5c171198d"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/web/lift_audit.rs: dll/src/web/lift_audit.rs changed 7 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 28 in azul_dll::web::lift_audit::audit_wasm at line 198. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/web/lift_audit.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":"dll/src/web/lift_audit.rs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6851dabcbef8052b20499af29047c1014304a4bd7c3ca510abda203205d2e4d"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_cpp/cpp20.rs: doc/src/codegen/v2/lang_cpp/cpp20.rs changed 9 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 21 in azul_doc::codegen::v2::lang_cpp::cpp20::generate_method_implementations_shared at line 990. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_cpp/cpp20.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":"doc/src/codegen/v2/lang_cpp/cpp20.rs"},"region":{"startLine":990}}}],"partialFingerprints":{"codehealthFindingId/v1":"f333a87e4a31aeb3c45fe375ed0a08ac58a98146c8eefaa707eda88f233169b1"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/extra/sqlite/mod.rs: dll/src/desktop/extra/sqlite/mod.rs changed 9 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 21 in azul_dll::desktop::extra::sqlite::sync::run at line 1664. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/extra/sqlite/mod.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":"dll/src/desktop/extra/sqlite/mod.rs"},"region":{"startLine":1664}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fdbb86e603a038be4f3be99f2d90ad37c612b449d9f87ee6f3bb1a68f196d76"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/shell2/windows/wcreate.rs: dll/src/desktop/shell2/windows/wcreate.rs changed 9 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 21 in azul_dll::desktop::shell2::windows::wcreate::create_gl_context at line 243. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/shell2/windows/wcreate.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":"dll/src/desktop/shell2/windows/wcreate.rs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d354b60dd5125a6e3f050937b2edf688a358d36b0f11c1748cdeb74642ea7cb"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_haskell/functions.rs: doc/src/codegen/v2/lang_haskell/functions.rs changed 11 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in azul_doc::codegen::v2::lang_haskell::functions::emit_one_register_helper at line 257. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_haskell/functions.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":"doc/src/codegen/v2/lang_haskell/functions.rs"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"fec617b4c713eb65fc44c42588973982d52a440a5446c46e9213f2b5d447e03c"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_node/wrappers.rs: doc/src/codegen/v2/lang_node/wrappers.rs changed 12 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in azul_doc::codegen::v2::lang_node::wrappers::emit_struct_wrapper at line 418. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_node/wrappers.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":"doc/src/codegen/v2/lang_node/wrappers.rs"},"region":{"startLine":418}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa0cde4a891a6eb8cfcccfc5eedaa283988b3663baf6f8bbcb08b1c2899f7964"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/extra/media_keys/apple.rs: dll/src/desktop/extra/media_keys/apple.rs changed 11 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in azul_dll::desktop::extra::media_keys::apple::publish at line 284. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/extra/media_keys/apple.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":"dll/src/desktop/extra/media_keys/apple.rs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"d790d030dc8b8b45e8931c11db2216ffc270632e501effc182824f82ace556c8"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_csharp/mod.rs: doc/src/codegen/v2/lang_csharp/mod.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 29 in azul_doc::codegen::v2::lang_csharp::map_type_to_csharp at line 171. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_csharp/mod.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":"doc/src/codegen/v2/lang_csharp/mod.rs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"16e6bc49b167ef33e43c5df54cff28de1e511f00821ddf4828ad35bd721e384d"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_fortran/wrappers.rs: doc/src/codegen/v2/lang_fortran/wrappers.rs changed 9 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 19 in azul_doc::codegen::v2::lang_fortran::wrappers::emit_procedure at line 1291. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_fortran/wrappers.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":"doc/src/codegen/v2/lang_fortran/wrappers.rs"},"region":{"startLine":1291}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7edf3188c9c07dc02abed1841636cfd0602d3a7eba1c33e23a65a028b38f58a"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/display.rs: dll/src/desktop/display.rs changed 8 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 21 in azul_dll::desktop::display::linux::wayland::try_wlr_randr at line 1298. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/display.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":"dll/src/desktop/display.rs"},"region":{"startLine":1298}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca7241914c33718d6c74c11fe7a329274f600fbae2c9e19ce076da125969b72c"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: css/src/props/layout/display.rs: css/src/props/layout/display.rs changed 7 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 24 in azul_css::props::layout::display::parse_layout_display at line 237. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- css/src/props/layout/display.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":"css/src/props/layout/display.rs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b348c02b21ad5e404ba100ede002f6a69365dde11d57c504bff2c6570584c4e"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/transmute_helpers.rs: doc/src/codegen/v2/transmute_helpers.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 55 in azul_doc::codegen::v2::transmute_helpers::generate_transmuted_fn_body at line 109. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/transmute_helpers.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":"doc/src/codegen/v2/transmute_helpers.rs"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ee1ee4318ffd9de115960663a6703ad2c334455f216965a768f61595bd1ccc0"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_cpp/cpp11.rs: doc/src/codegen/v2/lang_cpp/cpp11.rs changed 9 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 18 in Cpp11Generator::generate_method_implementations at line 146. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_cpp/cpp11.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":"doc/src/codegen/v2/lang_cpp/cpp11.rs"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ab6e74b8abdafc850b70bae1bf0dc407942379511df01192ab81ef6e5a412aa"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_ruby/wrappers.rs: doc/src/codegen/v2/lang_ruby/wrappers.rs changed 9 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 18 in azul_doc::codegen::v2::lang_ruby::wrappers::emit_rb_each_if_vec at line 539. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_ruby/wrappers.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":"doc/src/codegen/v2/lang_ruby/wrappers.rs"},"region":{"startLine":539}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a55d52e471face05172f3d5d5791d356d8d4454ae05aca04c56445c35cfbd31"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_fortran/managed.rs: doc/src/codegen/v2/lang_fortran/managed.rs changed 8 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 20 in azul_doc::codegen::v2::lang_fortran::managed::emit_invoker at line 965. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_fortran/managed.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":"doc/src/codegen/v2/lang_fortran/managed.rs"},"region":{"startLine":965}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1e39366d9c4286de5f930bb340b352e1f594686d84b897801d263561e5c3a1f"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_pascal/managed.rs: doc/src/codegen/v2/lang_pascal/managed.rs changed 10 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in azul_doc::codegen::v2::lang_pascal::managed::app_helper_info at line 687. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_pascal/managed.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":"doc/src/codegen/v2/lang_pascal/managed.rs"},"region":{"startLine":687}}}],"partialFingerprints":{"codehealthFindingId/v1":"845f757339ce1a173072a3ab9bbef8e6543232d40cffd9717f7f2284857833e8"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: css/src/props/layout/grid.rs: css/src/props/layout/grid.rs changed 10 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in azul_css::props::layout::grid::parse_grid_template_areas at line 1393. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- css/src/props/layout/grid.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":"css/src/props/layout/grid.rs"},"region":{"startLine":1393}}}],"partialFingerprints":{"codehealthFindingId/v1":"08dea8b93e3b523b64d78b140950cb9fa8da82b7f87012e14bced0e4b36e56cb"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/extra/sensors/windows.rs: dll/src/desktop/extra/sensors/windows.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 31 in azul_dll::desktop::extra::sensors::windows::poll at line 250. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/extra/sensors/windows.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":"dll/src/desktop/extra/sensors/windows.rs"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"178bc911c99dafa4e03fba18942fdf115b77a2a5274295c08594ae75b3a5fbc9"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_java/managed.rs: doc/src/codegen/v2/lang_java/managed.rs changed 9 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in azul_doc::codegen::v2::lang_java::managed::data_typed_sam_info at line 611. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_java/managed.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":"doc/src/codegen/v2/lang_java/managed.rs"},"region":{"startLine":611}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dd7d7819497b722b1cf8054e628b8d93d49c0c5876d74f8412d39021c79f0ff"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_java/mod.rs: doc/src/codegen/v2/lang_java/mod.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 24 in azul_doc::codegen::v2::lang_java::map_jvm_type at line 195. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_java/mod.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":"doc/src/codegen/v2/lang_java/mod.rs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"87cfe14d19867ebc538db3f633804b0fd43a712500e994b9c22f904175c4b9c6"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/dllgen/bundles.rs: doc/src/dllgen/bundles.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 24 in azul_doc::dllgen::bundles::create_bindings_bundles at line 429. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/dllgen/bundles.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":"doc/src/dllgen/bundles.rs"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fd7453a4d39629dbfa1d77a14b0185a2c337b4178d9b40543d4aaa9909abffa"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: css/src/props/style/background.rs: css/src/props/style/background.rs changed 8 times in last 90 days, max cyclomatic complexity 18 in azul_css::props::style::background::parser::get_normalized_linear_stops at line 1729. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- css/src/props/style/background.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":"css/src/props/style/background.rs"},"region":{"startLine":1729}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc3a9d7a358f05243c8359723723782a520fd7b3f641188681fb12a8c5390aec"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_java/types.rs: doc/src/codegen/v2/lang_java/types.rs changed 7 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 20 in azul_doc::codegen::v2::lang_java::types::emit_monomorphized_alias_files at line 124. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_java/types.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":"doc/src/codegen/v2/lang_java/types.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcc3341a1c1105847a9facce96260abccfc5aae4ce9883f4e2bee69d84c3d70a"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_go/types.rs: doc/src/codegen/v2/lang_go/types.rs changed 8 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in azul_doc::codegen::v2::lang_go::types::generate 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_go/types.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":"doc/src/codegen/v2/lang_go/types.rs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9a7c7cead216f85372259e91b7e368fde390287f7bdc44e8eda6f14eac8e92b"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_csharp/managed.rs: doc/src/codegen/v2/lang_csharp/managed.rs changed 9 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in azul_doc::codegen::v2::lang_csharp::managed::emit_typed_delegate_and_register at line 813. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_csharp/managed.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":"doc/src/codegen/v2/lang_csharp/managed.rs"},"region":{"startLine":813}}}],"partialFingerprints":{"codehealthFindingId/v1":"915b1097c6d24b5d7c304336498060e77d508d6ec6c768df7221d5b2147c733d"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/extra/map/mod.rs: dll/src/desktop/extra/map/mod.rs changed 9 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in azul_dll::desktop::extra::map::tile_fetch_worker at line 98. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/extra/map/mod.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":"dll/src/desktop/extra/map/mod.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbdb2003a41fa5847bc8932d37e20bd5c09f41b69008695469ccbc92c4a114c3"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_csharp/types.rs: doc/src/codegen/v2/lang_csharp/types.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 22 in azul_doc::codegen::v2::lang_csharp::types::generate_tagged_union at line 324. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_csharp/types.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":"doc/src/codegen/v2/lang_csharp/types.rs"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ccb5bec3d20b916bff2b096245f2d9d0ba1b1225f11423c77da1c9d7ed2a3aa"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_php_ext.rs: doc/src/codegen/v2/lang_php_ext.rs changed 8 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in azul_doc::codegen::v2::lang_php_ext::render_method at line 764. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_php_ext.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":"doc/src/codegen/v2/lang_php_ext.rs"},"region":{"startLine":764}}}],"partialFingerprints":{"codehealthFindingId/v1":"2568f18b1b754d4e3a7d582b71f85967601442c482e13abf1d14ae496f2de059"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_fortran/types.rs: doc/src/codegen/v2/lang_fortran/types.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 21 in azul_doc::codegen::v2::lang_fortran::types::generate_types_for 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_fortran/types.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":"doc/src/codegen/v2/lang_fortran/types.rs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"37fc79af4a7f447198fa6309763ecda1bb521a6932b501a2c258acdb99eabdb0"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/build_link.rs: dll/build_link.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 21 in azul_dll::build_link::link_shared at line 284. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/build_link.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":"dll/build_link.rs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"31f9739465e5a99c89ff742afbc88231ab0627045cac9fe1b9097fc1139a1bad"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/form.rs: layout/src/form.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 21 in azul_layout::form::validate_form at line 67. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/form.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":"layout/src/form.rs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"c93d82e6ad133ce4525b0c4f68b71944be637a5a97d236f405173cbfedd53a06"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/shell2/common/debug_server/platform.rs: dll/src/desktop/shell2/common/debug_server/platform.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 20 in azul_dll::desktop::shell2::common::debug_server::platform::handle_http_connection at line 198. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/shell2/common/debug_server/platform.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":"dll/src/desktop/shell2/common/debug_server/platform.rs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"62aab89f8ef4254dc8adba00cab74973ceee8c3b0990194cec60d6d210fa1a91"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: scripts/e2e-web/run.mjs: scripts/e2e-web/run.mjs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 39 in run.main at line 403. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- scripts/e2e-web/run.mjs\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":"scripts/e2e-web/run.mjs"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"a885bfba1162b1aa18754f4e8bff5e3abbcdcced48a98c1503627fd1aec5e838"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_haskell/types.rs: doc/src/codegen/v2/lang_haskell/types.rs changed 7 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in azul_doc::codegen::v2::lang_haskell::types::layout_oracle 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_haskell/types.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":"doc/src/codegen/v2/lang_haskell/types.rs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"1998b5f6c54421d2b7842694092de913c864174ccfafa32ec9044d5f4431b6ab"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: css/src/props/style/effects.rs: css/src/props/style/effects.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 18 in azul_css::props::style::effects::parse_style_object_position at line 944. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- css/src/props/style/effects.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":"css/src/props/style/effects.rs"},"region":{"startLine":944}}}],"partialFingerprints":{"codehealthFindingId/v1":"12b63238ea6a97ed38fb4cc43990e0a8895ef5c32bd0fc012452e1a92314d876"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/extra/audio/mod.rs: dll/src/desktop/extra/audio/mod.rs changed 7 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in azul_dll::desktop::extra::audio::coreaudio_device_names at line 439. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/extra/audio/mod.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":"dll/src/desktop/extra/audio/mod.rs"},"region":{"startLine":439}}}],"partialFingerprints":{"codehealthFindingId/v1":"0afbe5d6f9ba623bb3a5354904e7d472a3b349a3c41044ac6148172caf431d0f"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_smalltalk/wrappers.rs: doc/src/codegen/v2/lang_smalltalk/wrappers.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 25 in azul_doc::codegen::v2::lang_smalltalk::wrappers::emit_wrapper_method at line 210. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_smalltalk/wrappers.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":"doc/src/codegen/v2/lang_smalltalk/wrappers.rs"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"b96aad6295d784807775cfb8396eff953c15466d39655fe929f4d9e18bf4883d"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/reftest/regression.rs: doc/src/reftest/regression.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 25 in azul_doc::reftest::regression::generate_html_report at line 632. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/reftest/regression.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":"doc/src/reftest/regression.rs"},"region":{"startLine":632}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d3eaac2566ceb835140582534f64d1b5ea95b456214d2e11509c1b1aef5b99a"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/extra/geolocation/linux.rs: dll/src/desktop/extra/geolocation/linux.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in azul_dll::desktop::extra::geolocation::linux::imp::geoclue_loop at line 72. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/extra/geolocation/linux.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":"dll/src/desktop/extra/geolocation/linux.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"e587629e45d296cf1f055fa0c03a695b97680caa6b34f89beb1f060e59e5fcd1"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_pascal/types.rs: doc/src/codegen/v2/lang_pascal/types.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in azul_doc::codegen::v2::lang_pascal::types::generate_types at line 44. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_pascal/types.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":"doc/src/codegen/v2/lang_pascal/types.rs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bae2051e4425aad0ae7f16eae6d3ff0ef7bcd1d0c4771ead3e015821f31b06a"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/fluent.rs: layout/src/fluent.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 18 in FluentLocaleBundle::format at line 218. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/fluent.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":"layout/src/fluent.rs"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bf5c7e8845f083c01455618a163b49cbc212d6a6f3c32fc560b2ebee4d1d554"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/telemetry/config.rs: layout/src/telemetry/config.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 18 in azul_layout::telemetry::config::apply_env at line 505. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/telemetry/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":"layout/src/telemetry/config.rs"},"region":{"startLine":505}}}],"partialFingerprints":{"codehealthFindingId/v1":"707ecbe5fccc612302f40fe25a7b165b113a9dacff51fb349f7c7e0cc7809e10"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/extra/gamepad/android.rs: dll/src/desktop/extra/gamepad/android.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 18 in azul_dll::desktop::extra::gamepad::android::keycode_to_button at line 61. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/extra/gamepad/android.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":"dll/src/desktop/extra/gamepad/android.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc53634c7c390b4b612082662be31bf7a9fd90cbe3db64289dfb2fde8b9905ea"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/managers/scroll_registration.rs: layout/src/managers/scroll_registration.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in azul_layout::managers::scroll_registration::register_scroll_nodes 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/managers/scroll_registration.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":"layout/src/managers/scroll_registration.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"59f7e1a2c59dd24de85bb2a6fe25dfe34ba209083aa894b16ecdca75af28e4ff"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/extra/camera/v4l2.rs: dll/src/desktop/extra/camera/v4l2.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 22 in azul_dll::desktop::extra::camera::v4l2::open at line 317. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/extra/camera/v4l2.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":"dll/src/desktop/extra/camera/v4l2.rs"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0185447a44784a0eb03eb3ca8d61a393615aa0347542c20e8d9e4e66dfea08d"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/docgen/search.rs: doc/src/docgen/search.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in azul_doc::docgen::search::generate_search_index at line 47. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/docgen/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":"doc/src/docgen/search.rs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"6661a6d49666c37e5d1994e4004cc8b4bd99bdca980eff22d31bdcdaec89603d"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_lisp/types.rs: doc/src/codegen/v2/lang_lisp/types.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 21 in azul_doc::codegen::v2::lang_lisp::types::emit_monomorphized_alias at line 348. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_lisp/types.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":"doc/src/codegen/v2/lang_lisp/types.rs"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"657d0307a9ad88c61c3fd28c878e6cdec2c28c0375970b91663a1f566e7fde5f"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/patch/mod.rs: doc/src/patch/mod.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 21 in azul_doc::patch::apply_version_patch at line 906. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/patch/mod.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":"doc/src/patch/mod.rs"},"region":{"startLine":906}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2437b2500dd5e7326866a0792cadfbb4d68408c0d1f8d86874b1fbb4c7b25b4"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/web/config.rs: dll/src/web/config.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 21 in azul_dll::web::config::parse_web_config at line 114. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/web/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":"dll/src/web/config.rs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"c814d4113a7a61ac339584cb063ccbd6b1fd5f6119c21d7b966cd93e66e6b6ed"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/mobile/mod.rs: doc/src/mobile/mod.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 28 in azul_doc::mobile::handle_mobile_command 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/mobile/mod.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":"doc/src/mobile/mod.rs"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"b363362f93498909b207fd2d2287747e5b720f12de40ab28a8154c79c3807a9b"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/extra/permission/linux.rs: dll/src/desktop/extra/permission/linux.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in azul_dll::desktop::extra::permission::linux::portal_access_blocking at line 90. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/extra/permission/linux.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":"dll/src/desktop/extra/permission/linux.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2a2a100af9ac3a43da79619675aa2e7d95d3c70b334ddaeefe4a8191e76c6c7"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/extra/hid/macos.rs: dll/src/desktop/extra/hid/macos.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in azul_dll::desktop::extra::hid::macos::enumerate at line 308. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/extra/hid/macos.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":"dll/src/desktop/extra/hid/macos.rs"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"041c19816d41f9e022c0eb4fced5c843822f5dd1fd15d5402605197ee6f02654"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/autotest/categorize.rs: doc/src/autotest/categorize.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 25 in azul_doc::autotest::categorize::classify at line 105. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/autotest/categorize.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":"doc/src/autotest/categorize.rs"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"036c8d9bcd2d1f79295e42a82dcdca0d4d20ca9620b73aa70204e593bf4835f2"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/shell2/linux/wayland/gl.rs: dll/src/desktop/shell2/linux/wayland/gl.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in GlContext::new at line 54. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/shell2/linux/wayland/gl.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":"dll/src/desktop/shell2/linux/wayland/gl.rs"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e7de23a1052fb76d1c8eb1fe4e76ee42ec12a108d3971cf2c78aab6f422676c"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/doc_coverage/mod.rs: doc/src/doc_coverage/mod.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 24 in azul_doc::doc_coverage::run at line 97. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/doc_coverage/mod.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":"doc/src/doc_coverage/mod.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"c12b49b0c345ab34f7121b8b00f1890b7eb3bb4167a8d0a483f3e45b7836cae4"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: scripts/android/AzulGamepad.java: scripts/android/AzulGamepad.java changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 18 in AzulGamepad.onCapturedPointer at line 252. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- scripts/android/AzulGamepad.java\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":"scripts/android/AzulGamepad.java"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dd581281fa3353a71ac187a576857f4691716b4bfeb8fd92785ab43a91122fe"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/extra/screencap/linux.rs: dll/src/desktop/extra/screencap/linux.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in azul_dll::desktop::extra::screencap::linux::read at line 1182. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/extra/screencap/linux.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":"dll/src/desktop/extra/screencap/linux.rs"},"region":{"startLine":1182}}}],"partialFingerprints":{"codehealthFindingId/v1":"91cd2c4ae283f8cc77315481ff185d61e21a88567424a065fdb471096888d438"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/extra/video_codec/videotoolbox.rs: dll/src/desktop/extra/video_codec/videotoolbox.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in VtDecoder::decode at line 903. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/extra/video_codec/videotoolbox.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":"dll/src/desktop/extra/video_codec/videotoolbox.rs"},"region":{"startLine":903}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba53f1bc004fe832563f43013fc5e6db6fa877b24e3c106a468500e1a0565be5"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: layout/src/telemetry/queue.rs: layout/src/telemetry/queue.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in azul_layout::telemetry::queue::upload_pending_with_timeout at line 234. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/telemetry/queue.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":"layout/src/telemetry/queue.rs"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"28ef0792ea605ee80b5a71c74ea1f287eed0dfbdb3a0dc7bab95e744f9915b69"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: scripts/run_install_steps.py: scripts/run_install_steps.py changed 2 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 26 in run_install_steps.run_route at line 85. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- scripts/run_install_steps.py\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":"scripts/run_install_steps.py"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7028bd0f8c104568f0717e5bb67f22660f365164559100044f629e38c3a4b36"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/codegen/v2/lang_ada/types.rs: doc/src/codegen/v2/lang_ada/types.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in azul_doc::codegen::v2::lang_ada::types::emit_types at line 107. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_ada/types.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":"doc/src/codegen/v2/lang_ada/types.rs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b5b0fe1bdf6d39c00ec0a5794c1d2c97e60489646ece90324602a72a7dbaf6d"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: dll/src/desktop/extra/geolocation/windows.rs: dll/src/desktop/extra/geolocation/windows.rs changed 3 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in azul_dll::desktop::extra::geolocation::windows::imp::location_poll_loop at line 185. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/extra/geolocation/windows.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":"dll/src/desktop/extra/geolocation/windows.rs"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6d79a92ce2473455f4bd8bcb8880dc48b3c638ee3bfef2c23be047738127376"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: scripts/cargo_bin_path.py: scripts/cargo_bin_path.py changed 2 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 18 in cargo_bin_path.main 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- scripts/cargo_bin_path.py\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":"scripts/cargo_bin_path.py"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"341440451830919dea9564eb2dd617d293b03f1d5bf9769de48a619e5a014eb8"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: scripts/android/AzulSensors.java: scripts/android/AzulSensors.java changed 2 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in 1.onSensorChanged at line 35. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- scripts/android/AzulSensors.java\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":"scripts/android/AzulSensors.java"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fdc4e78409782096ac3b2dc83c4c6fedab269e0dbf918947961492802fa2ecd"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: doc/src/reftest/autoreview.rs: doc/src/reftest/autoreview.rs changed 2 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in azul_doc::reftest::autoreview::run_smallfixes_agent at line 607. 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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/reftest/autoreview.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":"doc/src/reftest/autoreview.rs"},"region":{"startLine":607}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c965c4b442367a32577055324c560d003ce80d86110e13f71ec93441b0cec4d"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: core/src/task.rs: core/src/task.rs changed 28 times in last 90 days and 16 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 Instant::linear_interpolate at line 480), 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(engine): every callback kind hands its context to the callee\u201D; \u201Cfix(animation): a declared transition animates on every toggle, on the CPU renderer too\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(api-remodel): 59 extreme-lint findings, and an int/real compare that was not SQLite\u0027s\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- core/src/task.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":"core/src/task.rs"},"region":{"startLine":480}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2af544e7aaacce16823026a4fe699d378f8104bb17dd27a33442df0fc229c37"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: core/src/refany.rs: core/src/refany.rs changed 22 times in last 90 days and 12 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 10 (its worst body is RefAny::replace_contents at line 1489), 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(engine): make widget callbacks reachable from managed hosts; null-tolerant RefAny::is_type\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(dl): a mid-list insert has FOUR side tables to keep, and a released RefAny must answer instead of aborting\u201D; \u201Cfix(refactor): get core to compile again, fix imports\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- core/src/refany.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":"core/src/refany.rs"},"region":{"startLine":1489}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bcff0028de07726b81f45bdbb95ec150e406fde637767df8161b63937d93e74"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: examples/go/main.go: examples/go/main.go changed 22 times in last 90 days and 12 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 2 (its worst body is main.main at line 32), 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(go): remove redundant RunWindow method in favor of generated Run method\u201D; \u201Cfix(go): update Go module path to azul.rs/ui/go\u201D; \u201Cfix(go): update Go examples and codegen to use azul.rs import paths instead of github.com\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- examples/go/main.go\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":"examples/go/main.go"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6987036205df29454047153c211c2c29cb4f8be157ff664873f9c7b8a61ce9e"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: layout/src/widgets/tooltip.rs: layout/src/widgets/tooltip.rs changed 17 times in last 90 days and 9 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 2 (its worst body is azul_layout::widgets::tooltip::on_tooltip_enter at line 279), 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(engine): make widget callbacks reachable from managed hosts; null-tolerant RefAny::is_type\u201D; \u201Cfix(widgets): repair the CI breakage the no-compile chunks accumulated\u201D; \u201Cfix(clippy): the extern \u0022C\u0022 callbacks keep the #[must_use] the gate wants\u201D; \u201Cfix(compile): get azul-layout to compile again\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/widgets/tooltip.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":"layout/src/widgets/tooltip.rs"},"region":{"startLine":279}}}],"partialFingerprints":{"codehealthFindingId/v1":"190c39ecd170050e1f9ab6679c0e02fce33272107bb9d2e4db23e208c54d7a08"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: layout/src/widgets/avatar.rs: layout/src/widgets/avatar.rs changed 13 times in last 90 days and 7 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 3 (its worst body is AvatarSize::diameter at line 89), 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: \u201Ctest(avatar,split_pane): the bugs these tests pinned no longer exist\u201D; \u201Cfix(clippy): aggressively apply clippy fixes\u201D; \u201Cfix(refactor): try reverting the theme renaming errors\u201D; \u201Cfix: rename theme -\u003E ui theme, fix IR analyzer\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/widgets/avatar.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":"layout/src/widgets/avatar.rs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"33fd46ea606552e003071b4d50c4055dac1ee06592f7460676bf55f1fb1b838e"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: core/src/db.rs: core/src/db.rs changed 12 times in last 90 days and 7 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 14 (its worst body is azul_core::db::az_db_merge_callback_thunk at line 739), 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(engine): every callback kind hands its context to the callee\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(build): the branch\u0027s own compile errors from its last CI run (34146408249)\u201D; \u201Cfix(api-remodel): 59 extreme-lint findings, and an int/real compare that was not SQLite\u0027s\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- core/src/db.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":"core/src/db.rs"},"region":{"startLine":739}}}],"partialFingerprints":{"codehealthFindingId/v1":"d74f265b9928d7b2ff9074a4c3456510e50008cb1a5e76553eb865a2cd05cccc"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: layout/src/managers/gpu_state.rs: layout/src/managers/gpu_state.rs changed 11 times in last 90 days and 7 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 12 (its worst body is GpuStateManager::update_scrollbar_transforms at line 261), 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(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(render): an idle window asked WebRender for a frame 59 times a second\u201D; \u201Cfix(scroll): a wheel gesture never ended \u2014 settle_scroll_gesture had no caller (2c-iv)\u201D; \u201Cfix(input): 13a part 1 \u2014 azul-core and azul-layout compile\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/managers/gpu_state.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":"layout/src/managers/gpu_state.rs"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"383735929e7a1c00d2b33592b52ab700e562a089af504b97d20f03d9d4f7449b"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: doc/src/codegen/v2/lang_fortran/functions.rs: doc/src/codegen/v2/lang_fortran/functions.rs changed 9 times in last 90 days and 6 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 11 (its worst body is azul_doc::codegen::v2::lang_fortran::functions::should_emit_function at line 81), 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(fortran): the alias scheme hashed 31 symbols out of reach\u201D; \u201Cfix(clippy): aggressively apply clippy fixes\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(codegen): recursive types keep the traits they declare, in 23 bindings at once\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_fortran/functions.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":"doc/src/codegen/v2/lang_fortran/functions.rs"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"8efba49beff7e3e05e0929b8147934f858ec725132f5372045ff92ef240cabe5"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: core/src/log_filter.rs: core/src/log_filter.rs changed 9 times in last 90 days and 6 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 14 (its worst body is azul_core::log_filter::category_from_name at line 225), 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(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(log): stderr_echo() never read the environment, so a direct emit went nowhere\u201D; \u201Cfix(refactor): get core to compile again, fix imports\u201D; \u201Cfix(core): restore the qualified \u0060alloc::vec::Vec\u0060 in log_filter::parse\u0027s signature\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- core/src/log_filter.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":"core/src/log_filter.rs"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"c33f8fe9f20d5071ec8df80f2b91a67c7f05bcc11b0e6feb5eebdff70cb3dd6b"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: doc/src/codegen/v2/lang_csharp/functions.rs: doc/src/codegen/v2/lang_csharp/functions.rs changed 8 times in last 90 days and 6 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 11 (its worst body is azul_doc::codegen::v2::lang_csharp::functions::should_emit_function at line 121), 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(bindings): catch at every callback boundary, log, return the fallback\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(codegen): recursive types keep the traits they declare, in 23 bindings at once\u201D; \u201Cfix(codegen): one shared predicate closes the \u0060*VecDestructor\u0060 gap in twenty bindings\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_csharp/functions.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":"doc/src/codegen/v2/lang_csharp/functions.rs"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"72888f647a17c0f169be743865c9ab279504c9b2c467ec0363a822a8a41d23d0"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: doc/src/codegen/v2/lang_pascal/functions.rs: doc/src/codegen/v2/lang_pascal/functions.rs changed 7 times in last 90 days and 6 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 11 (its worst body is azul_doc::codegen::v2::lang_pascal::functions::should_emit_function at line 90), 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(pascal): 45 constructors freed uninitialised memory\u201D; \u201Cfix(clippy): aggressively apply clippy fixes\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(codegen): recursive types keep the traits they declare, in 23 bindings at once\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_pascal/functions.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":"doc/src/codegen/v2/lang_pascal/functions.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"eba8f19756e808ba8a73f77e1bfa9f53a2ff115c3262b6aac41cde76b9599a3e"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: dll/src/desktop/extra/capability.rs: dll/src/desktop/extra/capability.rs changed 9 times in last 90 days and 5 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 PlatformCapability::sensors at line 264), 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(iroh): compile the engine only where its crypto provider builds\u201D; \u201Cfix(build): ship the 32-bit Linux artifacts without the Db engine, which cannot compile there\u201D; \u201Cfix(sensors): real IMU capability probes on macOS/Windows [MWA-C-sensors]\u201D; \u201Cfix(geolocation): Windows COM Location API provider, real fix timestamps [MWA-C-geolocation]\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/extra/capability.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":"dll/src/desktop/extra/capability.rs"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"640d904e3d8fa3715e9de6697fdb8b0e219955370ec4ef909a36ad3f360a1990"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: doc/src/codegen/v2/lang_java/functions.rs: doc/src/codegen/v2/lang_java/functions.rs changed 8 times in last 90 days and 5 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 11 (its worst body is azul_doc::codegen::v2::lang_java::functions::should_emit_function at line 154), 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(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(codegen): recursive types keep the traits they declare, in 23 bindings at once\u201D; \u201Cfix(codegen): one shared predicate closes the \u0060*VecDestructor\u0060 gap in twenty bindings\u201D; \u201Cfix(codegen): C#, Java, Node and PowerShell stop hiding the one derive they had\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_java/functions.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":"doc/src/codegen/v2/lang_java/functions.rs"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"c31630e9b091d04c193c2fa1b251d69d051def4d0439ec8f5887a443104f571e"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: dll/src/desktop/shell2/common/log_gate.rs: dll/src/desktop/shell2/common/log_gate.rs changed 8 times in last 90 days and 5 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 13 (its worst body is azul_dll::desktop::shell2::common::log_gate::category_of at line 48), 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(log): log_*! printed nothing in the shipped DLL\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(diagnostics): a framework warning killed the app when stderr went away\u201D; \u201Cfix(input): four bugs behind the scrolling, redraw, teardown and log noise\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/shell2/common/log_gate.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":"dll/src/desktop/shell2/common/log_gate.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"21634cc349ce6634dc77a07cda778f56cc54b6f9c192af8ffd054376e5e70741"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: dll/src/desktop/extra/camera/avfoundation.rs: dll/src/desktop/extra/camera/avfoundation.rs changed 8 times in last 90 days and 5 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 azul_dll::desktop::extra::camera::avfoundation::preset_for at line 123), 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: \u201Cchore(dll): cargo fix --lib \u2014 442 compiler-suggested fixes across 30 files\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\u201D; \u201Cci: the tier the Clippy gate was hiding \u2014 seven fixes for ten red jobs\u201D; \u201Cfix(dll): macOS-only compile errors the Linux CI never saw\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/extra/camera/avfoundation.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":"dll/src/desktop/extra/camera/avfoundation.rs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"e29e7c3852cbf463161a73d19515d3bd18262c5d683b1561f53504edfeeaf71b"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: doc/src/codegen/v2/lang_node/functions.rs: doc/src/codegen/v2/lang_node/functions.rs changed 7 times in last 90 days and 5 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 azul_doc::codegen::v2::lang_node::functions::should_emit_function at line 53), 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(node): Option\u003CBoxed\u003E payloads were read after the option was freed\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(codegen): one shared predicate closes the \u0060*VecDestructor\u0060 gap in twenty bindings\u201D; \u201Cfix(codegen): C#, Java, Node and PowerShell stop hiding the one derive they had\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_node/functions.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":"doc/src/codegen/v2/lang_node/functions.rs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"f709b1913877aeed2c9abdcb8f325462e4df1aab3310b3f29015ba5862b826e6"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: doc/src/codegen/v2/lang_ocaml/functions.rs: doc/src/codegen/v2/lang_ocaml/functions.rs changed 7 times in last 90 days and 5 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 11 (its worst body is azul_doc::codegen::v2::lang_ocaml::functions::should_emit_function at line 61), 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(ocaml): aliases had the wrong ABI size, and VecRef lost its length\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(codegen): recursive types keep the traits they declare, in 23 bindings at once\u201D; \u201Cfix(codegen): one shared predicate closes the \u0060*VecDestructor\u0060 gap in twenty bindings\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_ocaml/functions.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":"doc/src/codegen/v2/lang_ocaml/functions.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ebae8f8a370f37f75e3be9c9fc7074997cbd1e5c4a4f8bdc90a81df3fe2b638"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: dll/src/desktop/logging.rs: dll/src/desktop/logging.rs changed 6 times in last 90 days and 5 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 11 (its worst body is azul_dll::desktop::logging::set_up_panic_hooks at line 115), 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(panic): a recovered panic must not open the fatal dialog\u201D; \u201Cfix(dll): the fatal-error dialog fits on the screen\u201D; \u201Cchore(dll): cargo fix --lib \u2014 442 compiler-suggested fixes across 30 files\u201D; \u201Cfix(a11y): no TreeUpdate can abort the process; scroll updates the tree; crashes report\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/logging.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":"dll/src/desktop/logging.rs"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"328428bb8c62111ef03f716aac18468bb66fa773bd479273934ed198fe21c833"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: dll/src/desktop/shell2/linux/x11/accessibility.rs: dll/src/desktop/shell2/linux/x11/accessibility.rs changed 6 times in last 90 days and 5 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 5 (its worst body is LinuxAccessibilityAdapter::update_tree at line 87), 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(panic): a recovered panic must not open the fatal dialog\u201D; \u201Cfix(a11y): hand a waiting adapter the whole tree, never an increment\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(a11y): aria-live attribute parsing \u002B AT-SPI root window bounds [MWA-C-a11y]\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/shell2/linux/x11/accessibility.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":"dll/src/desktop/shell2/linux/x11/accessibility.rs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b0aba899cca1e898529709455c28d3d408c9b475ec0d2829403132a634638fd"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: doc/src/reftest/pipeline.rs: doc/src/reftest/pipeline.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 10 (its worst body is azul_doc::reftest::pipeline::extract_metadata_from_string at line 135), 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(clippy): aggressively apply clippy fixes\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(reftest): the hermetic fontconfig was never loaded \u2014 FONTCONFIG_FILE was relative\u201D; \u201Cfix(reftest): pin the oracle\u0027s text rasterisation, not just its font families\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/reftest/pipeline.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":"doc/src/reftest/pipeline.rs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2e7314772f5f0de8abcc3fb1ac6baf05bc3c367d36e3465ea9f8fccbd04cd26"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: doc/src/codegen/v2/lang_lisp/functions.rs: doc/src/codegen/v2/lang_lisp/functions.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 11 (its worst body is azul_doc::codegen::v2::lang_lisp::functions::should_emit_function at line 48), 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(clippy): aggressively apply clippy fixes\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(codegen): recursive types keep the traits they declare, in 23 bindings at once\u201D; \u201Cfix(codegen): one shared predicate closes the \u0060*VecDestructor\u0060 gap in twenty bindings\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_lisp/functions.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":"doc/src/codegen/v2/lang_lisp/functions.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"78e741716bd2d186d80c0ada58cab69bc8bab3a38ee74a2fa333a5ba8b138ef4"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: dll/src/desktop/shell2/windows/accessibility.rs: dll/src/desktop/shell2/windows/accessibility.rs changed 5 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 WindowsAccessibilityAdapter::update_tree at line 96), 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(panic): a recovered panic must not open the fatal dialog\u201D; \u201Cfix(a11y): hand a waiting adapter the whole tree, never an increment\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(a11y,hover,focus): output-drain sweep - deliver what was computed [MWA-A3]\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/shell2/windows/accessibility.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":"dll/src/desktop/shell2/windows/accessibility.rs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"86b1bdfa40a4e8f821b34245a6302b4dc6c0725921af02e883473956b9d941e4"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: doc/src/codegen/v2/lang_ada/functions.rs: doc/src/codegen/v2/lang_ada/functions.rs changed 5 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 11 (its worst body is azul_doc::codegen::v2::lang_ada::functions::should_emit_function at line 64), 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(clippy): aggressively apply clippy fixes\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(codegen): recursive types keep the traits they declare, in 23 bindings at once\u201D; \u201Cfix(codegen): one shared predicate closes the \u0060*VecDestructor\u0060 gap in twenty bindings\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_ada/functions.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":"doc/src/codegen/v2/lang_ada/functions.rs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b4d47eef688041cc01eafadefb2cfedf7d299aab9ca65056ed4c2a1fdf8be47"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: doc/src/codegen/v2/lang_nim/functions.rs: doc/src/codegen/v2/lang_nim/functions.rs changed 5 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 11 (its worst body is azul_doc::codegen::v2::lang_nim::functions::should_emit_function at line 49), 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(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(codegen): recursive types keep the traits they declare, in 23 bindings at once\u201D; \u201Cfix(codegen): one shared predicate closes the \u0060*VecDestructor\u0060 gap in twenty bindings\u201D; \u201Cfix(e2e): scala JVM flag, nim codegen\u002Bcrash, odin/powershell Windows\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_nim/functions.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":"doc/src/codegen/v2/lang_nim/functions.rs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbb87abae3b2de737f33bd3f28ce721c82bb6d95e4ac103bb3fc5d73144cb6ea"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: layout/src/managers/eyedropper.rs: layout/src/managers/eyedropper.rs changed 5 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 2 (its worst body is EyedropperManager::fold_result at line 83), 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(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(layout): clear the 311 clippy errors, and the wasm clock gate, in azul-layout\u201D; \u201Cfix(linux): the eyedropper no longer kills its picker popup; copy-out reads the host buffer\u201D; \u201Cfix(clippy): satisfy the extreme -D warnings lints after the rebase\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/managers/eyedropper.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":"layout/src/managers/eyedropper.rs"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2a75d24b4811c0e0ca0f7707170dd5859c9ac03bb212a998b3c09e7b5fbeefe"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: doc/src/codegen/v2/lang_racket/functions.rs: doc/src/codegen/v2/lang_racket/functions.rs changed 4 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 11 (its worst body is azul_doc::codegen::v2::lang_racket::functions::should_emit_function at line 48), 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(clippy): aggressively apply clippy fixes\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(codegen): recursive types keep the traits they declare, in 23 bindings at once\u201D; \u201Cfix(codegen): one shared predicate closes the \u0060*VecDestructor\u0060 gap in twenty bindings\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_racket/functions.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":"doc/src/codegen/v2/lang_racket/functions.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"74590f4daf270a80ba7a70f0a3adb3cd6c5db0c4b8963b76af85bd3a093cd891"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: doc/src/codegen/v2/lang_crystal/functions.rs: doc/src/codegen/v2/lang_crystal/functions.rs changed 5 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 5 (its worst body is azul_doc::codegen::v2::lang_crystal::functions::generate_funs at line 32), 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(codegen): detect callbacks by structure; shadow C API for every one\u201D; \u201Cfix(clippy): aggressively apply clippy fixes\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_crystal/functions.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":"doc/src/codegen/v2/lang_crystal/functions.rs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe87a8e15db3a3e5a7cff7a5bd556c882cf883a69e944dfe3ba8a9fffd03efa3"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: doc/src/codegen/v2/lang_v/functions.rs: doc/src/codegen/v2/lang_v/functions.rs changed 5 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 4 (its worst body is azul_doc::codegen::v2::lang_v::functions::generate_externs at line 32), 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(codegen): detect callbacks by structure; shadow C API for every one\u201D; \u201Cfix(clippy): aggressively apply clippy fixes\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_v/functions.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":"doc/src/codegen/v2/lang_v/functions.rs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"3aa21315f6f315a133e9a349ae111ebd810b0eef08678a6b9bee165dc90443e6"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: doc/src/codegen/v2/lang_perl/managed.rs: doc/src/codegen/v2/lang_perl/managed.rs changed 5 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 5 (its worst body is azul_doc::codegen::v2::lang_perl::managed::emit_managed_prelude at line 29), 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: \u201Ctest(codegen): bug-class tests for the language bindings\u201D; \u201Cfix(clippy): aggressively apply clippy fixes\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_perl/managed.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":"doc/src/codegen/v2/lang_perl/managed.rs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc38621891e6836e1f711cec701b6976453aa7ac55f04586e930e45cf9fd8e32"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: dll/src/desktop/extra/geolocation/macos.rs: dll/src/desktop/extra/geolocation/macos.rs changed 5 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 8 (its worst body is azul_dll::desktop::extra::geolocation::macos::location_manager_did_update at line 171), 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: \u201Cchore(dll): cargo fix --lib \u2014 442 compiler-suggested fixes across 30 files\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(geolocation): Windows COM Location API provider, real fix timestamps [MWA-C-geolocation]\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/extra/geolocation/macos.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":"dll/src/desktop/extra/geolocation/macos.rs"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fa630cc5cd093354c451ee74961e52cb18a4f99fe9dcda99af2c4f8300bced8"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: dll/src/desktop/extra/map/svg.rs: dll/src/desktop/extra/map/svg.rs changed 5 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 13 (its worst body is MapCss::parse at line 107), 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(format): run rustfmt and apply all patches until convergence\u201D; \u201Cchore(fmt): format this branch\u0027s files the way fix/simplify-comments did\u201D; \u201Cfix(ci): round 4 - FFI field order \u002B variant-predicate collision, test harness fixes, transform order\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/extra/map/svg.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":"dll/src/desktop/extra/map/svg.rs"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"91d71069359a76d3e9080ab85359a792a773b6727293a280857a5af212124ad3"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: layout/src/icu_macos.rs: layout/src/icu_macos.rs changed 5 times in last 90 days and 3 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 IcuLocalizer::pluralize at line 134), 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(clippy): aggressively apply clippy fixes\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix: un-ignore and fix all previously-#[ignore]d bugs (core/css/layout)\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/icu_macos.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":"layout/src/icu_macos.rs"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b3f3324df51a5a161b5b8f792bc85c81c409f3205346d9369496a2058cbc93d"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: core/src/haptics.rs: core/src/haptics.rs changed 5 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 12 (its worst body is HapticPattern::fallback at line 144), 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(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(layout,core): ICU parity built azul-layout without std or text_layout\u201D; \u201Cfix(core): clear the 138 clippy errors the input-wiring stack left in azul-core\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- core/src/haptics.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":"core/src/haptics.rs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"309ecc85e70599114ebfeb0e675e9abd6e7ffdb2d38e1a03cde6a1c009f5aeb1"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: css/src/shape.rs: css/src/shape.rs changed 5 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 13 (its worst body is CssShape::cmp at line 269), 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(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(css): crash \u002B correctness bugs (untrusted-input panics, overflow, Eq/Ord)\u201D; \u201Cfix(clippy): extreme-lint gate green across css/core/layout\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- css/src/shape.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":"css/src/shape.rs"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"716bec7856afcb4afea714f042d8e1a5a9c385d8508e20039a7cb3093fd4dc29"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: dll/src/desktop/extra/biometric/android.rs: dll/src/desktop/extra/biometric/android.rs changed 5 times in last 90 days and 3 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 azul_dll::desktop::extra::biometric::android::map_result at line 123), 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(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(android): EVERY Rust-\u003EJava call resolved against the wrong class loader\u201D; \u201Cfix(android): a missing find_class exception clear was killing the process\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/extra/biometric/android.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":"dll/src/desktop/extra/biometric/android.rs"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4f697d45943d0c4b69d6e11c39b3e745e8301f8d592106ad9c4efc3e8b58727"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: dll/src/desktop/extra/geolocation/android.rs: dll/src/desktop/extra/geolocation/android.rs changed 5 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 3 (its worst body is azul_dll::desktop::extra::geolocation::android::handle_event at line 33), 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(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(android): EVERY Rust-\u003EJava call resolved against the wrong class loader\u201D; \u201Cfix(android): a missing find_class exception clear was killing the process\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/extra/geolocation/android.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":"dll/src/desktop/extra/geolocation/android.rs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddf0d6e7adcf60183afe16dda54be74d86406fcfe882f04521834d5e7930b720"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: dll/src/desktop/extra/keyring/android.rs: dll/src/desktop/extra/keyring/android.rs changed 5 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 12 (its worst body is azul_dll::desktop::extra::keyring::android::Java_com_azul_keyring_AzulKeyring_nativeOnKeyringResult at line 128), 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(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(android): EVERY Rust-\u003EJava call resolved against the wrong class loader\u201D; \u201Cfix(android): a missing find_class exception clear was killing the process\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/extra/keyring/android.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":"dll/src/desktop/extra/keyring/android.rs"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"bee746572b4d32b1f82f5b7398c48773c4a9e25c5c4edc1661bed5caaec6afc2"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: layout/src/managers/device_events.rs: layout/src/managers/device_events.rs changed 5 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 5 (its worst body is DeviceEventManager::get_pending_events at line 149), 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(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(layout): clear the 311 clippy errors, and the wasm clock gate, in azul-layout\u201D; \u201Cfix(input): 13a part 1 \u2014 azul-core and azul-layout compile\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/managers/device_events.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":"layout/src/managers/device_events.rs"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"d10bf0628e2ca20fc23b63fe6a27b25d4de89650c107725f901cb776d03ce62a"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: layout/src/managers/hid.rs: layout/src/managers/hid.rs changed 5 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 2 (its worst body is HidChannel::push_report at line 63), 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(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(layout): the two lints master\u0027s Clippy caught in 79e69d3ab\u201D; \u201Cfix(layout): clear the 311 clippy errors, and the wasm clock gate, in azul-layout\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/managers/hid.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":"layout/src/managers/hid.rs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6c30a75c79af8e7dc3563098bd4b3c7cee13ed13f2941f837e860a0526b91a7"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: layout/src/telemetry/crash_mail.rs: layout/src/telemetry/crash_mail.rs changed 5 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 7 (its worst body is azul_layout::telemetry::crash_mail::send_crash_reports at line 179), 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(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(text): caret survives relayout and paints over glyphs; strips stop dropping glyphs; click-outside blurs\u201D; \u201Cfix(a11y): no TreeUpdate can abort the process; scroll updates the tree; crashes report\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- layout/src/telemetry/crash_mail.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":"layout/src/telemetry/crash_mail.rs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5ac3037be83a7135b09bf49d93e741ee6d1dd7143152cbe80949b1296cdc689"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: doc/src/docgen/blog.rs: doc/src/docgen/blog.rs changed 5 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 7 (its worst body is azul_doc::docgen::blog::preprocess_markdown_content at line 57), 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(blog): the post title is a title, and \u0022Read more\u0022 is a stone button\u201D; \u201Cfix(website): one metal ribbon at the tab corner, plus a prose and theme pass\u201D; \u201Crefactor(website): drop the hero lede, rework nav, fix the mid-width hero\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/docgen/blog.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":"doc/src/docgen/blog.rs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b58f7e035e0fe33547dc63a373be871f40de8036e8855f273b37160c6b0d407"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: doc/src/docgen/donate.rs: doc/src/docgen/donate.rs changed 5 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 8 (its worst body is azul_doc::docgen::donate::generate_donation_page at line 18), 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(website): one metal ribbon at the tab corner, plus a prose and theme pass\u201D; \u201Crefactor(website): drop the hero lede, rework nav, fix the mid-width hero\u201D; \u201Cfix(website,docs): truthful install instructions, Copy buttons, donate cleanup, /ui link sweep\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/docgen/donate.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":"doc/src/docgen/donate.rs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"58078ce4d6c39165a08a2755ba3e18cceae0da762a8fe1a8f5c25f3bb2d1d3f6"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: doc/src/codegen/v2/lang_lisp/wrappers.rs: doc/src/codegen/v2/lang_lisp/wrappers.rs changed 4 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 10 (its worst body is azul_doc::codegen::v2::lang_lisp::wrappers::idiomatic_method_name at line 472), 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(codegen): detect callbacks by structure; shadow C API for every one\u201D; \u201Cfix(clippy): aggressively apply clippy fixes\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_lisp/wrappers.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":"doc/src/codegen/v2/lang_lisp/wrappers.rs"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf348c9592a113e5f1efcb68ffc8e17738a7bee76478a73d4192c6637c09291e"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: doc/src/codegen/v2/lang_racket/wrappers.rs: doc/src/codegen/v2/lang_racket/wrappers.rs changed 4 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 5 (its worst body is azul_doc::codegen::v2::lang_racket::wrappers::generate_wrappers at line 36), 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(codegen): detect callbacks by structure; shadow C API for every one\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(e2e): triage the no-SKIP failures \u2014 zig/scala/nim/racket/odin \u002B honest skips\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_racket/wrappers.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":"doc/src/codegen/v2/lang_racket/wrappers.rs"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcc6bfd93eecda3b6232d326faf0e9c82ddfd92a8bdc11d74bbb1937b6542f20"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: doc/src/codegen/v2/lang_nim/wrappers.rs: doc/src/codegen/v2/lang_nim/wrappers.rs changed 4 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 5 (its worst body is azul_doc::codegen::v2::lang_nim::wrappers::generate_wrappers at line 35), 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(codegen): recognise the method receiver by its IR name in every backend\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(e2e): scala JVM flag, nim codegen\u002Bcrash, odin/powershell Windows\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_nim/wrappers.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":"doc/src/codegen/v2/lang_nim/wrappers.rs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"e36009c7f6dc1c35cb0a08789af00937bca5582391e4da62b037d072b47aba37"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: doc/src/codegen/v2/lang_vb6/wrappers.rs: doc/src/codegen/v2/lang_vb6/wrappers.rs changed 4 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 10 (its worst body is azul_doc::codegen::v2::lang_vb6::wrappers::emit_method at line 316), 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(codegen): recognise the method receiver by its IR name in every backend\u201D; \u201Cfix(clippy): aggressively apply clippy fixes\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_vb6/wrappers.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":"doc/src/codegen/v2/lang_vb6/wrappers.rs"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"19f465c258d32d9ebce9b78d930d6aa4e45b0f725f6fbb433f06b155f7dcf68f"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: dll/src/desktop/csd.rs: dll/src/desktop/csd.rs changed 4 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 3 (its worst body is azul_dll::desktop::csd::should_inject_csd at line 53), 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: \u201Cchore(dll): cargo fix --lib \u2014 442 compiler-suggested fixes across 30 files\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(csd): fractional drag residual, restore-before-drag, WM_MOVE frame origin, mobile guard [MWA-C-csd]\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/csd.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":"dll/src/desktop/csd.rs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"553a4a02cacb5a4a8712f4bf6f2c376fdf0c1dbbe12803ee1f9f7df802db4486"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: dll/src/desktop/shell2/linux/timer.rs: dll/src/desktop/shell2/linux/timer.rs changed 4 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 4 (its worst body is azul_dll::desktop::shell2::linux::timer::start_timerfd at line 11), 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(format): run rustfmt and apply all patches until convergence\u201D; \u201Ctest(shell): pin the seam-audit fixes so reverting one goes red\u201D; \u201Cfix(seam): audit batch \u2014 text editing, scrolling, and the native\u2194headless seam on all shells\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/shell2/linux/timer.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":"dll/src/desktop/shell2/linux/timer.rs"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"00f8dcf71d67be8e4cb5010a9afb5855958d73ca9073e056addbb122459db445"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: doc/src/codegen/v2/lang_algol68/functions.rs: doc/src/codegen/v2/lang_algol68/functions.rs changed 4 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 11 (its worst body is azul_doc::codegen::v2::lang_algol68::functions::should_emit_function at line 64), 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(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(codegen): recursive types keep the traits they declare, in 23 bindings at once\u201D; \u201Cfix(codegen): one shared predicate closes the \u0060*VecDestructor\u0060 gap in twenty bindings\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_algol68/functions.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":"doc/src/codegen/v2/lang_algol68/functions.rs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"4721ba04fc813fa4392395263e3cc210e32b930225f025da58d4e158360aaca3"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: doc/src/codegen/v2/lang_cobol/functions.rs: doc/src/codegen/v2/lang_cobol/functions.rs changed 4 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 11 (its worst body is azul_doc::codegen::v2::lang_cobol::functions::should_emit_function at line 70), 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(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(codegen): recursive types keep the traits they declare, in 23 bindings at once\u201D; \u201Cfix(codegen): one shared predicate closes the \u0060*VecDestructor\u0060 gap in twenty bindings\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_cobol/functions.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":"doc/src/codegen/v2/lang_cobol/functions.rs"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"b48f4e3f9dd578bd63cd274f9e69425a66e01d5adc59a04e72212beb0605f851"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: doc/src/codegen/v2/lang_freebasic/functions.rs: doc/src/codegen/v2/lang_freebasic/functions.rs changed 4 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 11 (its worst body is azul_doc::codegen::v2::lang_freebasic::functions::should_emit_function at line 47), 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(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(codegen): recursive types keep the traits they declare, in 23 bindings at once\u201D; \u201Cfix(codegen): one shared predicate closes the \u0060*VecDestructor\u0060 gap in twenty bindings\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_freebasic/functions.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":"doc/src/codegen/v2/lang_freebasic/functions.rs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3770976fa2966e56692ccab245ca4a484cd21cbc190c18d6ebf5882db0c1235"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: doc/src/codegen/v2/lang_smalltalk/functions.rs: doc/src/codegen/v2/lang_smalltalk/functions.rs changed 4 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 11 (its worst body is azul_doc::codegen::v2::lang_smalltalk::functions::should_emit_function at line 104), 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(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(codegen): recursive types keep the traits they declare, in 23 bindings at once\u201D; \u201Cfix(codegen): one shared predicate closes the \u0060*VecDestructor\u0060 gap in twenty bindings\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_smalltalk/functions.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":"doc/src/codegen/v2/lang_smalltalk/functions.rs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b7a8b3e858b19710cf27230364db8576cb17fbc6b723da58f7a2ba04f405917"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: doc/src/codegen/v2/lang_vb6/functions.rs: doc/src/codegen/v2/lang_vb6/functions.rs changed 4 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 11 (its worst body is azul_doc::codegen::v2::lang_vb6::functions::should_emit_function at line 62), 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(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix(codegen): recursive types keep the traits they declare, in 23 bindings at once\u201D; \u201Cfix(codegen): one shared predicate closes the \u0060*VecDestructor\u0060 gap in twenty bindings\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_vb6/functions.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":"doc/src/codegen/v2/lang_vb6/functions.rs"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a4b8cccab3565c5e5395927d992a10ef732817391938edda31b41ba4b3858d5"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: doc/src/codegen/v2/lang_julia/functions.rs: doc/src/codegen/v2/lang_julia/functions.rs changed 3 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 7 (its worst body is azul_doc::codegen::v2::lang_julia::functions::emit_ccall_wrapper at line 48), 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(codegen): detect callbacks by structure; shadow C API for every one\u201D; \u201Cfix(clippy): aggressively apply clippy fixes\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_julia/functions.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":"doc/src/codegen/v2/lang_julia/functions.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"265e5adeb3dfbc61aa203e022629d4f73d1361521c3fde109858357f6331f84e"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: doc/src/codegen/v2/lang_odin/functions.rs: doc/src/codegen/v2/lang_odin/functions.rs changed 3 times in last 90 days and 3 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 azul_doc::codegen::v2::lang_odin::functions::generate_aliases at line 90), 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(codegen): detect callbacks by structure; shadow C API for every one\u201D; \u201Cfix(clippy): aggressively apply clippy fixes\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- doc/src/codegen/v2/lang_odin/functions.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":"doc/src/codegen/v2/lang_odin/functions.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ec147fa129aa056a72689ea8cd1b80409cbc1a5aa11d2592407b77b83debbaa"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: dll/src/desktop/extra/iroh/mod.rs: dll/src/desktop/extra/iroh/mod.rs changed 3 times in last 90 days and 3 of those changes were fix/bug commits, so repair is the majority of this file\u0027s churn. Its max cyclomatic complexity is 4 (its worst body is IrohEndpoint::recv at line 268), 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(iroh): name SystemConfiguration among the prebuilt-.a system deps\u201D; \u201Cfix(iroh): link SystemConfiguration for the macOS interface and DNS probes\u201D; \u201Cfix(iroh): compile the engine only where its crypto provider builds\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/extra/iroh/mod.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":"dll/src/desktop/extra/iroh/mod.rs"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"33a4ebd00aba51d4c7bbbbdd8cd00136ac420882dce11e7af0c58aaf0189eb71"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: dll/src/desktop/extra/window_activation.rs: dll/src/desktop/extra/window_activation.rs changed 3 times in last 90 days and 3 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 azul_dll::desktop::extra::window_activation::raise_window at line 26), 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(windows): call WGL, pixel format, DPI and credential APIs through dlopen\u201D; \u201Cfix(format): run rustfmt and apply all patches until convergence\u201D; \u201Cfix: the C header\u0027s enum tag width, and the cross-target compile errors master had accumulated\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-24..2026-09-22, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-24 16:34:54 \u002B02:00\u0027 --until=\u00272026-09-22 16:34:54 \u002B02:00\u0027 --full-history --no-merges -- dll/src/desktop/extra/window_activation.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":"dll/src/desktop/extra/window_activation.rs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa1481e8807e9078b73bf33cbfcddbb234d6ff00ab7c593215cf32d15705032e"}},{"ruleId":"D19","level":"note","message":{"text":"Documentation: no licence statement: The README links to LICENSE but no licence statement appears in the document. Place a Licence header above the badge or add a short \u0027License\u0027 section stating the MIT license."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"README.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc71d4465cafafc3df7a1b646a8cd5f9a306761b307dc199a6de8c1c35d8b21d"}},{"ruleId":"D19","level":"warning","message":{"text":"Low XML-doc coverage: Hello: Hello: 0 % XML-doc coverage (0/5)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"examples/csharp/Hello.csproj"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e6904157e18bcd0ee4aeee149919f110059ce2c416467e34f4ff95d358dcdcb"}},{"ruleId":"D22","level":"warning","message":{"text":"Redundant naming for mutation vs immutable update. \u0027assign\u0027 implies mutation (void/return unit), while \u0027assigned\u0027 implies returning a new instance. However, both take a \u0027patch\u0027 and the return type of \u0027assign\u0027 is not explicitly shown as void but \u0027assigned\u0027 returns Self. In builder patterns, usually one method mutates and returns Self, or one returns a new instance. Having two methods with such similar names (\u0027assign\u0027 vs \u0027assigned\u0027) for what is likely the same logical operation (merging patch data) is confusing.: Remove \u0027assign\u0027 if \u0027assigned\u0027 is the intended builder-style method, or rename \u0027assigned\u0027 to \u0027with_patch\u0027 or \u0027merge\u0027 to clarify intent. If \u0027assign\u0027 is in-place mutation, ensure its return type is clearly void/unit to distinguish from \u0027assigned\u0027. (signatures: AccessibilityInfo.assign(patch: Self) | AccessibilityInfo.assigned(patch: Self): Self)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"2a8c19e2464d3f836a18ba571b38e08d417df16e94b69cd6bd00298dd7481339"}},{"ruleId":"D22","level":"warning","message":{"text":"Conflicting naming for Option unwrapping. \u0027into_option\u0027 typically implies consuming the wrapper to get the inner value (or the standard Option\u003CT\u003E). \u0027as_option\u0027 usually implies borrowing. However, both signatures return \u0060AccessibilityAction\u0060 (owned), not \u0060\u0026AccessibilityAction\u0060. This suggests \u0027as_option\u0027 is misnamed or \u0027into_option\u0027 is misnamed. Standard Rust convention is \u0027into_inner\u0027 or \u0027unwrap\u0027 for owned, and \u0027as_ref\u0027/\u0027as_mut\u0027 for borrowed. Using \u0027as_option\u0027 for an owned return is non-standard and confusing.: Rename \u0027as_option\u0027 to \u0027unwrap\u0027 or \u0027into_inner\u0027 if it consumes the OptionAccessibilityAction. If it borrows, the return type should be \u0060\u0026AccessibilityAction\u0060. Ensure consistency across all Option* types (OptionAccessibilityInfo, OptionAccessibilityRole, etc.). (signatures: OptionAccessibilityAction.into_option(): AccessibilityAction | OptionAccessibilityAction.as_option(): AccessibilityAction)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"11efc6289eed9a9980cc58c5bdeb8f3943b91d469128db263f3dcd528eee052f"}},{"ruleId":"D22","level":"warning","message":{"text":"Ambiguous naming for single-item construction. \u0027from_vec\u0027 suggests taking a collection (Vec), but the argument is a single \u0060AccessibilityAction\u0060. \u0027from_item\u0027 is clearer. Having both suggests \u0027from_vec\u0027 might be a typo or legacy name, or it takes a Vec in a different overload not shown, but the signature shows a single item. This creates confusion about whether to pass a single item or a collection.: Remove \u0027from_vec\u0027 if it only accepts a single item, or rename it to \u0027from_single\u0027 or \u0027from_item\u0027 and remove the duplicate \u0027from_item\u0027. If \u0027from_vec\u0027 is intended for a Vec, the signature is incorrect. (signatures: AccessibilityActionVec.from_vec(input: AccessibilityAction): Self | AccessibilityActionVec.from_item(item: AccessibilityAction): Self)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"bb72b96e1a70bcccfef3f9bad2798445bd660e6ea0951919e05eb471f65a0792"}},{"ruleId":"D22","level":"warning","message":{"text":"Inconsistent error handling for index access. \u0027get\u0027 returns the value directly (likely panicking on out-of-bounds), while \u0027c_get\u0027 returns an Option. This is a common pattern in C-FFI wrappers, but the naming \u0027c_get\u0027 is obscure. It should likely be \u0027get_safe\u0027 or \u0027try_get\u0027 to match standard Rust conventions, or \u0027get\u0027 should return an Option and \u0027get_unchecked\u0027 should return the value.: Rename \u0027c_get\u0027 to \u0027get_safe\u0027 or \u0027try_get\u0027 for clarity. Alternatively, make \u0027get\u0027 return Option and add \u0027get_unchecked\u0027 for the panicking version. (signatures: AccessibilityActionVec.c_get(index: usize): OptionAccessibilityAction | AccessibilityActionVec.get(index: usize): AccessibilityAction)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"a174129bec4555d917e2599049c46e6127d9c6bf07cde50354ed1a3a15cd571d"}},{"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":"f7f3c79b46eeb66f8c032e89f66805047be1e4adf5a3d52b129de4ef71f8ab2c"},"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":"cd9e41623382bc629172a3c95b34ae8b393a8fedccb0778a6c78d27ca3a1c5cb"},"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":"6fe1bc7e22b6da9bb467b9154d0d792e88e89d7e7f6926c423e6fab232dd9d52"},"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":"b80d83f6a3fba90af0614c28f585bfa49ef3781a113e72c69ad431d50ea9d3d1"},"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":"040276348e8559ded08e63fd24ae89f70f37225792e9698319fec391840e5038"},"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":"6610251cd453d842c837db931e53fdcee48c73d616e79221507fd05a6ce8fcf2"},"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":"42dce4ab3aecbc44e7e841eb02a616b12208c37743921e71f1ea7909cf13aac0"},"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":"c17b4876319eb19e07b38230fff7d20db1728d19aad73889deb0322c61dd242f"},"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":"e13c872f9217d782c22b61a5304d9e4129ca5c8f097574d4baaac5fc37a885bc"},"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":"e429e3c0e80f88d08631caf4698156fc8f976354da008430356cc65296b62446"},"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":"f7e188cecd139e02af60c4af2c07cef5e6e17eb14c4c50a95c76b449bce59fba"},"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":"674230146915c253cb254bf3940757eb3146babdf48555ea5aa5ee7790cee834"},"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":"0b7d402fe27c90114a5e1cb7342c2c41fb03526f75aae33acb4924f223c18491"},"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":"91da5670461a0b37b972022af9e4d97bac48bb3a7097d481b8b0e99d2bdbb23a"},"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":"2f38a87ae95a59a8428450428e71694b90391e594e28d31c15a1260eac74e9cd"},"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":"0ca3038d8e07beea3d559c7cce79047f8bd5406d567726ad7887db5394de8310"},"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":"0135a5b41ded175600af98ddd50d68cb86939103cb5146a0e33c093c73374eb5"},"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":"7b23fe44f6dd4fe6c4009cdb4ff426322e1b06b20865f8e1c3d6c6d56f5a5ff8"},"taxa":[{"id":"CWE-494","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":"695e3144b016d93c10d8e1f547073e18b50bc55bb450f6556507e5eca00c0d3a"},"taxa":[{"id":"CWE-494","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":"501b5b5ff9df838c5397cd368ef2c0fa26fd9cccf7854447e3e873b5673ac824"},"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":"851459c4b62b20b2adb8e6d3c52d9d261ce5ed513cf9c4f14f714471fa435587"},"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":"8071ad6eeeff81e8ffc1126aa69d896308ba0f1e61b2fa19e8547b5dd94696e9"},"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":"7f2121222f1fda0d0676f0d35c07c59481756c28887d77db3f3fd00d68fc977e"},"taxa":[{"id":"CWE-676","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":"7d4d3b885c4bfa25386c440e27dfb672a84bb0a99f3e15a19f138c080b12fdd2"},"taxa":[{"id":"CWE-676","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","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":"b11b891237bdf9f18dfe0b4cd8c853ba8d96ad1af6c1e291774f98891eace83d"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-1352","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","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":"0c62551f61802ac4b1e8a7b931eef10c679c966b170db2bebfa387df0a1fa511"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-1352","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","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":"42728c7fc6301600f8ffd4f1c9da933c0cdc732285c42d7a539d2289377154d1"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-1352","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","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":"df8ac64656896d97ae45df72bf50c85f56bc1e24263dc818330500ad52992bd9"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-1352","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","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":"7be28400275f7d9b953891488bc6ff86339c04005dee221f8bad1b06b7ad956d"},"taxa":[{"id":"CWE-79","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","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":"1f7de35c4efb3d58d4eef252fa7fed34a6de4da18cd5d51a442e4644c837ebb6"},"taxa":[{"id":"CWE-668","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","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":"f78701f3fe203b70d13d2b804cd775b5988f914561739d7f31fb9827977d7227"},"taxa":[{"id":"CWE-668","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","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":"fbe8c75ea593f15cde4be6ed55bee1e5fb97d11e96cde11ea9b4f76763fd9817"},"taxa":[{"id":"CWE-668","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","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":"ad27c4a9993247ca969f3268c8658b05e95193901ab6ac0ae3eed7a0044a0aa3"},"taxa":[{"id":"CWE-668","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":"0d3d2c2346bccaaa14c1bd0f0713c18ae4de849fffdc7282dbd533ab105c9398"},"properties":{"dependency":{"package":"rustls-webpki","version":"0.102.8","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]","[GHSA redacted]","RUSTSEC-2026-0049","RUSTSEC-2026-0098","RUSTSEC-2026-0099","RUSTSEC-2026-0104"],"reachability":{"kind":"unknown"}}}},{"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":"423f274256610b856f3942a60913dc49a565101cee85efcf47763acdd9238028"},"properties":{"dependency":{"package":"pyo3","version":"0.27.2","advisory":"[GHSA redacted]","aliases":["[GHSA redacted]","RUSTSEC-2026-0176","RUSTSEC-2026-0177"],"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":"ac07f6d7edfd49261e66a0ecf670dc83aeb27f637d0eaec58b89ac41744f7835"},"properties":{"dependency":{"package":"rsa","version":"0.9.10","advisory":"RUSTSEC-2023-0071","aliases":["[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"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":"9d7e2f5e4e133844171b9412d83e460349b527553e21e4eb5d4f1e038ed6831f"},"properties":{"dependency":{"package":"atomic-polyfill","version":"1.0.3","advisory":"RUSTSEC-2023-0089","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":"aa275dcc581e31816223ff250817b0083925776ca9db8bc9a83879cc85b97f8d"},"properties":{"dependency":{"package":"derivative","version":"2.2.0","advisory":"RUSTSEC-2024-0388","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":"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":"a42ca7416279f52063a649dbc505340ffc7c7a5727193e601ae1de8d6db75e3d"},"properties":{"dependency":{"package":"fxhash","version":"0.2.1","advisory":"RUSTSEC-2025-0057","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":"689df6ffc1e7aa9671d2a95e067ceaaa662095370e5474c0028a1d7a9f848fbf"},"properties":{"dependency":{"package":"bincode","version":"1.3.3","advisory":"RUSTSEC-2025-0141","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":"30ea78e120df3b2fd383f97f50fcf90c1bf75c7236b3b6095ab1263aa34af073"},"properties":{"dependency":{"package":"bincode","version":"2.0.1","advisory":"RUSTSEC-2025-0141","reachability":{"kind":"unknown"}}}},{"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":"fe2d688610b51e0a5a02c7c5dd1724a4986e40f2689fb84510e2ec0164c27d6a"}},{"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":"be9c57e2fb625c43c271d051f76b97f27b6976f4ec358ef8fea1d9cb5205f460"},"taxa":[{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"f9deb0b3e9568df1171bacf908174d514cb7e71041f1c1975b38340d1bde8fc0"}},{"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":"2100ab01f8cd55fd34f1874fd108eb0ef2ad67c33e162944288b8841e9bed282"},"taxa":[{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"d11c66cd191c7113e734c1eebdadf1fd024fda09707f24051c23c1c1c601a01a"},"taxa":[{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"5cfed0ee4e80785ce23c7083cffdead9acc6c64f9dce56a00ca7178bd3d7bee5"},"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":"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":"2ff21f85a8c15f83be96620f915e546555901991b73838dd545e4016636ad9a4"}},{"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":"9ff1ee9dd5615e2d512c1b5a7eb9a731208830cdc6ec1c07d8913d2a5c081e3c"}},{"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":"9e0f3459b79638a37e60cbd02c38023fe12af07a9f4389344a1f2c17a05fb726"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"becbc5502f94878197b05d70c7ef15f1353fd99a90efcb824b9c43f11ae5ce7a"}},{"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":"456d2c3f511799653c765ed1632fec68481d07b1aa9db4d76a6f5dab8c714fd8"},"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":"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":"38decd536cdf28356050bf316cf634fbd590dcf331b6722523fcc8709e562325"}},{"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":"d2f186b5e6dc3b9b3440158b20778190e8fe352ab89a929bff9cdce737abca01"}},{"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":"4f922ade00e1480db9bbc3fbf3b45b99a905f40b6c188e273d7867fc9c0f0f24"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"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":"5db4a0b53494e73179ae9aa527c7e8907d032b30606c6df796b7fb48555e0c62"},"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":"D31","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":"ccc0cc717a360059224d480b2bc872b7f88a881960a07fa78798e15be3c752b9"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: prop_cache.rs \u2194 macros.rs: \u0060core/src/prop_cache.rs\u0060 and \u0060css/src/props/macros.rs\u0060 change together 58% of the time (22 of the 38 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well \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 22 shared commits counted here, the most recent 3 are \u006087739d23\u0060 feat(css): 9a-i-b - spatial-navigation-contain and spatial-navigation\u2026; \u00603f9de5fc\u0060 feat(css): wire overscroll-behavior end to end, so overscroll can be \u2026; \u0060d51fa6e8\u0060 feat(css): -azul-app-region, the real property, and native window grabs \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"core/src/prop_cache.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdb4af56c66e9cf7b5bddc3252328ddb6fc64020387c289255f68c89d4cb090d"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: tabs.rs \u2194 text_input.rs: \u0060layout/src/widgets/tabs.rs\u0060 and \u0060layout/src/widgets/text_input.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 \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 \u00603964e334\u0060 fix(widgets): flex properties do nothing without \u0060display: flex\u0060; \u0060a81aa6cc\u0060 ffi: roll impl_managed_callback! to 16 widget callbacks \u002B internals doc; \u0060294043c8\u0060 refactor(dropdown): rewrite with clean CSS \u002B builder API, system:ui f\u2026 \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"layout/src/widgets/tabs.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6029f607d123e299728118cd9708368ac2974c989e9c3041475915d6940b42f0"}},{"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":"4274ff44919254fbff8c7ee80e6be36e1b5a2b7b892f73330553fa1e5f988283"}},{"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":"fe274ba5adebde25ca0b3db842e44cbb1aaeb7cfecfbb7215cd452596ba1f4c2"}},{"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":"c593d4dbd23724f337bfb8d2c1653812f143ae255bd9b59d4b3e9c37779fa6f4"}},{"ruleId":"D44","level":"warning","message":{"text":"End-of-life runtime: Rust 1.91: rust-toolchain.toml declares Rust 1.91 as this project\u0027s toolchain file, and Rust 1.91, superseded by 1.92 on 2025-12-11 (the Rust project patches only the current stable). An unsupported runtime receives no security patches, so every vulnerability disclosed in it since 2025-12-11 is present and unfixable without moving off it. This is a migration rather than an upgrade: there is no newer release of a runtime that has ended."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"dee48c4e5bf9bd07e3999f81f0c1285b44f14d8eb6a2c447f9ae879e24f72f66"}},{"ruleId":"AX9","level":"error","message":{"text":"Query writes persistent state on the read path: AsyncScreenshotGrabber.get_screenshot: \u0060AsyncScreenshotGrabber.get_screenshot\u0060 is a read-named query yet it performs a durable write on the read path (a persist to a store/repository). A query must stay side-effect-free so reads are safe to retry, cache, and route to a read replica; move the write into a command."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"webrender/core/src/screen_capture.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f80d03e1b23f12e4cf6a2cca90a3469eea753a463d992e7f00f9aeef48e81fb"}},{"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":"P10","level":"note","message":{"text":"Large public API surface: 3967/5559 types (71%) declared in the published library are public. For a library, every public type is a stability contract \u2014 keep implementation types off the surface and expose only the intended API."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ed2ba843444ae377c17142f58f714e281e4bd3f183ab100ee1fbef389875d3e6"}},{"ruleId":"P2","level":"note","message":{"text":"Logging is not universal: Only 4/7 runnable modules use logging (modules with no entry point or server are excluded \u2014 they are libraries a runnable module hosts). Silent: \u0060doc/aztest\u0060, \u0060layout\u0060, \u0060webrender/swgl\u0060."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"91a94e21d6d4d0e6a2003f94505b0b02b157176f0b24c4820f3f82b4447a97fe"}},{"ruleId":"P6","level":"note","message":{"text":"No changelog: No CHANGELOG/HISTORY/RELEASES file \u2014 what shipped when isn\u0027t easy to reconstruct for support or audit. (Versioning/tagging makes releases traceable, but a changelog records the what.)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"dda5aa5aed8cbb292c3ef2b733bc138f614293ae6426c85e98bf31ef330d9415"}},{"ruleId":"R1","level":"warning","message":{"text":"Type Safety: 0 typed \u00B7 10 plain JS \u2014 the untyped files are dll/src/desktop/shell2/common/debugger/debugger.js, scripts/docs_pdf_book.mjs, scripts/docs_pdf_cdp.mjs, scripts/e2e-web/lib/asserts.mjs, scripts/e2e-web/lib/cdp.mjs, scripts/e2e-web/lib/driver.mjs (\u002B4 more)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d00ee7953f55325a823d27e5db9657c80ca9b9861c0c0abf8fe487cd3fa586d3"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2 locations): dll/src/desktop/shell2/common/debugger/debugger.js:3534 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:3550 \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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":3534}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cd42f6ffa8b5b7f53e6fcd13048e4848f4cd3f428f5a1561e572b7d75a905d5"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2 locations): dll/src/desktop/shell2/common/debugger/debugger.js:939 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:1037 \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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":939}}}],"partialFingerprints":{"codehealthFindingId/v1":"081ac8858ec32a3b6234cccc676c245676766c44b8060b479d821654ee783c72"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2 locations): dll/src/desktop/shell2/common/debugger/debugger.js:4252 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:4312 \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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":4252}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa7e9b5ef5bda6993378a53ddea9ddaecaaba4f2c3a3f34269c2db913888e861"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2 locations): dll/src/desktop/shell2/common/debugger/debugger.js:3153 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:3181 \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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":3153}}}],"partialFingerprints":{"codehealthFindingId/v1":"da3a9b6fea02c74de19bd4dcbae7ade59a5a71c8202e5f514f0a14fd014731ba"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2 locations): dll/src/desktop/shell2/common/debugger/debugger.js:2842 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:2870 \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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":2842}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5ed94816935f4af61c6180a15543991b6adb7d4d3c56f9e8b45b3d34e1c3359"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2 locations): dll/src/desktop/shell2/common/debugger/debugger.js:2255 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:2580 \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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":2255}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef9099c7dc0b6d48528686228522925a6b1bf6c96a66d7064e10231c5558ac2d"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2 locations): dll/src/desktop/shell2/common/debugger/debugger.js:2572 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:2929 \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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":2572}}}],"partialFingerprints":{"codehealthFindingId/v1":"92bdcff7436490168009a62a0d51a526eb4cd2f7556b9ef9a9b2e3d3cbf3dcc6"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3 locations): dll/src/desktop/shell2/common/debugger/debugger.js:1408 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:2236 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:2993 \u2014 all 3 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":1408}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f806adda0ddcea4d84c8107c09f83f3732488144a1f85a6f3c63bb497d99477"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 5 locations): dll/src/desktop/shell2/common/debugger/debugger.js:1579 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:2025 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:2236 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:2581 \u00B7 \u002B1 more site(s) not listed \u2014 all 5 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":1579}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4fdf399dbe4154ab81e4d0bcd68553a2d786f820b21b83efecadf99edf4876f"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2 locations): dll/src/desktop/shell2/common/debugger/debugger.js:1923 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:1935 \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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":1923}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b5a3fe83fe812d9979b2e161ed7f05b1add92cbfc909cfc582744ea9b3f2200"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2 locations): dll/src/desktop/shell2/common/debugger/debugger.js:2352 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:2441 \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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":2352}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fc6876a8edc19bc097cc3f8a87b8d2cb61c552f7565fb55ef3323d6df7a7e1f"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2 locations): dll/src/desktop/shell2/common/debugger/debugger.js:3137 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:3167 \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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":3137}}}],"partialFingerprints":{"codehealthFindingId/v1":"868d495d17989b4cde6a71ff87885bb164eb4f9110b96eb114cd335046b9d916"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2 locations): dll/src/desktop/shell2/common/debugger/debugger.js:3582 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:3629 \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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":3582}}}],"partialFingerprints":{"codehealthFindingId/v1":"093f03c3ae73a3bece9823883b87f9fdad84bb2d32f7068dd612bd50579b3e9e"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2 locations): dll/src/desktop/shell2/common/debugger/debugger.js:3828 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:3950 \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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":3828}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe1b69731aec56d619ba9bacae357815fe5be6e7b5a015b798c672602789f060"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2 locations): dll/src/desktop/shell2/common/debugger/debugger.js:3939 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:4479 \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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":3939}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1394210f3bb08ab02685320e0a3b12f110d87cd0c7eaf8321b0ba9c8b488d37"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2 locations): dll/src/desktop/shell2/common/debugger/debugger.js:4130 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:4230 \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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":4130}}}],"partialFingerprints":{"codehealthFindingId/v1":"880a89f39d83db0ebbc50c8aa324e3bcb0c35bb7df6d617c1291fb759dfe33e6"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2 locations): dll/src/desktop/shell2/common/debugger/debugger.js:1442 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:1463 \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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":1442}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2535764f3b1f36897a79cd802fad4139712f7dfa401e4dcf49d680dbfe221be"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2 locations): dll/src/desktop/shell2/common/debugger/debugger.js:2915 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:2964 \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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":2915}}}],"partialFingerprints":{"codehealthFindingId/v1":"b802e5a6450d105ce96191e1402e6ad1cff2187d272015b71aa1ce20be12bf65"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2 locations): dll/src/desktop/shell2/common/debugger/debugger.js:3352 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:3389 \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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":3352}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f6162964ff67e073b8c4ce2cad7e3cfe9a54a22e277acf53ee8335c8318f76b"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2 locations): dll/src/desktop/shell2/common/debugger/debugger.js:1697 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:1705 \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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":1697}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b40227b8892de4f6cb2e2cd04af9852e3e9e82437253d5d09f20e24888a54b1"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2 locations): dll/src/desktop/shell2/common/debugger/debugger.js:1649 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:4731 \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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":1649}}}],"partialFingerprints":{"codehealthFindingId/v1":"832d8da6bc07d321999491dd5be5602d4e501ffcc41f8148cef9ac45fcc9cf7d"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 4 locations): dll/src/desktop/shell2/common/debugger/debugger.js:3707 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:4128 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:4201 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:4228 \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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":3707}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd6e2bce16e3aa0fa2731ec07c398ab0c17a37e6e9cf7db6882674ac88c8f73a"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2 locations): dll/src/desktop/shell2/common/debugger/debugger.js:2327 \u00B7 dll/src/desktop/shell2/common/debugger/debugger.js:2378 \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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":2327}}}],"partialFingerprints":{"codehealthFindingId/v1":"41f375069e59a67211b251f2e68d25c8244f79f5906d516180a3eb05c78e36cb"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function runStep (cyclomatic 69, cognitive 44): runStep has cyclomatic complexity 69 and cognitive complexity 44; 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":"scripts/e2e-web/lib/driver.mjs"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aeee12efab04d253a15a6c745aa53d1daef83c6347f7a6c64fc434ff7083f1a"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function runAssert (cyclomatic 53, cognitive 68): runAssert has cyclomatic complexity 53 and cognitive complexity 68; 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":"scripts/e2e-web/lib/asserts.mjs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"94068c71ba38d758ea888b7de82d089551fa9d180e17f9b9d83c53b58fb4b808"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function runTest (cyclomatic 42, cognitive 79): runTest has cyclomatic complexity 42 and cognitive complexity 79; 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":"scripts/e2e-web/run.mjs"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"acee6e90a267e5e69dabb433498bb4d826b4ea5b753c2ecaaa4ab3270c189cd9"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function decodePng (cyclomatic 39, cognitive 49): decodePng has cyclomatic complexity 39 and cognitive complexity 49; 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":"scripts/e2e-web/lib/png.mjs"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fcf50959ab4d35c3f2c138095e93cc9178a1b3245741538dc4deadf44e2769d"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function main (cyclomatic 37, cognitive 61): main has cyclomatic complexity 37 and cognitive complexity 61; 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":"scripts/e2e-web/run.mjs"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"71ffffbb0f61a9606a04c3282621ae1d062890e039af909d5f078aad6ed6a756"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function _renderTreeNode (cyclomatic 29, cognitive 34): _renderTreeNode has cyclomatic complexity 29 and cognitive complexity 34; 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":656}}}],"partialFingerprints":{"codehealthFindingId/v1":"78c6f6369f17df1b8cd9220728e19082bb98611f738d886838123c09df460714"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function _loop (cyclomatic 27, cognitive 27): _loop has cyclomatic complexity 27 and cognitive complexity 27; 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":4572}}}],"partialFingerprints":{"codehealthFindingId/v1":"ceba330b359ce107f24a19bb8f491eb3cc10b92c8357c01b895b7abfb875cef1"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function showComponentDetail (cyclomatic 26, cognitive 28): showComponentDetail has cyclomatic complexity 26 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":2265}}}],"partialFingerprints":{"codehealthFindingId/v1":"35906b8c1cc413bbd21ae8aab9b8132642eed7eb6e5871e11cbc07f6b54a1097"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function render (cyclomatic 26, cognitive 9): render has cyclomatic complexity 26 and cognitive complexity 9; 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":3449}}}],"partialFingerprints":{"codehealthFindingId/v1":"549b15674b65f89751ef5ee40d05e10c6d12e92353d042ed8fdbc9877dfdf4df"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function _parseSlashCommand (cyclomatic 23, cognitive 48): _parseSlashCommand has cyclomatic complexity 23 and cognitive complexity 48; 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":4753}}}],"partialFingerprints":{"codehealthFindingId/v1":"bffc107ffe2a486f39cce29ab0580c49cbba6dfc8828c5473cc17fe797b27a49"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function _loadComponentPreview (cyclomatic 22, cognitive 21): _loadComponentPreview has cyclomatic complexity 22 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 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":2590}}}],"partialFingerprints":{"codehealthFindingId/v1":"0850652f03c9e4ae15c0abad47f2cb7908b0e4ce73ef5a0b1f3627e0a5a90c8f"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function parseArgs (cyclomatic 22, cognitive 13): parseArgs has cyclomatic complexity 22 and cognitive complexity 13; 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":"scripts/e2e-web/run.mjs"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d9b5d45cc64b483b57aefefeecbe3db379a9b406cc3ac7728fd4fb4b65b2e7c"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function init (cyclomatic 21, cognitive 33): init has cyclomatic complexity 21 and cognitive complexity 33; 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c4964cdce145204e144887116885f37becb505b54ac6da61eb9841c0e87526b"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function renderNodeDetail (cyclomatic 21, cognitive 24): renderNodeDetail has cyclomatic complexity 21 and cognitive complexity 24; 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":795}}}],"partialFingerprints":{"codehealthFindingId/v1":"977a71b804f483771c0725c6a09eba1ad880308c7a8969d76628e5c8a126981f"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function assertScreenshot (cyclomatic 21, cognitive 22): assertScreenshot has cyclomatic complexity 21 and cognitive complexity 22; 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":"scripts/e2e-web/lib/asserts.mjs"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcd56382b7e763386c0961d447b54afabb57dc350ba8785f68b55bea58ca7cd7"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function exportCode (cyclomatic 19, cognitive 23): exportCode has cyclomatic complexity 19 and cognitive complexity 23; 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":1588}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f7763895831868aca7fab1c48805538889dc6eff33cc39206613b73d95a53c4"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function _loadNodeClipInfo (cyclomatic 19, cognitive 21): _loadNodeClipInfo has cyclomatic complexity 19 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":1313}}}],"partialFingerprints":{"codehealthFindingId/v1":"66930b32e829b9feeb1b0cf21d006f8ff0316fed9b15cc4d0dc5d168e8fa46f2"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function render (cyclomatic 19, cognitive 3): render has cyclomatic complexity 19 and cognitive complexity 3; 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":3482}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f21aeee61e2448ecb86602908241c5d9b9e3a0ec444a167d6fa2ca02652bf50"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function _addCollapsible (cyclomatic 18, cognitive 35): _addCollapsible has cyclomatic complexity 18 and cognitive complexity 35; 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":"dll/src/desktop/shell2/common/debugger/debugger.js"},"region":{"startLine":3335}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed854bff3bfba1763bdd404b1636c96809c848707b50b73dd3573e16add8e879"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function runTestsInTab (cyclomatic 18, cognitive 22): runTestsInTab has cyclomatic complexity 18 and cognitive complexity 22; 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":"scripts/e2e-web/run.mjs"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7e94850fa5534360b034ec2c6afd908c890f1d84c6c3df7aadeae551a312c6a"}},{"ruleId":"R3","level":"warning","message":{"text":"Large Files: 1 file(s) over 400 lines (counted as significant lines \u2014 blank lines excluded \u2014 over production source only, tests excluded), largest first: dll/src/desktop/shell2/common/debugger/debugger.js (4426)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"cecee31b569df4f07e06db732f1ca037af27b5afef9023da51f9673d931a142f"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~127 LoC): no import path from any entry point (2 application, 1 tooling, 7 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/docs_pdf_book.mjs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"db8121e239744c141939abf64e67ff7150b10e64ce0640954d0a5e22243ebe30"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~84 LoC): no import path from any entry point (2 application, 1 tooling, 7 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/docs_pdf_cdp.mjs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ef8eb6f703a86a2157e4fa36bb1e4867f15b8837de30ff2e3a16e6d0ec50296"}},{"ruleId":"SC1","level":"warning","message":{"text":"JavaScript dependencies are not locked: No package-lock.json / yarn.lock / pnpm-lock.yaml / bun.lock \u2014 JS installs aren\u0027t reproducible (SSDF PW.4.4). Commit your package manager\u0027s lockfile and install from it (\u0060npm ci\u0060, \u0060yarn --immutable\u0060, \u0060pnpm i --frozen-lockfile\u0060 or \u0060bun i --frozen-lockfile\u0060). Advisory \u2014 never scored."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"40a08798dc9f9c819eaa9f7c084938e1cf2517a9281aed2c31563d6f7d5ba90d"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060f_len.type_name.trim() != \u0022usize\u0022 || f_cap.type_name.trim() != \u0022usize\u0022\u0060 appears character-identically in 2 files \u2014 doc/src/codegen/v2/lang_haskell/types.rs, doc/src/codegen/v2/lang_ruby/wrappers.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_haskell/types.rs"},"region":{"startLine":476}}}],"partialFingerprints":{"codehealthFindingId/v1":"f101b439a1353b3fb4a65722d3e3fccbbfac9750b64de77699a62e922b707c85"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060inner.is_empty() || inner == \u0022c_void\u0022 || inner == \u0022void\u0022 || inner == \u0022()\u0022\u0060 appears character-identically in 2 files \u2014 doc/src/codegen/v2/lang_haskell/types.rs, doc/src/codegen/v2/lang_ocaml/mod.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_haskell/types.rs"},"region":{"startLine":1132}}}],"partialFingerprints":{"codehealthFindingId/v1":"09396fddf291473751411f12e9c119b917c1e2e3fe3779d68e95e313b8883683"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060is_primitive_type(arg) || arg.contains(\u0022::\u0022)\u0060 appears character-identically in 2 files \u2014 doc/src/codegen/v2/lang_rust.rs, doc/src/codegen/v2/rust/shared.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_rust.rs"},"region":{"startLine":2450}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfe5e6337edb3cf811aa00f9d3dce36205f5e1f78edcadf5796715f4851688a7"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060is_union \u0026\u0026 c.name.starts_with(\u0022Result\u0022)\u0060 appears character-identically in 2 files \u2014 doc/src/codegen/v2/lang_d/wrappers.rs, doc/src/codegen/v2/lang_swift/wrappers.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_d/wrappers.rs"},"region":{"startLine":652}}}],"partialFingerprints":{"codehealthFindingId/v1":"82929ce4c65606cc3c01c87e9e68675745afb0e938eb9ac187632b464f0c30ea"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060line.starts_with(\u0022//\u0022) || line.starts_with(\u0022/*\u0022) || line.starts_with(\u0027*\u0027)\u0060 appears character-identically in 2 files \u2014 doc/src/autofix/discovery/parallel.rs, doc/src/autofix/discovery/workspace.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/autofix/discovery/parallel.rs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"4919219ac3898dc98e93c3ae34593aa9029066705113127dcd2c43f5653c6917"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060lower.contains(\u0022:\\\\windows\\\\\u0022) || lower.contains(\u0022:/windows/\u0022)\u0060 appears character-identically in 2 files \u2014 dll/src/web/mod.rs, dll/src/web/symbol_table.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/web/mod.rs"},"region":{"startLine":576}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7a30ba74718eed9019061531636b4452d65a7777ab23846f3ce90d407731c58"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060name.starts_with(\u0027.\u0027) || name == \u0022target\u0022\u0060 appears character-identically in 2 files \u2014 doc/src/reftest/autodoc.rs, doc/src/reftest/autoreview.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/reftest/autodoc.rs"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"09d1abfad3d136cf7439423ef1fc61bb3baea5a952fa7dd0f294f7106125a7e3"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060ret.trim() != \u0022void\u0022 \u0026\u0026 ret.trim() != \u0022()\u0022\u0060 appears character-identically in 3 files \u2014 doc/src/codegen/v2/lang_nim/functions.rs, doc/src/codegen/v2/lang_nim/types.rs, doc/src/codegen/v2/lang_nim/wrappers.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_nim/functions.rs"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"762f8a5a5ebc988d02ab7952d493972007b84b1f286711c3b0aaec8454b79079"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060s.fields[1].type_name.trim() != \u0022usize\u0022 || s.fields[2].type_name.trim() != \u0022usize\u0022\u0060 appears character-identically in 3 files \u2014 doc/src/codegen/v2/lang_csharp/wrappers.rs, doc/src/codegen/v2/lang_java/wrappers.rs, doc/src/codegen/v2/lang_kotlin/wrappers.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_csharp/wrappers.rs"},"region":{"startLine":548}}}],"partialFingerprints":{"codehealthFindingId/v1":"07cab8917180cc6600fd9bebe15597de5b3a5ea62f34ca74e4cb61181cfe7557"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060std::env::var(\u0022AZ_BACKEND\u0022).as_deref() == Ok(\u0022headless\u0022) || std::env::var(\u0022AZ_E2E_TEST\u0022).is_ok()\u0060 appears character-identically in 2 files \u2014 dll/src/desktop/extra/biometric/mod.rs, dll/src/desktop/extra/keyring/mod.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/desktop/extra/biometric/mod.rs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"781f54cdc86df018e013dbad35d5b566f6a8197e3587f09ab2c5946700b13884"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060t.starts_with(\u0022*const \u0022) || t.starts_with(\u0022*mut \u0022) || t.starts_with(\u0027\u0026\u0027)\u0060 appears character-identically in 3 files \u2014 doc/src/codegen/v2/lang_haskell/cshim.rs, doc/src/codegen/v2/lang_haskell/wrappers.rs, doc/src/codegen/v2/lang_red/mod.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_haskell/cshim.rs"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"094f828ff886ae7a8f4dea671e8180d79ae47236256d602d16502214149ae87c"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060trimmed.starts_with(\u0022*const \u0022) || trimmed.starts_with(\u0022*mut \u0022)\u0060 appears character-identically in 2 files \u2014 doc/src/api.rs, doc/src/autofix/type_index.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/api.rs"},"region":{"startLine":1700}}}],"partialFingerprints":{"codehealthFindingId/v1":"7258b2e78d8207d46230b6c84a60e6d276bf90824c3e84652af27e10709e8ed7"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060trimmed.starts_with(\u0022*const \u0022) || trimmed.starts_with(\u0022*mut \u0022) || trimmed.starts_with(\u0022\u0026mut \u0022) || trimmed.starts_with(\u0027\u0026\u0027)\u0060 appears character-identically in 6 files \u2014 doc/src/codegen/v2/c_layout.rs, doc/src/codegen/v2/lang_cobol/types.rs, doc/src/codegen/v2/lang_fortran/mod.rs, doc/src/codegen/v2/lang_node/mod.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/c_layout.rs"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"827f9fcf6be084f304cdf5434106175127eda9a1d5b4f2f8548f83f96ef577bb"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060trimmed.starts_with(\u0022*mut \u0022) || trimmed.starts_with(\u0022\u0026mut \u0022) || trimmed.starts_with(\u0027\u0026\u0027)\u0060 appears character-identically in 2 files \u2014 doc/src/codegen/v2/lang_ada/mod.rs, doc/src/codegen/v2/lang_racket/mod.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_ada/mod.rs"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb7be23bc2aa51adcb6a482e05976fbfd7043c27730ea64ae0f5a6c5be6885f9"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060type_name.starts_with(\u0022Az\u0022) \u0026\u0026 type_name.len() \u003E 2\u0060 appears character-identically in 3 files \u2014 doc/src/autofix/diff.rs, doc/src/autofix/type_index.rs, doc/src/autofix/utils.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/autofix/diff.rs"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e05b5d6f2c7fcb269ea2c3566293f2a47d35f95ddeade9453b2c900ef805cd1"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060value.eq_ignore_ascii_case(\u0022more\u0022) || value.eq_ignore_ascii_case(\u0022high\u0022) || value.eq_ignore_ascii_case(\u0022active\u0022)\u0060 appears character-identically in 2 files \u2014 css/src/dynamic_selector.rs, css/src/parser2.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"css/src/dynamic_selector.rs"},"region":{"startLine":2520}}}],"partialFingerprints":{"codehealthFindingId/v1":"c94d1041144ba7c1f86ccbcad9d7357fd7863945d55b0a599ea7a3f75bbe4bf6"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060value.eq_ignore_ascii_case(\u0022no-preference\u0022) || value.eq_ignore_ascii_case(\u0022none\u0022)\u0060 appears character-identically in 2 files \u2014 css/src/dynamic_selector.rs, css/src/parser2.rs. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"css/src/dynamic_selector.rs"},"region":{"startLine":2525}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f0a96447b5c999c65f7f5d3fa0426fca33399ff7bbd4c7774e3de9b47d5a818"}},{"ruleId":"X7","level":"note","message":{"text":"Silent fallback default in catch: \u0060role_name\u0060 swallows every exception into \u0060return \u0027?\u0027\u0060 \u2014 a data error becomes a silent behavior change with no trail. Log the failure or let it raise. If that constant is the correct answer rather than a stand-in for a value that could not be read, say so in a comment on the handler or in the docstring, and the row stops firing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/debugging/azul-a11y-probe.py"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"3939b468c184a894f88bf764ae0919b6e0825045ca3f7d90054a59ecd9a2fa1b"}},{"ruleId":"X7","level":"note","message":{"text":"Silent fallback default in catch: \u0060state_set\u0060 swallows every exception into \u0060return \u0027\u0027\u0060 \u2014 a data error becomes a silent behavior change with no trail. Log the failure or let it raise. If that constant is the correct answer rather than a stand-in for a value that could not be read, say so in a comment on the handler or in the docstring, and the row stops firing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"scripts/debugging/azul-a11y-probe.py"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"a216259aba0f5702d0c709927772ab6e36141aa1e2c36a042641437ca6e10752"}},{"ruleId":"X9","level":"note","message":{"text":"Subsumed condition operand: \u0060dir_str.ends_with(\u0022/debug\u0022)\u0060 can never decide this \u0060||\u0060 \u2014 every value satisfying \u0060dir_str.ends_with(\u0022/debug\u0022)\u0060 also satisfies \u0060dir_str.contains(\u0022/debug\u0022)\u0060, so the \u0060||\u0060 chain is already decided by the latter. The expression is equivalent to the chain without it, which means it is wider than it reads. Delete the dead operand, or narrow the surviving one if IT is the accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/build_link.rs"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"79ae8904df810a9f81325c53b11e0ea4d9fd0dba7fca5c46d778d1ceb6be2eb7"}},{"ruleId":"X9","level":"note","message":{"text":"Subsumed condition operand: \u0060t.starts_with(\u0022///\u0022)\u0060 can never decide this \u0060||\u0060 \u2014 every value satisfying \u0060t.starts_with(\u0022///\u0022)\u0060 also satisfies \u0060t.starts_with(\u0022//\u0022)\u0060, so the \u0060||\u0060 chain is already decided by the latter. The expression is equivalent to the chain without it, which means it is wider than it reads. Delete the dead operand, or narrow the surviving one if IT is the accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/gene2e.rs"},"region":{"startLine":713}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0938f42e2991e40f8d0f01c41d0508f0d367989795455c5ccd11742a3e64e71"}},{"ruleId":"X9","level":"note","message":{"text":"Subsumed condition operand: \u0060rel.contains(\u0022apple-touch-icon\u0022)\u0060 can never decide this \u0060||\u0060 \u2014 every value satisfying \u0060rel.contains(\u0022apple-touch-icon\u0022)\u0060 also satisfies \u0060rel.contains(\u0022icon\u0022)\u0060, so the \u0060||\u0060 chain is already decided by the latter. The expression is equivalent to the chain without it, which means it is wider than it reads. Delete the dead operand, or narrow the surviving one if IT is the accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"core/src/xml.rs"},"region":{"startLine":461}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fd4d083bbb4490943a72913f97ed0ea97add23b69b77480d399fe49a84876f9"}},{"ruleId":"X9","level":"note","message":{"text":"Subsumed condition operand: \u0060lower.contains(\u0022memory\u0022)\u0060 can never decide this \u0060||\u0060 \u2014 every value satisfying \u0060lower.contains(\u0022memory\u0022)\u0060 also satisfies \u0060lower.contains(\u0022mem\u0022)\u0060, so the \u0060||\u0060 chain is already decided by the latter. The expression is equivalent to the chain without it, which means it is wider than it reads. Delete the dead operand, or narrow the surviving one if IT is the accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"core/src/profile_test.rs"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b2286a939dec782f634cd1acf4e843a772ff160467115c0e47ab5689db09c4f"}},{"ruleId":"X9","level":"note","message":{"text":"Subsumed condition operand: \u0060name.contains(\u0022spec_from_iter\u0022)\u0060 can never decide this \u0060||\u0060 \u2014 every value satisfying \u0060name.contains(\u0022spec_from_iter\u0022)\u0060 also satisfies \u0060name.contains(\u0022from_iter\u0022)\u0060, so the \u0060||\u0060 chain is already decided by the latter. The expression is equivalent to the chain without it, which means it is wider than it reads. Delete the dead operand, or narrow the surviving one if IT is the accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"dll/src/web/symbol_table.rs"},"region":{"startLine":2866}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ebeb99302080f8c96f79fe9b66ccf134aaad28a7804c2e075c483a46c83ee67"}},{"ruleId":"X9","level":"note","message":{"text":"Subsumed condition operand: \u0060s.starts_with(\u0022\u0026mut \u0022)\u0060 can never decide this \u0060||\u0060 \u2014 every value satisfying \u0060s.starts_with(\u0022\u0026mut \u0022)\u0060 also satisfies \u0060s.starts_with(\u0022\u0026\u0022)\u0060, so the \u0060||\u0060 chain is already decided by the latter. The expression is equivalent to the chain without it, which means it is wider than it reads. Delete the dead operand, or narrow the surviving one if IT is the accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/ir_builder.rs"},"region":{"startLine":871}}}],"partialFingerprints":{"codehealthFindingId/v1":"f20d43c4878ea96dfc5f9507000f6bc623278de21404e8d68811f9054a401b31"}},{"ruleId":"X9","level":"note","message":{"text":"Subsumed condition operand: \u0060trimmed.starts_with(\u0022/* Macro to \u0022)\u0060 can never decide this \u0060||\u0060 \u2014 every value satisfying \u0060trimmed.starts_with(\u0022/* Macro to \u0022)\u0060 also satisfies \u0060trimmed.starts_with(\u0022/* Macro \u0022)\u0060, so the \u0060||\u0060 chain is already decided by the latter. The expression is equivalent to the chain without it, which means it is wider than it reads. Delete the dead operand, or narrow the surviving one if IT is the accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"doc/src/codegen/v2/lang_lua/cdef.rs"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae3126747a75fd3e49862fe56ab94a64b27ae61c57d19abe5dc11940844f1c22"}}],"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-1104","guid":"4c918cb5-b2a6-6c55-9963-a44ee464305e","name":"CWE-1104","shortDescription":{"text":"CWE-1104"},"helpUri":"https://cwe.mitre.org/data/definitions/1104.html"},{"id":"CWE-1352","guid":"5257f322-5cfc-6b52-bedd-0b9a526b4c7d","name":"CWE-1352","shortDescription":{"text":"CWE-1352"},"helpUri":"https://cwe.mitre.org/data/definitions/1352.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-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-668","guid":"e2cb99db-6d24-b056-b0d0-885a733ec403","name":"CWE-668","shortDescription":{"text":"CWE-668"},"helpUri":"https://cwe.mitre.org/data/definitions/668.html"},{"id":"CWE-676","guid":"550e6fab-2881-3252-8a05-c688a6b19c14","name":"CWE-676","shortDescription":{"text":"CWE-676"},"helpUri":"https://cwe.mitre.org/data/definitions/676.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-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":64,"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."]}]}