{"$schema":"https://json.schemastore.org/sarif-2.1.0.json","version":"2.1.0","runs":[{"tool":{"driver":{"name":"codehealth","informationUri":"https://codehealth.canine.dev","rules":[{"id":"D1","name":"Cyclomatic Complexity","shortDescription":{"text":"Cyclomatic Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D1"},{"id":"D2","name":"Cognitive Complexity","shortDescription":{"text":"Cognitive Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D2"},{"id":"D3","name":"God Classes","shortDescription":{"text":"God Classes"},"helpUri":"https://codehealth.canine.dev/dimensions/D3"},{"id":"D4","name":"Code Duplication","shortDescription":{"text":"Code Duplication"},"helpUri":"https://codehealth.canine.dev/dimensions/D4"},{"id":"D5","name":"Coupling","shortDescription":{"text":"Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D5"},{"id":"D9","name":"Test Distribution","shortDescription":{"text":"Test Distribution"},"helpUri":"https://codehealth.canine.dev/dimensions/D9"},{"id":"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":"D14","name":"License Compliance","shortDescription":{"text":"License Compliance"},"helpUri":"https://codehealth.canine.dev/dimensions/D14"},{"id":"D15","name":"Churn \u00D7 Complexity Hotspots","shortDescription":{"text":"Churn \u00D7 Complexity Hotspots"},"helpUri":"https://codehealth.canine.dev/dimensions/D15"},{"id":"D16","name":"Bus Factor","shortDescription":{"text":"Bus Factor"},"helpUri":"https://codehealth.canine.dev/dimensions/D16"},{"id":"D17","name":"Explicit Debt","shortDescription":{"text":"Explicit Debt"},"helpUri":"https://codehealth.canine.dev/dimensions/D17"},{"id":"D19","name":"Documentation Quality","shortDescription":{"text":"Documentation Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D19"},{"id":"D20","name":"ADR Quality","shortDescription":{"text":"ADR Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D20"},{"id":"D21","name":"Naming Consistency","shortDescription":{"text":"Naming Consistency"},"helpUri":"https://codehealth.canine.dev/dimensions/D21"},{"id":"D22","name":"Internal API Consistency","shortDescription":{"text":"Internal API Consistency"},"helpUri":"https://codehealth.canine.dev/dimensions/D22"},{"id":"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":"AX5","name":"Architecture \u0026 structure","shortDescription":{"text":"Architecture \u0026 structure"},"helpUri":"https://codehealth.canine.dev/dimensions/AX5"},{"id":"AX7","name":"Slice cohesion","shortDescription":{"text":"Slice cohesion"},"helpUri":"https://codehealth.canine.dev/dimensions/AX7"},{"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":"DM4","name":"Rich vs anemic domain model","shortDescription":{"text":"Rich vs anemic domain model"},"helpUri":"https://codehealth.canine.dev/dimensions/DM4"},{"id":"DM5","name":"Encapsulated state","shortDescription":{"text":"Encapsulated state"},"helpUri":"https://codehealth.canine.dev/dimensions/DM5"},{"id":"M1","name":"Documentation (README)","shortDescription":{"text":"Documentation (README)"},"helpUri":"https://codehealth.canine.dev/dimensions/M1"},{"id":"M2","name":"Architecture documentation","shortDescription":{"text":"Architecture documentation"},"helpUri":"https://codehealth.canine.dev/dimensions/M2"},{"id":"M3","name":"Folder \u0026 project structure","shortDescription":{"text":"Folder \u0026 project structure"},"helpUri":"https://codehealth.canine.dev/dimensions/M3"},{"id":"M4","name":"Documentation accuracy","shortDescription":{"text":"Documentation accuracy"},"helpUri":"https://codehealth.canine.dev/dimensions/M4"},{"id":"P1","name":"CI/CD gates","shortDescription":{"text":"CI/CD gates"},"helpUri":"https://codehealth.canine.dev/dimensions/P1"},{"id":"P12","name":"CI test-gate honesty","shortDescription":{"text":"CI test-gate honesty"},"helpUri":"https://codehealth.canine.dev/dimensions/P12"},{"id":"P2","name":"Observability","shortDescription":{"text":"Observability"},"helpUri":"https://codehealth.canine.dev/dimensions/P2"},{"id":"P3","name":"Security \u0026 performance tooling","shortDescription":{"text":"Security \u0026 performance tooling"},"helpUri":"https://codehealth.canine.dev/dimensions/P3"},{"id":"P4","name":"Deployment \u0026 Rollback","shortDescription":{"text":"Deployment \u0026 Rollback"},"helpUri":"https://codehealth.canine.dev/dimensions/P4"},{"id":"P6","name":"Release Hygiene","shortDescription":{"text":"Release Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/P6"},{"id":"PF3","name":"Async \u0026 latency hygiene","shortDescription":{"text":"Async \u0026 latency hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/PF3"},{"id":"S1","name":"Web-Security Posture","shortDescription":{"text":"Web-Security Posture"},"helpUri":"https://codehealth.canine.dev/dimensions/S1"},{"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":"TextRenderer::push_md (cyclomatic 68): TextRenderer::push_md 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":"crates/mdman/src/format/text.rs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"564e8a597d156276fadabed08541b89f08aba5868b566eab96be84ed7f5eff83"}},{"ruleId":"D1","level":"warning","message":{"text":"ManRenderer::push_man (cyclomatic 64): ManRenderer::push_man has cyclomatic complexity 64 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mdman/src/format/man.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"44b8d814be647207a9ebfff45dcd6160b6e4637927914b7e18cb47969d62b75a"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::ops::cargo_compile::create_bcx (cyclomatic 47): cargo::ops::cargo_compile::create_bcx 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":"src/ops/cargo_compile/mod.rs"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"e32d6c3076f7cf7d9c298d5ef9177d2985cf852876046ecf76e193f1a8d82208"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::resolver::errors::activation_error (cyclomatic 46): cargo::resolver::errors::activation_error 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":"src/resolver/errors.rs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c3fd6dc6ae157601866c7248273ae8214191b3df1104da925fe26e560258464"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::workspace::parser::to_real_manifest (cyclomatic 45): cargo::workspace::parser::to_real_manifest 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":"src/workspace/parser/mod.rs"},"region":{"startLine":1301}}}],"partialFingerprints":{"codehealthFindingId/v1":"50ad1b307fa187f4ca0736f88b31680b7336a4875d20631ab5f5b23353bec6fe"}},{"ruleId":"D1","level":"warning","message":{"text":"BuildOutput::parse (cyclomatic 43): BuildOutput::parse has cyclomatic complexity 43 (threshold 15). Of this number, 37 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":"src/compiler/custom_build.rs"},"region":{"startLine":798}}}],"partialFingerprints":{"codehealthFindingId/v1":"520a21995c25ba47772de4721a4fb9a47b1283f2121bfe27f20c36bc6f42f791"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::compiler::build_base_args (cyclomatic 42): cargo::compiler::build_base_args 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":"src/compiler/mod.rs"},"region":{"startLine":1304}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f92b199949e0d2684cc6763e2c36611eb83db10ba849e664e1866338943cf49"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::resolver::encode::into_resolve (cyclomatic 41): cargo::resolver::encode::into_resolve has cyclomatic complexity 41 (threshold 15). Of this number, 36 points are the body\u0027s own statements and 5 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":"src/resolver/encode.rs"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bfc0e03ccc3b00b04c82e4f3e9cb6c32ac8b0bd10c1bded20b85567af8e1180"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::compiler::rustc (cyclomatic 40): cargo::compiler::rustc has cyclomatic complexity 40 (threshold 15). Of this number, 29 points are the body\u0027s own statements and 11 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":"src/compiler/mod.rs"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1db71c77ce6b71f19fc6be03641e80461da0868b33df7dae1a20899ed04bc93"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::compiler::custom_build::build_work (cyclomatic 40): cargo::compiler::custom_build::build_work has cyclomatic complexity 40 (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":"src/compiler/custom_build.rs"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad3bb686bb493cd7cc4706bd8fd3721b7e6afb90ddb8f2365a30c8129ad7a9d7"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::ops::cargo_clean::clean_specs (cyclomatic 38): cargo::ops::cargo_clean::clean_specs has cyclomatic complexity 38 (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":"src/ops/cargo_clean.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"48d2eb5843309b33c4ce51ada694bd8f1456b7f1f8ae9c42d53b998dd7cf976a"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::ops::cargo_vendor::sync (cyclomatic 37): cargo::ops::cargo_vendor::sync 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":"src/ops/cargo_vendor.rs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c7ae14e8707ed419a39bf0366efdd4bb5844fb9ef50f71c8a257e0fa8e2be15"}},{"ruleId":"D1","level":"warning","message":{"text":"InstallablePackage::install_one (cyclomatic 36): InstallablePackage::install_one has cyclomatic complexity 36 (threshold 15). Of this number, 35 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":"src/ops/cargo_install.rs"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"10dc0f496058f8933d553bdcf6c137068c87cb3362725a363cb4121600adf322"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::ops::cargo_add::resolve_dependency (cyclomatic 32): cargo::ops::cargo_add::resolve_dependency 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":"src/ops/cargo_add/mod.rs"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"cecdf7798f9f995383e8f8697e16cf949b50737bd42dd005c9d64244a0ad7d17"}},{"ruleId":"D1","level":"warning","message":{"text":"Features::status (cyclomatic 31): Features::status has cyclomatic complexity 31 (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":"src/workspace/features.rs"},"region":{"startLine":474}}}],"partialFingerprints":{"codehealthFindingId/v1":"3813d3a6f4ae8f4458f5329a04ef32dec232eee678bb951d3ad1fd60ce750d1b"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::compiler::on_stderr_line_inner (cyclomatic 30): cargo::compiler::on_stderr_line_inner 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":"src/compiler/mod.rs"},"region":{"startLine":2123}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2dd79381fedc0e490f27ef143bad8ebb2d9c62496bd1ecf482ff0bb9fa81232"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::resolver::activate_deps_loop (cyclomatic 30): cargo::resolver::activate_deps_loop 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":"src/resolver/mod.rs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"80e9caae0a153a282c6913a9c1f33bfa50ce736e2989217ea11d1383649c864c"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::ops::cargo_tree::graph::add_pkg (cyclomatic 29): cargo::ops::cargo_tree::graph::add_pkg 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":"src/ops/cargo_tree/graph.rs"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad2fa1f82b1862c97d4150353a1f46b48ad4dc3d6ca1cadeb269ffce5b0fd789"}},{"ruleId":"D1","level":"warning","message":{"text":"Fingerprint::compare (cyclomatic 28): Fingerprint::compare 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":"src/compiler/fingerprint/mod.rs"},"region":{"startLine":1084}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bc8abc9d6710740310744264ed7c8c681c2f3b12b6a7850bbaf89a66844d617"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::ops::registry::cargo_publish::publish (cyclomatic 28): cargo::ops::registry::cargo_publish::publish 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":"src/ops/registry/cargo_publish.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"73527b6512a429f97d28deba22d426b9e3bd99b5730515a4379f8dc65f055bce"}},{"ruleId":"D1","level":"warning","message":{"text":"RegistrySource::query (cyclomatic 27): RegistrySource::query 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":"src/sources/registry/mod.rs"},"region":{"startLine":678}}}],"partialFingerprints":{"codehealthFindingId/v1":"43e1d8b1c6efc2edb32f29ce0cec799789652df68a53ef640d3305eab490d134"}},{"ruleId":"D1","level":"warning","message":{"text":"Dependency::update_toml (cyclomatic 27): Dependency::update_toml 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":"src/workspace/editor/dependency.rs"},"region":{"startLine":508}}}],"partialFingerprints":{"codehealthFindingId/v1":"41662f96715442aca04bf440c8891cf5febfac8f13649bdff5c5d167eafb83a8"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::workspace::parser::dep_to_dependency (cyclomatic 27): cargo::workspace::parser::dep_to_dependency 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":"src/workspace/parser/mod.rs"},"region":{"startLine":2276}}}],"partialFingerprints":{"codehealthFindingId/v1":"c62f240e7a5c3edf807aa608cb823ea51aebc048d118c69532bcd38f598d8ca8"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::workspace::parser::prepare_toml_for_publish (cyclomatic 27): cargo::workspace::parser::prepare_toml_for_publish has cyclomatic complexity 27 (threshold 15). Of this number, 16 points are the body\u0027s own statements and 11 belong to 4 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":"src/workspace/parser/mod.rs"},"region":{"startLine":3036}}}],"partialFingerprints":{"codehealthFindingId/v1":"110258f313b4e550adfd28bdf4d3febde6f05e135eb943bae658ae3ea660f98d"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::workspace::summary::build_feature_map (cyclomatic 26): cargo::workspace::summary::build_feature_map 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":"src/workspace/summary.rs"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f2948adee5855e4405203c5684927f96994b68b3379760846ace4f2166cd48b"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::ops::resolve::register_previous_locks (cyclomatic 26): cargo::ops::resolve::register_previous_locks has cyclomatic complexity 26 (threshold 15). Of this number, 24 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":"src/ops/resolve.rs"},"region":{"startLine":595}}}],"partialFingerprints":{"codehealthFindingId/v1":"95036833894aaa4d150cbcd5f09003e215223e3ebec551a632fcd29318ef5747"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::ops::cargo_add::add (cyclomatic 26): cargo::ops::cargo_add::add 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":"src/ops/cargo_add/mod.rs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"80fee3baf8ce4b02d0cd404c73fef3cfd9f8cd88b40c63ea2457006cf4395d5f"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::bin::cargo::commands::install::exec (cyclomatic 26): cargo::bin::cargo::commands::install::exec 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":"src/bin/cargo/commands/install.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cbde14a841918394ede479135ec55a1b151fb74ceb2b2eb32d184ff2bff78c5"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::sources::git::utils::with_authentication (cyclomatic 26): cargo::sources::git::utils::with_authentication 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":"src/sources/git/utils.rs"},"region":{"startLine":644}}}],"partialFingerprints":{"codehealthFindingId/v1":"d58d674f91bffd5a46202a4053996a3daef04123b46a28d39879a7a1ba0f955b"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::ops::cargo_report::timings::prepare_context (cyclomatic 25): cargo::ops::cargo_report::timings::prepare_context 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":"src/ops/cargo_report/timings.rs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"983c7b6faeea8b40e8186b49a94ef877ddd45ac2f3f2d79ee24e90a236999dc9"}},{"ruleId":"D1","level":"warning","message":{"text":"TomlProfile::merge (cyclomatic 24): TomlProfile::merge 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":"crates/cargo-util-schemas/src/manifest/mod.rs"},"region":{"startLine":970}}}],"partialFingerprints":{"codehealthFindingId/v1":"53f6e200a1a69df39572f642ff07ddffea695d2723ad2b25c1ca8b8ac34f9078"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::workspace::profiles::merge_profile (cyclomatic 24): cargo::workspace::profiles::merge_profile 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":"src/workspace/profiles.rs"},"region":{"startLine":537}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae9dad0da5fab939160349326de4795b1ca0dc16aa7bbbd5b73998160471e7a1"}},{"ruleId":"D1","level":"warning","message":{"text":"InstallablePackage::new (cyclomatic 23): InstallablePackage::new 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":"src/ops/cargo_install.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"af21018d7504934f9ed794a66e3b38db111318910577bfa199be7bc732fabe96"}},{"ruleId":"D1","level":"warning","message":{"text":"ArgMatchesExt::compile_options (cyclomatic 22): ArgMatchesExt::compile_options 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":"src/util/command_prelude.rs"},"region":{"startLine":743}}}],"partialFingerprints":{"codehealthFindingId/v1":"8051bd39cbc6d9603e063292720034e8ee7b2cd913ae47f703cd503d8a07a5fb"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::bin::cargo::commands::tree::parse_edge_kinds (cyclomatic 22): cargo::bin::cargo::commands::tree::parse_edge_kinds 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":"src/bin/cargo/commands/tree.rs"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"14a948b1b5ff7e11ee04acfd83767b38b6c2d3f2a1b77d323d340a6f54c66bed"}},{"ruleId":"D1","level":"warning","message":{"text":"BuildRunner::compile (cyclomatic 21): BuildRunner::compile has cyclomatic complexity 21 (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":"src/compiler/build_runner/mod.rs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"057ed0b37497e229f434551dff8f7a7528d17db96ecc077c793f1d955a4dcb83"}},{"ruleId":"D1","level":"warning","message":{"text":"DrainState::handle_event (cyclomatic 21): DrainState::handle_event 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":"src/compiler/job_queue/mod.rs"},"region":{"startLine":614}}}],"partialFingerprints":{"codehealthFindingId/v1":"972ff3f93c28ce046aee3200db130f3ee6dc02866feaeb1a8c5b2503ede810a3"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::ops::cargo_new::mk (cyclomatic 21): cargo::ops::cargo_new::mk 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":"src/ops/cargo_new.rs"},"region":{"startLine":724}}}],"partialFingerprints":{"codehealthFindingId/v1":"eab23a6fdaeae41369189a7e1d9898f17ce27e9b2e0a37a178bfeda2afec4750"}},{"ruleId":"D1","level":"warning","message":{"text":"UnitGenerator::find_named_targets (cyclomatic 20): UnitGenerator::find_named_targets has cyclomatic complexity 20 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_compile/unit_generator.rs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"4121cc96996862862fe85284484b222000919bed4f10606e4650c9f90ca2bea8"}},{"ruleId":"D1","level":"warning","message":{"text":"Dependency::to_toml (cyclomatic 20): Dependency::to_toml 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":"src/workspace/editor/dependency.rs"},"region":{"startLine":401}}}],"partialFingerprints":{"codehealthFindingId/v1":"59306f046ee01979b022d40cddaa1ac36566c9d9c740fbd633fb3a1a93dec3df"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::compiler::prepare_rustdoc (cyclomatic 20): cargo::compiler::prepare_rustdoc 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":"src/compiler/mod.rs"},"region":{"startLine":904}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0db5ce3ccadc1d8fd27430a54c990bb46061a9510f665d367d8124b0ea2c20f"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::sources::path::list_files_walk (cyclomatic 20): cargo::sources::path::list_files_walk 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":"src/sources/path.rs"},"region":{"startLine":871}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ddb74b9e24f94ce1aa933c552f4801cf507b653190c13a453b2cfa4ff853f92"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::ops::cargo_fix::migrate_manifests (cyclomatic 20): cargo::ops::cargo_fix::migrate_manifests 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":"src/ops/cargo_fix/mod.rs"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"42a75701cdf6fc6253961931e1dd4557db0c00867f421493c78de847d231716b"}},{"ruleId":"D1","level":"warning","message":{"text":"Compilation::fill_env (cyclomatic 19): Compilation::fill_env 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":"src/compiler/compilation.rs"},"region":{"startLine":367}}}],"partialFingerprints":{"codehealthFindingId/v1":"b294a29a7d2396d20dd4081e4be7f2bfab69dae0d94a7ae420cd8dd34d750bce"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::context::target::parse_links_overrides (cyclomatic 19): cargo::context::target::parse_links_overrides 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":"src/context/target.rs"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffd2e97b9744b8f75d8924960fe832f5d550fb5ea51c22326df259c97d1b47a6"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::ops::cargo_add::get_public_dependency (cyclomatic 19): cargo::ops::cargo_add::get_public_dependency 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":"src/ops/cargo_add/mod.rs"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"652760e7959541a0ecfbfe9b334aee1f461ddcbd58398937901402da41b14d45"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::compiler::fingerprint::dep_info::parse_rustc_dep_info (cyclomatic 19): cargo::compiler::fingerprint::dep_info::parse_rustc_dep_info has cyclomatic complexity 19 (threshold 15). Of this number, 13 points are the body\u0027s own statements and 6 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":"src/compiler/fingerprint/dep_info.rs"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c62954a01b953efebc856006c8b251b569764b358cf6ab4da56d1146ee95da9"}},{"ruleId":"D1","level":"warning","message":{"text":"xtask_bump_check::xtask::bump_check (cyclomatic 19): xtask_bump_check::xtask::bump_check has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/xtask-bump-check/src/xtask.rs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"db2ad374261f88c398fd3c16b806c22c6a94b5c00451c3c3444fde6d9932f7df"}},{"ruleId":"D1","level":"warning","message":{"text":"Tokenizer::next (cyclomatic 18): Tokenizer::next has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/cargo-platform/src/cfg.rs"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"58df12884ad4e1f9e3e3905adb196b05d242e3ac7dddfe7169767d0902f300db"}},{"ruleId":"D1","level":"warning","message":{"text":"TargetInfo::new (cyclomatic 18): TargetInfo::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":"src/compiler/build_context/target_info.rs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f1f75f90159068636f01a5bf442ba8957c64586b922297f65c386f697486e5c"}},{"ruleId":"D1","level":"warning","message":{"text":"UnitGenerator::create_proposals (cyclomatic 18): UnitGenerator::create_proposals 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":"src/ops/cargo_compile/unit_generator.rs"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"d11e0c575e0a8e6d51ee5fff9219c624712c929120253d88832779fc51edd5c1"}},{"ruleId":"D1","level":"warning","message":{"text":"Dependency::from_toml (cyclomatic 18): Dependency::from_toml 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":"src/workspace/editor/dependency.rs"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee8c753d7952ed11905405b9c5a05fd42c10dcd5bc4fa1e982686fbcc6a77f86"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::compiler::lto::calculate (cyclomatic 18): cargo::compiler::lto::calculate 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":"src/compiler/lto.rs"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a1ce497123dbc2e32ab7b47d7a4537a5fe6bd045dbe07b3df81368c1b700469"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::ops::cargo_update::update_lockfile (cyclomatic 18): cargo::ops::cargo_update::update_lockfile 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":"src/ops/cargo_update.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"ceae5427d7a9bb113931d50fff87cc182496781005632b661f09e6eea0b88f82"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::diagnostics::rules::unused_dependencies::lint_package_build_results (cyclomatic 18): cargo::diagnostics::rules::unused_dependencies::lint_package_build_results 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":"src/diagnostics/rules/unused_dependencies.rs"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"340418a75ad0989e37b6a92e0e478cda184091dc920e66f30f5b63a94c37ca53"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::util::network::retry::maybe_spurious (cyclomatic 18): cargo::util::network::retry::maybe_spurious 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":"src/util/network/retry.rs"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa2552c3e1b7c85185b4b122e42057bd7d8d28f9e02b2bbcb74a59af2cdb26cf"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::sources::git::utils::fetch (cyclomatic 18): cargo::sources::git::utils::fetch 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":"src/sources/git/utils.rs"},"region":{"startLine":1015}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e678794856d5b53b1620cef2b5a498fca586f11838547ea2fb773ae2c74094a"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::ops::cargo_package::do_package (cyclomatic 18): cargo::ops::cargo_package::do_package 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":"src/ops/cargo_package/mod.rs"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f6220f262c023d6a20354c73461cc8d96a53c9f31f15ad5c9b7e7bff0889fec"}},{"ruleId":"D1","level":"warning","message":{"text":"ProcessBuilder::exec_with_streaming (cyclomatic 17): ProcessBuilder::exec_with_streaming 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":"crates/cargo-util/src/process_builder.rs"},"region":{"startLine":378}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcc8dcd783e477b5721ffb60ec5a71a06e551a6572ed04af74241532c7706a0c"}},{"ruleId":"D1","level":"warning","message":{"text":"TargetInfo::file_types (cyclomatic 17): TargetInfo::file_types 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":"src/compiler/build_context/target_info.rs"},"region":{"startLine":415}}}],"partialFingerprints":{"codehealthFindingId/v1":"859e0eaaa949f34c295eea9b66b46e5fa9059ba7fe2f3eb461699c32a9ee72fa"}},{"ruleId":"D1","level":"warning","message":{"text":"UnusedDepState::new (cyclomatic 17): UnusedDepState::new 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":"src/compiler/unused_deps.rs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7f0030ffedb681a8a3a2bcf54d1a287a2620195117cb1beee6795e888d40a73"}},{"ruleId":"D1","level":"warning","message":{"text":"FeatureResolver::deps (cyclomatic 17): FeatureResolver::deps has cyclomatic complexity 17 (threshold 15). Most of this is not in the body itself: 8 of the 17 points are its own statements and the rest belongs to 2 function items inside it that branch (artifact_features_for, platform_activated). 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":"src/resolver/features.rs"},"region":{"startLine":775}}}],"partialFingerprints":{"codehealthFindingId/v1":"6115df7736e66e8e92dc7be1727cc186b6397f9acc64e0ecc334c750442b4136"}},{"ruleId":"D1","level":"warning","message":{"text":"HandleConfiguration::new (cyclomatic 17): HandleConfiguration::new has cyclomatic complexity 17 (threshold 15). Of this number, 11 points are the body\u0027s own statements and 6 belong to one function item inside it that branches. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/util/network/http.rs"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"109519f8b3be1aaddb7297b39c6a901ea01b424c86cb1b1832918aeddc2ae0aa"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::compiler::unit_dependencies::compute_deps (cyclomatic 17): cargo::compiler::unit_dependencies::compute_deps 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":"src/compiler/unit_dependencies.rs"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"596a0710f53c1e23056f0d2c532f25d219d408c325282546646695f18f3e7ef5"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::bin::cargo::commands::remove::gc_workspace (cyclomatic 17): cargo::bin::cargo::commands::remove::gc_workspace has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/bin/cargo/commands/remove.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"86edf8827faff08445a26d80fb3e19254cfb3686e91bde896f051d58b8ad5c0f"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::compiler::build_runner::compilation_files::use_extra_filename (cyclomatic 17): cargo::compiler::build_runner::compilation_files::use_extra_filename 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":"src/compiler/build_runner/compilation_files.rs"},"region":{"startLine":949}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d2cae9f933c17ba3df06d2be7307d20813404c8e5b4d8eb5cd2040500f6bffa"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::ops::cargo_new::init (cyclomatic 17): cargo::ops::cargo_new::init 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":"src/ops/cargo_new.rs"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"41bcaccb72f6583529416ffe28dd3dfc9d7be1ef8699310a682a702c78cc7b84"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::ops::resolve::resolve_with_previous (cyclomatic 17): cargo::ops::resolve::resolve_with_previous 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":"src/ops/resolve.rs"},"region":{"startLine":404}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa9cbe016e400b6d6f151946315844b54a521103f9f628c4b79bd4f64f382d51"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::compiler::fingerprint::calculate_normal (cyclomatic 17): cargo::compiler::fingerprint::calculate_normal 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":"src/compiler/fingerprint/mod.rs"},"region":{"startLine":1578}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c6a5d43b20c8e7643cbaddb66475650b0f365c7c5459e985afa9098a75de7e0"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::compiler::fingerprint::find_stale_file (cyclomatic 17): cargo::compiler::fingerprint::find_stale_file 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":"src/compiler/fingerprint/mod.rs"},"region":{"startLine":2104}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb3fe0b3cb7bd287d420fc3ffaecfb759fec03463f037b0ba142adcb7bf47d0d"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::ops::cargo_compile::remove_duplicate_doc (cyclomatic 17): cargo::ops::cargo_compile::remove_duplicate_doc has cyclomatic complexity 17 (threshold 15). Of this number, 15 points are the body\u0027s own statements and 2 belong to one function item inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_compile/mod.rs"},"region":{"startLine":1036}}}],"partialFingerprints":{"codehealthFindingId/v1":"2aac7b2179f7400c45ef39c1d7749fc3b04261d3bda3d785cfc0a982e0fb582b"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::ops::cargo_install::install (cyclomatic 17): cargo::ops::cargo_install::install 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":"src/ops/cargo_install.rs"},"region":{"startLine":708}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a83ce715e21e3d799f639a47458a1e521a2197fbb3e99c17a785cf9b52663bf"}},{"ruleId":"D1","level":"warning","message":{"text":"mdman::process_args (cyclomatic 16): mdman::process_args has cyclomatic complexity 16 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mdman/src/main.rs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6017ce31d73a0ccc6e710eaadaa07e5d52f5e972e72c9bd23476f6ff91a0e04"}},{"ruleId":"D1","level":"warning","message":{"text":"DrainState::drain_the_queue (cyclomatic 16): DrainState::drain_the_queue 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":"src/compiler/job_queue/mod.rs"},"region":{"startLine":801}}}],"partialFingerprints":{"codehealthFindingId/v1":"28011d6d997e58889815a96e8bc92dd1ca5b724b568ed7bf65c5e10a1a956c90"}},{"ruleId":"D1","level":"warning","message":{"text":"GlobalContext::include_paths (cyclomatic 16): GlobalContext::include_paths 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":"src/context/mod.rs"},"region":{"startLine":1455}}}],"partialFingerprints":{"codehealthFindingId/v1":"12c111e4e03617ae7a748e63d45d0995813c46eabf0a38a4c06b89d0f4b4cb01"}},{"ruleId":"D1","level":"warning","message":{"text":"RegistryQueryerAsync::query (cyclomatic 16): RegistryQueryerAsync::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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/resolver/dep_cache.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd67398456f57448d4a78efeebcbba34e6b20867b07a2b199cd9634351d876b6"}},{"ruleId":"D1","level":"warning","message":{"text":"HttpBackend::fetch_uncached_no_retry (cyclomatic 16): HttpBackend::fetch_uncached_no_retry 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":"src/sources/registry/http_remote.rs"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"63fb0cf097697cd0d99bfebc60b8d5900ea54f6d55bc763cd5b9e0f205a10176"}},{"ruleId":"D1","level":"warning","message":{"text":"PackageRegistry::query (cyclomatic 16): PackageRegistry::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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/registry.rs"},"region":{"startLine":667}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8e64e5f6b902905c331d4ecc64d39ca5a486ba747d328149323871c0feb688f"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::compiler::compile (cyclomatic 16): cargo::compiler::compile 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":"src/compiler/mod.rs"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"739bb1de7e1b7ca7c876efb7a1e3a5e0fd835e9695807ca507b8702d126e2365"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::compiler::extern_args (cyclomatic 16): cargo::compiler::extern_args 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":"src/compiler/mod.rs"},"region":{"startLine":1866}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d1644560b6f549f8e645b658e2bd0b48a79bca33a03da6cb5b9b20d73ca6be6"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::ops::cargo_run::run (cyclomatic 16): cargo::ops::cargo_run::run 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":"src/ops/cargo_run.rs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"4123759fb4f18cf66a942b52d71b5c48e14e5b5fb1ae2552ffe796bbeadc80fc"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::bin::cargo::commands::add::parse_dependencies (cyclomatic 16): cargo::bin::cargo::commands::add::parse_dependencies 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":"src/bin/cargo/commands/add.rs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"090087831ba7370dc1b2734e16d783a24639f78cdd2e4d1e294e4bd733354c86"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::ops::cargo_report::rebuilds::display_report (cyclomatic 16): cargo::ops::cargo_report::rebuilds::display_report 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: cargo::ops::cargo_report::rebuilds::format_dirty_reason (cyclomatic 36) 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":"src/ops/cargo_report/rebuilds.rs"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ed9ead741130c48bc0be88a92153e6fff1fe004089493707e5bd99c08863e5f"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::ops::cargo_metadata::build_resolve_graph_r (cyclomatic 16): cargo::ops::cargo_metadata::build_resolve_graph_r 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":"src/ops/cargo_metadata.rs"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e7c5d405e7728f48fd9d1a7890e064773da5170b5a5b88b3b1410864ecba06b"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::ops::cargo_update::report_latest (cyclomatic 16): cargo::ops::cargo_update::report_latest 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":"src/ops/cargo_update.rs"},"region":{"startLine":536}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c6ef045a3888f483de3badb995c6afa85ef77058462b530ecec68a229e41ac7"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::compiler::custom_build::build_map (cyclomatic 16): cargo::compiler::custom_build::build_map has cyclomatic complexity 16 (threshold 15). Most of this is not in the body itself: 2 of the 16 points are its own statements and the rest belongs to 2 function items inside it that branch (build, add_to_link). 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":"src/compiler/custom_build.rs"},"region":{"startLine":1278}}}],"partialFingerprints":{"codehealthFindingId/v1":"fea79a43b5ca4443479eda32373d3733a507b78f9b2c1ed67b78e5d4179c2bd1"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::ops::cargo_fix::check_version_control (cyclomatic 16): cargo::ops::cargo_fix::check_version_control 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":"src/ops/cargo_fix/mod.rs"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ef471c4c1da8b9916ec23136d075c8a1cb744b73b4da0591a0ad5ff39f5eed0"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::diagnostics::rules::blanket_hint_mostly_unused::lint_workspace (cyclomatic 16): cargo::diagnostics::rules::blanket_hint_mostly_unused::lint_workspace 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":"src/diagnostics/rules/blanket_hint_mostly_unused.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dea2f5c16054e4ae24cd22e88128b970b236997b1c56b568bf2c0dd55cd364b"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::ops::cargo_compile::validate_target_path_as_source_file (cyclomatic 16): cargo::ops::cargo_compile::validate_target_path_as_source_file 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":"src/ops/cargo_compile/mod.rs"},"region":{"startLine":704}}}],"partialFingerprints":{"codehealthFindingId/v1":"cafa5f7996517b9738e980aac2cdb1ea04a2a287efb55ac7e0a88eadc6bd2df3"}},{"ruleId":"D1","level":"warning","message":{"text":"cargo::ops::cargo_package::build_ar_list (cyclomatic 16): cargo::ops::cargo_package::build_ar_list 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":"src/ops/cargo_package/mod.rs"},"region":{"startLine":498}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ed632e96bff1f3c991ace42eb8dacce534bdcc55f4d6e5deb7ab19ab61602ae"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_clean::clean_specs (cognitive 116): cargo::ops::cargo_clean::clean_specs has cognitive complexity 116 (threshold 15). Drivers by points: loops 14 (53 pts), if/else 16 (49 pts), match/switch 4 (10 pts), boolean chains 4 (nesting depth added 78). 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":"src/ops/cargo_clean.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4f487904eba0a06a3bdf0ac749f0a38c70fcf62a104269f03c8cbe50328eaf1"}},{"ruleId":"D2","level":"warning","message":{"text":"TextRenderer::push_md (cognitive 104): TextRenderer::push_md has cognitive complexity 104 (threshold 15). Drivers by points: if/else 22 (63 pts), match/switch 7 (26 pts), loops 4 (15 pts) (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":"crates/mdman/src/format/text.rs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"534520bc1f648e5fb1c1cd349c3fc8b7833aec97959e2d80f81a67186a44fd17"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::resolver::errors::activation_error (cognitive 81): cargo::resolver::errors::activation_error has cognitive complexity 81 (threshold 15). Drivers by points: if/else 30 (53 pts), match/switch 6 (14 pts), loops 5 (12 pts), boolean chains 2 (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":"src/resolver/errors.rs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac9a301bac4d3de768314deb3ce74b9b8db857b264978c4825ba61195626220f"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_vendor::sync (cognitive 78): cargo::ops::cargo_vendor::sync has cognitive complexity 78 (threshold 15). Drivers by points: if/else 28 (56 pts), loops 8 (12 pts), match/switch 2 (7 pts), boolean chains 3 (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":"src/ops/cargo_vendor.rs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4883663ebe4ca4b7551d531075502c58388fd97ef2b70ae95fb2d9b8176b80b"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_compile::create_bcx (cognitive 74): cargo::ops::cargo_compile::create_bcx has cognitive complexity 74 (threshold 15). Drivers by points: if/else 32 (51 pts), loops 7 (11 pts), boolean chains 9, match/switch 3 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_compile/mod.rs"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fb781e3af9d2221fad0a2373d5babc1a46499eae1f4ddfb6a364b5adcd363e2"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::resolver::activate_deps_loop (cognitive 71): cargo::resolver::activate_deps_loop has cognitive complexity 71 (threshold 15). Drivers by points: if/else 15 (53 pts), match/switch 3 (8 pts), boolean chains 6, loops 3 (4 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":"src/resolver/mod.rs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"08be05ca2db5216d432325471507db4ae314cce2cad2a96b822a3778120c4a69"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::workspace::summary::build_feature_map (cognitive 69): cargo::workspace::summary::build_feature_map has cognitive complexity 69 (threshold 15). Drivers by points: if/else 16 (56 pts), loops 4 (5 pts), boolean chains 4, match/switch 2 (4 pts) (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":"src/workspace/summary.rs"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"68b8388cc3d05e07511d1624cc5d50f246480bc5bac39b63c2b5e08d189aff05"}},{"ruleId":"D2","level":"warning","message":{"text":"ManRenderer::push_man (cognitive 68): ManRenderer::push_man has cognitive complexity 68 (threshold 15). Drivers by points: if/else 13 (37 pts), match/switch 8 (30 pts), loops 1 (nesting depth added 46). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mdman/src/format/man.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"b48d6d443af98458aac51146dd3b9f65d74921970fdb209c020299f1de9f9596"}},{"ruleId":"D2","level":"warning","message":{"text":"InstallablePackage::install_one (cognitive 66): InstallablePackage::install_one has cognitive complexity 66 (threshold 15). Drivers by points: if/else 33 (54 pts), loops 5 (8 pts), boolean chains 2, match/switch 1 (2 pts) (nesting depth added 25). Of this number, 64 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":"src/ops/cargo_install.rs"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"338e5032c74b88aee0469a4c2985caf530bac21b9d497c77d11950b653dd5e06"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_add::add (cognitive 66): cargo::ops::cargo_add::add has cognitive complexity 66 (threshold 15). Drivers by points: if/else 24 (58 pts), loops 2 (5 pts), boolean chains 3 (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":"src/ops/cargo_add/mod.rs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b23aee73c19f834d0fe50cbfeaf7acf29dc52495c0e63b64c0d249577822c62"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_add::resolve_dependency (cognitive 66): cargo::ops::cargo_add::resolve_dependency has cognitive complexity 66 (threshold 15). Drivers by points: if/else 35 (64 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":"src/ops/cargo_add/mod.rs"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"3725cc69dc9a1eb103cfbd7cd65f80ed0c63c7f961c92a4b81e5a20e9ef73b13"}},{"ruleId":"D2","level":"warning","message":{"text":"Dependency::update_toml (cognitive 65): Dependency::update_toml has cognitive complexity 65 (threshold 15). Drivers by points: if/else 24 (43 pts), loops 4 (12 pts), match/switch 5 (10 pts) (nesting depth added 32). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/editor/dependency.rs"},"region":{"startLine":508}}}],"partialFingerprints":{"codehealthFindingId/v1":"d06f64456cde9f20388d968ac0ede05ba05cf453eaba221f3d48c6ec49a47e59"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::workspace::parser::to_real_manifest (cognitive 65): cargo::workspace::parser::to_real_manifest has cognitive complexity 65 (threshold 15). Drivers by points: if/else 36 (55 pts), boolean chains 5, loops 3, match/switch 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":"src/workspace/parser/mod.rs"},"region":{"startLine":1301}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9aaaa8d13e9fb5337563b42228a3596d878517958606d4ef79852365de4659c"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::registry::cargo_publish::publish (cognitive 65): cargo::ops::registry::cargo_publish::publish has cognitive complexity 65 (threshold 15). Drivers by points: if/else 27 (55 pts), loops 5 (7 pts), boolean chains 2, match/switch 1 (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":"src/ops/registry/cargo_publish.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f9b3048e3e46efeb6fadcc5e10e97d983a211f8642d1e535bdc10624093a485"}},{"ruleId":"D2","level":"warning","message":{"text":"BuildOutput::parse (cognitive 61): BuildOutput::parse has cognitive complexity 61 (threshold 15). Drivers by points: if/else 23 (48 pts), match/switch 5 (10 pts), boolean chains 2, loops 1 (nesting depth added 30). Of this number, 51 points are the body\u0027s own statements and 10 belong to 3 function items inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/custom_build.rs"},"region":{"startLine":798}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf86dc9ac235dbde3290225157dc61897e3201ccda0ea2e425eda5063ab8474e"}},{"ruleId":"D2","level":"warning","message":{"text":"BuildRunner::compile (cognitive 60): BuildRunner::compile has cognitive complexity 60 (threshold 15). Drivers by points: loops 11 (31 pts), if/else 8 (26 pts), match/switch 1 (3 pts) (nesting depth added 40). 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":"src/compiler/build_runner/mod.rs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5edbe0a8cd6dfa251d025edce4193d38798dae58331b8d09ab439e0b433ba28"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::resolver::encode::into_resolve (cognitive 60): cargo::resolver::encode::into_resolve has cognitive complexity 60 (threshold 15). Drivers by points: if/else 24 (40 pts), loops 9 (10 pts), match/switch 5 (7 pts), boolean chains 3 (nesting depth added 19). Of this number, 54 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":"src/resolver/encode.rs"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"aaf2b05e7fab2298b50a3955f5e4a17ed29b5313af6869706a1d08f0e722c680"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::compiler::build_base_args (cognitive 55): cargo::compiler::build_base_args has cognitive complexity 55 (threshold 15). Drivers by points: if/else 34 (44 pts), boolean chains 7, loops 1 (2 pts), match/switch 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":"src/compiler/mod.rs"},"region":{"startLine":1304}}}],"partialFingerprints":{"codehealthFindingId/v1":"44918287b27c33860e99b6404a8ebb9cacf9c54c7107bb7f773afb4417c6642a"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::compiler::custom_build::build_work (cognitive 55): cargo::compiler::custom_build::build_work has cognitive complexity 55 (threshold 15). Drivers by points: if/else 33 (41 pts), loops 6 (7 pts), match/switch 3 (4 pts), boolean chains 3 (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":"src/compiler/custom_build.rs"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"31dc4a77d69ac93be3234eb00ab4bc21fd365a972579fd7c14dcaed9fe3eb793"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::compiler::on_stderr_line_inner (cognitive 50): cargo::compiler::on_stderr_line_inner has cognitive complexity 50 (threshold 15). Drivers by points: if/else 22 (41 pts), boolean chains 5, loops 1 (2 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":"src/compiler/mod.rs"},"region":{"startLine":2123}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a425116b035c4caa3a8b51eae9e9ecd58e5d6b300269415d437f31ba04b068b"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_tree::graph::add_pkg (cognitive 49): cargo::ops::cargo_tree::graph::add_pkg has cognitive complexity 49 (threshold 15). Drivers by points: if/else 15 (31 pts), loops 3 (7 pts), match/switch 3 (6 pts), boolean chains 5 (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":"src/ops/cargo_tree/graph.rs"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"548344a27f5789fef3ac1b305838d550ffe0c1f759437a0d991ebfd246f84950"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::bin::cargo::commands::install::exec (cognitive 47): cargo::bin::cargo::commands::install::exec has cognitive complexity 47 (threshold 15). Drivers by points: if/else 24 (38 pts), loops 2 (4 pts), boolean chains 3, 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":"src/bin/cargo/commands/install.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cbc15073369cd74f2c47498b60e74ab2c64074bb73a27571b3c0f129e8babd4"}},{"ruleId":"D2","level":"warning","message":{"text":"ArgMatchesExt::compile_options (cognitive 46): ArgMatchesExt::compile_options has cognitive complexity 46 (threshold 15). Drivers by points: if/else 10 (28 pts), match/switch 4 (15 pts), loops 2 (3 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":"src/util/command_prelude.rs"},"region":{"startLine":743}}}],"partialFingerprints":{"codehealthFindingId/v1":"633ff08921b48970fe507605b5b7904c95c15881547bb647fce7faa80df59450"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::resolve::register_previous_locks (cognitive 46): cargo::ops::resolve::register_previous_locks has cognitive complexity 46 (threshold 15). Drivers by points: if/else 15 (32 pts), loops 7 (10 pts), boolean chains 4 (nesting depth added 20). Of this number, 44 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":"src/ops/resolve.rs"},"region":{"startLine":595}}}],"partialFingerprints":{"codehealthFindingId/v1":"3632564eb6a2d854f4a176aaf6d6b287f8802c92bb636da8080b74e934efae62"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::diagnostics::rules::unused_dependencies::lint_package_build_results (cognitive 46): cargo::diagnostics::rules::unused_dependencies::lint_package_build_results has cognitive complexity 46 (threshold 15). Drivers by points: if/else 11 (34 pts), loops 3 (6 pts), boolean chains 3, match/switch 1 (3 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":"src/diagnostics/rules/unused_dependencies.rs"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"704fea4bbf5549d27e816c644c2f6256a06a7f49dd3fa2e9c153f2e5d785398b"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::compiler::fingerprint::find_stale_file (cognitive 46): cargo::compiler::fingerprint::find_stale_file has cognitive complexity 46 (threshold 15). Drivers by points: if/else 12 (36 pts), match/switch 4 (9 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":"src/compiler/fingerprint/mod.rs"},"region":{"startLine":2104}}}],"partialFingerprints":{"codehealthFindingId/v1":"58919e47b99dfc1a34c586efa533c673c1b06bcee82adf9608643c79c17428ad"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_fix::migrate_manifests (cognitive 45): cargo::ops::cargo_fix::migrate_manifests has cognitive complexity 45 (threshold 15). Drivers by points: if/else 15 (35 pts), boolean chains 4, loops 2 (4 pts), match/switch 1 (2 pts) (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":"src/ops/cargo_fix/mod.rs"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"7357948f76c6d3af94a49f2b0a31e04c74dc5f231c232ab4287bc9626e4fce32"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::sources::git::utils::with_authentication (cognitive 45): cargo::sources::git::utils::with_authentication has cognitive complexity 45 (threshold 15). Drivers by points: if/else 20 (38 pts), match/switch 2 (3 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sources/git/utils.rs"},"region":{"startLine":644}}}],"partialFingerprints":{"codehealthFindingId/v1":"375758e3546a37e258a93c80d27b2338094997c48846bf8efcb72380135d6753"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::bin::cargo::commands::remove::gc_workspace (cognitive 44): cargo::bin::cargo::commands::remove::gc_workspace has cognitive complexity 44 (threshold 15). Drivers by points: if/else 10 (29 pts), loops 5 (14 pts), boolean chains 1 (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":"src/bin/cargo/commands/remove.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6f6aca0b1410bbcd19ce8c3c36af8d6ff1d96c062b105b901663ca306738e70"}},{"ruleId":"D2","level":"warning","message":{"text":"UnitGenerator::find_named_targets (cognitive 43): UnitGenerator::find_named_targets has cognitive complexity 43 (threshold 15). Drivers by points: if/else 11 (19 pts), loops 5 (16 pts), match/switch 2 (5 pts), boolean chains 3 (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":"src/ops/cargo_compile/unit_generator.rs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"40a6530d965b2f04bbd9c048b50ee70889f1fcf205a409ef72a4b22f5e678a85"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::workspace::parser::dep_to_dependency (cognitive 42): cargo::workspace::parser::dep_to_dependency has cognitive complexity 42 (threshold 15). Drivers by points: if/else 19 (31 pts), loops 3 (6 pts), boolean chains 3, match/switch 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":"src/workspace/parser/mod.rs"},"region":{"startLine":2276}}}],"partialFingerprints":{"codehealthFindingId/v1":"a397dca385fa37b38c4a6a0686af4432501f3dd9a94c4301ee0b70668f4c81d1"}},{"ruleId":"D2","level":"warning","message":{"text":"Fingerprint::compare (cognitive 41): Fingerprint::compare has cognitive complexity 41 (threshold 15). Drivers by points: if/else 21 (37 pts), loops 2, 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":"src/compiler/fingerprint/mod.rs"},"region":{"startLine":1084}}}],"partialFingerprints":{"codehealthFindingId/v1":"d39d918ee229937e8e852f2a28dcefe0701d40204daa8d3ca245d8f9302345f8"}},{"ruleId":"D2","level":"warning","message":{"text":"Tokenizer::next (cognitive 40): Tokenizer::next has cognitive complexity 40 (threshold 15). Drivers by points: if/else 11 (31 pts), loops 3 (7 pts), match/switch 1 (2 pts) (nesting depth added 25). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/cargo-platform/src/cfg.rs"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"d557534886c58cd84a70100e1d48a173934018f2a0e84e0d597835e9a22ce9c9"}},{"ruleId":"D2","level":"warning","message":{"text":"UnitGenerator::create_proposals (cognitive 40): UnitGenerator::create_proposals has cognitive complexity 40 (threshold 15). Drivers by points: if/else 8 (22 pts), match/switch 5 (10 pts), loops 2 (5 pts), boolean chains 3 (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":"src/ops/cargo_compile/unit_generator.rs"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c71bb5b6304d7aecf12c1ef95da03729569a008a068114003e4a3dfff398673"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_new::mk (cognitive 40): cargo::ops::cargo_new::mk has cognitive complexity 40 (threshold 15). Drivers by points: if/else 16 (36 pts), loops 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":"src/ops/cargo_new.rs"},"region":{"startLine":724}}}],"partialFingerprints":{"codehealthFindingId/v1":"d245cfa8fbb3cbbc9c0c1419e2f0c9f552ddb89cd0604c905346cd6011806147"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::compiler::rustc (cognitive 39): cargo::compiler::rustc has cognitive complexity 39 (threshold 15). Drivers by points: if/else 24 (35 pts), loops 9 (16 pts), boolean chains 5, match/switch 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. This shape REPEATS in the file: one other method here (cargo::compiler::rustc::add_native_deps) 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":"src/compiler/mod.rs"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"e377c65ad4900f5d633966d4322c03ea00fe15187a558079a6a4d5634598cd7a"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::workspace::parser::prepare_toml_for_publish (cognitive 39): cargo::workspace::parser::prepare_toml_for_publish has cognitive complexity 39 (threshold 15). Drivers by points: if/else 20 (26 pts), match/switch 6 (10 pts), loops 2 (3 pts) (nesting depth added 11). Of this number, 25 points are the body\u0027s own statements and 14 belong to 4 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":"src/workspace/parser/mod.rs"},"region":{"startLine":3036}}}],"partialFingerprints":{"codehealthFindingId/v1":"380f690b540c6828d4403a1b80cd487db24dbaff2f359542c76eefb1c5e10c9f"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_report::timings::prepare_context (cognitive 39): cargo::ops::cargo_report::timings::prepare_context has cognitive complexity 39 (threshold 15). Drivers by points: if/else 10 (21 pts), match/switch 6 (15 pts), loops 2, 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":"src/ops/cargo_report/timings.rs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"27b38fd504339ae13b1a9b899266365c5ab81ff1db4ff003a9a4920c110de185"}},{"ruleId":"D2","level":"warning","message":{"text":"BuildRunner::check_collisions (cognitive 38): BuildRunner::check_collisions has cognitive complexity 38 (threshold 15). Drivers by points: if/else 13 (34 pts), loops 2 (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":"src/compiler/build_runner/mod.rs"},"region":{"startLine":609}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ff0024f9f62b5749a017dc188a0a0a593cdbc46e0254b0eadab258651933e34"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_update::update_lockfile (cognitive 38): cargo::ops::cargo_update::update_lockfile has cognitive complexity 38 (threshold 15). Drivers by points: if/else 13 (24 pts), match/switch 3 (7 pts), loops 2 (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":"src/ops/cargo_update.rs"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d0ea4c71932eb616a898261ca0086fbd76c281919acb658b00446197f654673"}},{"ruleId":"D2","level":"warning","message":{"text":"Compilation::fill_env (cognitive 36): Compilation::fill_env has cognitive complexity 36 (threshold 15). Drivers by points: if/else 14 (26 pts), loops 3 (7 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":"src/compiler/compilation.rs"},"region":{"startLine":367}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd15edcbe560a04ba6210e4427d293a2aca459913180db74dc0a38b1a7762c65"}},{"ruleId":"D2","level":"warning","message":{"text":"InstallablePackage::new (cognitive 36): InstallablePackage::new has cognitive complexity 36 (threshold 15). Drivers by points: if/else 26 (34 pts), boolean chains 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":"src/ops/cargo_install.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f991b14f03d8d4b89827fbcdd899754371e5048e1a3061c742f013c20470eea"}},{"ruleId":"D2","level":"warning","message":{"text":"Dependency::from_toml (cognitive 36): Dependency::from_toml has cognitive complexity 36 (threshold 15). Drivers by points: if/else 23 (36 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":"src/workspace/editor/dependency.rs"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"db602e5c388513ce288d32514bdcbbf81e666ebdd1b4f7425555e09e35f3939f"}},{"ruleId":"D2","level":"warning","message":{"text":"ManifestErrorContext::find_crate_span (cognitive 35): ManifestErrorContext::find_crate_span has cognitive complexity 35 (threshold 15). Drivers by points: if/else 12 (30 pts), match/switch 1 (3 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":"src/compiler/mod.rs"},"region":{"startLine":2493}}}],"partialFingerprints":{"codehealthFindingId/v1":"0add23265db57024f23a59c16cf9f6faf38cabf44c35a34f0f531e758656446c"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::workspace::parser::targets::toml_targets_and_inferred (cognitive 35): cargo::workspace::parser::targets::toml_targets_and_inferred has cognitive complexity 35 (threshold 15). Drivers by points: if/else 8 (22 pts), loops 3 (9 pts), match/switch 2 (3 pts), boolean chains 1 (nesting depth added 21). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/parser/targets.rs"},"region":{"startLine":782}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4d893fa74888012d30d89bdbeacdb157485d82bacdb50db902cad2e6919c0f3"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_add::get_public_dependency (cognitive 35): cargo::ops::cargo_add::get_public_dependency has cognitive complexity 35 (threshold 15). Drivers by points: if/else 11 (22 pts), loops 4 (8 pts), boolean chains 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":"src/ops/cargo_add/mod.rs"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"26c63efa03bf486d0fe6f8678264b9370886abd60012f2c48856202af951c510"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::compiler::fingerprint::dep_info::parse_rustc_dep_info (cognitive 35): cargo::compiler::fingerprint::dep_info::parse_rustc_dep_info has cognitive complexity 35 (threshold 15). Drivers by points: if/else 9 (21 pts), loops 4 (9 pts), match/switch 2 (5 pts) (nesting depth added 20). Of this number, 30 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":"src/compiler/fingerprint/dep_info.rs"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"16acc2a6785bb40a4b6406390d075b09e8f88b686711b5343f0c5180db2186e8"}},{"ruleId":"D2","level":"warning","message":{"text":"RegistrySource::query (cognitive 34): RegistrySource::query has cognitive complexity 34 (threshold 15). Drivers by points: if/else 15 (21 pts), match/switch 4 (6 pts), boolean chains 5, 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":"src/sources/registry/mod.rs"},"region":{"startLine":678}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ac3ba205cf8f6671fb9866abb8819cb0bae6d5f672f0b66e973d6b23ed3c749"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_metadata::build_resolve_graph_r (cognitive 34): cargo::ops::cargo_metadata::build_resolve_graph_r has cognitive complexity 34 (threshold 15). Drivers by points: if/else 8 (18 pts), match/switch 3 (9 pts), loops 4 (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":"src/ops/cargo_metadata.rs"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"89ca5a8aee04255f7492f460083e40b32e5cce645f09bfd8e7804721c3956029"}},{"ruleId":"D2","level":"warning","message":{"text":"TargetInfo::new (cognitive 33): TargetInfo::new has cognitive complexity 33 (threshold 15). Drivers by points: if/else 7 (17 pts), loops 4 (7 pts), match/switch 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":"src/compiler/build_context/target_info.rs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"afcf5a334655ef452a2c778a865cf1dffb10139538bbf9fb114df15a2ee29aaa"}},{"ruleId":"D2","level":"warning","message":{"text":"UnusedDepState::new (cognitive 33): UnusedDepState::new has cognitive complexity 33 (threshold 15). Drivers by points: if/else 8 (20 pts), loops 5 (9 pts), boolean chains 4 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/unused_deps.rs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"c990acec870b5fe20acb62a3697c92a7fd83718eeae843bf081a2edaa430b694"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_package::do_package (cognitive 33): cargo::ops::cargo_package::do_package has cognitive complexity 33 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 3 (7 pts), match/switch 2 (7 pts), boolean chains 5 (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":"src/ops/cargo_package/mod.rs"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b353f39721da464bbcc2ebcb00c7e6c8e884db91b412ce72836f8842d03061a"}},{"ruleId":"D2","level":"warning","message":{"text":"semver_check::doit (cognitive 33): semver_check::doit has cognitive complexity 33 (threshold 15). Drivers by points: if/else 8 (21 pts), match/switch 2 (6 pts), loops 3 (5 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":"crates/semver-check/src/main.rs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce45c925f6e0d5fc5fc74c91ef9187fbc7722e2e8b73b9d910265802e91d6d0b"}},{"ruleId":"D2","level":"warning","message":{"text":"Display::fmt (cognitive 32): Display::fmt has cognitive complexity 32 (threshold 15). Drivers by points: if/else 7 (24 pts), match/switch 3 (6 pts), loops 1 (2 pts) (nesting depth added 21). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_tree/format/mod.rs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"7aea743be1a20f5bf47401a771e6e4c16057179c5c4b732c088bdb7e6b70acf6"}},{"ruleId":"D2","level":"warning","message":{"text":"WorkerServer::worker_loop (cognitive 32): WorkerServer::worker_loop has cognitive complexity 32 (threshold 15). Drivers by points: if/else 7 (23 pts), match/switch 2 (6 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":"src/util/network/http_async.rs"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"73209cfadeaf28c5171fa70382dd2ae1c8a28b042a3b5183bab1ab0acab26a51"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::workspace::parser::verify_lints (cognitive 32): cargo::workspace::parser::verify_lints has cognitive complexity 32 (threshold 15). Drivers by points: if/else 10 (24 pts), loops 3 (7 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":"src/workspace/parser/mod.rs"},"region":{"startLine":2755}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5f225ba305582f94b8fcec30d2255cc53b156b9e2e84eda3253d3ac69a7130a"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::sources::path::list_files_walk (cognitive 32): cargo::sources::path::list_files_walk has cognitive complexity 32 (threshold 15). Drivers by points: if/else 9 (17 pts), match/switch 3 (8 pts), boolean chains 6, 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":"src/sources/path.rs"},"region":{"startLine":871}}}],"partialFingerprints":{"codehealthFindingId/v1":"3267398165acd2bc3c6519aaa55862fc243c16b52ed271685d1dc0bc8cca995c"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_add::get_latest_dependency (cognitive 32): cargo::ops::cargo_add::get_latest_dependency has cognitive complexity 32 (threshold 15). Drivers by points: if/else 9 (21 pts), match/switch 3 (6 pts), loops 1 (4 pts), boolean chains 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":"src/ops/cargo_add/mod.rs"},"region":{"startLine":844}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf92abda67c17c8bdbc90891f6eb0fae21192eafc70e0b41e1bf005919008397"}},{"ruleId":"D2","level":"warning","message":{"text":"xtask_bump_check::xtask::bump_check (cognitive 32): xtask_bump_check::xtask::bump_check has cognitive complexity 32 (threshold 15). Drivers by points: if/else 13 (23 pts), loops 5 (9 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/xtask-bump-check/src/xtask.rs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bb8362c6163b03353588663d7096aa6f9e8178d15999bdb23badf098b5200a8"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::compiler::compile (cognitive 31): cargo::compiler::compile has cognitive complexity 31 (threshold 15). Drivers by points: if/else 14 (26 pts), boolean chains 3, loops 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":"src/compiler/mod.rs"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"c408c7f13ca8d65a6989a2dbc34faa53c489ba34be05b3c1a302b356cbe5eb65"}},{"ruleId":"D2","level":"warning","message":{"text":"TomlProfile::merge (cognitive 30): TomlProfile::merge has cognitive complexity 30 (threshold 15). Drivers by points: if/else 19, match/switch 3 (8 pts), loops 1 (3 pts) (nesting depth added 7). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/cargo-util-schemas/src/manifest/mod.rs"},"region":{"startLine":970}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6a0ee82edef9a085547b2af2eea0c597d3ea2ac4f2817199d70f38099c2d92d"}},{"ruleId":"D2","level":"warning","message":{"text":"Dependency::to_toml (cognitive 30): Dependency::to_toml has cognitive complexity 30 (threshold 15). Drivers by points: if/else 13 (27 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":"src/workspace/editor/dependency.rs"},"region":{"startLine":401}}}],"partialFingerprints":{"codehealthFindingId/v1":"aec89781a1fd90d64e5622f8ba122131ea4489be5a59035f55b5f61a691bdc81"}},{"ruleId":"D2","level":"warning","message":{"text":"Features::status (cognitive 30): Features::status has cognitive complexity 30 (threshold 15). Drivers by points: if/else 30. 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":"src/workspace/features.rs"},"region":{"startLine":474}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8f559d6e3ea178a9d87165eea0e3307dac1c492e78dab69f57399c8f4c1b638"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::compiler::prepare_rustdoc (cognitive 30): cargo::compiler::prepare_rustdoc has cognitive complexity 30 (threshold 15). Drivers by points: if/else 16 (20 pts), loops 2 (5 pts), match/switch 1 (3 pts), boolean chains 2 (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":"src/compiler/mod.rs"},"region":{"startLine":904}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff4ed3ef33832442236e691e272d18cfe2814e534fa4bb8384bb61089c6fb5fb"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_compile::validate_target_path_as_source_file (cognitive 30): cargo::ops::cargo_compile::validate_target_path_as_source_file has cognitive complexity 30 (threshold 15). Drivers by points: if/else 15 (28 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":"src/ops/cargo_compile/mod.rs"},"region":{"startLine":704}}}],"partialFingerprints":{"codehealthFindingId/v1":"802cb92cd1d796eaba01496ae355cd3cf5811277234ff9b8e487b7d15a2c42de"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::diagnostics::rules::non_kebab_case_bins::lint_package_inner (cognitive 30): cargo::diagnostics::rules::non_kebab_case_bins::lint_package_inner has cognitive complexity 30 (threshold 15). Drivers by points: if/else 14 (26 pts), boolean chains 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":"src/diagnostics/rules/non_kebab_case_bins.rs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"829499178484a5f04a4ec88180a6308f0dea572b43bf7b08c16faec8452d28cd"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::common_for_install_and_uninstall::select_dep_pkg (cognitive 30): cargo::ops::common_for_install_and_uninstall::select_dep_pkg has cognitive complexity 30 (threshold 15). Drivers by points: if/else 11 (27 pts), match/switch 3 (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":"src/ops/common_for_install_and_uninstall.rs"},"region":{"startLine":596}}}],"partialFingerprints":{"codehealthFindingId/v1":"f62a3abd9150cdd70f31874c2573699ac1f1e3249a8c0d0a24275b08aec94a27"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::diagnostics::rules::text_direction_codepoint_in_literal::lint_manifest (cognitive 30): cargo::diagnostics::rules::text_direction_codepoint_in_literal::lint_manifest has cognitive complexity 30 (threshold 15). Drivers by points: if/else 8 (15 pts), match/switch 2 (8 pts), loops 3 (7 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":"src/diagnostics/rules/text_direction_codepoint_in_literal.rs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"38e6ccd6c159aa694f63bf74fa5f83e0639d761afb2af0ec73160e2ccf1061ce"}},{"ruleId":"D2","level":"warning","message":{"text":"ConflictStoreTrie::find (cognitive 29): ConflictStoreTrie::find has cognitive complexity 29 (threshold 15). Drivers by points: if/else 8 (25 pts), loops 1 (2 pts), boolean chains 1, 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":"src/resolver/conflict_cache.rs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"dddaad67e5b778340e273d5391cb909c35ee2094b36687313a2e9b6ee6a476a9"}},{"ruleId":"D2","level":"warning","message":{"text":"HttpBackend::fetch_uncached_no_retry (cognitive 29): HttpBackend::fetch_uncached_no_retry has cognitive complexity 29 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 3 (10 pts), match/switch 2 (5 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":"src/sources/registry/http_remote.rs"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"4208d306cc478166f9b54e349c7ce2a6fcc22887cc643a6f807e7bd181d53846"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::context::save_credentials (cognitive 29): cargo::context::save_credentials has cognitive complexity 29 (threshold 15). Drivers by points: if/else 13 (24 pts), match/switch 3 (5 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":"src/context/mod.rs"},"region":{"startLine":2170}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff5e8b9f7846142b8ac27dca85fdcb19731b15becd98e2f0b0df3c4b348c20f1"}},{"ruleId":"D2","level":"warning","message":{"text":"RequirementError::into_activate_error (cognitive 28): RequirementError::into_activate_error has cognitive complexity 28 (threshold 15). Drivers by points: if/else 5 (14 pts), match/switch 5 (9 pts), loops 1 (5 pts) (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":"src/resolver/dep_cache.rs"},"region":{"startLine":576}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2dfdf91e89c6266247f7bd7a8a2c339b97f7c7f6b961baa2be2f9f32c405324"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_report::rebuilds::display_report (cognitive 28): cargo::ops::cargo_report::rebuilds::display_report has cognitive complexity 28 (threshold 15). Drivers by points: if/else 12 (19 pts), loops 2 (5 pts), boolean chains 4 (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":"src/ops/cargo_report/rebuilds.rs"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"663184bd4f6db6bec79221347369e47ec199eeaa43788e6dad7f648f2257947b"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_fix::check_version_control (cognitive 28): cargo::ops::cargo_fix::check_version_control has cognitive complexity 28 (threshold 15). Drivers by points: if/else 8 (18 pts), loops 3 (4 pts), match/switch 1 (4 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":"src/ops/cargo_fix/mod.rs"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"d93640ea4e740427591794af74bffe42539aa7ebfd4203e67af1e425f7667f0e"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_install::install (cognitive 28): cargo::ops::cargo_install::install has cognitive complexity 28 (threshold 15). Drivers by points: if/else 14 (20 pts), match/switch 2 (5 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_install.rs"},"region":{"startLine":708}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd23d7920d01d9e149fb5c52a9ebc701f74cf0dea3322ab21d709d0613a01fe2"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::workspace::parser::to_workspace_config (cognitive 27): cargo::workspace::parser::to_workspace_config has cognitive complexity 27 (threshold 15). Drivers by points: if/else 6 (20 pts), loops 2 (6 pts), match/switch 1 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/parser/mod.rs"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"63ebf84d4a97f9d952cb1320a8ca21e94ac75e42a3a48ec946248df2d774960f"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::workspace::parser::normalize_dependencies (cognitive 27): cargo::workspace::parser::normalize_dependencies has cognitive complexity 27 (threshold 15). Drivers by points: if/else 7 (20 pts), match/switch 1 (4 pts), boolean chains 2, 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":"src/workspace/parser/mod.rs"},"region":{"startLine":900}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ce208be9a3e00017fd869ef3ac6e8bcf7c2b15745407add523361c7b4a130de"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::compiler::output_depinfo::add_deps_for_unit (cognitive 27): cargo::compiler::output_depinfo::add_deps_for_unit has cognitive complexity 27 (threshold 15). Drivers by points: if/else 9 (17 pts), loops 4 (10 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":"src/compiler/output_depinfo.rs"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"557ddf3a1ec9d07d8776ebefc84fbce1d639c934c63b3258ba30ac482842e21f"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_compile::remove_duplicate_doc (cognitive 27): cargo::ops::cargo_compile::remove_duplicate_doc has cognitive complexity 27 (threshold 15). Drivers by points: if/else 8 (16 pts), loops 8 (10 pts), boolean chains 1 (nesting depth added 10). Of this number, 25 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":"src/ops/cargo_compile/mod.rs"},"region":{"startLine":1036}}}],"partialFingerprints":{"codehealthFindingId/v1":"570ea702d8059f19e37038b10874da13ff98251e41375398ad8f9890f765c117"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::bin::cargo::cli::expand_aliases (cognitive 27): cargo::bin::cargo::cli::expand_aliases has cognitive complexity 27 (threshold 15). Drivers by points: if/else 9 (25 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":"src/bin/cargo/cli.rs"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0e523316db242faea4b84928bd2898b67350ddb64e137a56b8e882a91be29df"}},{"ruleId":"D2","level":"warning","message":{"text":"ProcessBuilder::exec_with_streaming (cognitive 26): ProcessBuilder::exec_with_streaming has cognitive complexity 26 (threshold 15). Drivers by points: if/else 17 (21 pts), match/switch 2 (4 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":"crates/cargo-util/src/process_builder.rs"},"region":{"startLine":378}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7fcd090e20d4dcedc14da2fafdd848d0cf2495dd4bf46424efa2b8f29f86af5"}},{"ruleId":"D2","level":"warning","message":{"text":"LocalFingerprint::find_stale_item (cognitive 26): LocalFingerprint::find_stale_item has cognitive complexity 26 (threshold 15). Drivers by points: if/else 8 (21 pts), match/switch 2 (3 pts), loops 1 (2 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":"src/compiler/fingerprint/mod.rs"},"region":{"startLine":938}}}],"partialFingerprints":{"codehealthFindingId/v1":"925441fe51f1436b6dd12e577955e72854ca9e4cb7d4f7a9e8c97bd0e1c7af03"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::compiler::rustdoc::build_all_urls (cognitive 26): cargo::compiler::rustdoc::build_all_urls has cognitive complexity 26 (threshold 15). Drivers by points: if/else 8 (21 pts), loops 2 (3 pts), boolean chains 2 (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":"src/compiler/rustdoc.rs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4ae2d6930daebd1b38c611d3cc59ec28087e3437cd80de5ad387cd9e0645cbf"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::diagnostics::rules::blanket_hint_mostly_unused::lint_workspace (cognitive 26): cargo::diagnostics::rules::blanket_hint_mostly_unused::lint_workspace has cognitive complexity 26 (threshold 15). Drivers by points: if/else 12 (19 pts), boolean chains 4, 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":"src/diagnostics/rules/blanket_hint_mostly_unused.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1896417836305619701386fe6b09f4dc4119b256358dd779cc02bd0458d8b08"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::lockfile::serialize_resolve (cognitive 26): cargo::ops::lockfile::serialize_resolve has cognitive complexity 26 (threshold 15). Drivers by points: if/else 9 (17 pts), loops 4 (9 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":"src/ops/lockfile.rs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"4de8241b7bf4f2080a08bd498608a475a530b61ecf85c9fb93582d560cec6e4c"}},{"ruleId":"D2","level":"warning","message":{"text":"DrainState::drain_the_queue (cognitive 25): DrainState::drain_the_queue has cognitive complexity 25 (threshold 15). Drivers by points: if/else 13 (20 pts), loops 2 (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":"src/compiler/job_queue/mod.rs"},"region":{"startLine":801}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e09f6dec03e2768203d9271e2de50f0c732677694cd43002958f4436b4cd628"}},{"ruleId":"D2","level":"warning","message":{"text":"DrainState::report_warning_count (cognitive 25): DrainState::report_warning_count has cognitive complexity 25 (threshold 15). Drivers by points: if/else 9 (21 pts), boolean chains 2, match/switch 2 (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":"src/compiler/job_queue/mod.rs"},"region":{"startLine":1106}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd224e068d7b113ec4cdd71b14cb0c8b989db89a7b14aabe7799774e91be3ac1"}},{"ruleId":"D2","level":"warning","message":{"text":"RegistryQueryerAsync::query (cognitive 25): RegistryQueryerAsync::query has cognitive complexity 25 (threshold 15). Drivers by points: if/else 9 (17 pts), loops 2 (3 pts), match/switch 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":"src/resolver/dep_cache.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"15566fe6a0ede427cf80adc97cbe12c581c7992d83e2efd22d9f72784b7d607e"}},{"ruleId":"D2","level":"warning","message":{"text":"PackageRegistry::query (cognitive 25): PackageRegistry::query has cognitive complexity 25 (threshold 15). Drivers by points: if/else 9 (15 pts), match/switch 3 (5 pts), loops 2 (4 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/registry.rs"},"region":{"startLine":667}}}],"partialFingerprints":{"codehealthFindingId/v1":"8df1dbf832d531f8103030a8aa786c5c512ab4dd32d3ee6165037cee90c82ac6"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::workspace::parser::lints_to_rustflags (cognitive 25): cargo::workspace::parser::lints_to_rustflags has cognitive complexity 25 (threshold 15). Drivers by points: if/else 8 (18 pts), loops 1 (6 pts), match/switch 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":"src/workspace/parser/mod.rs"},"region":{"startLine":2826}}}],"partialFingerprints":{"codehealthFindingId/v1":"969b7421b34f742daa3526315707691ef6bc257978120af180e98277b4a952b1"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::bin::cargo::commands::run::exec_manifest_command (cognitive 25): cargo::bin::cargo::commands::run::exec_manifest_command has cognitive complexity 25 (threshold 15). Drivers by points: if/else 15 (24 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":"src/bin/cargo/commands/run.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"a208e7385fe707079910c62bbf671dced0db7ef4dc99a614010cfd179ead3b70"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_fix::rustfix_and_fix (cognitive 25): cargo::ops::cargo_fix::rustfix_and_fix has cognitive complexity 25 (threshold 15). Drivers by points: if/else 8 (15 pts), match/switch 2 (5 pts), loops 3 (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":"src/ops/cargo_fix/mod.rs"},"region":{"startLine":982}}}],"partialFingerprints":{"codehealthFindingId/v1":"65db85122ac58274010aa46a33f37a456fc7ad28abe3f60b46d778af8c504a73"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_install::remove_orphaned_bins (cognitive 25): cargo::ops::cargo_install::remove_orphaned_bins has cognitive complexity 25 (threshold 15). Drivers by points: if/else 5 (17 pts), loops 4 (8 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":"src/ops/cargo_install.rs"},"region":{"startLine":956}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e6072608a97ef3e7fe298f178bab49893e9505e534b20dd6da6f06a231c5bac"}},{"ruleId":"D2","level":"warning","message":{"text":"PackageChange::with_diff (cognitive 24): PackageChange::with_diff has cognitive complexity 24 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 6 (12 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":"src/ops/cargo_update.rs"},"region":{"startLine":700}}}],"partialFingerprints":{"codehealthFindingId/v1":"3849539750f5059252a303b7da5e7c1b0057213ac8c5ca0c3d90f3a060570084"}},{"ruleId":"D2","level":"warning","message":{"text":"Workspace::validate_manifest (cognitive 24): Workspace::validate_manifest has cognitive complexity 24 (threshold 15). Drivers by points: if/else 9 (22 pts), loops 1 (2 pts) (nesting depth added 14). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/workspace.rs"},"region":{"startLine":1177}}}],"partialFingerprints":{"codehealthFindingId/v1":"6879c77a0e20a437defeebe76e06bd714c46f3a379b52e847d29ab24fca36b76"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::compiler::build_deps_args (cognitive 24): cargo::compiler::build_deps_args has cognitive complexity 24 (threshold 15). Drivers by points: if/else 10 (17 pts), loops 4 (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":"src/compiler/mod.rs"},"region":{"startLine":1634}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2e9d82d5505ee1e46a65100d8893f33e60ab0a9120b40e8df0807597f5eab5d"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::resolver::dep_cache::build_requirements (cognitive 24): cargo::resolver::dep_cache::build_requirements has cognitive complexity 24 (threshold 15). Drivers by points: if/else 6 (15 pts), loops 3 (7 pts), boolean chains 1, 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":"src/resolver/dep_cache.rs"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9b24e8a4186bc5a36442cb3203c5bd05aa9ac379b02924511e950d9932062cf"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::bin::cargo::commands::add::parse_dependencies (cognitive 24): cargo::bin::cargo::commands::add::parse_dependencies has cognitive complexity 24 (threshold 15). Drivers by points: if/else 8 (16 pts), loops 3, match/switch 2 (3 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":"src/bin/cargo/commands/add.rs"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"66fef70e3a419fcdd3e9ddcd2f271636a42c4078381a5bcc791feb4869e58fc0"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_new::init (cognitive 24): cargo::ops::cargo_new::init 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":"src/ops/cargo_new.rs"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"960decc42b9d57bd3a0ad25c8060908e972bbd6e66228d215863d864d79e779a"}},{"ruleId":"D2","level":"warning","message":{"text":"TargetInfo::file_types (cognitive 23): TargetInfo::file_types has cognitive complexity 23 (threshold 15). Drivers by points: if/else 13 (17 pts), boolean chains 5, 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":"src/compiler/build_context/target_info.rs"},"region":{"startLine":415}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a527e825bee9a57ea8714e43c6c65d1c28ab488a9977dbfdd981bc936d4a0c5"}},{"ruleId":"D2","level":"warning","message":{"text":"GlobalContext::include_paths (cognitive 23): GlobalContext::include_paths has cognitive complexity 23 (threshold 15). Drivers by points: if/else 7 (13 pts), match/switch 4 (9 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":"src/context/mod.rs"},"region":{"startLine":1455}}}],"partialFingerprints":{"codehealthFindingId/v1":"de50fd821fd93eacc8c028d1028e8cbe506a81b9a4f331030e7c707c3a5292b3"}},{"ruleId":"D2","level":"warning","message":{"text":"FeatureResolver::activate_dep_feature (cognitive 23): FeatureResolver::activate_dep_feature has cognitive complexity 23 (threshold 15). Drivers by points: if/else 5 (19 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":"src/resolver/features.rs"},"region":{"startLine":674}}}],"partialFingerprints":{"codehealthFindingId/v1":"91da63297aa4372bf061be5afed8e8829896f2cdd3450462b02c242052505863"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_tree::print_node (cognitive 23): cargo::ops::cargo_tree::print_node has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (14 pts), boolean chains 4, loops 2 (4 pts), match/switch 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_tree/mod.rs"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"6741d5ddd925e47f47856cdb7e844b004ab89ee143a9100a63181a36d1422ced"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_clean::clean (cognitive 23): cargo::ops::cargo_clean::clean has cognitive complexity 23 (threshold 15). Drivers by points: if/else 12 (19 pts), boolean chains 2, 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":"src/ops/cargo_clean.rs"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"e88422a6c1f6af262db6752400abb4672d7ec4b0abb487ac99c11feabdda99ee"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::util::auth::registry_credential_config_raw_uncached (cognitive 23): cargo::util::auth::registry_credential_config_raw_uncached has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (19 pts), loops 1 (3 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":"src/util/auth/mod.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd2ec4d67061cbb6a3476c58d59334b325962d953a9a99e7db83c8bc26d13806"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::sources::git::known_hosts::check_ssh_known_hosts_loaded (cognitive 23): cargo::sources::git::known_hosts::check_ssh_known_hosts_loaded has cognitive complexity 23 (threshold 15). Drivers by points: if/else 11 (20 pts), match/switch 1 (2 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":"src/sources/git/known_hosts.rs"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"473800fe2fffdbb3170ce50576cc9deda927c7e918cf33d70168050f3d9ec90e"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::compiler::fingerprint::calculate_normal (cognitive 23): cargo::compiler::fingerprint::calculate_normal has cognitive complexity 23 (threshold 15). Drivers by points: if/else 14 (16 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":"src/compiler/fingerprint/mod.rs"},"region":{"startLine":1578}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7a79e3a03bab91aabaade9486d6cebd7949b04d9c6664396e342114a9f97e67"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::resolver::generalize_conflicting (cognitive 23): cargo::resolver::generalize_conflicting has cognitive complexity 23 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 4 (11 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":"src/resolver/mod.rs"},"region":{"startLine":809}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9a8fccc8362c86124a8c15c4161f7511949de6945d5b01c78f25a9bf7ffac1c"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_package::build_ar_list (cognitive 23): cargo::ops::cargo_package::build_ar_list has cognitive complexity 23 (threshold 15). Drivers by points: if/else 13 (18 pts), loops 2, 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":"src/ops/cargo_package/mod.rs"},"region":{"startLine":498}}}],"partialFingerprints":{"codehealthFindingId/v1":"217486554eb5645a66f31fc48ec07d1062bc58cefb811efe23e8a4feaac31e10"}},{"ruleId":"D2","level":"warning","message":{"text":"FeatureResolver::deps (cognitive 22): FeatureResolver::deps has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7, match/switch 3 (7 pts), boolean chains 5, loops 1 (3 pts) (nesting depth added 6). Most of this is not in the body itself: 8 of the 22 points are its own statements and the rest belongs to 2 function items inside it that branch (artifact_features_for, platform_activated). 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":"src/resolver/features.rs"},"region":{"startLine":775}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0bb2f5559e59fc985c91f0e4c1a46d04102ac667a7ce40a98c4acc9a0403210"}},{"ruleId":"D2","level":"warning","message":{"text":"Workspace::find_members (cognitive 22): Workspace::find_members has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11 (18 pts), loops 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":"src/workspace/workspace.rs"},"region":{"startLine":848}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cd58d066e4e615d650512f76b2dc0e213be4040cbed9da3ece842a3db7f79f3"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_run::run (cognitive 22): cargo::ops::cargo_run::run has cognitive complexity 22 (threshold 15). Drivers by points: if/else 13 (16 pts), loops 1 (3 pts), boolean chains 2, 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":"src/ops/cargo_run.rs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a7bb49e5e7954d74d072073ef2628914c545b37c8650058f736d401a14fb302"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::compiler::unit_dependencies::compute_deps (cognitive 22): cargo::compiler::unit_dependencies::compute_deps has cognitive complexity 22 (threshold 15). Drivers by points: if/else 9 (12 pts), boolean chains 4, loops 2 (4 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":"src/compiler/unit_dependencies.rs"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"c07e9a9b240ad595af5ae674ba58094a7a4563a98a90659d4cbfeca0473171b0"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::sources::path::list_files_gix (cognitive 22): cargo::sources::path::list_files_gix has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (13 pts), match/switch 2 (6 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":"src/sources/path.rs"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"af085ffe87800955dfa26af1770c2bebae64b5f0c2f0686feb949669dc2ad0f2"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::bin::cargo::commands::remove::gc_unused_patches (cognitive 22): cargo::bin::cargo::commands::remove::gc_unused_patches has cognitive complexity 22 (threshold 15). Drivers by points: if/else 6 (16 pts), loops 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":"src/bin/cargo/commands/remove.rs"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e41296440c07c2ac5dd2dcb6f64bf8905259abbf53096f53b88400946de8fb5"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_tree::graph::add_feature_rec (cognitive 22): cargo::ops::cargo_tree::graph::add_feature_rec has cognitive complexity 22 (threshold 15). Drivers by points: if/else 4 (12 pts), match/switch 2 (5 pts), loops 2 (4 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":"src/ops/cargo_tree/graph.rs"},"region":{"startLine":726}}}],"partialFingerprints":{"codehealthFindingId/v1":"e182d3bb87d6476aac4976a31d228e8ace5b1bac3b0f004df86c8a16aa52dfb8"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_update::print_lockfile_updates (cognitive 22): cargo::ops::cargo_update::print_lockfile_updates has cognitive complexity 22 (threshold 15). Drivers by points: if/else 9 (19 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":"src/ops/cargo_update.rs"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ef5ff658eb4cf27bb7f0d2433012dc22652af923d36fda8616d5133a45114dc"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::workspace::parser::targets::normalize_lib (cognitive 22): cargo::workspace::parser::targets::normalize_lib has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11 (21 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":"src/workspace/parser/targets.rs"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"6679bafd11ad729b9f6f557d79032e614aef83b3bb9f554d9a6efc85fa91eb03"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_fix::rustfix_crate (cognitive 22): cargo::ops::cargo_fix::rustfix_crate has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 5 (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":"src/ops/cargo_fix/mod.rs"},"region":{"startLine":846}}}],"partialFingerprints":{"codehealthFindingId/v1":"d115d32f8c13d471e3161e558c53832d0736593122cc0171b82e5d4564d24e35"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::sources::git::utils::github_fast_path (cognitive 22): cargo::sources::git::utils::github_fast_path has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12 (20 pts), boolean chains 1, match/switch 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sources/git/utils.rs"},"region":{"startLine":1749}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb9fae42a02021c31bd1d7fe1256297b395569461b2e4b7624e6d749006530ed"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::workspace::profiles::merge_toml_overrides (cognitive 22): cargo::workspace::profiles::merge_toml_overrides has cognitive complexity 22 (threshold 15). Drivers by points: if/else 9 (19 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":"src/workspace/profiles.rs"},"region":{"startLine":489}}}],"partialFingerprints":{"codehealthFindingId/v1":"19b084edf0b5b62d33ed67b4adc1005fec0f37be67e378faf1466f077d269318"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::workspace::profiles::merge_config_profiles (cognitive 22): cargo::workspace::profiles::merge_config_profiles has cognitive complexity 22 (threshold 15). Drivers by points: if/else 5 (16 pts), loops 4 (5 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":"src/workspace/profiles.rs"},"region":{"startLine":1270}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cae03489ff62d97bde9439cd93a3b79fe12fb85199ae94088b273ddff61e722"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::compiler::future_incompat::save_and_display_report (cognitive 22): cargo::compiler::future_incompat::save_and_display_report has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11 (14 pts), loops 2 (5 pts), match/switch 2, 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":"src/compiler/future_incompat.rs"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"f105c4513595bdf4601b84b53f095fe74e305a25c611eb80a5a516988e5b600f"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::diagnostics::rules::unknown_lints::lint_manifest_inner (cognitive 21): cargo::diagnostics::rules::unknown_lints::lint_manifest_inner has cognitive complexity 21 (threshold 15). Drivers by points: if/else 9 (16 pts), loops 2, 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":"src/diagnostics/rules/unknown_lints.rs"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"e077448f57442d394d3a8300517ae3eb481fb68a721c2df835eabf64ffe4ed0d"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_doc::doc (cognitive 21): cargo::ops::cargo_doc::doc has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (12 pts), loops 2 (5 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":"src/ops/cargo_doc.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"586abe2b1d6d1d3c527dc989e183410281979860a95673c9047787f3ff1d2ee8"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::resolve::register_patch_entries (cognitive 21): cargo::ops::resolve::register_patch_entries has cognitive complexity 21 (threshold 15). Drivers by points: match/switch 3 (11 pts), loops 4 (7 pts), if/else 1 (2 pts), boolean chains 1 (nesting depth added 12). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/resolve.rs"},"region":{"startLine":908}}}],"partialFingerprints":{"codehealthFindingId/v1":"e41608ac5f3d16aba1c449bebd465f8372391200c46b3a4ae75aabcd2b60210c"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_update::annotate_required_rust_version (cognitive 21): cargo::ops::cargo_update::annotate_required_rust_version has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (17 pts), loops 2 (4 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":"src/ops/cargo_update.rs"},"region":{"startLine":982}}}],"partialFingerprints":{"codehealthFindingId/v1":"aae3c29813547574b214bf2138627426b457f9f06aded5918cc9f29e13d71932"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::diagnostics::rules::unused_dependencies::lint_build_results (cognitive 21): cargo::diagnostics::rules::unused_dependencies::lint_build_results has cognitive complexity 21 (threshold 15). Drivers by points: loops 5 (15 pts), if/else 3 (6 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":"src/diagnostics/rules/unused_dependencies.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"56d30387b9ebeac405eb1d7974be9451a6149c91366000844ca0a448b2a10fe0"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::util::network::retry::maybe_spurious (cognitive 21): cargo::util::network::retry::maybe_spurious has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (14 pts), match/switch 2 (4 pts), boolean chains 3 (nesting depth added 6). 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, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/util/network/retry.rs"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"e98c91a08a5d7c2c90fe003172abc3c72fdcdbd9fe239842af9ec6b37842f181"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::compiler::output_depinfo::output_depinfo (cognitive 21): cargo::compiler::output_depinfo::output_depinfo 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). 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":"src/compiler/output_depinfo.rs"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a72623e0214d3cff6110f52fe50fcb88d544936fe8443c851c1738e9f0a0cd3"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::workspace::editor::manifest::fix_feature_activations (cognitive 21): cargo::workspace::editor::manifest::fix_feature_activations has cognitive complexity 21 (threshold 15). Drivers by points: if/else 5 (12 pts), match/switch 3 (5 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":"src/workspace/editor/manifest.rs"},"region":{"startLine":633}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1286e343a55ce7c5179771aaaf7530620acf200493582b6535b763948aa5292"}},{"ruleId":"D2","level":"warning","message":{"text":"DrainState::note_working_on (cognitive 20): DrainState::note_working_on has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (14 pts), boolean chains 5, 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":"src/compiler/job_queue/mod.rs"},"region":{"startLine":1223}}}],"partialFingerprints":{"codehealthFindingId/v1":"3eddb165d98f848b0fbc5286c6f724b3b073d28cb9bdb14dce70190dd0d3cc39"}},{"ruleId":"D2","level":"warning","message":{"text":"ConfigValue::merge_helper (cognitive 20): ConfigValue::merge_helper has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (12 pts), match/switch 2 (4 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 9). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/context/config_value.rs"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"a42a028d4e14ca671be233a326096cb9ff4702812faa1a290273d12a42fbe386"}},{"ruleId":"D2","level":"warning","message":{"text":"InstallTracker::check_upgrade (cognitive 20): InstallTracker::check_upgrade has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (15 pts), boolean chains 2, loops 1 (2 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":"src/ops/common_for_install_and_uninstall.rs"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5a894b9185332419f7ecbd2c8f547d63361851202721adeef273917f3b61d3c"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::compiler::rustc::add_native_deps (cognitive 20): cargo::compiler::rustc::add_native_deps has cognitive complexity 20 (threshold 15). Drivers by points: loops 5 (9 pts), if/else 3 (8 pts), boolean chains 2, 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. This shape REPEATS in the file: one other method here (cargo::compiler::rustc) 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":"src/compiler/mod.rs"},"region":{"startLine":575}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9030de31c0dddcaf5c3a48e7f8709d51ff74da68ea8fdb8b300a3daa896c36f"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::compiler::extern_args (cognitive 20): cargo::compiler::extern_args has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (13 pts), boolean chains 4, loops 2 (3 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":"src/compiler/mod.rs"},"region":{"startLine":1866}}}],"partialFingerprints":{"codehealthFindingId/v1":"842e59cc755523b6490a16846b5cf410a4c1f12c6776c832919af8c8b050ebaf"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_tree::print_dependencies (cognitive 20): cargo::ops::cargo_tree::print_dependencies has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (12 pts), loops 2 (4 pts), match/switch 3, 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":"src/ops/cargo_tree/mod.rs"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"827534a725049f3039cefb0bf6d1f0aa749d2d461b2040cfc9cdeb9501e3b959"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::compiler::build_runner::compilation_files::use_extra_filename (cognitive 20): cargo::compiler::build_runner::compilation_files::use_extra_filename has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (11 pts), boolean chains 9 (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":"src/compiler/build_runner/compilation_files.rs"},"region":{"startLine":949}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfbdf9e3b47db2698e489c30a62a4e72de111320b12abdcd53a7e2173cb45541"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::resolve::resolve_with_previous (cognitive 20): cargo::ops::resolve::resolve_with_previous has cognitive complexity 20 (threshold 15). Drivers by points: if/else 12 (14 pts), boolean chains 3, loops 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":"src/ops/resolve.rs"},"region":{"startLine":404}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c7c1327c500081f72429a20d97ffd0f6cdf21ff6c76c563e810e0dbd7df119a"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_update::report_latest (cognitive 20): cargo::ops::cargo_update::report_latest has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (14 pts), match/switch 4, 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":"src/ops/cargo_update.rs"},"region":{"startLine":536}}}],"partialFingerprints":{"codehealthFindingId/v1":"465c46bbf3b2184059a422e8ff2f0256294183e3fecae549da7b4bcd19fd2953"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::compiler::custom_build::build_map::build (cognitive 20): cargo::compiler::custom_build::build_map::build has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (12 pts), loops 3 (6 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":"src/compiler/custom_build.rs"},"region":{"startLine":1290}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd27d4ba6b296fb6d74cd8933e2baeb366b54ce764891c9062019ed4cc2eceef"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_remove::remove (cognitive 20): cargo::ops::cargo_remove::remove has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (15 pts), match/switch 1 (3 pts), boolean chains 1, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_remove.rs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"b77f8cc8cec93498d63935dd9a7d73781ee50a57c6734867d8e0bad0cac75916"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::util::edit_distance::edit_distance (cognitive 20): cargo::util::edit_distance::edit_distance has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 4 (5 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":"src/util/edit_distance.rs"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"946936704801ed12839778d5f59ad49c19e248ecd526f3c49e0bf331a3bafccf"}},{"ruleId":"D2","level":"warning","message":{"text":"mdman::process_args (cognitive 19): mdman::process_args has cognitive complexity 19 (threshold 15). Drivers by points: match/switch 4 (11 pts), if/else 4 (7 pts), loops 1 (nesting depth added 10). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mdman/src/main.rs"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2d873f543c70ad54a130bbe0e617fd12093fc249a46e474be660d19e30a19b8"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceConfigMap::add_config (cognitive 19): SourceConfigMap::add_config has cognitive complexity 19 (threshold 15). Drivers by points: match/switch 4 (10 pts), if/else 7 (8 pts), boolean chains 1 (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":"src/sources/config.rs"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"fec20840b95ceeda437844da2632de44960bfe31d5de3f7fc8e9b62c9cb6a4cd"}},{"ruleId":"D2","level":"warning","message":{"text":"LockServer::run (cognitive 19): LockServer::run has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (16 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":"src/util/lockserver.rs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"746502799ef9b9bff3c81ad3d63ac135adcdfa84e70190a3838e019c3f65fd40"}},{"ruleId":"D2","level":"warning","message":{"text":"Features::add (cognitive 19): Features::add has cognitive complexity 19 (threshold 15). Drivers by points: if/else 10 (18 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":"src/workspace/features.rs"},"region":{"startLine":625}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dc57267fc33506e1faad4b8214c5adc7f3a548d7f45eb7ff5b2acf915878877"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::bin::cargo::commands::help::exec (cognitive 19): cargo::bin::cargo::commands::help::exec has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (16 pts), 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":"src/bin/cargo/commands/help.rs"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"21edaaee8d2e479279e95efeb7e0dae7d0ac17416bd0251e7b640c04de445768"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_tree::graph::add_cli_features (cognitive 19): cargo::ops::cargo_tree::graph::add_cli_features has cognitive complexity 19 (threshold 15). Drivers by points: if/else 4 (10 pts), match/switch 2 (5 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":"src/ops/cargo_tree/graph.rs"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"38ef16481b31759c692bf202e03ab9b9d87984d6639d3441723d4122e4bdfb66"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo_util::read2::imp::read2 (cognitive 18): cargo_util::read2::imp::read2 has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (13 pts), boolean chains 2, match/switch 1 (2 pts), loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/cargo-util/src/read2.rs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b6ff2540ceee5046528dea30890f7c9827eb64f5e95441230aa035cf6d10c99"}},{"ruleId":"D2","level":"warning","message":{"text":"BuildRunner::prepare (cognitive 18): BuildRunner::prepare has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (13 pts), loops 3 (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":"src/compiler/build_runner/mod.rs"},"region":{"startLine":466}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9e5a0c8a051e10cbc6cc9e2df3aa2166c024d865aad45695a69d89cf48d0404"}},{"ruleId":"D2","level":"warning","message":{"text":"Fingerprint::check_filesystem (cognitive 18): Fingerprint::check_filesystem has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (10 pts), match/switch 2 (5 pts), 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":"src/compiler/fingerprint/mod.rs"},"region":{"startLine":1255}}}],"partialFingerprints":{"codehealthFindingId/v1":"b519806622979f52ea0cf33a312fe173a8556598165bf8d3157d0763c5dc6810"}},{"ruleId":"D2","level":"warning","message":{"text":"DrainState::handle_event (cognitive 18): DrainState::handle_event has cognitive complexity 18 (threshold 15). Drivers by points: if/else 4 (11 pts), match/switch 3 (5 pts), boolean chains 2 (nesting depth added 9). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/job_queue/mod.rs"},"region":{"startLine":614}}}],"partialFingerprints":{"codehealthFindingId/v1":"92f2c3d7de3c3b17177683d13fc8a4078987f82552b40f43a5dae731d4ac3768"}},{"ruleId":"D2","level":"warning","message":{"text":"DrainState::emit_log_messages (cognitive 18): DrainState::emit_log_messages has cognitive complexity 18 (threshold 15). Drivers by points: if/else 3 (6 pts), loops 2 (5 pts), match/switch 1 (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":"src/compiler/job_queue/mod.rs"},"region":{"startLine":1037}}}],"partialFingerprints":{"codehealthFindingId/v1":"2690bd8d602dabfb5b91aa07d2dd49f575a8e5b7d62cad40d7bc8047f021c4eb"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolverContext::flag_activated (cognitive 18): ResolverContext::flag_activated has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (14 pts), boolean chains 2, match/switch 2 (nesting depth added 9). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/resolver/context.rs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bdadcdafe83da7f4e837380657c89c4fc03e8e1876a012361eb02be87aff9b3"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::compiler::rustdoc (cognitive 18): cargo::compiler::rustdoc has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (14 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":"src/compiler/mod.rs"},"region":{"startLine":1044}}}],"partialFingerprints":{"codehealthFindingId/v1":"919457d74bbbd4db87bfea3d9277ca38271c1887ae33cbd8df94b3762415c4e7"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::compiler::add_custom_flags (cognitive 18): cargo::compiler::add_custom_flags has cognitive complexity 18 (threshold 15). Drivers by points: loops 4 (14 pts), if/else 2 (4 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":"src/compiler/mod.rs"},"region":{"startLine":1728}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9e5f14d0bde636189d1b984a9befd698ca9d1203f91ca884c56df0884e4e49d"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::compiler::dep_paths_for_args (cognitive 18): cargo::compiler::dep_paths_for_args has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (14 pts), loops 2 (3 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":"src/compiler/mod.rs"},"region":{"startLine":1798}}}],"partialFingerprints":{"codehealthFindingId/v1":"208cb213911ed27d1a8b86d1f0ca6aacf3ca0ed9be16bbcaad204ed3a6606480"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::sources::git::oxide::translate_progress_to_bar (cognitive 18): cargo::sources::git::oxide::translate_progress_to_bar 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":"src/sources/git/oxide.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1827443a6062b87ff44598b07ef0f8a2a83a5957ed73bc26a2e0af7c08ddc30"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::util::command_prelude::root_manifest (cognitive 18): cargo::util::command_prelude::root_manifest has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (16 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/util/command_prelude.rs"},"region":{"startLine":1056}}}],"partialFingerprints":{"codehealthFindingId/v1":"003283df842b886fbdaa99b7df335516d9deefb2c8522e8af8f0dc0def214c93"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_tree::build_and_print (cognitive 18): cargo::ops::cargo_tree::build_and_print has cognitive complexity 18 (threshold 15). Drivers by points: if/else 11 (15 pts), boolean chains 1, 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":"src/ops/cargo_tree/mod.rs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"1988da6f48e3dc57a440dc48d0174cf2f134a8cb6a25df6caee96d42cc5bb427"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::workspace::parser::missing_dep_diagnostic (cognitive 18): cargo::workspace::parser::missing_dep_diagnostic has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (14 pts), loops 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":"src/workspace/parser/mod.rs"},"region":{"startLine":1921}}}],"partialFingerprints":{"codehealthFindingId/v1":"69cbb90cb7923e755366893464bcdb33b4c515e13803c46227010956d10c19d5"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::bin::cargo::commands::help::try_match_cmd (cognitive 18): cargo::bin::cargo::commands::help::try_match_cmd 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). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/bin/cargo/commands/help.rs"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"85dc08f59b2a1c772657635e1c4155be92ef2688944c155fc59246c3c75044e5"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::bin::cargo::commands::tree::parse_edge_kinds (cognitive 18): cargo::bin::cargo::commands::tree::parse_edge_kinds has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8, match/switch 2 (5 pts), loops 2 (3 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":"src/bin/cargo/commands/tree.rs"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"00de2d4c9cebfb2f940f0e029a4ba95278cb7db1fadd40df6037c49b6e018fc5"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::resolve::resolve_ws_with_opts (cognitive 18): cargo::ops::resolve::resolve_ws_with_opts has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (10 pts), loops 3 (5 pts), match/switch 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":"src/ops/resolve.rs"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c189c5dddf8eab166da55589a6fba7af2e04155934e8c26ba70c6e89fbf2858"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::registry::cargo_info::view::pretty_features (cognitive 18): cargo::ops::registry::cargo_info::view::pretty_features has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (10 pts), boolean chains 4, match/switch 2 (3 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":"src/ops/registry/cargo_info/view.rs"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e1eb3cf2a818997d92bad962e376c2b8ff52b71baaa3c417d34b0f4a66b2d0b"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_add::populate_dependency (cognitive 18): cargo::ops::cargo_add::populate_dependency has cognitive complexity 18 (threshold 15). Drivers by points: if/else 14 (18 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":"src/ops/cargo_add/mod.rs"},"region":{"startLine":1094}}}],"partialFingerprints":{"codehealthFindingId/v1":"adef77ad0914174f4f75d1c1ca8ce3613774fc70c0188646abd8514eaaa2d5af"}},{"ruleId":"D2","level":"warning","message":{"text":"RemainingCandidates::next (cognitive 17): RemainingCandidates::next has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (16 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":"src/resolver/mod.rs"},"region":{"startLine":750}}}],"partialFingerprints":{"codehealthFindingId/v1":"2864ed54e14079bf9551aa7cfe8033906ce5a1044b188ff65672788b1b6822e5"}},{"ruleId":"D2","level":"warning","message":{"text":"AuthorizationError::fmt (cognitive 17): AuthorizationError::fmt has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11 (17 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":"src/util/auth/mod.rs"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"72467d3af6a1b33bb7cff7055067dc0982843c977fd916175e0b3f579b4ef5ce"}},{"ruleId":"D2","level":"warning","message":{"text":"DiagnosticPrinter::print (cognitive 17): DiagnosticPrinter::print has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10 (16 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":"src/util/diagnostic_server.rs"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e025a7030cf7649d72d85519b0a81ba9aa8a14c53c4e1b43d6591b98b53c731"}},{"ruleId":"D2","level":"warning","message":{"text":"ScriptSource::parse (cognitive 17): ScriptSource::parse has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11 (14 pts), loops 1 (2 pts), match/switch 1 (nesting depth added 4). 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":"src/util/frontmatter.rs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ee30b922a88d55dfb6165e8db4655f7f8d0376b21b78683d74faa7a89f6ac7a"}},{"ruleId":"D2","level":"warning","message":{"text":"PackageRegistry::patch (cognitive 17): PackageRegistry::patch has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (12 pts), 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":"src/workspace/registry.rs"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"f83fc60289c6171eed454324dad09c0e5078f6dad95957e5f538dbd965d7c39c"}},{"ruleId":"D2","level":"warning","message":{"text":"Workspace::set_resolve_behavior (cognitive 17): Workspace::set_resolve_behavior has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (10 pts), match/switch 4 (7 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":"src/workspace/workspace.rs"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2a5e1ce42b549fed22b8f0968b7e82f00b15fea0072ee58853d1f957ed65bd0"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_config::print_toml_unmerged (cognitive 17): cargo::ops::cargo_config::print_toml_unmerged has cognitive complexity 17 (threshold 15). Drivers by points: loops 4 (7 pts), match/switch 3 (6 pts), if/else 3 (4 pts) (nesting depth added 7). Most of this is not in the body itself: 7 of the 17 points are its own statements and the rest belongs to one function item inside it that branches (trim_cv). 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":"src/ops/cargo_config.rs"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"d081106ef82200cb7f359bb8687caa7396716f5bf4b2d734de090820d8fc464c"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::compiler::unit_dependencies::connect_run_custom_build_deps (cognitive 17): cargo::compiler::unit_dependencies::connect_run_custom_build_deps has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 4 (5 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/unit_dependencies.rs"},"region":{"startLine":975}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d3f4c1d4b196335f9c6e7b08d9d2abd45c2e2df57d575eb49edd5772f13dc11"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::bin::cargo::commands::tree::exec (cognitive 17): cargo::bin::cargo::commands::tree::exec has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11, match/switch 2 (4 pts), boolean chains 2 (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":"src/bin/cargo/commands/tree.rs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"758fd0ac16e72a6dacd106ebca4b51172eb756327a98b149f2428cd17b73e285"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::compiler::build_runner::compilation_files::compute_metadata (cognitive 17): cargo::compiler::build_runner::compilation_files::compute_metadata 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":"src/compiler/build_runner/compilation_files.rs"},"region":{"startLine":743}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba551b4ac8e875fe9b7aeffd4f2f92ca282f745e385b5eb71f5adf8f576d556f"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::context::toml_dotted_keys (cognitive 17): cargo::context::toml_dotted_keys has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (9 pts), boolean chains 5, match/switch 1 (2 pts), loops 1 (nesting depth added 6). Of this number, 15 points are the body\u0027s own statements and 2 belong to 2 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":"src/context/mod.rs"},"region":{"startLine":2359}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aa3dd41c3c7c69eb86f497756576fe3a5070c0499650a999c341a4625bcd110"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_new::check_name (cognitive 17): cargo::ops::cargo_new::check_name has cognitive complexity 17 (threshold 15). Drivers by points: if/else 14 (16 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, 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":"src/ops/cargo_new.rs"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"f41550340e237b2a07c9149282f2e585a5a7624f168967b9006474b71a5abfa2"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::diagnostics::rules::unused_dependencies::is_transitive_dep (cognitive 17): cargo::diagnostics::rules::unused_dependencies::is_transitive_dep has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (11 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":"src/diagnostics/rules/unused_dependencies.rs"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bd0fc03057add64e523c29a75f179dbe4de03807b7051ca6eeafe939c25c326"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::sources::git::utils::fetch (cognitive 17): cargo::sources::git::utils::fetch has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11 (13 pts), boolean chains 2, match/switch 2 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sources/git/utils.rs"},"region":{"startLine":1015}}}],"partialFingerprints":{"codehealthFindingId/v1":"89edcfccad406b37d63e81d99d95611a8ab49639cfd778dcd88acca66ac505d6"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::workspace::profiles::merge_profile (cognitive 17): cargo::workspace::profiles::merge_profile has cognitive complexity 17 (threshold 15). Drivers by points: if/else 13, match/switch 3 (4 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":"src/workspace/profiles.rs"},"region":{"startLine":537}}}],"partialFingerprints":{"codehealthFindingId/v1":"21169742b4836c1b2c57d4ca0b4037e3917e4d1f9feb1122c52f10bda720a231"}},{"ruleId":"D2","level":"warning","message":{"text":"CompilationFiles::calc_outputs (cognitive 16): CompilationFiles::calc_outputs has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (12 pts), boolean chains 3, match/switch 1 (nesting depth added 5). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/build_runner/compilation_files.rs"},"region":{"startLine":521}}}],"partialFingerprints":{"codehealthFindingId/v1":"857e6f7e7df259e94ac861f68eb3725218b40a9e9f4d8fbd58e01e6b41bb83fa"}},{"ruleId":"D2","level":"warning","message":{"text":"ConfigMapAccess::new_struct (cognitive 16): ConfigMapAccess::new_struct has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (8 pts), loops 4 (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":"src/context/de.rs"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"eeead9c86318c6d45c2ba4de3a738ce917ef771f32dae7ed73e677b4d50280ca"}},{"ruleId":"D2","level":"warning","message":{"text":"CleanContext::rm_rf (cognitive 16): CleanContext::rm_rf has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (14 pts), loops 1, match/switch 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_clean.rs"},"region":{"startLine":527}}}],"partialFingerprints":{"codehealthFindingId/v1":"8604e46a419e1182bc0e92b387a57b2e8000c784dcecf2ff507041883b661e90"}},{"ruleId":"D2","level":"warning","message":{"text":"UnitGenerator::validate_required_features (cognitive 16): UnitGenerator::validate_required_features has cognitive complexity 16 (threshold 15). Drivers by points: if/else 2 (7 pts), match/switch 3 (6 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":"src/ops/cargo_compile/unit_generator.rs"},"region":{"startLine":628}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c2dd6f56de18b61e5b59dea8583f5a0a5f19453bf45619c748c46fd20782982"}},{"ruleId":"D2","level":"warning","message":{"text":"IgnoreList::format_existing (cognitive 16): IgnoreList::format_existing has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (8 pts), match/switch 3 (6 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":"src/ops/cargo_new.rs"},"region":{"startLine":602}}}],"partialFingerprints":{"codehealthFindingId/v1":"9560f5d30a2773b809cd68de0e72f1b19a5599c1d1a9160b5a9172ca6449dab1"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::workspace::parser::validate_profile (cognitive 16): cargo::workspace::parser::validate_profile has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (11 pts), boolean chains 2, loops 1 (2 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":"src/workspace/parser/mod.rs"},"region":{"startLine":2622}}}],"partialFingerprints":{"codehealthFindingId/v1":"494c691752041fa9dedb8f7f17863078b26355744199e059a98a92dfe7dee3ab"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::sources::path::_list_files (cognitive 16): cargo::sources::path::_list_files has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (12 pts), boolean chains 2, loops 2 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sources/path.rs"},"region":{"startLine":583}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c226ee08a03f27bb63724ddb52f0595a0790adcdd852749883f55b8815b229e"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::sources::path::read_packages (cognitive 16): cargo::sources::path::read_packages has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (13 pts), match/switch 1 (2 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":"src/sources/path.rs"},"region":{"startLine":1002}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa2080612241cecc36df50864221ea32753e0af3c12441348993da1d047305a7"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_uninstall::uninstall (cognitive 16): cargo::ops::cargo_uninstall::uninstall has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (9 pts), match/switch 1 (3 pts), boolean chains 2, loops 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":"src/ops/cargo_uninstall.rs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcdfb345b828bb82224da5d84d4632546b056e47741d96c2ce2a9833185fa095"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::registry::cargo_search::search (cognitive 16): cargo::ops::registry::cargo_search::search has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (9 pts), loops 2 (3 pts), 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":"src/ops/registry/cargo_search.rs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a46742cc5280798c08976f5f71ed748bf8032caf88b6b5e0fe304d3363cf3b7"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::util::auth::auth_token_optional (cognitive 16): cargo::util::auth::auth_token_optional has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (14 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":"src/util/auth/mod.rs"},"region":{"startLine":522}}}],"partialFingerprints":{"codehealthFindingId/v1":"4235350d12512b3e06679454c682ab76b62515bfb5a9a9bb32dd0674c92cb831"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::registry::cargo_info::view::resolve_features (cognitive 16): cargo::ops::registry::cargo_info::view::resolve_features has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (10 pts), 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":"src/ops/registry/cargo_info/view.rs"},"region":{"startLine":417}}}],"partialFingerprints":{"codehealthFindingId/v1":"24f0f5327f0f3e648b323d57f6f3d122373cdb051fefc34388b368138f2aeaff"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::workspace::parser::targets::normalize_bins (cognitive 16): cargo::workspace::parser::targets::normalize_bins has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (9 pts), loops 2 (4 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":"src/workspace/parser/targets.rs"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"4af448cb3c7ef8ca4c35bf315d919c0b46f5cec88e9e23168a4d243e8249ccdf"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::workspace::workspace::find_workspace_root_with_membership_check (cognitive 16): cargo::workspace::workspace::find_workspace_root_with_membership_check has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (13 pts), boolean chains 2, 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":"src/workspace/workspace.rs"},"region":{"startLine":2133}}}],"partialFingerprints":{"codehealthFindingId/v1":"9eb15610f0f9075969ef6ba805a9d86dc07f748a38102d668ee2ac5580be675d"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::sources::git::utils::fetch_with_gitoxide (cognitive 16): cargo::sources::git::utils::fetch_with_gitoxide 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":"src/sources/git/utils.rs"},"region":{"startLine":1381}}}],"partialFingerprints":{"codehealthFindingId/v1":"2564342659ca9046c94c32e57e81c376acbd973dc92a99184458c2dcee454721"}},{"ruleId":"D2","level":"warning","message":{"text":"cargo::ops::cargo_package::build_lock (cognitive 16): cargo::ops::cargo_package::build_lock has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 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":"src/ops/cargo_package/mod.rs"},"region":{"startLine":743}}}],"partialFingerprints":{"codehealthFindingId/v1":"734edd88ef841acf8c6e86bb0fb6c893d08afb6de22ec71a19b46711c5f5c21d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: parser/mod.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 54 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":"src/workspace/parser/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a62f1049ed87943566b0755af8415f972e739f56025565fd0e41638c9e1fb20"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::workspace::parser::to_real_manifest: FunctionTooLong \u2014 cargo::workspace::parser::to_real_manifest runs 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) in one body. The bar is 100 significant lines; this is 412 over it, 5.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":"src/workspace/parser/mod.rs"},"region":{"startLine":1301}}}],"partialFingerprints":{"codehealthFindingId/v1":"e40a9b9daa884b937d4811115466e11a779a5b0cc92284f447cb2c85441138d8"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: GlobalContext: TooManyMethods \u2014 100 methods. The bar is 30 methods; this is 70 over it, 3.33\u00D7 the bar. This type is on a published API surface \u2014 a cargo-semver-checks gate in CI (.github/workflows/main.yml) declares its compatibility contractual \u2014 so moving members onto a smaller type is a breaking change for every consumer, not a local refactor. To reduce it, treat the split as an API migration: move each cohesive group onto its own published type and keep the old members as deprecated forwards for a deprecation period, removing them at the next compatibility break. Where the surface has to stay as it is, that is a decision to record rather than a change to make."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/context/mod.rs"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"07f67bb453aaa0443f0f44e527ea7ebf09ff883e1a171f5dc18b3a14de2eede3"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::ops::cargo_compile::create_bcx: FunctionTooLong \u2014 cargo::ops::cargo_compile::create_bcx runs 323 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 223 over it, 3.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":"src/ops/cargo_compile/mod.rs"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"10b32b0b2874d1c3f6de738d225a99cb2dc004b140be0e8f91fe8534381a58c0"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::resolver::errors::activation_error: FunctionTooLong \u2014 cargo::resolver::errors::activation_error runs 319 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 219 over it, 3.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":"src/resolver/errors.rs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"0acc7d7cfcfbb8a2528824ca95b47353c0ba36bbf6706250e07f948cc1253d4b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: compiler/mod.rs: FileTooLong \u2014 1576 significant 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 1076 over it, 3.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":"src/compiler/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"57a6e09b07a113d6e9762e5904f8107c1a622dedec871c77ad6bfdf9fa6c698f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: context/mod.rs: FileTooLong \u2014 1421 significant 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: GlobalContext (2 blocks, 208-2159). The bar is 500 significant lines; this is 921 over it, 2.84\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":"src/context/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7fcb2dacaaf4a3a60390b124d68dc06f6ff9058f5768632a6cc81272b4c7e2d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: workspace/workspace.rs: FileTooLong \u2014 1369 significant 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: Workspace (2 blocks, 50-1842). The bar is 500 significant lines; this is 869 over it, 2.74\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":"src/workspace/workspace.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bee286d934c8a8b520a9b2877399b37e805ae283def45e275adebe2b64c2686"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: GlobalContext: ClassTooLong \u2014 1094 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 100 methods, 2 blocks, lines 208-2159. The bar is 400 significant lines; this is 694 over it, 2.74\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":"src/context/mod.rs"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"d11c66b04c14c0bfa90a3554a26abe11d9926e5478ca5d190adabaa699de0fcc"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::workspace::parser::normalize_toml: FunctionTooLong \u2014 cargo::workspace::parser::normalize_toml runs 269 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 169 over it, 2.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":"src/workspace/parser/mod.rs"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7443267e11f5693179a341596c38cf51e2b29779d49fbbdc9d3a8f64fe0c669"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::compiler::custom_build::build_work: FunctionTooLong \u2014 cargo::compiler::custom_build::build_work 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":"src/compiler/custom_build.rs"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"b355027d7b8d893b155d025d7dd3d6a7ce0a6ed39e24de555cfe6a9ee0c4cef0"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Workspace: ClassTooLong \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), 72 methods, 2 blocks, lines 50-1842. The bar is 400 significant lines; this is 628 over it, 2.57\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":"src/workspace/workspace.rs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a4a2e6e3af5efdf3345164504e9a885bdf5b9bdb719946adc94312f5309b2e0"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: BuildOutput.parse: MethodTooLong \u2014 parse 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":"src/compiler/custom_build.rs"},"region":{"startLine":798}}}],"partialFingerprints":{"codehealthFindingId/v1":"646a2e4067f499963e35d6b71992c97eed752998475de245e3aa2b0b35ed12e9"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Workspace: TooManyMethods \u2014 72 methods. The bar is 30 methods; this is 42 over it, 2.40\u00D7 the bar. This type is on a published API surface \u2014 a cargo-semver-checks gate in CI (.github/workflows/main.yml) declares its compatibility contractual \u2014 so moving members onto a smaller type is a breaking change for every consumer, not a local refactor. To reduce it, treat the split as an API migration: move each cohesive group onto its own published type and keep the old members as deprecated forwards for a deprecation period, removing them at the next compatibility break. Where the surface has to stay as it is, that is a decision to record rather than a change to make."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/workspace.rs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"888ed2774716a0ed4cec0c7548e87e208896eb39442d1e3a0cff8ee407e126d3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: manifest/mod.rs: FileTooLong \u2014 1163 significant 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 663 over it, 2.33\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/cargo-util-schemas/src/manifest/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba51dce55bf8ca3498a71ce9580722b12badd88334fe981e5bdb08ab08872dac"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::workspace::parser::prepare_toml_for_publish: FunctionTooLong \u2014 cargo::workspace::parser::prepare_toml_for_publish 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":"src/workspace/parser/mod.rs"},"region":{"startLine":3036}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e13ce1b0347cf304a7f0fc025c3a626093fd723fdf9361cbf75a81de3678991"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: workspace/global_cache_tracker.rs: FileTooLong \u2014 1121 significant 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: GlobalCacheTracker (2 blocks, 335-1358). The bar is 500 significant lines; this is 621 over it, 2.24\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":"src/workspace/global_cache_tracker.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7c75e4c5f5da0b96add4a2396d3ace6fd1f1a4957dfe04b6a360baea06945a1"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::ops::registry::cargo_publish::publish: FunctionTooLong \u2014 cargo::ops::registry::cargo_publish::publish 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":"src/ops/registry/cargo_publish.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4396839543fc9fa839bda2cd2e06bf948b7aa52293765b98de2370b22943174"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: git/utils.rs: FileTooLong \u2014 1055 significant 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 555 over it, 2.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":"src/sources/git/utils.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3e9907adb002be54e1ef1da2e5dcee5b6ede4caaf5c3e4c82968b4f47c6921d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: util/command_prelude.rs: FileTooLong \u2014 1051 significant 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 551 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":"src/util/command_prelude.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c373df91e1cfd04cafdc172c14dd1c66803c29d70d9c91d286ac5d26c14ee5e3"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TextRenderer.push_md: MethodTooLong \u2014 push_md 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":"crates/mdman/src/format/text.rs"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"9548d69f4dd2459ff1536250e297681b8c197cd5b34bde726438411f466cdaba"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InstallablePackage.install_one: MethodTooLong \u2014 install_one 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":"src/ops/cargo_install.rs"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc5537087de3b2413c7c213b583b5f062b34dd43f974e60116117068c66f448b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: fingerprint/mod.rs: FileTooLong \u2014 1017 significant 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 517 over it, 2.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":"src/compiler/fingerprint/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"06d88b2e516b447738a315dc7339a341d6922c1cca009898a105904b27ff6b24"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: cargo_add/mod.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":"src/ops/cargo_add/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"78c8efc511ed3570dd15a46a03d5c0a85eab7e04a23e20e6771c5b4807ac03df"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::workspace::parser::normalize_package_toml: FunctionTooLong \u2014 cargo::workspace::parser::normalize_package_toml 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":"src/workspace/parser/mod.rs"},"region":{"startLine":640}}}],"partialFingerprints":{"codehealthFindingId/v1":"35d0804e5527708988f57b821d4cfb379fdfd1d4dd8fcfcf88e86d1a67137ade"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::ops::cargo_vendor::sync: FunctionTooLong \u2014 cargo::ops::cargo_vendor::sync 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":"src/ops/cargo_vendor.rs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1362c39d72d00d42263da933e442dd6e4c725da586e6617cda82ed9c4a20816"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::resolver::activate_deps_loop: FunctionTooLong \u2014 cargo::resolver::activate_deps_loop runs 194 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 94 over it, 1.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":"src/resolver/mod.rs"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"895417393d38587f2bd0b1ac61e3621fe1d7502f784fc9c5db8efb1007f50742"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Target: TooManyMethods \u2014 56 methods. The bar is 30 methods; this is 26 over it, 1.87\u00D7 the bar. This type is on a published API surface \u2014 a cargo-semver-checks gate in CI (.github/workflows/main.yml) declares its compatibility contractual \u2014 so moving members onto a smaller type is a breaking change for every consumer, not a local refactor. To reduce it, treat the split as an API migration: move each cohesive group onto its own published type and keep the old members as deprecated forwards for a deprecation period, removing them at the next compatibility break. Where the surface has to stay as it is, that is a decision to record rather than a change to make."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/manifest.rs"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7a8eea2b334dc4d768aed2e63d1761bff881436883ad206b2050f5308f36c41"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ManRenderer.push_man: MethodTooLong \u2014 push_man 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":"crates/mdman/src/format/man.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6d5d7df40f6c3cf8e3cd19f22d6170571ffd7d98df0375286fcac722f322852"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: parser/targets.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), declaring 41 free functions. 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":"src/workspace/parser/targets.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bee664e7af463f37d58b26890c7c076a3b8a581f3f7aba14fcbf3fbfdb8dea4e"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: GlobalCacheTracker: ClassTooLong \u2014 725 significant 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 335-1358. The bar is 400 significant lines; this is 325 over it, 1.81\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":"src/workspace/global_cache_tracker.rs"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"67008ee3f0384a6255d79c932e5f3b79c743263d0d376e0d601911a56f5c0592"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: workspace/features.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":"src/workspace/features.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e39e894038ae6c6d3f2b15555811285accbccfb77b8187b4b8c20525ce81394f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::ops::cargo_clean::clean_specs: FunctionTooLong \u2014 cargo::ops::cargo_clean::clean_specs 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":"src/ops/cargo_clean.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ea6b25e87c0f09837c03404fa18a82f5dcf06fce84c95b57cf98a84378bd93d"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::ops::cargo_add::add: FunctionTooLong \u2014 cargo::ops::cargo_add::add 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":"src/ops/cargo_add/mod.rs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"f076d72ebc87db88ed125fc1f6240d9f09ccfd62d1b4efd6604c89659e0940cb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: compiler/custom_build.rs: FileTooLong \u2014 860 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 360 over it, 1.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":"src/compiler/custom_build.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"14c4fced11e84f18878876c6754cd04e2538056a89813a377463f34a5d138fe6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: cargo_package/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":"src/ops/cargo_package/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5736df3d01788d4c44a2afdd0ebda59ab141c03d8841c27404cbaa1af4b09e60"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: cargo_fix/mod.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":"src/ops/cargo_fix/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f344c3aed3c446c15ba14ab48f52f82ee52bf986afc24bec8674df56407af77"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: workspace/manifest.rs: FileTooLong \u2014 805 significant 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 305 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":"src/workspace/manifest.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a7c74dd1b7b8706fd1bc9aee04f92c2bbf30bc0c00da4662964bac3315aeadf"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SourceId: TooManyMethods \u2014 48 methods. The bar is 30 methods; this is 18 over it, 1.60\u00D7 the bar. This type is on a published API surface \u2014 a cargo-semver-checks gate in CI (.github/workflows/main.yml) declares its compatibility contractual \u2014 so moving members onto a smaller type is a breaking change for every consumer, not a local refactor. To reduce it, treat the split as an API migration: move each cohesive group onto its own published type and keep the old members as deprecated forwards for a deprecation period, removing them at the next compatibility break. Where the surface has to stay as it is, that is a decision to record rather than a change to make."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/source_id.rs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e89d7d6e22ea903a253b62f0ad36fafcb546759bc053cb2032b4196e788b886"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::resolver::encode::into_resolve: FunctionTooLong \u2014 cargo::resolver::encode::into_resolve 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":"src/resolver/encode.rs"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"6917299fd21478a961d688c19792cb5ba0b2652cbbeb5b15eb637ad723504b30"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: cargo_compile/mod.rs: FileTooLong \u2014 789 significant 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 289 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":"src/ops/cargo_compile/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"827fde404e6d2c23461515e31c1a6318a458ac220f47343b2f3c4f14a588b3c7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: workspace/profiles.rs: FileTooLong \u2014 782 significant 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 282 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":"src/workspace/profiles.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"281da29297a36c453ba6dfc294152eeded024eb97dc56fdaf55f254dbfc47235"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InstallablePackage.new: MethodTooLong \u2014 new runs 155 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted) in one body. The bar is 100 significant lines; this is 55 over it, 1.55\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_install.rs"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"60d56e9a8c99bd7766dbf072990ccd529a1d8f9fca6a0a4ce3015f0dd789328d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFunctions: build_rs::input: TooManyFunctions \u2014 44 free functions. The bar is 30 free functions; this is 14 over it, 1.47\u00D7 the bar. This type is on a published API surface \u2014 a cargo-semver-checks gate in CI (.github/workflows/main.yml) declares its compatibility contractual \u2014 so moving members onto a smaller type is a breaking change for every consumer, not a local refactor. To reduce it, treat the split as an API migration: move each cohesive group onto its own published type and keep the old members as deprecated forwards for a deprecation period, removing them at the next compatibility break. Where the surface has to stay as it is, that is a decision to record rather than a change to make."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/build-rs/src/input.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"0efb65f2a1273a58bce4e879204c3961f914fa44a68ddcae8024264bfeff4fbf"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: compiler/unit_dependencies.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":"src/compiler/unit_dependencies.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"52beb44db51eaa23c41a7f2a00b076074206028b7ead1b9d288259ffab1c5b38"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ops/cargo_update.rs: FileTooLong \u2014 727 significant 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 227 over it, 1.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":"src/ops/cargo_update.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d9e4c2d50b3a6928dd0991d4c4099e8edf435086be8ad35369e2807e9b38427"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::bin::cargo::commands::add::cli: FunctionTooLong \u2014 cargo::bin::cargo::commands::add::cli 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":"src/bin/cargo/commands/add.rs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ec59b27f083c52bda10c03c6d86ad0a41eadd62c38aa4a7aec090becca72be0"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TargetInfo.new: MethodTooLong \u2014 new 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":"src/compiler/build_context/target_info.rs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3a590df5eedc5e8ebc380555e0ab50988d0a6ec28a40b685a469426d83942c9"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::ops::cargo_add::resolve_dependency: FunctionTooLong \u2014 cargo::ops::cargo_add::resolve_dependency 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":"src/ops/cargo_add/mod.rs"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bf3cc2afccaf98585d61878628c249b2bebe8a6a1d932aeea6d2a5b70963f5c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFunctions: cargo_util::paths: TooManyFunctions \u2014 43 free functions. The bar is 30 free functions; this is 13 over it, 1.43\u00D7 the bar. This type is on a published API surface \u2014 a cargo-semver-checks gate in CI (.github/workflows/main.yml) declares its compatibility contractual \u2014 so moving members onto a smaller type is a breaking change for every consumer, not a local refactor. To reduce it, treat the split as an API migration: move each cohesive group onto its own published type and keep the old members as deprecated forwards for a deprecation period, removing them at the next compatibility break. Where the surface has to stay as it is, that is a decision to record rather than a change to make."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/cargo-util/src/paths.rs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"695ac3b19b0c48c0773193d02aed72a4510d325d96c841e1d095b7199fb63b8d"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::sources::git::known_hosts::certificate_check: FunctionTooLong \u2014 cargo::sources::git::known_hosts::certificate_check 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":"src/sources/git/known_hosts.rs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"3379f4ab0d929622794432a4780cb8210dfe47967fdce2df357ed51850c3c909"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ops/cargo_install.rs: FileTooLong \u2014 711 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 211 over it, 1.42\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_install.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"60defd1ece624c86c7f59048c14a37c25ff91dd50be6fe9ea3ea445ffa5c4622"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: job_queue/mod.rs: FileTooLong \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), about 69% of them inside a single declaration: DrainState (2 blocks, 173-1308). The bar is 500 significant lines; this is 210 over it, 1.42\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":"src/compiler/job_queue/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4396a22aab6cb0b3f8ec432ce6ee634aef00cb671b463c7b621826ded7479b3"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::ops::resolve::resolve_ws_with_opts: FunctionTooLong \u2014 cargo::ops::resolve::resolve_ws_with_opts 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":"src/ops/resolve.rs"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"57688c3066857f33213fee7775e2f09f2127b9b8ba481a6a53698f3db85dc044"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Manifest: TooManyMethods \u2014 42 methods. The bar is 30 methods; this is 12 over it, 1.40\u00D7 the bar. This type is on a published API surface \u2014 a cargo-semver-checks gate in CI (.github/workflows/main.yml) declares its compatibility contractual \u2014 so moving members onto a smaller type is a breaking change for every consumer, not a local refactor. To reduce it, treat the split as an API migration: move each cohesive group onto its own published type and keep the old members as deprecated forwards for a deprecation period, removing them at the next compatibility break. Where the surface has to stay as it is, that is a decision to record rather than a change to make."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/manifest.rs"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"254761604916d21ff0a90b9e915148a84549d83a2d0a6a37612f48d64b0e1c88"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: sources/path.rs: FileTooLong \u2014 697 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted). The bar is 500 significant lines; this is 197 over it, 1.39\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sources/path.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"415de06893985ca76a3f60b52944adf4c6ec9f016a56d2458517b1679c561074"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DirtyReason.present_to: MethodTooLong \u2014 present_to 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":"src/compiler/fingerprint/dirty_reason.rs"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"01072911507479327b61eb83753fa2d5d63cc965e7584c3191c27941f610e5c9"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::bin::cargo::cli::cli: FunctionTooLong \u2014 cargo::bin::cargo::cli::cli 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":"src/bin/cargo/cli.rs"},"region":{"startLine":569}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd7622defd0ea32dbf4b4aeb6f2f198c0302b444a9293097041948158e70a8ff"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ops/cargo_new.rs: FileTooLong \u2014 679 significant 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 179 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":"src/ops/cargo_new.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ee56ab2a6965c6825b744af4e24f54331cfcac2ffd30f2ce441dd3cea78101a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: GlobalContext: TooManyFields \u2014 40 stored fields beside 100 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":"src/context/mod.rs"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"1066ddb118dc7b7d10e4b58212057c1d1135813bcac8d6fe60a9be886500e8ee"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Shell: TooManyMethods \u2014 40 methods. The bar is 30 methods; this is 10 over it, 1.33\u00D7 the bar. This type is on a published API surface \u2014 a cargo-semver-checks gate in CI (.github/workflows/main.yml) declares its compatibility contractual \u2014 so moving members onto a smaller type is a breaking change for every consumer, not a local refactor. To reduce it, treat the split as an API migration: move each cohesive group onto its own published type and keep the old members as deprecated forwards for a deprecation period, removing them at the next compatibility break. Where the surface has to stay as it is, that is a decision to record rather than a change to make."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/cargo-util-terminal/src/shell.rs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"329d0ea1224dd29bd7e9efec3d9da4a0804c78d310563b9277e8058f4e5012f6"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ScriptSource.parse: MethodTooLong \u2014 parse 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":"src/util/frontmatter.rs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"8508b9726189f4af2ffc529f37adc7e7ff54a557a63ff86e03a4f7366f2901e2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: editor/dependency.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), about 70% of them inside a single declaration: Dependency (6 blocks, 25-730). The bar is 500 significant lines; this is 157 over it, 1.31\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":"src/workspace/editor/dependency.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"eaf392c62c061cb4cf9d7484f48d83c406852f6d34ed49c24e18a092194ba938"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Dependency: TooManyMethods \u2014 39 methods. The bar is 30 methods; this is 9 over it, 1.30\u00D7 the bar. This type is on a published API surface \u2014 a cargo-semver-checks gate in CI (.github/workflows/main.yml) declares its compatibility contractual \u2014 so moving members onto a smaller type is a breaking change for every consumer, not a local refactor. To reduce it, treat the split as an API migration: move each cohesive group onto its own published type and keep the old members as deprecated forwards for a deprecation period, removing them at the next compatibility break. Where the surface has to stay as it is, that is a decision to record rather than a change to make."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/dependency.rs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"d561777b8ad330d384c84fd234f399b6cdf042650b673a7db22753b82efa7f74"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Dependency.from_toml: MethodTooLong \u2014 from_toml 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":"src/workspace/editor/dependency.rs"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fd8227d014e7a23502e3e8d624e6bf62e2ddd767ec35ef32588c001c1e5a9bb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: build_context/target_info.rs: FileTooLong \u2014 637 significant 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 137 over it, 1.27\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":"src/compiler/build_context/target_info.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a1790928c364800876a9a95993c314675f8c566af51fbe8dd08c8e8d79a254d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Dependency.update_toml: MethodTooLong \u2014 update_toml 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":"src/workspace/editor/dependency.rs"},"region":{"startLine":508}}}],"partialFingerprints":{"codehealthFindingId/v1":"94ceca14d5b85f58335c19e0b53e318fcb974aaceab5cb8fe784b0686adc5168"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: registry/cargo_publish.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":"src/ops/registry/cargo_publish.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"896ac3d41b32a3eea0a9bf1529bdd69ab91e38c95adab5762b990afa292e41b1"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: UnitGenerator: ClassTooLong \u2014 496 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 13 methods, 2 blocks, lines 50-793. The bar is 400 significant lines; this is 96 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":"src/ops/cargo_compile/unit_generator.rs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a524536d32c874e9171e113bab723d29f5cc3455666391693c9068c4e0e149f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::diagnostics::rules::non_kebab_case_bins::lint_package_inner: FunctionTooLong \u2014 cargo::diagnostics::rules::non_kebab_case_bins::lint_package_inner 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":"src/diagnostics/rules/non_kebab_case_bins.rs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"29bee2cc9baeb74a3b45b68235cad0f2838a7a4702883e5f7a453ffa531f1198"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DrainState: ClassTooLong \u2014 490 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 15 methods, 2 blocks, lines 173-1308. The bar is 400 significant lines; this is 90 over it, 1.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":"src/compiler/job_queue/mod.rs"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"e589d7b18d5da90f65dafd6d5de18795b9896e9c0a9e241aa4e4a22168364bee"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SvgRenderer.render_pipeline_graph: MethodTooLong \u2014 render_pipeline_graph runs 121 significant lines (blank, comment-only and punctuation-only lines excluded) 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":"src/compiler/timings/timings.js"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"f678f27572a9c96302dba459783c87e7397d73f9e06426f24b3f076660f82c3b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SvgRenderer.render_timing_graph: MethodTooLong \u2014 render_timing_graph runs 121 significant lines (blank, comment-only and punctuation-only lines excluded) 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":"src/compiler/timings/timings.js"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"0267d640a0a46d34c71d268fea4ccee7c4524121339d5b33b8b56fa3389248c3"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::ops::cargo_new::mk: FunctionTooLong \u2014 cargo::ops::cargo_new::mk 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":"src/ops/cargo_new.rs"},"region":{"startLine":724}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d1702dbf4f6ac78d53301dfc5b5edd3d6ab00958d68217b72e493a7acb4a244"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: BuildRunner: ClassTooLong \u2014 474 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), 23 methods, 2 blocks, lines 40-818. The bar is 400 significant lines; this is 74 over it, 1.19\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/build_runner/mod.rs"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"23bb55d35dce6ce59eb613ec6ee3dbbd84b34310eef6a7af5a7eb47abdf72878"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DrainState.handle_event: MethodTooLong \u2014 handle_event 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":"src/compiler/job_queue/mod.rs"},"region":{"startLine":614}}}],"partialFingerprints":{"codehealthFindingId/v1":"33933a4538f41aa556a46aa85c6962892ffa4e5e94199ee926c942ece454e392"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::ops::cargo_install::install: FunctionTooLong \u2014 cargo::ops::cargo_install::install 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":"src/ops/cargo_install.rs"},"region":{"startLine":708}}}],"partialFingerprints":{"codehealthFindingId/v1":"7385d53660ca5c4c6643b9a694a50600c32cb15fb3f22fb6da05baa192ad32c8"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Dependency: ClassTooLong \u2014 462 significant 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, 6 blocks, lines 25-730. The bar is 400 significant lines; this is 62 over it, 1.16\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":"src/workspace/editor/dependency.rs"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccf19ac55e0ce30229df78d55a1bd5958e3774a2dc8d7c1da1eb50a7a51dc23b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: workspace/package.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":"src/workspace/package.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"03ce3f170b7ff8abcf1afabdaaf87d7b8cdf4d84df2e188c9646f528c2ecfdf8"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::sources::git::utils::with_authentication: FunctionTooLong \u2014 cargo::sources::git::utils::with_authentication 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":"src/sources/git/utils.rs"},"region":{"startLine":644}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e3a99ce3f7fecffce72437ec9ebcc86afb74500e4aceb77bc8aa86163a513fe"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: workspace/registry.rs: FileTooLong \u2014 572 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 67% of them inside a single declaration: PackageRegistry (3 blocks, 82-841). The bar is 500 significant lines; this is 72 over it, 1.14\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/registry.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d30cb4449a180d04f643fab6413e84c554cee2b1ae5448dccddfa5195de43be5"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ProcessBuilder: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\u00D7 the bar. This type is on a published API surface \u2014 a cargo-semver-checks gate in CI (.github/workflows/main.yml) declares its compatibility contractual \u2014 so moving members onto a smaller type is a breaking change for every consumer, not a local refactor. To reduce it, treat the split as an API migration: move each cohesive group onto its own published type and keep the old members as deprecated forwards for a deprecation period, removing them at the next compatibility break. Where the surface has to stay as it is, that is a decision to record rather than a change to make."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/cargo-util/src/process_builder.rs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfe754c740689cdaafe0b7f862f4a472ec7365f2545796f71a6d19e07620a6d6"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::ops::registry::cargo_info::view::pretty_view: FunctionTooLong \u2014 cargo::ops::registry::cargo_info::view::pretty_view 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":"src/ops/registry/cargo_info/view.rs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bba96e9cd05353a8a7c48e5b86f8a16a831e2677a7f4ed6293f2916665f579f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: cargo/cli.rs: FileTooLong \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). The bar is 500 significant lines; this is 62 over it, 1.12\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/bin/cargo/cli.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf8504e7ac3a12fa453c101a1a8557708642840e91aa9bff579e1aee83d9f46f"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::compiler::future_incompat::save_and_display_report: FunctionTooLong \u2014 cargo::compiler::future_incompat::save_and_display_report 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":"src/compiler/future_incompat.rs"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd51eba1ec273972f823e58e41a73aa20c38b7a4513356cb588d3333df14666b"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::workspace::summary::build_feature_map: FunctionTooLong \u2014 cargo::workspace::summary::build_feature_map 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":"src/workspace/summary.rs"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"651b823e1232721b015f1bfc4b374b9a2dc250e2dfe50b9b392df503c026b795"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: resolver/features.rs: FileTooLong \u2014 551 significant 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: FeatureResolver (2 blocks, 409-977). The bar is 500 significant lines; this is 51 over it, 1.10\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":"src/resolver/features.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ab6a0c075abaa7ee88b2007a4bd2e79bca82839986f3174c740c84f8233e12d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFunctions: build_rs::input::cfg: TooManyFunctions \u2014 33 free functions. The bar is 30 free functions; this is 3 over it, 1.10\u00D7 the bar. This type is on a published API surface \u2014 a cargo-semver-checks gate in CI (.github/workflows/main.yml) declares its compatibility contractual \u2014 so moving members onto a smaller type is a breaking change for every consumer, not a local refactor. To reduce it, treat the split as an API migration: move each cohesive group onto its own published type and keep the old members as deprecated forwards for a deprecation period, removing them at the next compatibility break. Where the surface has to stay as it is, that is a decision to record rather than a change to make."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/build-rs/src/input.rs"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c4bbec50a3596e28f1026c67726aecfc6e37081e1db5d1727c875cb8dd30f5e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: TomlPackage: TooManyFields \u2014 33 stored fields beside 19 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":"crates/cargo-util-schemas/src/manifest/mod.rs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"87d02132eed53e385b57af195c6df720011c65b7ca198795b367b58f3b3f3e6e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RegistrySource.query: MethodTooLong \u2014 query 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":"src/sources/registry/mod.rs"},"region":{"startLine":678}}}],"partialFingerprints":{"codehealthFindingId/v1":"74c58e2e0875ce940435f701f4148ffa81133b7b6c6ed61419f8f6f941aa8521"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::compiler::unit_dependencies::compute_deps: FunctionTooLong \u2014 cargo::compiler::unit_dependencies::compute_deps 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":"src/compiler/unit_dependencies.rs"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"5aa50a033f58631de0925e1a37b7b0fca69054f2f32da75862db8243c1eaa0ee"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::ops::cargo_package::build_ar_list: FunctionTooLong \u2014 cargo::ops::cargo_package::build_ar_list 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":"src/ops/cargo_package/mod.rs"},"region":{"startLine":498}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dafbd38b24be5e37ba1e47eb1a80f316f4598f041f8745b902e81d6426ace6e"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::ops::cargo_report::rebuilds::format_dirty_reason: FunctionTooLong \u2014 cargo::ops::cargo_report::rebuilds::format_dirty_reason 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":"src/ops/cargo_report/rebuilds.rs"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cd4b00654aae3deb0311da6788436d14699e97fded6fb03406a7c664324be17"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Workspace.missing_feature_spelling_suggestions: MethodTooLong \u2014 missing_feature_spelling_suggestions 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":"src/workspace/workspace.rs"},"region":{"startLine":1400}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b5a87a8a2036fddb6f288577aebb21e9b8ebdaad659d9bd18e52429fe0d78d9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ops/resolve.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":"src/ops/resolve.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"639bc0e5705d3117361029e860068bb90fe81f9a161ff0c1de6ebbe0f032218d"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::compiler::fingerprint::calculate_normal: FunctionTooLong \u2014 cargo::compiler::fingerprint::calculate_normal 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":"src/compiler/fingerprint/mod.rs"},"region":{"startLine":1578}}}],"partialFingerprints":{"codehealthFindingId/v1":"55f2a9e611acb49d54116a61d8b26d0d76aa4945739736a4e55f4b38caff5a1d"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::workspace::parser::dep_to_dependency: FunctionTooLong \u2014 cargo::workspace::parser::dep_to_dependency 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":"src/workspace/parser/mod.rs"},"region":{"startLine":2276}}}],"partialFingerprints":{"codehealthFindingId/v1":"7459ec8c141dc32b4d26b2cccba97de40f95a7640a743dde6645237b0808a1fc"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyFields: Features: TooManyFields \u2014 32 stored fields beside 7 methods. The bar is 30 stored fields; this is 2 over it, 1.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":"src/workspace/features.rs"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5dcde748d15892a1d7845692a5339274dd548c97e34454a53cb411f484568ca"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: build_runner/compilation_files.rs: FileTooLong \u2014 532 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 65% of them inside a single declaration: CompilationFiles (2 blocks, 124-720). The bar is 500 significant lines; this is 32 over it, 1.06\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":"src/compiler/build_runner/compilation_files.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9705c1edfe97ecaafe151aa062521f40cedaf696ee15031efd371344d6ae36e8"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PackageRegistry.patch: MethodTooLong \u2014 patch 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":"src/workspace/registry.rs"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"fedf93a1dde300633d098a6ea05dcb03cc8dea9e9e222d2d7280de3cfc1570f7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: cargo_compile/unit_generator.rs: FileTooLong \u2014 529 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 94% of them inside a single declaration: UnitGenerator (2 blocks, 50-793). The bar is 500 significant lines; this is 29 over it, 1.06\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":"src/ops/cargo_compile/unit_generator.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"21ea8d817a78317a3d78fd5be71eac13b54e862d85e21d7f4abcfc2cb5ccec4f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ops/common_for_install_and_uninstall.rs: FileTooLong \u2014 526 significant 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 26 over it, 1.05\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":"src/ops/common_for_install_and_uninstall.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff7d4521b7880685b3a98ddd9d8776884e1ba376d0bb103466821d64528c8360"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: resolver/mod.rs: FileTooLong \u2014 526 significant 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 26 over it, 1.05\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":"src/resolver/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d914ad3e9c88152e03b73b5579bd83c16cec01536e3376503c1e105aa0aca932"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: timings/report.rs: FileTooLong \u2014 525 significant 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 25 over it, 1.05\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":"src/compiler/timings/report.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e1fb8d1ac4704055027eaa323341c9ccf23a3329a2217d1e175b4164ea124db"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::ops::cargo_fix::migrate_manifests: FunctionTooLong \u2014 cargo::ops::cargo_fix::migrate_manifests 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":"src/ops/cargo_fix/mod.rs"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"b80632ad6934bbd9df4e4c6ac8e496bdd882d25d50d49da2f9905a5ecca96486"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ArgMatchesExt.compile_options: MethodTooLong \u2014 compile_options 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":"src/util/command_prelude.rs"},"region":{"startLine":743}}}],"partialFingerprints":{"codehealthFindingId/v1":"399456dee8a325c81128af5c9c7e0c657643c1f923b4b600b51645eedb149be4"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Feature: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\u00D7 the bar. This type is on a published API surface \u2014 a cargo-semver-checks gate in CI (.github/workflows/main.yml) declares its compatibility contractual \u2014 so moving members onto a smaller type is a breaking change for every consumer, not a local refactor. To reduce it, treat the split as an API migration: move each cohesive group onto its own published type and keep the old members as deprecated forwards for a deprecation period, removing them at the next compatibility break. Where the surface has to stay as it is, that is a decision to record rather than a change to make."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/features.rs"},"region":{"startLine":596}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0dc76cff3bd8228d604144a7290f55d2cbbe584f79e3e739495abc38a19b34f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ops/cargo_clean.rs: FileTooLong \u2014 509 significant 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 9 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":"src/ops/cargo_clean.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd294cc10933c4c955595feaca72a5e7aabeb789f3b9f1f1528a91ac46b6e162"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: cargo::bin::cargo::commands::install::exec: FunctionTooLong \u2014 cargo::bin::cargo::commands::install::exec 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":"src/bin/cargo/commands/install.rs"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d49f92c6aa1c7709fff94a5f3830b3505ef00ad7922f9951b1918496b18f130"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Fingerprint.compare: MethodTooLong \u2014 compare 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":"src/compiler/fingerprint/mod.rs"},"region":{"startLine":1084}}}],"partialFingerprints":{"codehealthFindingId/v1":"54fe06bb0e4b60f6554bc62223d2e8e08aca45da897dc6cf53a9542f7acac673"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: timings/timings.js: FileTooLong \u2014 502 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), about 64% of them inside a single declaration: SvgRenderer (123-571). 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":"src/compiler/timings/timings.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fd7d8f3b8374868066eb6a39cd02168ec5819a8ecbeb60e787fe3bd62970084"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: editor/manifest.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). The bar is 500 significant lines; this is 2 over it, 1.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":"src/workspace/editor/manifest.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9e5da0c8642a00ee51824bc5bb587861eb309019c726c73f38c8398698e610d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: build_runner/mod.rs: FileTooLong \u2014 501 significant lines (blank, comment-only and punctuation-only lines excluded, and inline test code \u2014 #[cfg(test)] modules and bare #[test] functions \u2014 not counted), about 95% of them inside a single declaration: BuildRunner (2 blocks, 40-818). The bar is 500 significant lines; this is 1 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":"src/compiler/build_runner/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d02bea99395eb891f8dd0a4a1ca67fb0c5c1c8030895bdf5a38dded257aa392"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (69 shared lines): crates/mdman/src/format/man.rs:102-380 | crates/mdman/src/format/text.rs:93-371 \u2014 These two members are variants of one another: 69 of their lines are already reported as duplicated blocks below, spread through both bodies rather than gathered into one. Read them as a single construct written twice. The repair is at the members\u0027 grain \u2014 factor the shared pipeline into one implementation the two call with their differences as parameters or as an injected step, or, where the difference is systematic (sync against async, one transport against another), generate one from the other. Extracting the individual blocks below is not the same fix: it leaves the two bodies in place and the next edit still has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mdman/src/format/man.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"445746ac56993a4394ff4b0ad8078358339279f003ef1ad8a28298839dc623f3"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (61 shared lines): src/diagnostics/rules/non_snake_case_packages.rs:86-154 | src/diagnostics/rules/non_kebab_case_packages.rs:86-154 \u2014 These two members are variants of one another: 61 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":"src/diagnostics/rules/non_snake_case_packages.rs"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d9098f74bac586a65fee4d8b0e4f248c982e42e172e33abba11ec4618f9e091"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (44 shared lines): src/diagnostics/rules/text_direction_codepoint_in_comment.rs:57-125 | src/diagnostics/rules/text_direction_codepoint_in_literal.rs:58-168 \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":"src/diagnostics/rules/text_direction_codepoint_in_comment.rs"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"41816b5e233cf9db5503a6e929ecc0b241d1f96fb87e38e5e8fc0a85d1dac9b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (36 lines \u00D7 2): src/diagnostics/rules/non_kebab_case_features.rs:102-137 | src/diagnostics/rules/non_snake_case_features.rs:102-137 \u2014 before extracting anything, compare \u0060src/diagnostics/rules/non_kebab_case_features.rs\u0060 and \u0060src/diagnostics/rules/non_snake_case_features.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 88 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":"src/diagnostics/rules/non_kebab_case_features.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccd002f25305fac4a4ea1b88153c631a29693c2fc4a99082f40a581025e97921"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27 lines \u00D7 2): src/diagnostics/rules/missing_lints_features.rs:29-55 | src/diagnostics/rules/unknown_lints.rs:60-86 \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":"src/diagnostics/rules/missing_lints_features.rs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"76d9fbe2d97410270002068208f21bdd92981518b73b50b594fd645b9ba1b08b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 2): crates/mdman/src/format/man.rs:245-270 | crates/mdman/src/format/text.rs:211-236 \u2014 before extracting anything, compare \u0060crates/mdman/src/format/man.rs\u0060 and \u0060crates/mdman/src/format/text.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 72 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mdman/src/format/man.rs"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcded84a598a63ed9833691daf596e17b7d9659432875eb1f7b124b3444b683d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): src/diagnostics/rules/text_direction_codepoint_in_comment.rs:58-82 | src/diagnostics/rules/text_direction_codepoint_in_literal.rs:59-83 \u2014 before extracting anything, compare \u0060src/diagnostics/rules/text_direction_codepoint_in_comment.rs\u0060 and \u0060src/diagnostics/rules/text_direction_codepoint_in_literal.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 76 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":"src/diagnostics/rules/text_direction_codepoint_in_comment.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e173afda0705aae310df66d29558931f26c527fd308fb950b1066429a0fbfb7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): src/util/network/http.rs:174-197 | src/util/network/http.rs:204-227 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/util/network/http.rs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"60d4d2015f37ed050a9b7adc3b3ce318ce5d165343efe39dae9f017973ae21a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): src/diagnostics/rules/unused_workspace_dependencies.rs:74-97 | src/diagnostics/rules/unused_workspace_dependencies.rs:99-122 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/diagnostics/rules/unused_workspace_dependencies.rs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a6c94e6bfde948ae2405f43aedc03f15aa4c0c884d854b9caffc9b642b826e9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22\u201323 lines \u00D7 2): crates/mdman/src/format/man.rs:216-238 | crates/mdman/src/format/text.rs:184-205 \u2014 before extracting anything, compare \u0060crates/mdman/src/format/man.rs\u0060 and \u0060crates/mdman/src/format/text.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 72 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mdman/src/format/man.rs"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9f24ea865a76bd926a6a0b77e94315b96d5da9e682ca5b2517bc425e4ed0566"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): src/ops/cargo_report/rebuilds.rs:43-64 | src/ops/cargo_report/timings.rs:59-80 \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":"src/ops/cargo_report/rebuilds.rs"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"8aadf048a62e24a76d2095ff40aefb130372e47aae01c3fe6783a5da97a79121"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201322 lines \u00D7 2): src/bin/cargo/commands/run.rs:111-131 | src/bin/cargo/commands/run.rs:145-166 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/bin/cargo/commands/run.rs"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"b40d7b9c7b98fc1e1d50eb82473c473a4f5b7c0ebbc3d98c0c6671a6b5ced3f6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): src/diagnostics/rules/text_direction_codepoint_in_comment.rs:169-189 | src/diagnostics/rules/text_direction_codepoint_in_literal.rs:211-231 \u2014 before extracting anything, compare \u0060src/diagnostics/rules/text_direction_codepoint_in_comment.rs\u0060 and \u0060src/diagnostics/rules/text_direction_codepoint_in_literal.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 76 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":"src/diagnostics/rules/text_direction_codepoint_in_comment.rs"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9097fb328228bd418e2465ed39547390c6148d55854ee19f7a66b9663abd4e8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): src/diagnostics/rules/non_kebab_case_packages.rs:102-121 | src/diagnostics/rules/non_snake_case_packages.rs:102-121 \u2014 before extracting anything, compare \u0060src/diagnostics/rules/non_kebab_case_packages.rs\u0060 and \u0060src/diagnostics/rules/non_snake_case_packages.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 101 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":"src/diagnostics/rules/non_kebab_case_packages.rs"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"fff01f8e0cbabce936dbdfc5d35d775fdcc716fd8a1e9fdd7d18c4ef7faf7b22"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201318 lines \u00D7 2): src/compiler/custom_build.rs:889-903 | src/compiler/custom_build.rs:910-927 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/custom_build.rs"},"region":{"startLine":889}}}],"partialFingerprints":{"codehealthFindingId/v1":"c85892617e1f38b79222c12088df64b459550f1d370690d7171f82d1d2c856a0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): src/ops/cargo_tree/graph.rs:741-758 | src/ops/cargo_tree/graph.rs:799-816 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_tree/graph.rs"},"region":{"startLine":741}}}],"partialFingerprints":{"codehealthFindingId/v1":"c33a352fcba464a9d8f1906caa089ef0dedd9eabb932e800cd0bb4226358a87d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201318 lines \u00D7 2): src/ops/cargo_update.rs:225-241 | src/ops/cargo_update.rs:281-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":"src/ops/cargo_update.rs"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"01493c97c0aff1125c687214cd14ff0b3bc4b4210596849c285a5e1419f00739"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): src/ops/cargo_vendor.rs:516-531 | src/workspace/parser/mod.rs:3016-3031 \u2014 before extracting anything, compare \u0060src/ops/cargo_vendor.rs\u0060 and \u0060src/workspace/parser/mod.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 34 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":"src/ops/cargo_vendor.rs"},"region":{"startLine":516}}}],"partialFingerprints":{"codehealthFindingId/v1":"717daa49a6c54e40d07f7c0678ee713e27895e47531558bc1ddcb955eb30e0c2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201315 lines \u00D7 2): src/util/semver_eval_ext.rs:200-212 | src/util/semver_eval_ext.rs:231-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":"src/util/semver_eval_ext.rs"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f7199794456410428182c5559bf1ca294518775e18e98410281c469e43448f3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): src/diagnostics/rules/non_kebab_case_features.rs:139-153 | src/diagnostics/rules/non_snake_case_features.rs:139-153 \u2014 before extracting anything, compare \u0060src/diagnostics/rules/non_kebab_case_features.rs\u0060 and \u0060src/diagnostics/rules/non_snake_case_features.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 88 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":"src/diagnostics/rules/non_kebab_case_features.rs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"094e52b44b9c8cbe9a2c53dddeeeeae140b9734c7d0fcdd82a3dae5c4bf68516"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): src/ops/cargo_update.rs:307-320 | src/ops/cargo_update.rs:358-371 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_update.rs"},"region":{"startLine":307}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2286632cbeae8f9038e70258580cd435d11714d9c336fffac0b1ef008b5ee52"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): src/bin/cargo/commands/add.rs:394-407 | src/bin/cargo/commands/remove.rs:149-162 \u2014 before extracting anything, compare \u0060src/bin/cargo/commands/add.rs\u0060 and \u0060src/bin/cargo/commands/remove.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. 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":"src/bin/cargo/commands/add.rs"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fff555ac88f556efedde47e936798d9688d4d8250a135bf7acc5ea6750ae042"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): src/util/semver_eval_ext.rs:184-197 | src/util/semver_eval_ext.rs:216-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":"src/util/semver_eval_ext.rs"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"a46e5e244fdb22a8a40214b56552e4d9b351680b1b63bff2eb98f86a2e0a503a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201313 lines \u00D7 2): crates/mdman/src/format/man.rs:113-122 | crates/mdman/src/format/text.rs:105-117 \u2014 before extracting anything, compare \u0060crates/mdman/src/format/man.rs\u0060 and \u0060crates/mdman/src/format/text.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 72 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mdman/src/format/man.rs"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b970ea1a615530ae77f713dd48d6f446ab0b1e64b31aab2718296027ddbe8f8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/ops/cargo_clean.rs:295-307 | src/ops/cargo_clean.rs:377-389 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_clean.rs"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccd26a23d9221f7d7c9f015b95e70d41578308e00f48dd8798b2a2a5fa522090"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/ops/cargo_update.rs:749-761 | src/ops/cargo_update.rs:764-776 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_update.rs"},"region":{"startLine":749}}}],"partialFingerprints":{"codehealthFindingId/v1":"45ecd021616e62c31ee985f5c1fa9599afc720e5b6ae053ce77ac591bbf5f96a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): src/sources/path.rs:156-168 | src/sources/path.rs:354-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":"src/sources/path.rs"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"e616f5ca6b90c5c0a76356b64fde38baf0eebe89deca65d5f4daa96fe085bcd0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): src/diagnostics/rules/non_kebab_case_bins.rs:223-234 | src/diagnostics/rules/non_kebab_case_packages.rs:132-143 | src/diagnostics/rules/non_snake_case_packages.rs:132-143 \u2014 before extracting anything, compare \u0060src/diagnostics/rules/non_kebab_case_packages.rs\u0060 and \u0060src/diagnostics/rules/non_snake_case_packages.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 101 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":"src/diagnostics/rules/non_kebab_case_bins.rs"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"37e6eec300a5f5b23d89e4591b292cf6cd28e6009034af62c747e8f3408d6309"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): crates/cargo-util-terminal/src/shell.rs:329-340 | crates/cargo-util-terminal/src/shell.rs:343-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":"crates/cargo-util-terminal/src/shell.rs"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf36b94664688f7c951de90fbf0f2b2f21095dda742c31a31a439d94cbe43eb6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/ops/cargo_add/mod.rs:197-208 | src/ops/cargo_add/mod.rs:221-232 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_add/mod.rs"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e5cc2f3f50c2cded20a794464843d98b37597c9419b65803b5fc4e216907118"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201312 lines \u00D7 2): src/ops/cargo_update.rs:243-251 | src/ops/cargo_update.rs:301-312 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_update.rs"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe3fabf53b20bb59c1e89fd9a38718bf541b5adde5babc0755aa48903aa27777"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/ops/cargo_update.rs:613-624 | src/ops/cargo_update.rs:634-645 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_update.rs"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d4453468f78eb8d0337e9e4b8b36293e5c907a9dc8bcea57cae89ce88ff7daf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): src/ops/cargo_vendor.rs:557-567 | src/workspace/parser/mod.rs:3070-3081 \u2014 before extracting anything, compare \u0060src/ops/cargo_vendor.rs\u0060 and \u0060src/workspace/parser/mod.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 34 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":"src/ops/cargo_vendor.rs"},"region":{"startLine":557}}}],"partialFingerprints":{"codehealthFindingId/v1":"d726fcf38314ca14766eaccd9023fd3a999d6f4502a43b5c569e61f10584769b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/diagnostics/rules/unused_dependencies.rs:139-150 | src/diagnostics/rules/unused_dependencies.rs:319-330 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/diagnostics/rules/unused_dependencies.rs"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc39df2974defc5ac65afe999cb621fa75e7faf7ff273ac7d152f4c7bf602c2a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/compiler/compilation.rs:532-542 | src/compiler/compilation.rs:580-590 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/compilation.rs"},"region":{"startLine":532}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5f581e0ebc188769127d6945f8489d3460c3b6d02cee2c1469d892d5651e976"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/diagnostics/rules/text_direction_codepoint_in_comment.rs:149-159 | src/diagnostics/rules/text_direction_codepoint_in_literal.rs:191-201 \u2014 before extracting anything, compare \u0060src/diagnostics/rules/text_direction_codepoint_in_comment.rs\u0060 and \u0060src/diagnostics/rules/text_direction_codepoint_in_literal.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 76 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":"src/diagnostics/rules/text_direction_codepoint_in_comment.rs"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"afdb57558c4da319188cfadb941bc5ce6c539c1eb2faac0adad0ad88fd4073fe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201311 lines \u00D7 2): src/diagnostics/rules/unused_workspace_dependencies.rs:126-133 | src/diagnostics/rules/unused_workspace_package_fields.rs:92-102 \u2014 before extracting anything, compare \u0060src/diagnostics/rules/unused_workspace_dependencies.rs\u0060 and \u0060src/diagnostics/rules/unused_workspace_package_fields.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 38 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/diagnostics/rules/unused_workspace_dependencies.rs"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"f52d4d0a365b60986573854b14e26eb6ebf889af9f7dfee8ac786a32d7e15e52"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/util/semver_eval_ext.rs:168-178 | src/util/semver_eval_ext.rs:204-214 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/util/semver_eval_ext.rs"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"7495a7cbf966df4fed36d0085978951622f78c7f246c7d60e500dec8620a1b3c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/diagnostics/rules/non_kebab_case_features.rs:90-100 | src/diagnostics/rules/non_snake_case_features.rs:90-100 \u2014 before extracting anything, compare \u0060src/diagnostics/rules/non_kebab_case_features.rs\u0060 and \u0060src/diagnostics/rules/non_snake_case_features.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 88 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":"src/diagnostics/rules/non_kebab_case_features.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"a29f38f0479826a21357cfea78495e6bced358857cbd501db6aa41c1fec4158e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201310 lines \u00D7 3): src/diagnostics/rules/unused_dependencies.rs:144-153 | src/diagnostics/rules/unused_workspace_dependencies.rs:146-153 | src/diagnostics/rules/unused_workspace_package_fields.rs:115-122 \u2014 before extracting anything, compare \u0060src/diagnostics/rules/unused_workspace_dependencies.rs\u0060 and \u0060src/diagnostics/rules/unused_workspace_package_fields.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 38 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/diagnostics/rules/unused_dependencies.rs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ef218ac0ad88b54d2606b5b2958a0d0d50b9b2f98feed355615aa53d646e97d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): crates/mdman/src/format/man.rs:308-317 | crates/mdman/src/format/text.rs:267-276 \u2014 before extracting anything, compare \u0060crates/mdman/src/format/man.rs\u0060 and \u0060crates/mdman/src/format/text.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 72 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mdman/src/format/man.rs"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"7801419c99710bac1b524a0364b02d24d22236d70f682e7805172cbfe4f932af"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): credential/cargo-credential-1password/src/main.rs:94-103 | credential/cargo-credential-1password/src/main.rs:141-150 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"credential/cargo-credential-1password/src/main.rs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f96da843855e06382cc9499a6bccade3f07015254a198b40b6955363a41d4f0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): src/compiler/unit_dependencies.rs:318-326 | src/compiler/unit_dependencies.rs:668-677 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/unit_dependencies.rs"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2eea74af9352d4834557c7aa3c26b29d106b7b8eb4cf1c1ce3e64e46cd25ab5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/ops/cargo_add/mod.rs:375-384 | src/ops/cargo_add/mod.rs:412-421 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_add/mod.rs"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"43471b1d938e3a780af32bd5ad1d12346ddeb1c543bf62a3cf938fef9308984d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/ops/cargo_package/vcs.rs:308-317 | src/ops/cargo_package/vcs.rs:429-438 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_package/vcs.rs"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"72606b0b3d48a26e52004b2de435beed51e48169363c0a6c6662eed950e67496"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/ops/cargo_update.rs:576-585 | src/ops/cargo_update.rs:623-632 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_update.rs"},"region":{"startLine":576}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f2f361bb132888aa32d65a6984308309a2afed3ed53915e7c3356664ab0fcf3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/bin/cargo/commands/add.rs:186-195 | src/bin/cargo/commands/remove.rs:67-76 \u2014 before extracting anything, compare \u0060src/bin/cargo/commands/add.rs\u0060 and \u0060src/bin/cargo/commands/remove.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. 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":"src/bin/cargo/commands/add.rs"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"e538b607994b89e02b2e3d155f12004016994d8b50eb47f251b232db97a8357a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/diagnostics/rules/non_kebab_case_packages.rs:91-100 | src/diagnostics/rules/non_snake_case_packages.rs:91-100 \u2014 before extracting anything, compare \u0060src/diagnostics/rules/non_kebab_case_packages.rs\u0060 and \u0060src/diagnostics/rules/non_snake_case_packages.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 101 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":"src/diagnostics/rules/non_kebab_case_packages.rs"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"1843bf8b1872eb46ac86d5491ebdf4c3204d9822e9efa4425be5f013d16087c7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): src/resolver/errors.rs:158-166 | src/resolver/errors.rs:183-191 | src/resolver/errors.rs:199-207 \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":"src/resolver/errors.rs"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"b947b92225ac48314c2112aaba5ff5a1e44ece189a7ca8bfbf203bd0b73005ef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20139 lines \u00D7 3): src/diagnostics/rules/manual_readme.rs:115-123 | src/diagnostics/rules/non_kebab_case_packages.rs:92-98 | src/diagnostics/rules/non_snake_case_packages.rs:92-98 \u2014 before extracting anything, compare \u0060src/diagnostics/rules/non_kebab_case_packages.rs\u0060 and \u0060src/diagnostics/rules/non_snake_case_packages.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 101 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":"src/diagnostics/rules/manual_readme.rs"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"fce8a68f4ac895815be17d2e07ab24e5f789e08c6ddfb09d716a70a85539c53c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/home/src/env.rs:69-77 | crates/home/src/env.rs:102-110 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/home/src/env.rs"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"891cf3da0290a33e2b80d4de24a4217da210ec641e6ec13bfc70c3f5d1642bbf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): src/sources/git/oxide.rs:384-392 | src/sources/git/utils.rs:1698-1705 \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":"src/sources/git/oxide.rs"},"region":{"startLine":384}}}],"partialFingerprints":{"codehealthFindingId/v1":"9588021ef5152a1ca545552c47c4ab80ee01e6046ae2249a833ee30ca096a4ce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/diagnostics/rules/non_kebab_case_packages.rs:146-154 | src/diagnostics/rules/non_snake_case_packages.rs:146-154 \u2014 before extracting anything, compare \u0060src/diagnostics/rules/non_kebab_case_packages.rs\u0060 and \u0060src/diagnostics/rules/non_snake_case_packages.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 101 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":"src/diagnostics/rules/non_kebab_case_packages.rs"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cfcfc89693663f211b819c7d0d050fa3bc6bdf9eb913ec7250d7bc9ecc5a033"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/ops/registry/cargo_info/mod.rs:144-152 | src/ops/registry/cargo_info/mod.rs:155-163 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/registry/cargo_info/mod.rs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e7004079e39d309fc1e874d5bed699266197150b3fb804d8ec6d84cb3512e0f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/ops/cargo_compile/packages.rs:61-68 | src/ops/cargo_compile/packages.rs:225-232 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_compile/packages.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"60164da27ece181dca80f930908dfab593309f231f9f0eee28b9824f875dabb9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/ops/cargo_update.rs:554-561 | src/ops/cargo_update.rs:580-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":"src/ops/cargo_update.rs"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f58e1aa6e0e307534f6b1794386aa1858c7dc2acd4b2b36029555a7469ddb1d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/ops/cargo_update.rs:570-577 | src/ops/cargo_update.rs:596-603 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_update.rs"},"region":{"startLine":570}}}],"partialFingerprints":{"codehealthFindingId/v1":"b879fb77bb24f1fe570f254956dd4cc15c5fbfe7bbd5372b4c21340949747254"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/workspace/features.rs:1113-1120 | src/workspace/features.rs:1212-1219 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/features.rs"},"region":{"startLine":1113}}}],"partialFingerprints":{"codehealthFindingId/v1":"12fe9be154e6dad368c8e23db80b3d36f88af1bb5cee2083a2cae1a3c6324f15"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 2): src/workspace/global_cache_tracker.rs:1056-1062 | src/workspace/global_cache_tracker.rs:1318-1325 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/global_cache_tracker.rs"},"region":{"startLine":1056}}}],"partialFingerprints":{"codehealthFindingId/v1":"60cb70192752902b7a6038a31fb90e98a6096a9adff6bbee3a0eff37c333ab23"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/workspace/package_id.rs:143-150 | src/workspace/source_id.rs:124-131 \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":"src/workspace/package_id.rs"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"4047537564e3d588a92127330ecfeca76ca2b7afda285fcc48e86b821448ddfc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/bin/cargo/commands/add.rs:198-205 | src/bin/cargo/commands/remove.rs:80-87 \u2014 before extracting anything, compare \u0060src/bin/cargo/commands/add.rs\u0060 and \u0060src/bin/cargo/commands/remove.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. 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":"src/bin/cargo/commands/add.rs"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa6ae22b6ab2d0af5821527c32ca9847ef66cb68a565d7a5f6f824ea975d0e9d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): src/workspace/global_cache_tracker.rs:434-440 | src/workspace/global_cache_tracker.rs:458-464 | src/workspace/global_cache_tracker.rs:498-504 \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":"src/workspace/global_cache_tracker.rs"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"029b975fcf072dd0e651a71e9464101ab7d1277599b2688b09724e60c3e7d3aa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): src/diagnostics/rules/non_kebab_case_bins.rs:236-242 | src/diagnostics/rules/non_kebab_case_packages.rs:145-151 | src/diagnostics/rules/non_snake_case_packages.rs:145-151 \u2014 before extracting anything, compare \u0060src/diagnostics/rules/non_kebab_case_packages.rs\u0060 and \u0060src/diagnostics/rules/non_snake_case_packages.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 101 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":"src/diagnostics/rules/non_kebab_case_bins.rs"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"bac64d945f1e7c109079bd44e50e175146d62b33630ca5272e06a8a271015e4d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/resolver/encode.rs:445-451 | src/resolver/encode.rs:493-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":"src/resolver/encode.rs"},"region":{"startLine":445}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8c1502692d5fa5e269ab2b2a220bba55a1b3c6b014c89eeff7c7cfca3ff0593"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/workspace/global_cache_tracker.rs:1064-1070 | src/workspace/global_cache_tracker.rs:1122-1128 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/global_cache_tracker.rs"},"region":{"startLine":1064}}}],"partialFingerprints":{"codehealthFindingId/v1":"583c2f3cc7eeb4f567f7be9120a949a954735dc123b93b486ee5acb6b93a334d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/workspace/parser/mod.rs:2891-2897 | src/workspace/parser/mod.rs:2923-2929 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/parser/mod.rs"},"region":{"startLine":2891}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e7a16b1e287535b255abdbc2040951955d0e317feb63b6e6e538f5da0b08400"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): src/ops/cargo_compile/packages.rs:56-61 | src/ops/cargo_compile/packages.rs:122-127 | src/ops/cargo_compile/packages.rs:142-147 \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":"src/ops/cargo_compile/packages.rs"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b375a41aeb321f1be796bc4786b73047d80a0bc7929b390f677cc0aafd0e629"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/bin/cargo/commands/help.rs:264-269 | src/bin/cargo/commands/help.rs:273-278 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/bin/cargo/commands/help.rs"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"1685b8f5a77810686b0c37c65873b618786d875608c4ed220feaf612030df14c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/compiler/build_runner/compilation_files.rs:1011-1016 | src/compiler/build_runner/compilation_files.rs:1060-1065 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/build_runner/compilation_files.rs"},"region":{"startLine":1011}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e1b310f8c04e32141ab48a2f68bfbea3f81ea6036ba04ecba362d30a88cad53"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/diagnostics/rules/text_direction_codepoint_in_comment.rs:84-89 | src/diagnostics/rules/text_direction_codepoint_in_literal.rs:85-90 \u2014 before extracting anything, compare \u0060src/diagnostics/rules/text_direction_codepoint_in_comment.rs\u0060 and \u0060src/diagnostics/rules/text_direction_codepoint_in_literal.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 76 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":"src/diagnostics/rules/text_direction_codepoint_in_comment.rs"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"65bcb9841cf7356d53ccd17c16a03840cec82a346f775136c6e0859555cda7ec"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/diagnostics/rules/text_direction_codepoint_in_comment.rs:101-106 | src/diagnostics/rules/text_direction_codepoint_in_literal.rs:103-108 \u2014 before extracting anything, compare \u0060src/diagnostics/rules/text_direction_codepoint_in_comment.rs\u0060 and \u0060src/diagnostics/rules/text_direction_codepoint_in_literal.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 76 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":"src/diagnostics/rules/text_direction_codepoint_in_comment.rs"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"979b90368e952a70b205dc4c30ebf80061964493db4471df7b021ec28f9eff48"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/ops/cargo_clean.rs:67-72 | src/ops/cargo_clean.rs:85-90 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_clean.rs"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a6e5170db5651958117be7653bd5a1a4c97903ed087bceb23b143f90d1d8b56"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/ops/cargo_vendor.rs:507-512 | src/workspace/parser/mod.rs:3006-3011 \u2014 before extracting anything, compare \u0060src/ops/cargo_vendor.rs\u0060 and \u0060src/workspace/parser/mod.rs\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 34 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":"src/ops/cargo_vendor.rs"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec64f22b25012faf3a4c19c034f9a3f42428e909bdd80ffb55672999bc753b03"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/workspace/editor/dependency.rs:269-274 | src/workspace/editor/dependency.rs:302-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":"src/workspace/editor/dependency.rs"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5d86d46a7850c45e611f72086722a76a0d1788ae3f6643b16599d6b86174adb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): src/ops/cargo_compile/packages.rs:58-62 | src/ops/cargo_compile/packages.rs:124-128 | src/ops/cargo_compile/packages.rs:144-148 | src/ops/cargo_compile/packages.rs:222-226 \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":"src/ops/cargo_compile/packages.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"634806cb6e60b104ace68b458db3dba08a2ae226854b997935694385e498c3e2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): src/workspace/global_cache_tracker.rs:1058-1062 | src/workspace/global_cache_tracker.rs:1115-1119 | src/workspace/global_cache_tracker.rs:1321-1325 \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":"src/workspace/global_cache_tracker.rs"},"region":{"startLine":1058}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bbf6a3bd460113a5bbb8167e8370eb743381556d408493b79171b4f3b78ba7b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): crates/crates-io/lib.rs:336-340 | crates/crates-io/lib.rs:343-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":"crates/crates-io/lib.rs"},"region":{"startLine":336}}}],"partialFingerprints":{"codehealthFindingId/v1":"b043dc1b3c7c868d1edfd54a4f77bc086b0d01306bdd0e5abe8ebde76b3ec14f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/compiler/timings/mod.rs:137-141 | src/ops/cargo_report/util.rs:100-104 \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":"src/compiler/timings/mod.rs"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"906fa16ea1af1f26ef2e6b74b48c3706a71ff4490540c1d01dad6d2b27226468"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): crates/cargo-util-schemas/src/core/partial_version.rs:156-161 | crates/cargo-util-schemas/src/manifest/rust_version.rs:111-116 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/cargo-util-schemas/src/core/partial_version.rs"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"01104a403627473a02cc48a479865196beebc37c22c046ee3ecb5dc10d1cfefd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/sources/source.rs:61-66 | src/workspace/registry.rs:53-58 \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":"src/sources/source.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe7450d80cef9aec92d88b4cd19fb99ec89c8281b3bcbe3e652b29681dd071fc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/util/diagnostic_server.rs:310-317 | src/util/lockserver.rs:149-156 \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":"src/util/diagnostic_server.rs"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a7977254be6025c39580dc5dc2230ffe583ca8b870e0104d448860c949d920a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 6): src/diagnostics/rules/manual_readme.rs:74-83 | src/diagnostics/rules/non_kebab_case_features.rs:68-77 | src/diagnostics/rules/non_kebab_case_packages.rs:68-77 | src/diagnostics/rules/non_snake_case_features.rs:68-77 | src/diagnostics/rules/non_snake_case_packages.rs:68-77 | src/diagnostics/rules/redundant_homepage.rs:71-80 \u2014 before extracting anything, compare \u0060src/diagnostics/rules/non_kebab_case_features.rs\u0060 and \u0060src/diagnostics/rules/non_snake_case_features.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 88 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":"src/diagnostics/rules/manual_readme.rs"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb05289ac37d141b1b698f2c88693bca3e8e455c7c1adeb6eab044f97580c57c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): src/workspace/parser/mod.rs:463-481 | src/workspace/parser/mod.rs:516-534 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/parser/mod.rs"},"region":{"startLine":463}}}],"partialFingerprints":{"codehealthFindingId/v1":"440e31b1c194ef9b758cef64acf22fafa90a5751965c7b5edafcec6587deb588"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/compiler/build_context/target_info.rs:456-464 | src/compiler/build_context/target_info.rs:492-506 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/build_context/target_info.rs"},"region":{"startLine":456}}}],"partialFingerprints":{"codehealthFindingId/v1":"100e1e1d8f71e6b90978032039311b3706a24833b221c7029a79d7a6eb3fc656"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): credential/cargo-credential-libsecret/src/lib.rs:219-231 | credential/cargo-credential-libsecret/src/lib.rs:241-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":"credential/cargo-credential-libsecret/src/lib.rs"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbf9c50db30e5fee9ed4e2692e718975504340ec2dab80dc3fbe1fe4145d697c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): credential/cargo-credential-libsecret/src/lib.rs:180-191 | credential/cargo-credential-libsecret/src/lib.rs:219-230 | credential/cargo-credential-libsecret/src/lib.rs:241-252 \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":"credential/cargo-credential-libsecret/src/lib.rs"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"496b90469b79676073115b104dbb7ff0a3b3dd96adc319119f2243ce6a0826d7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/compiler/compilation.rs:544-555 | src/compiler/compilation.rs:592-603 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/compilation.rs"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"67da52c0cbcc2f5e4446858eac358dc017387da777791fbb05fb2081d4900773"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/util/command_prelude.rs:782-792 | src/util/command_prelude.rs:793-801 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/util/command_prelude.rs"},"region":{"startLine":782}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c4f5600150ef0b987a1e02633b65a5f5a61164a33f5c3215db952c72a83ef68"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): src/ops/registry/cargo_info/view.rs:272-282 | src/ops/registry/cargo_info/view.rs:359-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":"src/ops/registry/cargo_info/view.rs"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"62eaa58b2c0f6f8e293074f2ef98548ba204f34e31e43b80bf11c2da0714dfda"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/ops/cargo_install.rs:832-838 | src/ops/cargo_uninstall.rs:49-59 \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":"src/ops/cargo_install.rs"},"region":{"startLine":832}}}],"partialFingerprints":{"codehealthFindingId/v1":"11c6d826bf7f78025e476bf4e098af10a54c48c7871c783773b1db9486ce7e90"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): src/diagnostics/rules/unused_workspace_dependencies.rs:154-163 | src/diagnostics/rules/unused_workspace_package_fields.rs:123-132 \u2014 before extracting anything, compare \u0060src/diagnostics/rules/unused_workspace_dependencies.rs\u0060 and \u0060src/diagnostics/rules/unused_workspace_package_fields.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 38 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/diagnostics/rules/unused_workspace_dependencies.rs"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d6509aabb7db6a780805eabeed78e18145cf2b88c4b8bddd84d189193ab7b52"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): src/compiler/build_runner/mod.rs:635-640 | src/compiler/build_runner/mod.rs:729-737 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/build_runner/mod.rs"},"region":{"startLine":635}}}],"partialFingerprints":{"codehealthFindingId/v1":"10d4527b5d2cc35ef7dabf867be1bd9458fdbcebcf48a53dd699459b6475ae60"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 7): src/workspace/parser/mod.rs:702-710 | src/workspace/parser/mod.rs:726-734 | src/workspace/parser/mod.rs:738-743 | src/workspace/parser/mod.rs:752-760 | src/workspace/parser/mod.rs:783-791 | src/workspace/parser/mod.rs:795-803 | src/workspace/parser/mod.rs:811-816 \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":"src/workspace/parser/mod.rs"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"517c2d136a798cd5531c1d53978400c3600d90b73dafd03233bc676e58260201"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/diagnostics/rules/manual_readme.rs:140-147 | src/diagnostics/rules/redundant_homepage.rs:135-143 \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":"src/diagnostics/rules/manual_readme.rs"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef720d804cb04bd49df028164b390b60fb715b652fafc486901812f9dae54ee4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): src/bin/cargo/commands/package.rs:61-69 | src/bin/cargo/commands/publish.rs:44-52 \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":"src/bin/cargo/commands/package.rs"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"4177e8f7579071593cea30417479a45dd545730338ccca0ad25c3ade37d17aac"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/diagnostics/rules/non_kebab_case_packages.rs:124-131 | src/diagnostics/rules/non_snake_case_packages.rs:124-131 \u2014 before extracting anything, compare \u0060src/diagnostics/rules/non_kebab_case_packages.rs\u0060 and \u0060src/diagnostics/rules/non_snake_case_packages.rs\u0060 as WHOLE FILES: this scan already matched 10 separate duplicated blocks between them, totalling at least 101 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":"src/diagnostics/rules/non_kebab_case_packages.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"46549d1aaf4e878c6d4c15739fa40729d0a55fc81d33a9953958c2229d791241"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/sources/git/oxide.rs:132-139 | src/sources/git/oxide.rs:156-163 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sources/git/oxide.rs"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6a70459b07202567fe093a54ab71123b2fe0d0a150eb4be40dbf32ac54f9689"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 5): src/diagnostics/rules/non_kebab_case_features.rs:96-103 | src/diagnostics/rules/non_kebab_case_packages.rs:96-103 | src/diagnostics/rules/non_snake_case_features.rs:96-103 | src/diagnostics/rules/non_snake_case_packages.rs:96-103 | src/diagnostics/rules/redundant_homepage.rs:112-119 \u2014 before extracting anything, compare \u0060src/diagnostics/rules/non_kebab_case_features.rs\u0060 and \u0060src/diagnostics/rules/non_snake_case_features.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 88 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":"src/diagnostics/rules/non_kebab_case_features.rs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"bed728fdd401a7170a1a47e6ab16d4bbc95f14c94d512ea5ec4a5e140fa9ba38"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): src/ops/cargo_add/mod.rs:851-858 | src/ops/cargo_add/mod.rs:1011-1018 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_add/mod.rs"},"region":{"startLine":851}}}],"partialFingerprints":{"codehealthFindingId/v1":"76874e0481f076e6f49c7574234dd17dca9642cda64cab7ddeb2ec3ea5ab16c7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 6): src/diagnostics/rules/non_kebab_case_features.rs:97-104 | src/diagnostics/rules/non_kebab_case_packages.rs:97-104 | src/diagnostics/rules/non_snake_case_features.rs:97-104 | src/diagnostics/rules/non_snake_case_packages.rs:97-104 | src/diagnostics/rules/redundant_homepage.rs:113-120 | src/diagnostics/rules/unused_dependencies.rs:130-136 \u2014 before extracting anything, compare \u0060src/diagnostics/rules/non_kebab_case_features.rs\u0060 and \u0060src/diagnostics/rules/non_snake_case_features.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 88 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":"src/diagnostics/rules/non_kebab_case_features.rs"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"ada8b35168f998349cf85f5c85d9eb3e2431537b663a31b6ae2d9dc43b3c640f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): crates/cargo-util/src/process_error.rs:73-80 | crates/cargo-util/src/process_error.rs:82-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":"crates/cargo-util/src/process_error.rs"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"597d5276e0f0f444ad44b492452cfe1e15ead7f9436acfa7a3b31f1b724966ed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/diagnostics/rules/unused_workspace_dependencies.rs:134-140 | src/diagnostics/rules/unused_workspace_package_fields.rs:103-109 \u2014 before extracting anything, compare \u0060src/diagnostics/rules/unused_workspace_dependencies.rs\u0060 and \u0060src/diagnostics/rules/unused_workspace_package_fields.rs\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 38 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/diagnostics/rules/unused_workspace_dependencies.rs"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8753101ea408802c3f41e11ddbd65b740a442e099ddb2ba7c5a5b72cbc69080"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/bin/cargo/commands/remove.rs:253-259 | src/bin/cargo/commands/remove.rs:350-356 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/bin/cargo/commands/remove.rs"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"0af64b8cb32d4448e79911f5d81eef2c09afe7c4f12e1a616f30cb850369f5a9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/workspace/global_cache_tracker.rs:1290-1296 | src/workspace/global_cache_tracker.rs:1344-1350 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/global_cache_tracker.rs"},"region":{"startLine":1290}}}],"partialFingerprints":{"codehealthFindingId/v1":"25a6e25ce764dabfb0d5eda140e7191338ec5bbf05063375bc5f48ac9dd42a13"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/diagnostics/rules/text_direction_codepoint_in_comment.rs:108-114 | src/diagnostics/rules/text_direction_codepoint_in_literal.rs:149-155 \u2014 before extracting anything, compare \u0060src/diagnostics/rules/text_direction_codepoint_in_comment.rs\u0060 and \u0060src/diagnostics/rules/text_direction_codepoint_in_literal.rs\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 76 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":"src/diagnostics/rules/text_direction_codepoint_in_comment.rs"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"34eff46ea5a7c092923f2fe1c7fc0ebe878efdc022db45133b2b16df82d29807"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/sources/git/utils.rs:1195-1201 | src/sources/git/utils.rs:1203-1209 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sources/git/utils.rs"},"region":{"startLine":1195}}}],"partialFingerprints":{"codehealthFindingId/v1":"301bc7f25796e9dea982efaf35db7e37554602552c5197ab2fff2d5b75f61fa7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 7): src/workspace/parser/mod.rs:706-711 | src/workspace/parser/mod.rs:730-735 | src/workspace/parser/mod.rs:736-741 | src/workspace/parser/mod.rs:756-761 | src/workspace/parser/mod.rs:762-767 | src/workspace/parser/mod.rs:787-792 | src/workspace/parser/mod.rs:793-798 \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":"src/workspace/parser/mod.rs"},"region":{"startLine":706}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8bead378644ad32a2a9026b79f2ee4bb774ccde73768c9a3425b2b5e1fd2f93"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/diagnostics/rules/manual_readme.rs:135-139 | src/diagnostics/rules/redundant_homepage.rs:130-135 \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":"src/diagnostics/rules/manual_readme.rs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6261b00bfdf37702af584e53f7919c39e67df07abdda8433a949dce948688fd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/workspace/global_cache_tracker.rs:850-855 | src/workspace/global_cache_tracker.rs:877-881 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/global_cache_tracker.rs"},"region":{"startLine":850}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bb69d8e138633b5921129619a4bcf9e33fdae35aa9f52a50533165ee0e613b0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/diagnostics/report.rs:17-21 | src/util/workspace.rs:137-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":"src/diagnostics/report.rs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbdafd84726633a44bd3b0671ac84549d67d576c6b137f000772527267cfb5c6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): crates/cargo-test-macro/src/lib.rs:142-150 | crates/cargo-test-macro/src/lib.rs:156-165 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/cargo-test-macro/src/lib.rs"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"21b8ba4a3d8e14f33fa728395c252fd8c4bc4a90449a8acf9f2c7f78cbe1028a"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: cargo-platform: cargo-platform: 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":"be09623a00f3c7d0ecbd7e8d3fa557bf4a1c84a37181e25f466ae42338b39006"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: cargo-util: cargo-util: abstractness 0.00, instability 0.00, distance 1.00 \u2014 zone of pain \u2014 concrete and depended on by 4 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"40d1b608eaa57a1b2dba82e25b6c275da620bd33f714e159f73acf8d368a1988"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: cargo-util-schemas: cargo-util-schemas: 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":"ef5ffa490394a7713d7eebc57881f742c316ed86b262b534e5983c26a334599c"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: rustfix: rustfix: 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":"9160e0a21bc8ed91742de265570b4fd5ccb5bec53a1a1135f9e99f151ec5285a"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: crates-io: crates-io: abstractness 0.07, instability 0.00, distance 0.93 \u2014 zone of pain \u2014 concrete and depended on by 2 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"89f7b405504e803dc3f348eb571f5e1db11b612cafde15ccdc9171ec8ff09492"}},{"ruleId":"D5","level":"warning","message":{"text":"Off the main sequence: cargo-credential: cargo-credential: abstractness 0.10, instability 0.00, distance 0.90 \u2014 zone of pain \u2014 concrete and depended on by 5 project(s), so it\u0027s rigid to change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"478bc542fcdf6744e7101184610fc0d810fc32321245795436717c54102ec408"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/compiler/mod.rs: src/compiler/mod.rs changed 25 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 42 in cargo::compiler::build_base_args at line 1304. 3 of those changes were fix/bug commits, and the other 22 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-06-30..2026-09-28, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-30 16:29:28 \u002B00:00\u0027 --until=\u00272026-09-28 16:29:28 \u002B00:00\u0027 --full-history --no-merges -- src/compiler/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":"src/compiler/mod.rs"},"region":{"startLine":1304}}}],"partialFingerprints":{"codehealthFindingId/v1":"03cc743a62baf4dfe8b8b38ce7c27247fac4a7f5fc4bdaebad4f3ee5bc7ecd3f"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/workspace/parser/mod.rs: src/workspace/parser/mod.rs changed 20 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 45 in cargo::workspace::parser::to_real_manifest at line 1301. 12 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-30..2026-09-28, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-30 16:29:28 \u002B00:00\u0027 --until=\u00272026-09-28 16:29:28 \u002B00:00\u0027 --full-history --no-merges -- src/workspace/parser/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":"src/workspace/parser/mod.rs"},"region":{"startLine":1301}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bc247b8660cb36812e471d1fb8b9a417a519bf38845f9260cb99dc27bd777d5"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/workspace/features.rs: src/workspace/features.rs changed 19 times in last 90 days, max cyclomatic complexity 31 in Features::status at line 474. 2 of those changes were fix/bug commits, and the other 17 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-30..2026-09-28, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-30 16:29:28 \u002B00:00\u0027 --until=\u00272026-09-28 16:29:28 \u002B00:00\u0027 --full-history --no-merges -- src/workspace/features.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/features.rs"},"region":{"startLine":474}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3aaba75c38ef7edb5abc87dc8697240d30d17db9424d14133ef2a50052fb5da"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/ops/cargo_compile/mod.rs: src/ops/cargo_compile/mod.rs changed 10 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 47 in cargo::ops::cargo_compile::create_bcx at line 251. 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-30..2026-09-28, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-30 16:29:28 \u002B00:00\u0027 --until=\u00272026-09-28 16:29:28 \u002B00:00\u0027 --full-history --no-merges -- src/ops/cargo_compile/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":"src/ops/cargo_compile/mod.rs"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"fafda569cd1d5d0d2c9967f5d76e08045d2c91a672b91288bdeb88d3f7a10fbf"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/ops/resolve.rs: src/ops/resolve.rs changed 15 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 26 in cargo::ops::resolve::register_previous_locks at line 595. 4 of those changes were fix/bug commits, and the other 11 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-06-30..2026-09-28, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-30 16:29:28 \u002B00:00\u0027 --until=\u00272026-09-28 16:29:28 \u002B00:00\u0027 --full-history --no-merges -- src/ops/resolve.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/resolve.rs"},"region":{"startLine":595}}}],"partialFingerprints":{"codehealthFindingId/v1":"e47bba4cf1f6008f4af98cfe2409a3b04028f8fef92b91c7d55be51c98be9c4c"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/ops/cargo_clean.rs: src/ops/cargo_clean.rs changed 9 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 38 in cargo::ops::cargo_clean::clean_specs at line 188. 3 of those changes were fix/bug commits, and the other 6 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-06-30..2026-09-28, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-30 16:29:28 \u002B00:00\u0027 --until=\u00272026-09-28 16:29:28 \u002B00:00\u0027 --full-history --no-merges -- src/ops/cargo_clean.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_clean.rs"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"82d8c8ff01a2abbf9242d69a2e62253cc97441353f1952a984d8c64221f6a884"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/compiler/custom_build.rs: src/compiler/custom_build.rs changed 8 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 40 in cargo::compiler::custom_build::build_work at line 332. 3 of those changes were fix/bug commits, and the other 5 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-30..2026-09-28, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-30 16:29:28 \u002B00:00\u0027 --until=\u00272026-09-28 16:29:28 \u002B00:00\u0027 --full-history --no-merges -- src/compiler/custom_build.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/custom_build.rs"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4e6013edd3251f310d646dd9647beb0050eab7a67c094552cb67fcea0705d70"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/ops/cargo_add/mod.rs: src/ops/cargo_add/mod.rs changed 10 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 32 in cargo::ops::cargo_add::resolve_dependency at line 343. 2 of those changes were fix/bug commits, and the other 8 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-06-30..2026-09-28, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-30 16:29:28 \u002B00:00\u0027 --until=\u00272026-09-28 16:29:28 \u002B00:00\u0027 --full-history --no-merges -- src/ops/cargo_add/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":"src/ops/cargo_add/mod.rs"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"80e437cfa553dbc03d034e531fe72fe41a1e1b5dde409d88d961cf8e8620b335"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/compiler/compilation.rs: src/compiler/compilation.rs changed 11 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 19 in Compilation::fill_env at line 367. 2 of those changes were fix/bug commits, and the other 9 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-30..2026-09-28, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-30 16:29:28 \u002B00:00\u0027 --until=\u00272026-09-28 16:29:28 \u002B00:00\u0027 --full-history --no-merges -- src/compiler/compilation.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/compilation.rs"},"region":{"startLine":367}}}],"partialFingerprints":{"codehealthFindingId/v1":"d78ba2f83bd862884c7af2c372bf62f93c3b35a9b988cc0edddae12089202979"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/compiler/fingerprint/mod.rs: src/compiler/fingerprint/mod.rs changed 12 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in cargo::compiler::fingerprint::calculate_normal at line 1578. 1 of those changes was a fix/bug commit, and the other 11 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, make sure the area it touches is under test, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time. Counted over 2026-06-30..2026-09-28, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-30 16:29:28 \u002B00:00\u0027 --until=\u00272026-09-28 16:29:28 \u002B00:00\u0027 --full-history --no-merges -- src/compiler/fingerprint/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":"src/compiler/fingerprint/mod.rs"},"region":{"startLine":1578}}}],"partialFingerprints":{"codehealthFindingId/v1":"d017530ab222e17287f5273e20121b410bc87e2b904948bc7b8e0b3b9b655f51"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/compiler/build_context/target_info.rs: src/compiler/build_context/target_info.rs changed 11 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 18 in TargetInfo::new 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-30..2026-09-28, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-30 16:29:28 \u002B00:00\u0027 --until=\u00272026-09-28 16:29:28 \u002B00:00\u0027 --full-history --no-merges -- src/compiler/build_context/target_info.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/build_context/target_info.rs"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5de5617059d62c6971d172c4deaf2a05f992942ddc09a551bc724d27b00bd33"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/resolver/errors.rs: src/resolver/errors.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 46 in cargo::resolver::errors::activation_error at line 77. 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-30..2026-09-28, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-30 16:29:28 \u002B00:00\u0027 --until=\u00272026-09-28 16:29:28 \u002B00:00\u0027 --full-history --no-merges -- src/resolver/errors.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/resolver/errors.rs"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"dec4156536fdb80e30c570aeb2e97c499b6b608474f888ec52c2dcb2f7e327e1"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/sources/registry/mod.rs: src/sources/registry/mod.rs changed 6 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 27 in RegistrySource::query at line 678. 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-30..2026-09-28, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-30 16:29:28 \u002B00:00\u0027 --until=\u00272026-09-28 16:29:28 \u002B00:00\u0027 --full-history --no-merges -- src/sources/registry/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":"src/sources/registry/mod.rs"},"region":{"startLine":678}}}],"partialFingerprints":{"codehealthFindingId/v1":"b813f406a69dc598bc6c6204395258596c6ce0da0eb0fb87f281bb7c1d799bb8"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/ops/cargo_vendor.rs: src/ops/cargo_vendor.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 37 in cargo::ops::cargo_vendor::sync at line 120. 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-30..2026-09-28, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-30 16:29:28 \u002B00:00\u0027 --until=\u00272026-09-28 16:29:28 \u002B00:00\u0027 --full-history --no-merges -- src/ops/cargo_vendor.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_vendor.rs"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dcfae94433f932ab562af0b098164f798e8d8372bc3efff51a1d6805bce6d63"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/ops/cargo_tree/graph.rs: src/ops/cargo_tree/graph.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 29 in cargo::ops::cargo_tree::graph::add_pkg at line 406. 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-30..2026-09-28, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-30 16:29:28 \u002B00:00\u0027 --until=\u00272026-09-28 16:29:28 \u002B00:00\u0027 --full-history --no-merges -- src/ops/cargo_tree/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":"src/ops/cargo_tree/graph.rs"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"8956865f9a65ca1042829324e86ce8650c738609bb8949347e83ec073da17439"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/ops/cargo_report/timings.rs: src/ops/cargo_report/timings.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 25 in cargo::ops::cargo_report::timings::prepare_context at line 135. 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-30..2026-09-28, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-30 16:29:28 \u002B00:00\u0027 --until=\u00272026-09-28 16:29:28 \u002B00:00\u0027 --full-history --no-merges -- src/ops/cargo_report/timings.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_report/timings.rs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d3bd692604d9385b1c4b515cba6ae9688942caf4c13512bb05b234ea569a4c9"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/util/frontmatter.rs: src/util/frontmatter.rs changed 7 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 15 in ScriptSource::parse at line 23. 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-30..2026-09-28, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-30 16:29:28 \u002B00:00\u0027 --until=\u00272026-09-28 16:29:28 \u002B00:00\u0027 --full-history --no-merges -- src/util/frontmatter.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/util/frontmatter.rs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"30ab40a35478655d7f19d9726a14ebbe3f2b358aeb989250a975836dab504139"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/workspace/registry.rs: src/workspace/registry.rs changed 5 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 16 in PackageRegistry::query at line 667. 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-30..2026-09-28, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-30 16:29:28 \u002B00:00\u0027 --until=\u00272026-09-28 16:29:28 \u002B00:00\u0027 --full-history --no-merges -- src/workspace/registry.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/registry.rs"},"region":{"startLine":667}}}],"partialFingerprints":{"codehealthFindingId/v1":"0098a73a8d0417cec0ff0b1aaf4cfd8cf390b3faccf257d0973846d788b149e7"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: src/compiler/unused_deps.rs: src/compiler/unused_deps.rs changed 4 times in last 90 days, and the most complex body those changes touched has cyclomatic complexity 17 in UnusedDepState::new at line 23. 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-30..2026-09-28, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-30 16:29:28 \u002B00:00\u0027 --until=\u00272026-09-28 16:29:28 \u002B00:00\u0027 --full-history --no-merges -- src/compiler/unused_deps.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/unused_deps.rs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"10c7b96653c3c61f539b6871f20704f32dca5d9fc3ae6148da1da9960ac6bb2b"}},{"ruleId":"D15","level":"warning","message":{"text":"Repeated repair: src/compiler/trim_paths.rs: src/compiler/trim_paths.rs changed 13 times in last 90 days and 8 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 cargo::compiler::trim_paths::write_unremap_file at line 299), 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(trim-paths): trim-paths as \u0022none\u0022 by default\u201D; \u201Cfix(trim-paths)!: unremap file in one JSON doc\u201D; \u201Cfix(trim-paths)!: limit options to \u0060none|object|all\u0060\u201D; \u201Cfix(trim-paths): custom workspace-relative member paths remap\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-30..2026-09-28, the 90 days ending at the analysed commit. Reproduce with \u0060git log --since=\u00272026-06-30 16:29:28 \u002B00:00\u0027 --until=\u00272026-09-28 16:29:28 \u002B00:00\u0027 --full-history --no-merges -- src/compiler/trim_paths.rs\u0060: merges are excluded because a merge re-states changes already counted at their own commits, and history is NOT path-simplified because a change that reached the file through a merged branch is still a change to it. That command counts raw commits and can read HIGHER than this row, which counts a cherry-picked re-land, and a revert together with the commit it undoes, once each \u2014 a difference of several commits on a file whose history was re-landed or reverted inside the window."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/trim_paths.rs"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1d7861c62d0fad5a8f1a4f13f2aa8d7be195596736908a2b678cccef0f2bc1f"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #1: If anonymized user #1 becomes unavailable, 23 significant file(s) lose their only recent owner: src/ops/cargo_tree/graph.rs, src/util/progress.rs, crates/cargo-util-schemas/src/index.rs, src/diagnostics/lint.rs, src/lib.rs, src/util/diagnostic_server.rs, src/diagnostics/rules/text_direction_codepoint_in_literal.rs, src/diagnostics/passes.rs (\u002B15 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"473308de932113b75acb691b3e0551fe0fd0a81adab2319a9ca08e40989477af"}},{"ruleId":"D16","level":"note","message":{"text":"Further sole-owners (lower concentration): 4 other contributor(s) are each the sole owner of a small amount of code below the off-boarding threshold \u2014 folded into the bus-factor score and metrics (29 single-owned of 244 analysed files in total, counted over production source files of roughly 2,400 bytes or more, excluding vendored, generated and example/demo trees and test files identified by path convention, largest first; 244 of the 292 production source files in this repository met that bar). They are anonymized user #2 (2 file(s)), anonymized user #3 (2 file(s)), anonymized user #4 (1 file(s)), anonymized user #5 (1 file(s)) \u2014 spread or document their files in the same way, at lower priority than the named off-boarding risks above."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6eac528f2429e724e1a97ed868f79eefbcf1888dab4af9a9e673429369bb5b2f"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: deferred resoling this \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/build-rs/src/lib.rs"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"da85d10f51d812da1bf19c5a14e893950b296790ca8d973373f286f23dca15db"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: deferred resoling this \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/build-rs/src/lib.rs"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"8288ad039b60ef45dcd16ff89bcf4368ac1fde038c65e5727a06713082fe8270"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO avoid unwrap \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/cargo-test-support/src/lib.rs"},"region":{"startLine":1015}}}],"partialFingerprints":{"codehealthFindingId/v1":"275fd7d3903728c636dee2fb30fbb23e8f562bf7ba0edbc03475b55840d8a035"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO avoid unwrap \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/cargo-test-support/src/lib.rs"},"region":{"startLine":1022}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5c0d3bcb56e7063bfe8722e916e1383161c7f74c57bdc32cae32727e594f143"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: this is both more and less permissive than \u0060TomlValue\u0060 but its close \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/cargo-util-schemas/src/schema.rs"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"4774dd5e6226b717935b65127ef7144326f6a4e737f23dd539052c12919dd0c6"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: Leverage \u0060VersionReq\u0060 for partial version parsing \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/cargo-util-schemas/src/core/partial_version.rs"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"1654ac29c31ef2eee33bf1174ce6fc8dc39c9bb8c3f952b2dfd1e5ce98325d4d"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: //HACK: avoid reading \u0060~/.cargo/config\u0060 when testing Cargo itself. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/cargo-util/src/paths.rs"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"3034bfabdf15b141056221158259f7deaf42272f41c76d456fbf2c66623973e4"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This should probably panic or have a copy fallback. Symlinks \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/cargo-util/src/paths.rs"},"region":{"startLine":631}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7c1b40b23571540f5b3e20072f8f7feab4de1b2944520b01e978291f1670368"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: ///         todo!() \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/crates-io/lib.rs"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"938a27e05072f3c47c28de3b4cb008cb2953826b77fb11a0deaa6a4f5811cda7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo: word.len() \u003E width \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/mdman/src/format/text.rs"},"region":{"startLine":616}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8e7b4f81a0fb47d21107cc4fdcb9148dfb7180460dd651c7a96503704fdfbb5"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: \u0060default\u0060 is a secondary group without its own level \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/xtask-lint-docs/src/main.rs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"3724dbc5eec9dc1af83e0d348db2375f9cdccebfeb5643e611b1010a42961001"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Does this \u0060public\u0060 make sense? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/unit_dependencies.rs"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"97ade848097e7e64bb1f8d5a4d8836eb7526270ba694009bcc11d48587990e0c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Consider doing something to enforce --locked? Or to prevent the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/standard_lib.rs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"e88a9746f8c93ceba22f5f246b245504a956aac997ffb0891d63fc77feb07b79"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: We should handle raw-idents somehow instead of pretending they \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/custom_build.rs"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"f607ba599f54e834917538ded68c90a7760febab2a12263bd2faf4fa14215bce"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: \u0060rustdoc --test\u0060 not only compiles but executes doctests. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/compilation.rs"},"region":{"startLine":378}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2787ceea49b05c600cb49b96ef1cef79efca37db4c1ea7f7254cfba5e5cc50d"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // hack is added for both phases. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/compilation.rs"},"region":{"startLine":382}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f8f93b905ff3807e1715ee263d23393c107636a22942957a2401b0de40da927"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: handle doctest-xcompile \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/compilation.rs"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"f22a4b5b7fb12d0378551a4992830ccb14285e5f7ddbf6f81ce525e676a0713a"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: abuse \u0060--print=crate-name\u0060 to use \u0060___\u0060 as a delimiter. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/build_context/target_info.rs"},"region":{"startLine":263}}}],"partialFingerprints":{"codehealthFindingId/v1":"00f6e77657cdd3ab9a4e8cb7f10a88062c170ff6c826f088cad7ccffdfd400cf"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: This is a temporary hack for fixing rust-lang/cargo#14253 \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/build_runner/compilation_files.rs"},"region":{"startLine":834}}}],"partialFingerprints":{"codehealthFindingId/v1":"da2735d136b93479d42f491b9b6c539db14edddc55b76b4e5e674eafc4faf8e2"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: /// HACK: Detect the *potential* presence of \u0060--remap-path-prefix\u0060 \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/build_runner/compilation_files.rs"},"region":{"startLine":892}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b95bfb0062da69d99a5d05b4abd5e885e09c30a725b6d9100dbffac7ad14720"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //   - TODO: Maybe use \u0060-install-name\u0060 on macOS or \u0060-soname\u0060 on other UNIX systems \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/build_runner/compilation_files.rs"},"region":{"startLine":990}}}],"partialFingerprints":{"codehealthFindingId/v1":"9601e64540e29dfe74d10749c8245dc5ca91c2f7f8437aefa8b247e118cf6cea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //   - TODO: Maybe use \u0060-install-name\u0060 on macOS or \u0060-soname\u0060 on other UNIX systems \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/build_runner/compilation_files.rs"},"region":{"startLine":1039}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a6300d281b25526fb8ee60b18b4f6ab3fb817487073c16efa27d1e62a82328b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: it\u0027s basically buggy that we pass \u0060None\u0060 to \u0060call_box\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/fingerprint/mod.rs"},"region":{"startLine":576}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc7c1de97469758d9a528364855a0a824d3523deb9b47b696318746b5cfada84"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: \u0060std::env::var\u0060 is allowed at this moment. Should figure out \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/fingerprint/mod.rs"},"region":{"startLine":910}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b8898e1a58f06f1702a1641242305bddcb041d691a838d2e31932dd474fa786"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: /// FIXME(#6779) - see all the words above"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/fingerprint/mod.rs"},"region":{"startLine":1831}}}],"partialFingerprints":{"codehealthFindingId/v1":"44320cde7c21c19b6d7b061013f6f35c53697eaec3a47145178ae1f64f20d411"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this is somewhat buggy with respect to docker and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/fingerprint/mod.rs"},"region":{"startLine":1876}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2c39527d0c4b4748b0cadc47d6335929254294bcbfced8f7088745ab5e9176b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: fix #5918."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/fingerprint/mod.rs"},"region":{"startLine":2204}}}],"partialFingerprints":{"codehealthFindingId/v1":"7666fc2ce28d5d27e3e0a7cd3814de5fff328654db51351ea5d82bb504db614d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: We might want to warn unused fields, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/context/de.rs"},"region":{"startLine":740}}}],"partialFingerprints":{"codehealthFindingId/v1":"33f0904302bcbd0764e32f3d285abe4781fa9217309be404c0a29fddc8a7756b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this breaks adding an optional dependency in a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/resolve.rs"},"region":{"startLine":691}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ca76cef2ec3013e2dc933de44720f6278acb82d8ba91011256e42fcb3ce2efd"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: /// HACK: Perform the bare minimum of \u0060prepare_for_publish\u0060 needed for #14348. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_vendor.rs"},"region":{"startLine":492}}}],"partialFingerprints":{"codehealthFindingId/v1":"8725a3724b69f290bcedce4cf218b7530a314782f4fbda425cf56e37816548f7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: see comment in \u0060resolve.rs\u0060 as well, but this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_update.rs"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"25da1b81c463310ba0fce8e8cf87c06fa91bffdf91be7d421693351ddd4a03bd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this seems like a hokey reason to single out the registry as being \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_update.rs"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ca0f1cd48c722c1fbb0ecd6b962405970b2dc07722d3e0ad507bb87109be440"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This could be improved by combining the flags on a single line when feasible. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_test.rs"},"region":{"startLine":384}}}],"partialFingerprints":{"codehealthFindingId/v1":"58d2ad0c3e06f427752a8fc05ced73faa1e5d1b3302e5435ad4c037a4e0da1bf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bindeps): after -Zbindeps gets stabilized, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_metadata.rs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"20710cdc847271a572b1946fc4427dae9c5fa9b56dc56b4d9e93ddb8e20d3195"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bindeps): Remove \u0060Option\u0060 after -Zbindeps get stabilized. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_metadata.rs"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"da477df1f42bb77d6a6a21215584c7f4e7a4aaa58e9d51363312fe91e83d7ecd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Without --filter-platform, features are being resolved for \u0060host\u0060 only. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_metadata.rs"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"614af96d7ebdc393428173cdab0bf4a93e817172a12a619504d5d677ab7b0c02"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bindeps): Cargo shouldn\u0027t have \u0060extern_name\u0060 field \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_metadata.rs"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a896b25a66bfcf805b90fe4f876eaef4e98648830183ff39e243b314426e9c8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: It might be a good idea to teach the Config loader to support \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_config.rs"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"3559c24ef110bc645fac82a098d48b49e617aa4e50e9bd7407e748fbc2826bb9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: https://github.com/rust-lang/cargo/issues/8790"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_clean.rs"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"da2ca92dc14e09760b054075475b3f3723ed1b09481c50c4537742fd476607e1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: what to do about build_script_build? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_clean.rs"},"region":{"startLine":447}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c4b611da01535698e99c03b635c6eabd9b97da27e3be262ac9068876d3c96ba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: In theory, Cargo should also dedupe the roots, but I\u0027m uncertain \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_compile/mod.rs"},"region":{"startLine":523}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6400fe40e170cbe2f8a038ccf4525dc3536628ed2c7e81033e92ee0adba7a33"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: Duplicate workspace migration logic between virtual manifests and real manifests to \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_fix/mod.rs"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"5afb764939d4cd139acbd651b14e6539a8e06ba22f5994836c00a00defcc3c9f"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: As workspace migration is a special case, only report it if something \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_fix/mod.rs"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"d471c9a5ccd272ce986fc72e41aae796b8c61d56e3aceaceeb3c244d18fb290e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: The error message here is not correct with --broken-code. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_fix/mod.rs"},"region":{"startLine":776}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9117ea98165eedb683f82c92d141ea99ef0c988a9fdefb780b7291f753841ec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement a way to specify this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_fix/mod.rs"},"region":{"startLine":990}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab98784945d14ac5ba7c4ee031079dcabb1cea183f0dc97cbd1eb70b47e0fb42"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Turn this on at some point in the future \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_package/verify.rs"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"03829e99903eef6ce59764d013ebaf8470e7c5d7b6661c8559ee03de8794c9a8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Target::All is broken with -Zfeatures=itarget. To handle that properly, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_tree/mod.rs"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa1227524e0fdb6ec46f6d208d1ad2095322d8138b2e4728a87b5a3bbb02926b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: color MSRV as a warning if newer than either the \u0022workspace\u0022 MSRV or \u0060rustc --version\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/registry/cargo_info/view.rs"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"37ed8de78d37ee21ffecaf2850256a41a10662ce152842b5b7f4f59a191940a8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this should only happen for optional dependencies. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/resolver/features.rs"},"region":{"startLine":614}}}],"partialFingerprints":{"codehealthFindingId/v1":"0955f46be84ec99c1f2403c75d297b628902c623b46f352fad137e65b08297b6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this needs to interact with the \u0060default-target\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/resolver/features.rs"},"region":{"startLine":844}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4e24e25f04f2c0d3bbe342707964378d402bc7a47c95a39f25759f7545d1c84"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: If this was a real candidate, we wouldn\u0027t hit this case. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/resolver/errors.rs"},"region":{"startLine":273}}}],"partialFingerprints":{"codehealthFindingId/v1":"699c4e45f5abc63ec32b415e60357546623c3ba25ce3e1b7815cb4e7e56880d3"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: technically its unsupported and we shouldn\u0027t make assumptions \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/resolver/errors.rs"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"9473c4d37e2f939b35cc14f748357f76693f313693051eb10c96f33bbc6d9021"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: /// HACK: \u0060first_version\u0060 is not kept in the cache key is it is 1:1 with \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/resolver/dep_cache.rs"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"141f015b1d7b5156bcef535d97955edc76eafe0f782b9bef94e567625f45a8d6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Add a way to exclude folders? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sources/path.rs"},"region":{"startLine":1168}}}],"partialFingerprints":{"codehealthFindingId/v1":"0356e8d59d6831e7306f9b89fa435d75f6d2b8a3d36b2e277b15ce50064b467c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: filesystem/symlink implications? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sources/path.rs"},"region":{"startLine":1196}}}],"partialFingerprints":{"codehealthFindingId/v1":"bee61be725fa85cdf7c29497fc62e6f8a747d77cf4cf1f09cf5cab62f7116f28"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(git2): remove this when git2 supports shallow clone correctly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sources/git/utils.rs"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac33dd25dbf2da1333e6afbd842f90976e96617705320f383031942dba0b524e"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack: libgit2 disallows overriding the error from check_cb since v1.8.0, \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sources/git/utils.rs"},"region":{"startLine":921}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce142c2693dc84a7bfbd09c1d553e9fd11e2594ba25b33668f788781d1425d8c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Ideally the error message should include the IP address of the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sources/git/known_hosts.rs"},"region":{"startLine":486}}}],"partialFingerprints":{"codehealthFindingId/v1":"79b6c3bc827bec11f3ae50944109a56e0d48f408b577730b258893f56aad4a8f"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: While source knows nothing about yank policy, \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sources/registry/mod.rs"},"region":{"startLine":776}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c07ec5446bebbb2b20d64cea003ab6f5ab40e6485cc1bfe2f9a17a5e99f11ba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Integrate into \u0027workspace\u0027 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/util/command_prelude.rs"},"region":{"startLine":736}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b1bd8de31d6c17df8fd658c63c951c8d1d6bf4e8fe4902cfe003bc1863845a8"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: should this also take into account version numbers? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/workspace.rs"},"region":{"startLine":607}}}],"partialFingerprints":{"codehealthFindingId/v1":"f09f265f2898cf636b8b751e97aeaaa82eb26e09d1ebaf3684cd261822533c5f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: In the future, it might be nice to add all of these \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/registry.rs"},"region":{"startLine":970}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a3d2e13b104d65e175550344fd527b734a5558ec23130a3d5744da4dd3cf4d6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: is \u0060manifest_path\u0060 a relic? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/package.rs"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a39011cc1cbe5a4b83ab377a0939cfa790e151674d8f3b0fa4359f8cd4eb23a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Investigate how slow this might be. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/global_cache_tracker.rs"},"region":{"startLine":570}}}],"partialFingerprints":{"codehealthFindingId/v1":"6aaaf33bc11c788419a8b7f420657643bf8ad68dd90f5c7816bceb5c6e2baa51"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: If delete crate, ensure src is also deleted. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/global_cache_tracker.rs"},"region":{"startLine":1188}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cedaedba673910042dcf4e7a3e9f3c12333c90cbcdb8d90bfb4869bfd5aac81"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // contents. TODO: Verify behavior on Windows. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/global_cache_tracker.rs"},"region":{"startLine":1829}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca2879dfa54822a552806f846bebf9fe9a1a5e1c2c8b37d785bfcb3150fc8ae5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Or even better, switch to worktrees, and remove this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/global_cache_tracker.rs"},"region":{"startLine":1830}}}],"partialFingerprints":{"codehealthFindingId/v1":"da357dc39842574affda9644e2d779419124c54e1f55213ce8a29aa6fb86c3b2"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: Since frontmatter open isn\u0027t valid TOML, we insert a comment \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/workspace/parser/embedded.rs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"385ad3462642dd59745456d7a7d91a4ab86c2e722be221dcb4a390c507b6690a"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: use an isolated the isolated CARGO_HOME environment (\u0060build_std_isolated\u0060) \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/build-std/main.rs"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9c132bbae6683069755a6c6407edde15d5abe73dc3a6270e901422c9480902f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: this fails because of how workspace.exclude and workspace.members are working. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/testsuite/workspaces.rs"},"region":{"startLine":2187}}}],"partialFingerprints":{"codehealthFindingId/v1":"37c5ca8fa62fcad3e49c72b31651ed108d96e139ef8e58106888d03d40ffe51e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: re-enable this check when rustc bootstrap disables remapping \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/testsuite/profile_trim_paths.rs"},"region":{"startLine":1033}}}],"partialFingerprints":{"codehealthFindingId/v1":"58177106cd7b989211fa1ad7f4cd58e15b2db06616d12a2dc6ab4b2ba12b60b3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: might want to move to test/testsuite/build_script.rs once stabilized. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/testsuite/profile_trim_paths.rs"},"region":{"startLine":1106}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d8d117fcd1ec31eb82fd4ab056e2561761306283cabc69e0269c1cfcda83f36"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //   TODO: \u0022PROFILE\u0022 says debug both times, though! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/testsuite/profile_targets.rs"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"84119f6a92340f447f2a27482081998e2187a495402a8468c09ef3a8d20e2005"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this should be remove once -Zprofile-rustflags is stabilized \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/testsuite/profile_config.rs"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"c76de4ea6a1c4d14833e24dfb9de1eadfac89da3152d803b2c3d1a8436d50003"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This fails since xyz is ambiguous, but the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/testsuite/pkgid.rs"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d2aa8ba9167bb0f7b4a51b989ebd7cfee222c2d417cb1a8889ef412752c3e8a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO, what should the \u0060-p\u0060 value be here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/testsuite/pkgid.rs"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"34f8d4262450de05d5499fd7e3a553fe46bb7d0e32b1436558fdccd8a36f9989"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This should not be allowed (future warning?) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/testsuite/package_features.rs"},"region":{"startLine":921}}}],"partialFingerprints":{"codehealthFindingId/v1":"40936eff900ae93828017063ea602dfecc75aebff5d4a490457c5857ef2941ce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This should not be allowed (future warning?) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/testsuite/package_features.rs"},"region":{"startLine":933}}}],"partialFingerprints":{"codehealthFindingId/v1":"3aa9d1a02a993c96baa5392a0c389ade6c526252793b17a28a802cbde2cc3f37"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This should not be allowed (future warning?) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/testsuite/package_features.rs"},"region":{"startLine":967}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d7e9c155efd2283604a84940d716f526e889fba4584209598fb80e25fb91d7e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This should not be allowed (future warning?) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/testsuite/package_features.rs"},"region":{"startLine":980}}}],"partialFingerprints":{"codehealthFindingId/v1":"851fbb0bf1b3379387fcbe780fc60ad1d49665ce252ad281a9e4348c13ae9fd3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This is not rebuilding when it should. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/testsuite/freshness_mtime.rs"},"region":{"startLine":1363}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c421e309281dc285468db4897ef11d75fe76b50258e711fbb5917f76a189961"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: don\u0027t use actual \u0060tomlprofile\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/testsuite/config.rs"},"region":{"startLine":505}}}],"partialFingerprints":{"codehealthFindingId/v1":"407ca3a83694fed55dc973fc945f9321d6680bf668ea116cdd158fab512c11f3"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack for issue in fwdansi 1.1. It is squashing multiple resets \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/testsuite/cache_messages.rs"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dcdf3b4984faae78b166c4756f77395b9fbc95d2588044b12e904dd1582ce41"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Unfortunately this doesn\u0027t work on Windows. I don\u0027t have any \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/testsuite/cache_lock.rs"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"3125cad840fb3733f070f7001a5bee296b97fd82980ad736b89dced97740346c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Uncomment this if cdylib restriction is re-added (see \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/testsuite/build_script_extra_link_arg.rs"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d39644f993d0a92d3176104b2b0ee32b55c283a3c3b522aa74ad742b10be7c5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: The \u0060.cargo-lock\u0060 file should be in target-dir not build-dir. See #16707"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/testsuite/build_dir_legacy.rs"},"region":{"startLine":614}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc55034cb80103f76b92b44e5514ab7628775da103edaa4bdbaf597ec112efff"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: The \u0060.cargo-lock\u0060 file should be in target-dir not build-dir. See #16707"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/testsuite/build_dir_fine_grain_locking.rs"},"region":{"startLine":601}}}],"partialFingerprints":{"codehealthFindingId/v1":"1395b3457006063bc81132adba904fb4c94c49e12697b99703a1034f5fe2d993"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: The \u0060.cargo-lock\u0060 file should be in target-dir not build-dir. See #16707"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/testsuite/build_dir.rs"},"region":{"startLine":587}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0e81520630f8c0b760f02b3d83a987bbe527e3d609fe6fc1e87001160beff11"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ST): rename bar (dependency) to something else and un-ignore this with RFC-3176"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/testsuite/artifact_dep.rs"},"region":{"startLine":1402}}}],"partialFingerprints":{"codehealthFindingId/v1":"70d7c64c2c4c2a6ee9ad1fea452b2589d7d277b4756a62cd105bf2d08c712464"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(frontmatter): make this diagnostic better \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/testsuite/script/rustc_fixtures/multifrontmatter.rs"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ab10ad0eabcf72b2bf11f2a12c7ac9c15341102269b36840c0bdfaf8134f98b"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(frontmatter): make this diagnostic better \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/testsuite/script/rustc_fixtures/location-after-tokens.rs"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"b398738fe86d09860b07e9af83b67fd9a723aca94f7a3b2c4cf86deb9140dec8"}},{"ruleId":"D20","level":"note","message":{"text":"No ADRs found: No ADRs found. No recognised ADR directory (\u0060docs/adr/\u0060, \u0060docs/decisions/\u0060, \u0060adr/\u0060, \u0060docs/rfcs/\u0060, an \u0060ADR0001/\u0060 folder, or their siblings) exists anywhere in this tree. What was searched, so you can tell an empty log from a search that missed one: every directory under the tree (build output, dependencies and VCS metadata excepted), for a document that is either any non-index page inside a recognised ADR directory, whatever its name and however deeply nested (\u0060docs/adr/use-postgres.md\u0060, \u0060docs/adr/2024/0001-x.md\u0060); or a file anywhere whose name is ADR-shaped (\u00600001-use-postgres.md\u0060, \u0060adr-012-caching.md\u0060); or, when neither turned anything up, a document carrying the decision-record signature (an \u0022Architecture Decision Record\u0022 heading, or Status / Context / Decision / Consequences as section headings). A decision log that clears none of these \u2014 unnumbered files outside any recognised directory, without those headings \u2014 is not seen by this check and this row is then wrong. If that is your case, say so rather than renaming anything; otherwise, consider recording architectural decisions in \u0060docs/adr/\u0060."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d2bea044ff79d7d275f5a91a6e2f548586178eaf480274c33960ad020c854631"}},{"ruleId":"D22","level":"warning","message":{"text":"Redundant and inconsistent access to Cargo configuration values. The \u0060input\u0060 type has a generic \u0060cargo_cfg\u0060 method, while the \u0060cfg\u0060 type exposes specific methods for every known config key. This creates two ways to access the same data with different signatures (generic lookup vs specific typed accessors) and potential for drift if new configs are added to one but not the other.: Remove the generic \u0060input.cargo_cfg\u0060 method and rely solely on the specific accessors in \u0060cfg\u0060, or remove the specific accessors in \u0060cfg\u0060 and use a single generic lookup method on \u0060input\u0060 (or a shared \u0060Cfg\u0060 struct) to avoid duplication. (signatures: input.cargo_cfg(cfg: str): String | cfg.cargo_cfg_feature(): String | cfg.cargo_cfg_clippy(): bool | cfg.cargo_cfg_debug_assertions(): bool | cfg.cargo_cfg_target_arch(): String)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"4e733e859d8ae6ecd7894607625929da2771a9e39df99d7725cce0c29af8a7d6"}},{"ruleId":"D22","level":"warning","message":{"text":"Inconsistent naming and parameter structure for linking arguments. \u0060rustc_link_arg\u0060 takes a single flag. \u0060rustc_link_arg_bin\u0060 takes a bin name and a flag. However, \u0060rustc_link_arg_bins\u0060, \u0060tests\u0060, \u0060examples\u0060, and \u0060benches\u0060 take only a flag, implying they apply to all targets of that kind. This inconsistency makes it unclear if \u0060rustc_link_arg_bin\u0060 is meant to be the general case for a single target, while the others are bulk operations, or if the naming is just arbitrary.: Unify the API. Either use a single method \u0060rustc_link_arg(target: Option\u003C\u0026str\u003E, flag: str)\u0060 where target is optional, or ensure all variants follow the same pattern (e.g., \u0060rustc_link_arg_for_bin\u0060, \u0060rustc_link_arg_for_test\u0060, etc., with consistent parameters). The current mix of \u0027single target\u0027 vs \u0027all targets of kind\u0027 with different method names is confusing. (signatures: output.rustc_link_arg(flag: str) | output.rustc_link_arg_bin(bin: str, flag: str) | output.rustc_link_arg_bins(flag: str) | output.rustc_link_arg_tests(flag: str) | output.rustc_link_arg_examples(flag: str) | output.rustc_link_arg_benches(flag: str))"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f167c52ce121e96f9edf81d90a9dca52671630b733a3d841f8591593bb9dd287"}},{"ruleId":"D22","level":"warning","message":{"text":"Inconsistent parameter order for symlink operations. \u0060ProjectBuilder\u0060 methods take \u0060dst\u0060 then \u0060src\u0060, while \u0060Project.symlink\u0060 takes \u0060src\u0060 then \u0060dst\u0060. This inconsistency increases the risk of errors when switching between building a project and manipulating an existing one.: Standardize the parameter order across all symlink-related methods, preferably \u0060src\u0060 then \u0060dst\u0060 to match standard OS conventions (e.g., \u0060os.symlink(src, dst)\u0060). (signatures: ProjectBuilder.symlink(dst: impl AsRef\u003CPath\u003E, src: impl AsRef\u003CPath\u003E): Self | ProjectBuilder.symlink_dir(dst: impl AsRef\u003CPath\u003E, src: impl AsRef\u003CPath\u003E): Self | Project.symlink(src: impl AsRef\u003CPath\u003E, dst: impl AsRef\u003CPath\u003E))"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ddd97497d810e23de67d231b646077eed6aaa1ab9e2bfa8cc216a82521f189de"}},{"ruleId":"D22","level":"warning","message":{"text":"Inconsistent naming for project creation helpers. \u0060project\u0060 creates in a default location, \u0060project_in\u0060 takes a directory, and \u0060project_in_home\u0060 takes a name (presumably relative to home). The naming doesn\u0027t clearly convey the relationship between the arguments and the resulting path structure.: Rename to be more explicit, e.g., \u0060project_in_temp()\u0060, \u0060project_in_dir(path)\u0060, \u0060project_in_home(name)\u0060, or unify into a single builder pattern with a \u0060at(path)\u0060 method (which \u0060ProjectBuilder\u0060 already has, but the top-level helpers are inconsistent). (signatures: cargo_test_support.project(): ProjectBuilder | cargo_test_support.project_in(dir: impl AsRef\u003CPath\u003E): ProjectBuilder | cargo_test_support.project_in_home(name: impl AsRef\u003CPath\u003E): ProjectBuilder)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"21f8dfcc63027689ee8991a46905c7130d99bb45606edc01469b8221dcaa4653"}},{"ruleId":"D26","level":"note","message":{"text":"Projects may be oversized for their cohesion: 1 of 27 project(s) overshoot their size bounds, lowering Project Cohesion to 9.3/10. The most over is \u0060(repository root)\u0060 (97819 LoC, 608 public types across 34 directories). Review these for cohesion \u2014 draw the boundary inside the module first (group each responsibility into its own package or directory and keep the cross-boundary members non-public), since splitting a published package moves types between packages and breaks consumers."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d5a94650dc74886a0f1f08eb9fb6775f1fc395279ef7e901c970c9d26f767a72"}},{"ruleId":"D28","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":"5655b4fea9751ec537018a354240a68b036a87e7cf8132ed86e3f8ed1e97dcba"},"properties":{"commitSha":"429a7822cf80f95052dc0f9eb81d4e1ee136986f"}},{"ruleId":"D28","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":"a242f2029f58a34cedacaf712e2349b59295284b90e40476fe627d6ae1dfe28b"},"properties":{"commitSha":"9181681a1656efe796b52286c6c392190b345e0d"}},{"ruleId":"D28","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":"029174e85fb04557b23df951e6b7eab00fbd6a35eb7bab3039c8ea2f5d71b40e"},"properties":{"commitSha":"429a7822cf80f95052dc0f9eb81d4e1ee136986f"}},{"ruleId":"D28","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":"9d8e3fedbe5a8eac0a750afb86195b54499aa724d8a9e23e2b88f9bbff5ffed6"},"properties":{"commitSha":"9181681a1656efe796b52286c6c392190b345e0d"}},{"ruleId":"D28","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":"3cdfd7beb31b791ae18dcb425e21eb157c842e7bbcd522cc330573c1a6538db1"}},{"ruleId":"D29","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":"f4c536f76b3c9ba3578b133d6bd56726aea548d5d7c76bb14930e89c09094cd4"},"taxa":[{"id":"CWE-939","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D34","level":"note","message":{"text":"Orphaned files with no living knowledge: 12 of 244 analysed file(s) have no living knowledge left \u2014 their last meaningful change has decayed away, so if one breaks, no one currently understands it (counted over production source files of roughly 2,400 bytes or more, excluding vendored, generated and example/demo trees and test files identified by path convention, largest first; 244 of the 292 production source files in this repository met that bar). None is large enough to earn a read-through of its own, so this row stands in for the per-file rows rather than raising one each \u2014 most significant first: credential/cargo-credential/src/lib.rs, crates/resolver-tests/src/helpers.rs, crates/cargo-util/src/read2.rs, credential/cargo-credential/src/error.rs, credential/cargo-credential-wincred/src/lib.rs, src/util/lockserver.rs, credential/cargo-credential/src/stdio.rs, src/util/edit_distance.rs (and 4 more). Attach the read to the next change that touches one of them: have a second person review that change, and leave behind a short comment or test recording what the file is for, so the knowledge comes back at the cost of a change you were making anyway."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ce861fd78f6935114d3a342cb90ad25870f984e1042954fcbbe27c0e23be3658"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: lib.rs \u2194 directory.rs: \u0060crates/resolver-tests/src/lib.rs\u0060 (context crates) and \u0060src/sources/directory.rs\u0060 (context sources) sit in DIFFERENT parts of the tree yet change together 50% of the time (7 of the 14 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) \u2014 the bounded-context boundary may be in the wrong place, or one context is leaking into the other. This is the behavioural boundary violation a static scan can\u0027t see. You can check this without leaving the row: of the 7 shared commits counted here, the most recent 3 are \u0060dfc9401d\u0060 refactor: parameterize version requirement matching; \u0060b45ca32b\u0060 refactor(source): Rename AlternativeVersions to RejectedVersions (at that commit the file was still \u0060src/cargo/sources/directory.rs\u0060); \u0060d2fcf6b1\u0060 fix(resolver): Report unmatched versions, rather than saying no package (at that commit the file was still \u0060src/cargo/sources/directory.rs\u0060) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/resolver-tests/src/lib.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"12ab2378ab46a390a6135c7e01c54832df1d388542290047acbcd5cf052517a9"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: mod.rs \u2194 cargo_fetch.rs: \u0060src/ops/cargo_compile/mod.rs\u0060 and \u0060src/ops/cargo_fetch.rs\u0060 change together 92% of the time (12 of the 13 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency \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 12 shared commits counted here, the most recent 3 are \u0060301e7be5\u0060 docs: Update code comments to use \u0027target tuple\u0027; \u00604a765759\u0060 feat(diag): Support build.warnings=deny in parse pass (at that commit the files were still \u0060src/cargo/ops/cargo_compile/mod.rs\u0060 and \u0060src/cargo/ops/cargo_fetch.rs\u0060); \u006066d01408\u0060 refactor(diag): Put the caller in charge of parse pass rules (at that commit the files were still \u0060src/cargo/ops/cargo_compile/mod.rs\u0060 and \u0060src/cargo/ops/cargo_fetch.rs\u0060) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_compile/mod.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"42357ee897edd0aa746ad393f3ba234e91b2f67510523d633b8a4410728efa74"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: directory.rs \u2194 mod.rs: \u0060src/sources/directory.rs\u0060 and \u0060src/sources/registry/mod.rs\u0060 change together 71% of the time (10 of the 14 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency \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 10 shared commits counted here, the most recent 3 are \u0060dfc9401d\u0060 refactor: parameterize version requirement matching; \u0060b45ca32b\u0060 refactor(source): Rename AlternativeVersions to RejectedVersions (at that commit the files were still \u0060src/cargo/sources/directory.rs\u0060 and \u0060src/cargo/sources/registry/mod.rs\u0060); \u0060d2fcf6b1\u0060 fix(resolver): Report unmatched versions, rather than saying no package (at that commit the files were still \u0060src/cargo/sources/directory.rs\u0060 and \u0060src/cargo/sources/registry/mod.rs\u0060) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sources/directory.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"09b836dc9586c75cc0d8fba442028b65572a73a6c4ef690af5bf09dc3e2380d4"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling clique: blanket_hint_mostly_unused.rs, im_a_teapot.rs, unknown_lints.rs: 3 files \u2014 \u0060src/diagnostics/rules/blanket_hint_mostly_unused.rs\u0060, \u0060src/diagnostics/rules/im_a_teapot.rs\u0060, \u0060src/diagnostics/rules/unknown_lints.rs\u0060 \u2014 all change together with no explicit dependency: a fully-connected co-change clique, not 3 separate couplings. They share one concern (thin parallel siblings over a common abstraction), so extract the shared part into ONE unit and the whole clique\u0027s coupling clears at once \u2014 you do not need to break each pair individually."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/diagnostics/rules/blanket_hint_mostly_unused.rs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec0c60afc5ffa5305e1eb7925e826ef334067f610200463afb22448bfac31ad5"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1b213f6eedd4b140d0bc37bdf1496f72811a643f34064f12518b32e9e83bcfc7"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0e17f71490e4d120a48b2b2881ab866c93b272bef2febb673a3e8e42b2c288ab"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"eb00976a698a5d68999b7ee6d27206fd374e916853e7ff1ead5eed42386f043f"}},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"cc682cd7167c2c692b624e54d299d32b2ea2b5b3eb72f5516f0dfab9c0ce991d"}},{"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":"9fa1a4204fecd8aecfb6897c12f84cd0cadfdd305fe4ef7cb35244f483caedc1"}},{"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":"57eb0ec65bd1cdc3eb182ce4c0a1d1321b0f5722d8a9145e9f5fed18088493c7"}},{"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":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo_test_support \u2192 cargo_util: \u0060Execs\u0060 (slice \u0027cargo_test_support\u0027) depends on \u0060ProcessBuilder\u0060 from slice \u0027cargo_util\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/cargo-test-support/src/lib.rs"},"region":{"startLine":625}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc9a525309ab6d4bbf5fa868023ea5acd61e2a7f884aee14ccd2a98f70576858"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo_util \u2192 cargo: \u0060ProcessBuilder\u0060 (slice \u0027cargo_util\u0027) depends on \u0060Client\u0060 from slice \u0027cargo\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/cargo-util/src/process_builder.rs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"da323349087e176584de41bc3904d7d7a16dfd78c450e27ea269fd210e081d1e"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo_util_schemas \u2192 cargo: \u0060TomlWorkspace\u0060 (slice \u0027cargo_util_schemas\u0027) depends on \u0060Value\u0060 from slice \u0027cargo\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/cargo-util-schemas/src/manifest/mod.rs"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b45bc27aeebfe1c0770b195a5f213441a9f11c2dd98e80996c1b257941bfe6c"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo_util_schemas \u2192 cargo: \u0060TomlPackage\u0060 (slice \u0027cargo_util_schemas\u0027) depends on \u0060Value\u0060 from slice \u0027cargo\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/cargo-util-schemas/src/manifest/mod.rs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"22d5528d2b44a267668b03cedff3fff8022fbeee4e0052f5d13bf61df6355603"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo_util_schemas \u2192 mdman: \u0060TomlLintConfig\u0060 (slice \u0027cargo_util_schemas\u0027) depends on \u0060Table\u0060 from slice \u0027mdman\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/cargo-util-schemas/src/manifest/mod.rs"},"region":{"startLine":1675}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca2ddc9ffb7ed5dc1e82cafc52a901b4fa75dc8b2296dc7f027a063133ffb0dd"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo_util_schemas \u2192 cargo: \u0060Hints\u0060 (slice \u0027cargo_util_schemas\u0027) depends on \u0060Value\u0060 from slice \u0027cargo\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/cargo-util-schemas/src/manifest/mod.rs"},"region":{"startLine":1700}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad3eec001a0aeb1f0abde425de6f0146edeb7644eb905a585e7ea9bc37798818"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: resolver_tests \u2192 cargo: \u0060PrettyPrintRegistry\u0060 (slice \u0027resolver_tests\u0027) depends on \u0060Summary\u0060 from slice \u0027cargo\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/resolver-tests/src/lib.rs"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac0ec028092c65998b84297e3a29f9aa4f281f21fed7091e4d30e13528aa5808"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 cargo_util: \u0060BuildConfig\u0060 (slice \u0027cargo\u0027) depends on \u0060ProcessBuilder\u0060 from slice \u0027cargo_util\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/build_config.rs"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"14abd263a7b8eb3df0dc6fb349fa0cb67c05f370caf5d43ae1891902fd54a10f"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 cargo_util: \u0060TargetInfo\u0060 (slice \u0027cargo\u0027) depends on \u0060ProcessBuilder\u0060 from slice \u0027cargo_util\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/build_context/target_info.rs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"55ae57558a3acdf51c76e78254aeb110ce94ce6dd3bced324ae13a8663c239c4"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 cargo_util: \u0060Compilation\u0060 (slice \u0027cargo\u0027) depends on \u0060ProcessBuilder\u0060 from slice \u0027cargo_util\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/compilation.rs"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0dfa8d3fbb0337762163d4e32c1e8f734d2d5904b1459cb7794216677b8ffc2"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 crates_io: \u0060ErrorToHandle\u0060 (slice \u0027cargo\u0027) depends on \u0060Error\u0060 from slice \u0027crates_io\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/job_queue/mod.rs"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"df5a5b4037e3345e1c6cc666366fb24eecb93daf441f4d5ce63b39da270447d9"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 cargo_platform: \u0060ManifestErrorContext\u0060 (slice \u0027cargo\u0027) depends on \u0060Cfg\u0060 from slice \u0027cargo_platform\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/mod.rs"},"region":{"startLine":2068}}}],"partialFingerprints":{"codehealthFindingId/v1":"a28be0b80915531e25e3e0b5f809db1b24662f98a1e2b360e3a7690a933edff6"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 crates_io: \u0060RenderContext\u0060 (slice \u0027cargo\u0027) depends on \u0060Error\u0060 from slice \u0027crates_io\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/timings/report.rs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"eec1423f9ac66c390d428e343e87f592c34ce72332f1d0ecff7d665e88b05507"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 cargo_test_support: \u0060UnitInner\u0060 (slice \u0027cargo\u0027) depends on \u0060Package\u0060 from slice \u0027cargo_test_support\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/unit.rs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"679f804a5d80f460fd1b70a94a4bdebc9b4532d05963a6f6184d8765ac0c6f0c"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 cargo_test_support: \u0060ExternState\u0060 (slice \u0027cargo\u0027) depends on \u0060Dependency\u0060 from slice \u0027cargo_test_support\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/compiler/unused_deps.rs"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"39fa5837d8ea8e0b65b2a3dd1b7e9bbb205e5ba7630434c4ddf2be011eafeed6"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 crates_io: \u0060ConfigError\u0060 (slice \u0027cargo\u0027) depends on \u0060Error\u0060 from slice \u0027crates_io\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/context/error.rs"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"42d9069e166aa949c4ad3f34f958402d6a013165f65acebbec759ae58891be25"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 cargo_credential: \u0060CredentialCacheValue\u0060 (slice \u0027cargo\u0027) depends on \u0060Secret\u0060 from slice \u0027cargo_credential\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/context/mod.rs"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"05e9eeab74088771037e3ce14a3feaae178e7fab37565d75c04c5175105bed01"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 cargo_util_terminal: \u0060GlobalContext\u0060 (slice \u0027cargo\u0027) depends on \u0060Shell\u0060 from slice \u0027cargo_util_terminal\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/context/mod.rs"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ab8d8db187630b41dd2011653c4f5531fe423eda28894ea4bf509e3d91b5aa0"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 cargo_util_schemas: \u0060CargoBuildConfig\u0060 (slice \u0027cargo\u0027) depends on \u0060ProfileName\u0060 from slice \u0027cargo_util_schemas\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/context/schema.rs"},"region":{"startLine":409}}}],"partialFingerprints":{"codehealthFindingId/v1":"98bbb3f5032ef3d70cf50c91cd5c9417765bdd6d57397657f2821a00069920c9"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 cargo_util_schemas: \u0060Lint\u0060 (slice \u0027cargo\u0027) depends on \u0060RustVersion\u0060 from slice \u0027cargo_util_schemas\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/diagnostics/lint.rs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"22b69ebf1de6f70d4ce2594c9b704b17b6c3cd6bb9af2be9f79496fd1c0e0e74"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 cargo_test_support: \u0060AddOptions\u0060 (slice \u0027cargo\u0027) depends on \u0060Package\u0060 from slice \u0027cargo_test_support\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_add/mod.rs"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"0667cb5ef0c422f02e7c6ca77e2e84864cb19eeb02a642c86d4c8e4ef6563aba"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 cargo_test_support: \u0060DependencyUI\u0060 (slice \u0027cargo\u0027) depends on \u0060Dependency\u0060 from slice \u0027cargo_test_support\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_add/mod.rs"},"region":{"startLine":1136}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2ed101e0857a4e4baa150e95f1a3a6cc56b494b009fb044905c3a6f375611ab"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 cargo_test_support: \u0060Proposal\u0060 (slice \u0027cargo\u0027) depends on \u0060Package\u0060 from slice \u0027cargo_test_support\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_compile/unit_generator.rs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"61be35eb9b83b5807da24b122d67d8d5f1fdd1ea863a9dc9c25dcb5c07735e91"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 cargo_test_support: \u0060InstallablePackage\u0060 (slice \u0027cargo\u0027) depends on \u0060Package\u0060 from slice \u0027cargo_test_support\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_install.rs"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"561d5304818f61b0ebc841af8ab5ef526b1e0eedc6c664bd31315157dd9adc30"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 cargo_platform: \u0060DepKindInfo\u0060 (slice \u0027cargo\u0027) depends on \u0060Platform\u0060 from slice \u0027cargo_platform\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_metadata.rs"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"89310d449164856d05041d03fc87c7a37e5c8d93e7608db66bcac504164b5dce"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 cargo_test_support: \u0060RemoveOptions\u0060 (slice \u0027cargo\u0027) depends on \u0060Package\u0060 from slice \u0027cargo_test_support\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_remove.rs"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"31754112dcdbe103f0693646d30fe55cc09ce1e4c51b6dfc3a9b1f4e604fd13e"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 cargo_util_schemas: \u0060PackageChange\u0060 (slice \u0027cargo\u0027) depends on \u0060PartialVersion\u0060 from slice \u0027cargo_util_schemas\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/cargo_update.rs"},"region":{"startLine":676}}}],"partialFingerprints":{"codehealthFindingId/v1":"8211bc7aade11dc4dcbcced0ea30d6aae2495674ba9f99e0b8a229143349a911"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 cargo_credential: \u0060OwnersOptions\u0060 (slice \u0027cargo\u0027) depends on \u0060Secret\u0060 from slice \u0027cargo_credential\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/registry/cargo_owner.rs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bc2c908a340ade831d9fc54c83100d1fced2c96a5f5b382bb15ddc08073a975"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 cargo_credential: \u0060PublishOpts\u0060 (slice \u0027cargo\u0027) depends on \u0060Secret\u0060 from slice \u0027cargo_credential\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/ops/registry/cargo_publish.rs"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8135872990a695ce34ee5d9f420ac997971ae327e72bb2985d0ce319c9b12d1"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 crates_io: \u0060ResolveError\u0060 (slice \u0027cargo\u0027) depends on \u0060Error\u0060 from slice \u0027crates_io\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/resolver/errors.rs"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"a33f1df6087335cf99a3f61c9da4ffb1888cef6d6728f389b298e4a670e9f98c"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 cargo_test_support: \u0060BacktrackFrame\u0060 (slice \u0027cargo\u0027) depends on \u0060Dependency\u0060 from slice \u0027cargo_test_support\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/resolver/mod.rs"},"region":{"startLine":698}}}],"partialFingerprints":{"codehealthFindingId/v1":"6410651e7657f70b6ecc6b03a9bd41b06ffe6248f60d2719f58bdb8baf30a92e"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 cargo_util_schemas: \u0060VersionPreferences\u0060 (slice \u0027cargo\u0027) depends on \u0060PartialVersion\u0060 from slice \u0027cargo_util_schemas\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/resolver/version_prefs.rs"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e357e143b6ab9b571bb4cf0d0c3c0ee3a301c9bbf0c86296bb5a06fe6e67567"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 cargo_test_support: \u0060GitDatabase\u0060 (slice \u0027cargo\u0027) depends on \u0060Repository\u0060 from slice \u0027cargo_test_support\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sources/git/utils.rs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b0ec41bf540cc8fd85b5c2f9571df085447304717f04174b8241d4ae0dee179"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 cargo_test_support: \u0060GitCheckout\u0060 (slice \u0027cargo\u0027) depends on \u0060Repository\u0060 from slice \u0027cargo_test_support\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sources/git/utils.rs"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"84e71d3dee143478bc32e7810c455b82408c0580d32f18f160e1e3961f3aa282"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 cargo_test_support: \u0060PathSource\u0060 (slice \u0027cargo\u0027) depends on \u0060Package\u0060 from slice \u0027cargo_test_support\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sources/path.rs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5a5e3e2cc85939f5f91f8c3259816add71a55e655afc8d1f1f4c8d062c44b19"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 cargo_util_schemas: \u0060GitRegistry\u0060 (slice \u0027cargo\u0027) depends on \u0060GitReference\u0060 from slice \u0027cargo_util_schemas\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sources/registry/git_remote.rs"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0aa2f5837e55ed3257e1a78b3361d7abc546898da0409b8fd8305d3f9f026ef"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 cargo_util_schemas: \u0060HttpRegistry\u0060 (slice \u0027cargo\u0027) depends on \u0060RegistryConfig\u0060 from slice \u0027cargo_util_schemas\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sources/registry/http_remote.rs"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"8583d6bdd5be08df30d075bd8bb3d828927b27b8c440dee41068c93e49a63284"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 cargo_util_schemas: \u0060IndexPackageRustVersion\u0060 (slice \u0027cargo\u0027) depends on \u0060RustVersion\u0060 from slice \u0027cargo_util_schemas\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/sources/registry/index/mod.rs"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1a563b12c831d503968969ff62d0c0dd19d6ca31110a3a0fe1791578e375a99"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 crates_io: \u0060VerboseError\u0060 (slice \u0027cargo\u0027) depends on \u0060Error\u0060 from slice \u0027crates_io\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/util/errors.rs"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5d67fcf4ce0e4f38deaf222b677f04ec1845094e929d1ce6ed3993ebfd8f59d"}},{"ruleId":"AX7","level":"warning","message":{"text":"Cross-slice coupling: cargo \u2192 crates_io: \u0060InternalError\u0060 (slice \u0027cargo\u0027) depends on \u0060Error\u0060 from slice \u0027crates_io\u0027."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/util/errors.rs"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"66e72a60ae60b563ac597fb977d542de904b37c4d0cfe78006c73c7942ae6d23"}},{"ruleId":"AX9","level":"error","message":{"text":"Query writes persistent state on the read path: utils$module.fetch_with_gitoxide: \u0060utils$module.fetch_with_gitoxide\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":"src/sources/git/utils.rs"},"region":{"startLine":1381}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d2f31d4fa7eabc7d74d899f14671325c96e126d985c75cdc4b9ff719c5f6acc"}},{"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":"P2","level":"note","message":{"text":"Logging is not universal: Only 3/13 runnable modules use logging (modules with no entry point or server are excluded \u2014 they are libraries a runnable module hosts). Silent: \u0060.\u0060, \u0060crates/cargo-test-support\u0060, \u0060crates/mdman\u0060, \u0060crates/semver-check\u0060, \u0060crates/xtask-build-man\u0060 and 5 more."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"91a94e21d6d4d0e6a2003f94505b0b02b157176f0b24c4820f3f82b4447a97fe"}},{"ruleId":"S1","level":"note","message":{"text":"No security response headers detected: No Content-Security-Policy / X-Frame-Options / X-Content-Type-Options configuration found \u2014 defense in depth, even when a reverse proxy could set them. This is reported because \u0060Dockerfile\u0060 builds the web-server image that serves this application, so the configuration that would carry these headers is in this repository and was read in full. (\u22122.0 on this card.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"crates/cargo-test-support/containers/apache/Dockerfile"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"27997f99773d4e3894eb0e88c10aa10a14cbc67af1f020c835efcf51fd7822c7"}}],"taxonomies":[{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d","organization":"MITRE","informationUri":"https://cwe.mitre.org/","isComprehensive":false,"shortDescription":{"text":"The MITRE Common Weakness Enumeration (CWE)."},"taxa":[{"id":"CWE-1032","guid":"5f21e517-68aa-a650-9a25-5771ef024637","name":"OWASP Top Ten \u2014 Security Misconfiguration category","shortDescription":{"text":"OWASP Top Ten \u2014 Security Misconfiguration category"},"helpUri":"https://cwe.mitre.org/data/definitions/1032.html"},{"id":"CWE-1357","guid":"e4d2e772-757e-0a5c-bd7d-77052949d866","name":"Reliance on Insufficiently Trustworthy Component","shortDescription":{"text":"Reliance on Insufficiently Trustworthy Component"},"helpUri":"https://cwe.mitre.org/data/definitions/1357.html"},{"id":"CWE-1395","guid":"800e09e7-c11a-8654-9fa6-86f398995fed","name":"Dependency on Vulnerable Third-Party Component","shortDescription":{"text":"Dependency on Vulnerable Third-Party Component"},"helpUri":"https://cwe.mitre.org/data/definitions/1395.html"},{"id":"CWE-16","guid":"659db3ea-affc-8453-8add-c1218fbfcb92","name":"Configuration","shortDescription":{"text":"Configuration"},"helpUri":"https://cwe.mitre.org/data/definitions/16.html"},{"id":"CWE-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-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-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-939","guid":"12397742-f2c4-8254-8012-482c3356c551","name":"CWE-939","shortDescription":{"text":"CWE-939"},"helpUri":"https://cwe.mitre.org/data/definitions/939.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":13,"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."]}]}